]> granicus.if.org Git - php/commitdiff
MFH (Import PCRE 6.6)
authorAndrei Zmievski <andrei@php.net>
Mon, 6 Mar 2006 21:45:57 +0000 (21:45 +0000)
committerAndrei Zmievski <andrei@php.net>
Mon, 6 Mar 2006 21:45:57 +0000 (21:45 +0000)
66 files changed:
ext/pcre/config.w32
ext/pcre/config0.m4
ext/pcre/pcrelib/ChangeLog
ext/pcre/pcrelib/LICENCE
ext/pcre/pcrelib/NEWS
ext/pcre/pcrelib/NON-UNIX-USE
ext/pcre/pcrelib/README
ext/pcre/pcrelib/dftables.c
ext/pcre/pcrelib/doc/Tech.Notes
ext/pcre/pcrelib/doc/pcre.txt
ext/pcre/pcrelib/pcre.def
ext/pcre/pcrelib/pcre.h
ext/pcre/pcrelib/pcre_compile.c
ext/pcre/pcrelib/pcre_config.c
ext/pcre/pcrelib/pcre_dfa_exec.c
ext/pcre/pcrelib/pcre_exec.c
ext/pcre/pcrelib/pcre_fullinfo.c
ext/pcre/pcrelib/pcre_get.c
ext/pcre/pcrelib/pcre_globals.c
ext/pcre/pcrelib/pcre_info.c
ext/pcre/pcrelib/pcre_internal.h
ext/pcre/pcrelib/pcre_maketables.c
ext/pcre/pcrelib/pcre_ord2utf8.c
ext/pcre/pcrelib/pcre_printint.src [moved from ext/pcre/pcrelib/pcre_printint.c with 90% similarity]
ext/pcre/pcrelib/pcre_refcount.c
ext/pcre/pcrelib/pcre_scanner.cc
ext/pcre/pcrelib/pcre_scanner_unittest.cc
ext/pcre/pcrelib/pcre_study.c
ext/pcre/pcrelib/pcre_tables.c
ext/pcre/pcrelib/pcre_try_flipped.c
ext/pcre/pcrelib/pcre_ucp_findchar.c [deleted file]
ext/pcre/pcrelib/pcre_ucp_searchfuncs.c [new file with mode: 0644]
ext/pcre/pcrelib/pcre_valid_utf8.c
ext/pcre/pcrelib/pcre_version.c
ext/pcre/pcrelib/pcre_xclass.c
ext/pcre/pcrelib/pcrecpp.cc
ext/pcre/pcrelib/pcrecpp.h
ext/pcre/pcrelib/pcrecpp_unittest.cc
ext/pcre/pcrelib/pcrecpparg.h [new file with mode: 0644]
ext/pcre/pcrelib/pcregrep.c
ext/pcre/pcrelib/pcreposix.c
ext/pcre/pcrelib/pcreposix.h
ext/pcre/pcrelib/pcretest.c
ext/pcre/pcrelib/testdata/grepinput
ext/pcre/pcrelib/testdata/greplist
ext/pcre/pcrelib/testdata/grepoutput
ext/pcre/pcrelib/testdata/testinput2
ext/pcre/pcrelib/testdata/testinput3
ext/pcre/pcrelib/testdata/testinput4
ext/pcre/pcrelib/testdata/testinput5
ext/pcre/pcrelib/testdata/testinput6
ext/pcre/pcrelib/testdata/testinput7
ext/pcre/pcrelib/testdata/testinput9
ext/pcre/pcrelib/testdata/testoutput1
ext/pcre/pcrelib/testdata/testoutput2
ext/pcre/pcrelib/testdata/testoutput3
ext/pcre/pcrelib/testdata/testoutput4
ext/pcre/pcrelib/testdata/testoutput5
ext/pcre/pcrelib/testdata/testoutput6
ext/pcre/pcrelib/testdata/testoutput7
ext/pcre/pcrelib/testdata/testoutput8
ext/pcre/pcrelib/testdata/testoutput9
ext/pcre/pcrelib/ucp.h
ext/pcre/pcrelib/ucp_findchar.c [deleted file]
ext/pcre/pcrelib/ucpinternal.h
ext/pcre/pcrelib/ucptable.c

index 0f5adb7c553ceedc125bba0c37084eb76f44ffba..0fc31aa3d56ed4a7123ee58cea0bc6ee7ab437cb 100644 (file)
@@ -6,7 +6,7 @@ ARG_WITH("pcre-regex", "Perl Compatible Regular Expressions", "yes");
 if (PHP_PCRE_REGEX == "yes") {
        EXTENSION("pcre", "php_pcre.c", PHP_PCRE_REGEX_SHARED,
                "-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -Iext/pcre/pcrelib -DNO_RECURSE");
-       ADD_SOURCES("ext/pcre/pcrelib", "pcre_chartables.c pcre_compile.c pcre_config.c pcre_dfa_exec.c pcre_exec.c pcre_fullinfo.c pcre_get.c pcre_globals.c pcre_info.c pcre_maketables.c pcre_ord2utf8.c pcre_printint.c pcre_refcount.c pcre_study.c pcre_tables.c pcre_try_flipped.c pcre_ucp_findchar.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c", "pcre");
+       ADD_SOURCES("ext/pcre/pcrelib", "pcre_chartables.c pcre_ucp_searchfuncs pcre_compile.c pcre_config.c pcre_dfa_exec.c pcre_exec.c pcre_fullinfo.c pcre_get.c pcre_globals.c pcre_info.c pcre_maketables.c pcre_ord2utf8.c pcre_refcount.c pcre_study.c pcre_tables.c pcre_try_flipped.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c", "pcre");
        ADD_DEF_FILE("ext\\pcre\\php_pcre.def");
 
        AC_DEFINE('HAVE_BUNDLED_PCRE', 1, 'Using bundled PCRE library');
index 78ce14aa0cdbf1ce7cdb9ff84b5cb43be63cd765..3ae740d682596a3c1d52b5f25ea54a04c0af5551 100644 (file)
@@ -13,7 +13,7 @@ PHP_ARG_WITH(pcre-regex,for PCRE support,
 
 if test "$PHP_PCRE_REGEX" != "no"; then
   if test "$PHP_PCRE_REGEX" = "yes"; then
-    PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_dfa_exec.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_printint.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_ucp_findchar.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -I@ext_srcdir@/pcrelib)
+    PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_ucp_searchfuncs.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_dfa_exec.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -DMATCH_LIMIT_RECURSION=10000000 -I@ext_srcdir@/pcrelib)
     PHP_ADD_BUILD_DIR($ext_builddir/pcrelib)
     PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h pcrelib/])
     AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ])
@@ -51,7 +51,7 @@ if test "$PHP_PCRE_REGEX" != "no"; then
     
     AC_DEFINE(HAVE_PCRE, 1, [ ])
     PHP_ADD_INCLUDE($PCRE_INCDIR)
-    PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000)
+    PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -DMATCH_LIMIT_RECURSION=10000000)
   fi
   PHP_SUBST(PCRE_SHARED_LIBADD)
 fi
index b9d74d393f71b59c01b4dcccac63ec3aa9ffdd66..ce2b358534e22528e391e9f7e7124d55907b0457 100644 (file)
@@ -1,6 +1,290 @@
 ChangeLog for PCRE
 ------------------
 
+Version 6.6 06-Feb-06
+---------------------
+
+ 1. Change 16(a) for 6.5 broke things, because PCRE_DATA_SCOPE was not defined
+    in pcreposix.h. I have copied the definition from pcre.h.
+
+ 2. Change 25 for 6.5 broke compilation in a build directory out-of-tree
+    because pcre.h is no longer a built file.
+
+ 3. Added Jeff Friedl's additional debugging patches to pcregrep. These are
+    not normally included in the compiled code.
+
+
+Version 6.5 01-Feb-06
+---------------------
+
+ 1. When using the partial match feature with pcre_dfa_exec(), it was not
+    anchoring the second and subsequent partial matches at the new starting
+    point. This could lead to incorrect results. For example, with the pattern
+    /1234/, partially matching against "123" and then "a4" gave a match.
+
+ 2. Changes to pcregrep:
+
+    (a) All non-match returns from pcre_exec() were being treated as failures
+        to match the line. Now, unless the error is PCRE_ERROR_NOMATCH, an
+        error message is output. Some extra information is given for the
+        PCRE_ERROR_MATCHLIMIT and PCRE_ERROR_RECURSIONLIMIT errors, which are
+        probably the only errors that are likely to be caused by users (by
+        specifying a regex that has nested indefinite repeats, for instance).
+        If there are more than 20 of these errors, pcregrep is abandoned.
+
+    (b) A binary zero was treated as data while matching, but terminated the
+        output line if it was written out. This has been fixed: binary zeroes
+        are now no different to any other data bytes.
+
+    (c) Whichever of the LC_ALL or LC_CTYPE environment variables is set is
+        used to set a locale for matching. The --locale=xxxx long option has
+        been added (no short equivalent) to specify a locale explicitly on the
+        pcregrep command, overriding the environment variables.
+
+    (d) When -B was used with -n, some line numbers in the output were one less
+        than they should have been.
+
+    (e) Added the -o (--only-matching) option.
+
+    (f) If -A or -C was used with -c (count only), some lines of context were
+        accidentally printed for the final match.
+
+    (g) Added the -H (--with-filename) option.
+
+    (h) The combination of options -rh failed to suppress file names for files
+        that were found from directory arguments.
+
+    (i) Added the -D (--devices) and -d (--directories) options.
+
+    (j) Added the -F (--fixed-strings) option.
+
+    (k) Allow "-" to be used as a file name for -f as well as for a data file.
+
+    (l) Added the --colo(u)r option.
+
+    (m) Added Jeffrey Friedl's -S testing option, but within #ifdefs so that it
+        is not present by default.
+
+ 3. A nasty bug was discovered in the handling of recursive patterns, that is,
+    items such as (?R) or (?1), when the recursion could match a number of
+    alternatives. If it matched one of the alternatives, but subsequently,
+    outside the recursion, there was a failure, the code tried to back up into
+    the recursion. However, because of the way PCRE is implemented, this is not
+    possible, and the result was an incorrect result from the match.
+
+    In order to prevent this happening, the specification of recursion has
+    been changed so that all such subpatterns are automatically treated as
+    atomic groups. Thus, for example, (?R) is treated as if it were (?>(?R)).
+
+ 4. I had overlooked the fact that, in some locales, there are characters for
+    which isalpha() is true but neither isupper() nor islower() are true. In
+    the fr_FR locale, for instance, the \xAA and \xBA characters (ordmasculine
+    and ordfeminine) are like this. This affected the treatment of \w and \W
+    when they appeared in character classes, but not when they appeared outside
+    a character class. The bit map for "word" characters is now created
+    separately from the results of isalnum() instead of just taking it from the
+    upper, lower, and digit maps. (Plus the underscore character, of course.)
+
+ 5. The above bug also affected the handling of POSIX character classes such as
+    [[:alpha:]] and [[:alnum:]]. These do not have their own bit maps in PCRE's
+    permanent tables. Instead, the bit maps for such a class were previously
+    created as the appropriate unions of the upper, lower, and digit bitmaps.
+    Now they are created by subtraction from the [[:word:]] class, which has
+    its own bitmap.
+
+ 6. The [[:blank:]] character class matches horizontal, but not vertical space.
+    It is created by subtracting the vertical space characters (\x09, \x0a,
+    \x0b, \x0c) from the [[:space:]] bitmap. Previously, however, the
+    subtraction was done in the overall bitmap for a character class, meaning
+    that a class such as [\x0c[:blank:]] was incorrect because \x0c would not
+    be recognized. This bug has been fixed.
+
+ 7. Patches from the folks at Google:
+
+      (a) pcrecpp.cc: "to handle a corner case that may or may not happen in
+      real life, but is still worth protecting against".
+
+      (b) pcrecpp.cc: "corrects a bug when negative radixes are used with
+      regular expressions".
+
+      (c) pcre_scanner.cc: avoid use of std::count() because not all systems
+      have it.
+
+      (d) Split off pcrecpparg.h from pcrecpp.h and had the former built by
+      "configure" and the latter not, in order to fix a problem somebody had
+      with compiling the Arg class on HP-UX.
+
+      (e) Improve the error-handling of the C++ wrapper a little bit.
+
+      (f) New tests for checking recursion limiting.
+
+ 8. The pcre_memmove() function, which is used only if the environment does not
+    have a standard memmove() function (and is therefore rarely compiled),
+    contained two bugs: (a) use of int instead of size_t, and (b) it was not
+    returning a result (though PCRE never actually uses the result).
+
+ 9. In the POSIX regexec() interface, if nmatch is specified as a ridiculously
+    large number - greater than INT_MAX/(3*sizeof(int)) - REG_ESPACE is
+    returned instead of calling malloc() with an overflowing number that would
+    most likely cause subsequent chaos.
+
+10. The debugging option of pcretest was not showing the NO_AUTO_CAPTURE flag.
+
+11. The POSIX flag REG_NOSUB is now supported. When a pattern that was compiled
+    with this option is matched, the nmatch and pmatch options of regexec() are
+    ignored.
+
+12. Added REG_UTF8 to the POSIX interface. This is not defined by POSIX, but is
+    provided in case anyone wants to the the POSIX interface with UTF-8
+    strings.
+
+13. Added CXXLDFLAGS to the Makefile parameters to provide settings only on the
+    C++ linking (needed for some HP-UX environments).
+
+14. Avoid compiler warnings in get_ucpname() when compiled without UCP support
+    (unused parameter) and in the pcre_printint() function (omitted "default"
+    switch label when the default is to do nothing).
+
+15. Added some code to make it possible, when PCRE is compiled as a C++
+    library, to replace subject pointers for pcre_exec() with a smart pointer
+    class, thus making it possible to process discontinuous strings.
+
+16. The two macros PCRE_EXPORT and PCRE_DATA_SCOPE are confusing, and perform
+    much the same function. They were added by different people who were trying
+    to make PCRE easy to compile on non-Unix systems. It has been suggested
+    that PCRE_EXPORT be abolished now that there is more automatic apparatus
+    for compiling on Windows systems. I have therefore replaced it with
+    PCRE_DATA_SCOPE. This is set automatically for Windows; if not set it
+    defaults to "extern" for C or "extern C" for C++, which works fine on
+    Unix-like systems. It is now possible to override the value of PCRE_DATA_
+    SCOPE with something explicit in config.h. In addition:
+
+    (a) pcreposix.h still had just "extern" instead of either of these macros;
+        I have replaced it with PCRE_DATA_SCOPE.
+
+    (b) Functions such as _pcre_xclass(), which are internal to the library,
+        but external in the C sense, all had PCRE_EXPORT in their definitions.
+        This is apparently wrong for the Windows case, so I have removed it.
+        (It makes no difference on Unix-like systems.)
+
+17. Added a new limit, MATCH_LIMIT_RECURSION, which limits the depth of nesting
+    of recursive calls to match(). This is different to MATCH_LIMIT because
+    that limits the total number of calls to match(), not all of which increase
+    the depth of recursion. Limiting the recursion depth limits the amount of
+    stack (or heap if NO_RECURSE is set) that is used. The default can be set
+    when PCRE is compiled, and changed at run time. A patch from Google adds
+    this functionality to the C++ interface.
+
+18. Changes to the handling of Unicode character properties:
+
+    (a) Updated the table to Unicode 4.1.0.
+
+    (b) Recognize characters that are not in the table as "Cn" (undefined).
+
+    (c) I revised the way the table is implemented to a much improved format
+        which includes recognition of ranges. It now supports the ranges that
+        are defined in UnicodeData.txt, and it also amalgamates other
+        characters into ranges. This has reduced the number of entries in the
+        table from around 16,000 to around 3,000, thus reducing its size
+        considerably. I realized I did not need to use a tree structure after
+        all - a binary chop search is just as efficient. Having reduced the
+        number of entries, I extended their size from 6 bytes to 8 bytes to
+        allow for more data.
+
+    (d) Added support for Unicode script names via properties such as \p{Han}.
+
+19. In UTF-8 mode, a backslash followed by a non-Ascii character was not
+    matching that character.
+
+20. When matching a repeated Unicode property with a minimum greater than zero,
+    (for example \pL{2,}), PCRE could look past the end of the subject if it
+    reached it while seeking the minimum number of characters. This could
+    happen only if some of the characters were more than one byte long, because
+    there is a check for at least the minimum number of bytes.
+
+21. Refactored the implementation of \p and \P so as to be more general, to
+    allow for more different types of property in future. This has changed the
+    compiled form incompatibly. Anybody with saved compiled patterns that use
+    \p or \P will have to recompile them.
+
+22. Added "Any" and "L&" to the supported property types.
+
+23. Recognize \x{...} as a code point specifier, even when not in UTF-8 mode,
+    but give a compile time error if the value is greater than 0xff.
+
+24. The man pages for pcrepartial, pcreprecompile, and pcre_compile2 were
+    accidentally not being installed or uninstalled.
+
+25. The pcre.h file was built from pcre.h.in, but the only changes that were
+    made were to insert the current release number. This seemed silly, because
+    it made things harder for people building PCRE on systems that don't run
+    "configure". I have turned pcre.h into a distributed file, no longer built
+    by "configure", with the version identification directly included. There is
+    no longer a pcre.h.in file.
+
+    However, this change necessitated a change to the pcre-config script as
+    well. It is built from pcre-config.in, and one of the substitutions was the
+    release number. I have updated configure.ac so that ./configure now finds
+    the release number by grepping pcre.h.
+
+26. Added the ability to run the tests under valgrind.
+
+
+Version 6.4 05-Sep-05
+---------------------
+
+ 1. Change 6.0/10/(l) to pcregrep introduced a bug that caused separator lines
+    "--" to be printed when multiple files were scanned, even when none of the
+    -A, -B, or -C options were used. This is not compatible with Gnu grep, so I
+    consider it to be a bug, and have restored the previous behaviour.
+
+ 2. A couple of code tidies to get rid of compiler warnings.
+
+ 3. The pcretest program used to cheat by referring to symbols in the library
+    whose names begin with _pcre_. These are internal symbols that are not
+    really supposed to be visible externally, and in some environments it is
+    possible to suppress them. The cheating is now confined to including
+    certain files from the library's source, which is a bit cleaner.
+
+ 4. Renamed pcre.in as pcre.h.in to go with pcrecpp.h.in; it also makes the
+    file's purpose clearer.
+
+ 5. Reorganized pcre_ucp_findchar().
+
+
+Version 6.3 15-Aug-05
+---------------------
+
+ 1. The file libpcre.pc.in did not have general read permission in the tarball.
+
+ 2. There were some problems when building without C++ support:
+
+    (a) If C++ support was not built, "make install" and "make test" still
+        tried to test it.
+
+    (b) There were problems when the value of CXX was explicitly set. Some
+        changes have been made to try to fix these, and ...
+
+    (c) --disable-cpp can now be used to explicitly disable C++ support.
+
+    (d) The use of @CPP_OBJ@ directly caused a blank line preceded by a
+        backslash in a target when C++ was disabled. This confuses some
+        versions of "make", apparently. Using an intermediate variable solves
+        this. (Same for CPP_LOBJ.)
+
+ 3. $(LINK_FOR_BUILD) now includes $(CFLAGS_FOR_BUILD) and $(LINK)
+    (non-Windows) now includes $(CFLAGS) because these flags are sometimes
+    necessary on certain architectures.
+
+ 4. Added a setting of -export-symbols-regex to the link command to remove
+    those symbols that are exported in the C sense, but actually are local
+    within the library, and not documented. Their names all begin with
+    "_pcre_". This is not a perfect job, because (a) we have to except some
+    symbols that pcretest ("illegally") uses, and (b) the facility isn't always
+    available (and never for static libraries). I have made a note to try to
+    find a way round (a) in the future.
+
+
 Version 6.2 01-Aug-05
 ---------------------
 
index e8eb0d9370321dca0b8b0ee34223ab38826592f6..2a3d00e0bcc1ed0f28ca6e0dfc213adc2e0d8eb5 100644 (file)
@@ -22,7 +22,7 @@ Email domain:     cam.ac.uk
 University of Cambridge Computing Service,
 Cambridge, England. Phone: +44 1223 334714.
 
-Copyright (c) 1997-2005 University of Cambridge
+Copyright (c) 1997-2006 University of Cambridge
 All rights reserved.
 
 
index a6113e08996af4ebece32aa2d4b9048ae3009a9f..a8b3a7a04aae4d04a16966ef091013f304cecfff 100644 (file)
@@ -1,6 +1,28 @@
 News about PCRE releases
 ------------------------
 
+Release 6.5 01-Feb-06
+---------------------
+
+Important changes in this release:
+
+1. A number of new features have been added to pcregrep.
+
+2. The Unicode property tables have been updated to Unicode 4.1.0, and the
+   supported properties have been extended with script names such as "Arabic",
+   and the derived properties "Any" and "L&". This has necessitated a change to
+   the interal format of compiled patterns. Any saved compiled patterns that
+   use \p or \P must be recompiled.
+
+3. The specification of recursion in patterns has been changed so that all
+   recursive subpatterns are automatically treated as atomic groups. Thus, for
+   example, (?R) is treated as if it were (?>(?R)). This is necessary because
+   otherwise there are situations where recursion does not work.
+
+See the ChangeLog for a complete list of changes, which include a number of bug
+fixes and tidies.
+
+
 Release 6.0 07-Jun-05
 ---------------------
 
index b7fe4301a6ded621a3282dd3624575c99002cc4c..459bdf2b4fe8f8254cbab419fecb51aff4be1c7a 100644 (file)
@@ -11,8 +11,9 @@ the Contrib directory on the ftp site that you may find useful. See
 
 If you want to compile PCRE for a non-Unix system (or perhaps, more strictly,
 for a system that does not support "configure" and "make" files), note that
-PCRE consists entirely of code written in Standard C, and so should compile
-successfully on any system that has a Standard C compiler and library.
+the basic PCRE library consists entirely of code written in Standard C, and so
+should compile successfully on any system that has a Standard C compiler and
+library. The C++ wrapper functions are a separate issue (see below).
 
 
 GENERIC INSTRUCTIONS FOR THE C LIBRARY
@@ -34,27 +35,16 @@ your compiler gives to '\n'.
   rem Use write, because notepad cannot handle UNIX files. Change values.
   write config.h
 
-(2) Copy or rename the file pcre.in as pcre.h, and change the macro definitions
-for PCRE_MAJOR, PCRE_MINOR, and PCRE_DATE near its start to the values set in
-configure.in.
-
-  rem Mark Tetrode's commands
-  copy pcre.in pcre.h
-  rem Read values from configure.in
-  write configure.in
-  rem Change values
-  write pcre.h
-
-(3) Compile dftables.c as a stand-alone program, and then run it with
-the single argument "chartables.c". This generates a set of standard
+(2) Compile dftables.c as a stand-alone program, and then run it with
+the single argument "pcre_chartables.c". This generates a set of standard
 character tables and writes them to that file.
 
   rem Mark Tetrode's commands
   rem Compile & run
   cl -DSUPPORT_UTF8 -DSUPPORT_UCP dftables.c
-  dftables.exe chartables.c
+  dftables.exe pcre_chartables.c
 
-(4) Compile the following source files:
+(3) Compile the following source files:
 
   pcre_chartables.c
   pcre_compile.c
@@ -67,12 +57,11 @@ character tables and writes them to that file.
   pcre_info.c
   pcre_maketables.c
   pcre_ord2utf8.c
-  pcre_printint.c
   pcre_refcount.c
   pcre_study.c
   pcre_tables.c
   pcre_try_flipped.c
-  pcre_ucp_findchar.c
+  pcre_ucp_searchfuncs.c
   pcre_valid_utf8.c
   pcre_version.c
   pcre_xclass.c
@@ -88,7 +77,7 @@ shared libraries, you may have to do this once for each type.
   cl -DSUPPORT_UTF8 -DSUPPORT_UCP -DPOSIX_MALLOC_THRESHOLD=10 /c maketables.c get.c study.c pcre.c
   lib /OUT:pcre.lib maketables.obj get.obj study.obj pcre.obj
 
-(5) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix
+(4) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix
 library.
 
   rem Mark Tetrode's commands, for a static library
@@ -96,14 +85,14 @@ library.
   cl -DSUPPORT_UTF8 -DSUPPORT_UCP -DPOSIX_MALLOC_THRESHOLD=10 /c pcreposix.c
   lib /OUT:pcreposix.lib pcreposix.obj
 
-(6) Compile the test program pcretest.c. This needs the functions in the
+(5) Compile the test program pcretest.c. This needs the functions in the
 pcre and pcreposix libraries when linking.
 
   rem Mark Tetrode's commands
   rem compile & link
   cl /F0x400000 pcretest.c pcre.lib pcreposix.lib
 
-(7) Run pcretest on the testinput files in the testdata directory, and check
+(6) Run pcretest on the testinput files in the testdata directory, and check
 that the output matches the corresponding testoutput files. You must use the
 -i option when checking testinput2. Note that the supplied files are in Unix
 format, with just LF characters as line terminators. You may need to edit them
@@ -126,6 +115,9 @@ to change this if your system uses a different convention.
 Note that there are now three more tests (7, 8, 9) that did not exist when Mark
 wrote those comments. The test the new pcre_dfa_exec() function.
 
+(7) If you want to use the pcregrep command, compile and link pcregrep.c; it
+uses only the basic PCRE library.
+
 
 THE C++ WRAPPER FUNCTIONS
 
index f8d63bbd34c9525adf0ec5763390cb2ad31835dc..ab9ee516fe430f3fefab8d3ebb8cf156aee6a507 100644 (file)
@@ -68,6 +68,9 @@ others are pointers to URLs containing relevant files.
 Building PCRE on a Unix-like system
 -----------------------------------
 
+If you are using HP's ANSI C++ compiler (aCC), please see the special note
+in the section entitled "Using HP's ANSI C++ compiler (aCC)" below.
+
 To build PCRE on a Unix-like system, first run the "configure" command from the
 PCRE distribution directory, with your current directory set to the directory
 where you want the files to be created. This command is a standard GNU
@@ -91,9 +94,18 @@ into /source/pcre/pcre-xxx, but you want to build it in /build/pcre/pcre-xxx:
 cd /build/pcre/pcre-xxx
 /source/pcre/pcre-xxx/configure
 
+PCRE is written in C and is normally compiled as a C library. However, it is
+possible to build it as a C++ library, though the provided building apparatus
+does not have any features to support this.
+
 There are some optional features that can be included or omitted from the PCRE
 library. You can read more about them in the pcrebuild man page.
 
+. If you want to suppress the building of the C++ wrapper library, you can add
+  --disable-cpp to the "configure" command. Otherwise, when "configure" is run,
+  will try to find a C++ compiler and C++ header files, and if it succeeds, it
+  will try to build the C++ wrapper.
+
 . If you want to make use of the support for UTF-8 character strings in PCRE,
   you must add --enable-utf8 to the "configure" command. Without it, the code
   for handling UTF-8 is not included in the library. (Even when included, it
@@ -106,11 +118,11 @@ library. You can read more about them in the pcrebuild man page.
   property table); only the basic two-letter properties such as Lu are
   supported.
 
-. You can build PCRE to recognized CR or NL as the newline character, instead
-  of whatever your compiler uses for "\n", by adding --newline-is-cr or
-  --newline-is-nl to the "configure" command, respectively. Only do this if you
+. You can build PCRE to recognize either CR or LF as the newline character,
+  instead of whatever your compiler uses for "\n", by adding --newline-is-cr or
+  --newline-is-lf to the "configure" command, respectively. Only do this if you
   really understand what you are doing. On traditional Unix-like systems, the
-  newline character is NL.
+  newline character is LF.
 
 . When called via the POSIX interface, PCRE uses malloc() to get additional
   storage for processing capturing parentheses if there are more than 10 of
@@ -257,6 +269,22 @@ when calling the "configure" command. If they are not specified, they default
 to the values of CC and CFLAGS.
 
 
+Using HP's ANSI C++ compiler (aCC)
+----------------------------------
+
+Unless C++ support is disabled by specifiying the "--disable-cpp" option of the
+"configure" script, you *must* include the "-AA" option in the CXXFLAGS
+environment variable in order for the C++ components to compile correctly.
+
+Also, note that the aCC compiler on PA-RISC platforms may have a defect whereby
+needed libraries fail to get included when specifying the "-AA" compiler
+option. If you experience unresolved symbols when linking the C++ programs,
+use the workaround of specifying the following environment variable prior to
+running the "configure" script:
+
+  CXXLDFLAGS="-lstd_v2 -lCsup_v2"
+
+
 Building on non-Unix systems
 ----------------------------
 
@@ -425,7 +453,8 @@ The distribution should contain the following files:
   pcre_internal.h       header for internal use
   config.in             template for config.h, which is built by configure
 
-  pcrecpp.h.in          "source" for the header file for the C++ wrapper
+  pcrecpp.h             the header file for the C++ wrapper
+  pcrecpparg.h.in       "source" for another C++ header file
   pcrecpp.cc            )
   pcre_scanner.cc       ) source for the C++ wrapper library
 
@@ -486,4 +515,4 @@ The distribution should contain the following files:
 Philip Hazel
 Email local part: ph10
 Email domain: cam.ac.uk
-June 2005
+January 2006
index 480753887ed51ae9dfe780fa466805a5b33fcbaf..5ba207aeb3a927c050ead0e416ead4662702b375 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
index 322cc2de131e633362a4b6d75e4ed44d24c0cae4..aa5398d0faacd5e83e9475a6c3412f350ad079cf 100644 (file)
@@ -309,7 +309,10 @@ Recursion
 
 Recursion either matches the current regex, or some subexpression. The opcode
 OP_RECURSE is followed by an value which is the offset to the starting bracket
-from the start of the whole pattern.
+from the start of the whole pattern. From release 6.5, OP_RECURSE is 
+automatically wrapped inside OP_ONCE brackets (because otherwise some patterns 
+broke it). OP_RECURSE is also used for "subroutine" calls, even though they 
+are not strictly a recursion.
 
 
 Callout
@@ -336,4 +339,4 @@ at compile time, and so does not cause anything to be put into the compiled
 data.
 
 Philip Hazel
-March 2005
+January 2006
index 801bde279b9b247928942fa257765098810ba5b4..fe57de47313427f8e055453cce10f4a65693796c 100644 (file)
@@ -53,7 +53,9 @@ INTRODUCTION
        data  tables  that  are  used by more than one of the exported external
        functions, but which are not intended  for  use  by  external  callers.
        Their  names  all begin with "_pcre_", which hopefully will not provoke
-       any name clashes.
+       any name clashes. In some environments, it is possible to control which
+       external  symbols  are  exported when a shared library is built, and in
+       these cases the undocumented symbols are not exported.
 
 
 USER DOCUMENTATION
@@ -135,9 +137,13 @@ UTF-8 AND UNICODE PROPERTY SUPPORT
        UTF-8  support),  the  escape sequences \p{..}, \P{..}, and \X are sup-
        ported.  The available properties that can be tested are limited to the
        general  category  properties such as Lu for an upper case letter or Nd
-       for a decimal number. A full list is given in the pcrepattern  documen-
-       tation. The PCRE library is increased in size by about 90K when Unicode
-       property support is included.
+       for a decimal number, the Unicode script names such as Arabic  or  Han,
+       and  the  derived  properties  Any  and L&. A full list is given in the
+       pcrepattern documentation. Only the short names for properties are sup-
+       ported.  For example, \p{L} matches a letter. Its Perl synonym, \p{Let-
+       ter}, is not supported.  Furthermore,  in  Perl,  many  properties  may
+       optionally  be  prefixed by "Is", for compatibility with Perl 5.6. PCRE
+       does not support this.
 
        The following comments apply when PCRE is running in UTF-8 mode:
 
@@ -153,44 +159,41 @@ UTF-8 AND UNICODE PROPERTY SUPPORT
        PCRE_NO_UTF8_CHECK  is set, the results are undefined. Your program may
        crash.
 
-       2. In a pattern, the escape sequence \x{...}, where the contents of the
-       braces  is  a  string  of hexadecimal digits, is interpreted as a UTF-8
-       character whose code number is the given hexadecimal number, for  exam-
-       ple:  \x{1234}.  If a non-hexadecimal digit appears between the braces,
-       the item is not recognized.  This escape sequence can be used either as
-       a literal, or within a character class.
+       2. An unbraced hexadecimal escape sequence (such  as  \xb3)  matches  a
+       two-byte UTF-8 character if the value is greater than 127.
 
-       3.  The  original hexadecimal escape sequence, \xhh, matches a two-byte
-       UTF-8 character if the value is greater than 127.
-
-       4. Repeat quantifiers apply to complete UTF-8 characters, not to  indi-
+       3.  Repeat quantifiers apply to complete UTF-8 characters, not to indi-
        vidual bytes, for example: \x{100}{3}.
 
-       5.  The dot metacharacter matches one UTF-8 character instead of a sin-
+       4. The dot metacharacter matches one UTF-8 character instead of a  sin-
        gle byte.
 
-       6. The escape sequence \C can be used to match a single byte  in  UTF-8
-       mode,  but  its  use can lead to some strange effects. This facility is
+       5.  The  escape sequence \C can be used to match a single byte in UTF-8
+       mode, but its use can lead to some strange effects.  This  facility  is
        not available in the alternative matching function, pcre_dfa_exec().
 
-       7. The character escapes \b, \B, \d, \D, \s, \S, \w, and  \W  correctly
-       test  characters of any code value, but the characters that PCRE recog-
-       nizes as digits, spaces, or word characters  remain  the  same  set  as
+       6.  The  character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
+       test characters of any code value, but the characters that PCRE  recog-
+       nizes  as  digits,  spaces,  or  word characters remain the same set as
        before, all with values less than 256. This remains true even when PCRE
-       includes Unicode property support, because to do otherwise  would  slow
-       down  PCRE in many common cases. If you really want to test for a wider
-       sense of, say, "digit", you must use Unicode  property  tests  such  as
+       includes  Unicode  property support, because to do otherwise would slow
+       down PCRE in many common cases. If you really want to test for a  wider
+       sense  of,  say,  "digit",  you must use Unicode property tests such as
        \p{Nd}.
 
-       8.  Similarly,  characters that match the POSIX named character classes
+       7. Similarly, characters that match the POSIX named  character  classes
        are all low-valued characters.
 
-       9. Case-insensitive matching applies only to  characters  whose  values
-       are  less than 128, unless PCRE is built with Unicode property support.
-       Even when Unicode property support is available, PCRE  still  uses  its
-       own  character  tables when checking the case of low-valued characters,
-       so as not to degrade performance.  The Unicode property information  is
-       used only for characters with higher values.
+       8.  Case-insensitive  matching  applies only to characters whose values
+       are less than 128, unless PCRE is built with Unicode property  support.
+       Even  when  Unicode  property support is available, PCRE still uses its
+       own character tables when checking the case of  low-valued  characters,
+       so  as not to degrade performance.  The Unicode property information is
+       used only for characters with higher values. Even when Unicode property
+       support is available, PCRE supports case-insensitive matching only when
+       there is a one-to-one mapping between a letter's  cases.  There  are  a
+       small  number  of  many-to-one  mappings in Unicode; these are not sup-
+       ported by PCRE.
 
 
 AUTHOR
@@ -199,12 +202,12 @@ AUTHOR
        University Computing Service,
        Cambridge CB2 3QG, England.
 
-       Putting  an actual email address here seems to have been a spam magnet,
+       Putting an actual email address here seems to have been a spam  magnet,
        so I've taken it away. If you want to email me, use my initial and sur-
        name, separated by a dot, at the domain ucs.cam.ac.uk.
 
-Last updated: 07 March 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -234,6 +237,17 @@ PCRE BUILD-TIME OPTIONS
        not described.
 
 
+C++ SUPPORT
+
+       By default, the configure script will search for a C++ compiler and C++
+       header files. If it finds them, it automatically builds the C++ wrapper
+       library for PCRE. You can disable this by adding
+
+         --disable-cpp
+
+       to the configure command.
+
+
 UTF-8 SUPPORT
 
        To build PCRE with support for UTF-8 character strings, add
@@ -381,7 +395,7 @@ USING EBCDIC CODE
 
        to the configure command.
 
-Last updated: 28 February 2005
+Last updated: 15 August 2005
 Copyright (c) 1997-2005 University of Cambridge.
 ------------------------------------------------------------------------------
 
@@ -795,6 +809,12 @@ CHECKING BUILD-TIME OPTIONS
        internal  matching  function  calls in a pcre_exec() execution. Further
        details are given with pcre_exec() below.
 
+         PCRE_CONFIG_MATCH_LIMIT_RECURSION
+
+       The output is an integer that gives the default limit for the depth  of
+       recursion  when calling the internal matching function in a pcre_exec()
+       execution. Further details are given with pcre_exec() below.
+
          PCRE_CONFIG_STACKRECURSE
 
        The output is an integer that is set to one if internal recursion  when
@@ -848,25 +868,26 @@ COMPILING A PATTERN
        If errptr is NULL, pcre_compile() returns NULL immediately.  Otherwise,
        if  compilation  of  a  pattern fails, pcre_compile() returns NULL, and
        sets the variable pointed to by errptr to point to a textual error mes-
-       sage.  The  offset from the start of the pattern to the character where
-       the error was discovered is  placed  in  the  variable  pointed  to  by
-       erroffset,  which  must  not  be  NULL. If it is, an immediate error is
+       sage. This is a static string that is part of the library. You must not
+       try to free it. The offset from the start of the pattern to the charac-
+       ter where the error was discovered is placed in the variable pointed to
+       by erroffset, which must not be NULL. If it is, an immediate  error  is
        given.
 
-       If pcre_compile2() is used instead of pcre_compile(),  and  the  error-
-       codeptr  argument is not NULL, a non-zero error code number is returned
-       via this argument in the event of an error. This is in addition to  the
+       If  pcre_compile2()  is  used instead of pcre_compile(), and the error-
+       codeptr argument is not NULL, a non-zero error code number is  returned
+       via  this argument in the event of an error. This is in addition to the
        textual error message. Error codes and messages are listed below.
 
-       If  the  final  argument, tableptr, is NULL, PCRE uses a default set of
-       character tables that are  built  when  PCRE  is  compiled,  using  the
-       default  C  locale.  Otherwise, tableptr must be an address that is the
-       result of a call to pcre_maketables(). This value is  stored  with  the
-       compiled  pattern,  and used again by pcre_exec(), unless another table
+       If the final argument, tableptr, is NULL, PCRE uses a  default  set  of
+       character  tables  that  are  built  when  PCRE  is compiled, using the
+       default C locale. Otherwise, tableptr must be an address  that  is  the
+       result  of  a  call to pcre_maketables(). This value is stored with the
+       compiled pattern, and used again by pcre_exec(), unless  another  table
        pointer is passed to it. For more discussion, see the section on locale
        support below.
 
-       This  code  fragment  shows a typical straightforward call to pcre_com-
+       This code fragment shows a typical straightforward  call  to  pcre_com-
        pile():
 
          pcre *re;
@@ -879,145 +900,145 @@ COMPILING A PATTERN
            &erroffset,       /* for error offset */
            NULL);            /* use default character tables */
 
-       The following names for option bits are defined in  the  pcre.h  header
+       The  following  names  for option bits are defined in the pcre.h header
        file:
 
          PCRE_ANCHORED
 
        If this bit is set, the pattern is forced to be "anchored", that is, it
-       is constrained to match only at the first matching point in the  string
-       that  is being searched (the "subject string"). This effect can also be
-       achieved by appropriate constructs in the pattern itself, which is  the
+       is  constrained to match only at the first matching point in the string
+       that is being searched (the "subject string"). This effect can also  be
+       achieved  by appropriate constructs in the pattern itself, which is the
        only way to do it in Perl.
 
          PCRE_AUTO_CALLOUT
 
        If this bit is set, pcre_compile() automatically inserts callout items,
-       all with number 255, before each pattern item. For  discussion  of  the
+       all  with  number  255, before each pattern item. For discussion of the
        callout facility, see the pcrecallout documentation.
 
          PCRE_CASELESS
 
-       If  this  bit is set, letters in the pattern match both upper and lower
-       case letters. It is equivalent to Perl's  /i  option,  and  it  can  be
-       changed  within a pattern by a (?i) option setting. In UTF-8 mode, PCRE
-       always understands the concept of case for characters whose values  are
-       less  than 128, so caseless matching is always possible. For characters
-       with higher values, the concept of case is supported if  PCRE  is  com-
-       piled  with Unicode property support, but not otherwise. If you want to
-       use caseless matching for characters 128 and  above,  you  must  ensure
-       that  PCRE  is  compiled  with Unicode property support as well as with
+       If this bit is set, letters in the pattern match both upper  and  lower
+       case  letters.  It  is  equivalent  to  Perl's /i option, and it can be
+       changed within a pattern by a (?i) option setting. In UTF-8 mode,  PCRE
+       always  understands the concept of case for characters whose values are
+       less than 128, so caseless matching is always possible. For  characters
+       with  higher  values,  the concept of case is supported if PCRE is com-
+       piled with Unicode property support, but not otherwise. If you want  to
+       use  caseless  matching  for  characters 128 and above, you must ensure
+       that PCRE is compiled with Unicode property support  as  well  as  with
        UTF-8 support.
 
          PCRE_DOLLAR_ENDONLY
 
-       If this bit is set, a dollar metacharacter in the pattern matches  only
-       at  the  end  of the subject string. Without this option, a dollar also
-       matches immediately before the final character if it is a newline  (but
-       not  before  any  other  newlines).  The  PCRE_DOLLAR_ENDONLY option is
+       If  this bit is set, a dollar metacharacter in the pattern matches only
+       at the end of the subject string. Without this option,  a  dollar  also
+       matches  immediately before the final character if it is a newline (but
+       not before any  other  newlines).  The  PCRE_DOLLAR_ENDONLY  option  is
        ignored if PCRE_MULTILINE is set. There is no equivalent to this option
        in Perl, and no way to set it within a pattern.
 
          PCRE_DOTALL
 
        If this bit is set, a dot metacharater in the pattern matches all char-
-       acters, including newlines. Without it,  newlines  are  excluded.  This
-       option  is equivalent to Perl's /s option, and it can be changed within
-       a pattern by a (?s) option setting.  A  negative  class  such  as  [^a]
-       always  matches a newline character, independent of the setting of this
+       acters,  including  newlines.  Without  it, newlines are excluded. This
+       option is equivalent to Perl's /s option, and it can be changed  within
+       a  pattern  by  a  (?s)  option  setting. A negative class such as [^a]
+       always matches a newline character, independent of the setting of  this
        option.
 
          PCRE_EXTENDED
 
-       If this bit is set, whitespace  data  characters  in  the  pattern  are
+       If  this  bit  is  set,  whitespace  data characters in the pattern are
        totally ignored except when escaped or inside a character class. White-
        space does not include the VT character (code 11). In addition, charac-
        ters between an unescaped # outside a character class and the next new-
-       line character, inclusive, are also  ignored.  This  is  equivalent  to
-       Perl's  /x  option,  and  it  can be changed within a pattern by a (?x)
+       line  character,  inclusive,  are  also  ignored. This is equivalent to
+       Perl's /x option, and it can be changed within  a  pattern  by  a  (?x)
        option setting.
 
-       This option makes it possible to include  comments  inside  complicated
-       patterns.   Note,  however,  that this applies only to data characters.
-       Whitespace  characters  may  never  appear  within  special   character
-       sequences  in  a  pattern,  for  example  within the sequence (?( which
+       This  option  makes  it possible to include comments inside complicated
+       patterns.  Note, however, that this applies only  to  data  characters.
+       Whitespace   characters  may  never  appear  within  special  character
+       sequences in a pattern, for  example  within  the  sequence  (?(  which
        introduces a conditional subpattern.
 
          PCRE_EXTRA
 
-       This option was invented in order to turn on  additional  functionality
-       of  PCRE  that  is  incompatible with Perl, but it is currently of very
-       little use. When set, any backslash in a pattern that is followed by  a
-       letter  that  has  no  special  meaning causes an error, thus reserving
-       these combinations for future expansion. By  default,  as  in  Perl,  a
-       backslash  followed by a letter with no special meaning is treated as a
-       literal. There are at present no  other  features  controlled  by  this
+       This  option  was invented in order to turn on additional functionality
+       of PCRE that is incompatible with Perl, but it  is  currently  of  very
+       little  use. When set, any backslash in a pattern that is followed by a
+       letter that has no special meaning  causes  an  error,  thus  reserving
+       these  combinations  for  future  expansion.  By default, as in Perl, a
+       backslash followed by a letter with no special meaning is treated as  a
+       literal.  There  are  at  present  no other features controlled by this
        option. It can also be set by a (?X) option setting within a pattern.
 
          PCRE_FIRSTLINE
 
-       If  this  option  is  set,  an  unanchored pattern is required to match
-       before or at the first newline character in the subject string,  though
+       If this option is set, an  unanchored  pattern  is  required  to  match
+       before  or at the first newline character in the subject string, though
        the matched text may continue over the newline.
 
          PCRE_MULTILINE
 
-       By  default,  PCRE  treats the subject string as consisting of a single
-       line of characters (even if it actually contains newlines). The  "start
-       of  line"  metacharacter  (^)  matches only at the start of the string,
-       while the "end of line" metacharacter ($) matches only at  the  end  of
+       By default, PCRE treats the subject string as consisting  of  a  single
+       line  of characters (even if it actually contains newlines). The "start
+       of line" metacharacter (^) matches only at the  start  of  the  string,
+       while  the  "end  of line" metacharacter ($) matches only at the end of
        the string, or before a terminating newline (unless PCRE_DOLLAR_ENDONLY
        is set). This is the same as Perl.
 
-       When PCRE_MULTILINE it is set, the "start of line" and  "end  of  line"
-       constructs  match  immediately following or immediately before any new-
-       line in the subject string, respectively, as well as at the very  start
-       and  end. This is equivalent to Perl's /m option, and it can be changed
+       When  PCRE_MULTILINE  it  is set, the "start of line" and "end of line"
+       constructs match immediately following or immediately before  any  new-
+       line  in the subject string, respectively, as well as at the very start
+       and end. This is equivalent to Perl's /m option, and it can be  changed
        within a pattern by a (?m) option setting. If there are no "\n" charac-
-       ters  in  a  subject  string, or no occurrences of ^ or $ in a pattern,
+       ters in a subject string, or no occurrences of ^ or  $  in  a  pattern,
        setting PCRE_MULTILINE has no effect.
 
          PCRE_NO_AUTO_CAPTURE
 
        If this option is set, it disables the use of numbered capturing paren-
-       theses  in the pattern. Any opening parenthesis that is not followed by
-       ? behaves as if it were followed by ?: but named parentheses can  still
-       be  used  for  capturing  (and  they acquire numbers in the usual way).
+       theses in the pattern. Any opening parenthesis that is not followed  by
+       ?  behaves as if it were followed by ?: but named parentheses can still
+       be used for capturing (and they acquire  numbers  in  the  usual  way).
        There is no equivalent of this option in Perl.
 
          PCRE_UNGREEDY
 
-       This option inverts the "greediness" of the quantifiers  so  that  they
-       are  not greedy by default, but become greedy if followed by "?". It is
-       not compatible with Perl. It can also be set by a (?U)  option  setting
+       This  option  inverts  the "greediness" of the quantifiers so that they
+       are not greedy by default, but become greedy if followed by "?". It  is
+       not  compatible  with Perl. It can also be set by a (?U) option setting
        within the pattern.
 
          PCRE_UTF8
 
-       This  option  causes PCRE to regard both the pattern and the subject as
-       strings of UTF-8 characters instead of single-byte  character  strings.
-       However,  it is available only when PCRE is built to include UTF-8 sup-
-       port. If not, the use of this option provokes an error. Details of  how
-       this  option  changes the behaviour of PCRE are given in the section on
+       This option causes PCRE to regard both the pattern and the  subject  as
+       strings  of  UTF-8 characters instead of single-byte character strings.
+       However, it is available only when PCRE is built to include UTF-8  sup-
+       port.  If not, the use of this option provokes an error. Details of how
+       this option changes the behaviour of PCRE are given in the  section  on
        UTF-8 support in the main pcre page.
 
          PCRE_NO_UTF8_CHECK
 
        When PCRE_UTF8 is set, the validity of the pattern as a UTF-8 string is
-       automatically  checked. If an invalid UTF-8 sequence of bytes is found,
-       pcre_compile() returns an error. If you already know that your  pattern
-       is  valid, and you want to skip this check for performance reasons, you
-       can set the PCRE_NO_UTF8_CHECK option. When it is set,  the  effect  of
+       automatically checked. If an invalid UTF-8 sequence of bytes is  found,
+       pcre_compile()  returns an error. If you already know that your pattern
+       is valid, and you want to skip this check for performance reasons,  you
+       can  set  the  PCRE_NO_UTF8_CHECK option. When it is set, the effect of
        passing an invalid UTF-8 string as a pattern is undefined. It may cause
-       your program to crash.  Note that this option can  also  be  passed  to
-       pcre_exec()  and pcre_dfa_exec(), to suppress the UTF-8 validity check-
+       your  program  to  crash.   Note that this option can also be passed to
+       pcre_exec() and pcre_dfa_exec(), to suppress the UTF-8 validity  check-
        ing of subject strings.
 
 
 COMPILATION ERROR CODES
 
-       The following table lists the error  codes  than  may  be  returned  by
-       pcre_compile2(),  along with the error messages that may be returned by
+       The  following  table  lists  the  error  codes than may be returned by
+       pcre_compile2(), along with the error messages that may be returned  by
        both compiling functions.
 
           0  no error
@@ -1075,32 +1096,33 @@ STUDYING A PATTERN
        pcre_extra *pcre_study(const pcre *code, int options
             const char **errptr);
 
-       If a compiled pattern is going to be used several times,  it  is  worth
+       If  a  compiled  pattern is going to be used several times, it is worth
        spending more time analyzing it in order to speed up the time taken for
-       matching. The function pcre_study() takes a pointer to a compiled  pat-
+       matching.  The function pcre_study() takes a pointer to a compiled pat-
        tern as its first argument. If studying the pattern produces additional
-       information that will help speed up matching,  pcre_study()  returns  a
-       pointer  to a pcre_extra block, in which the study_data field points to
+       information  that  will  help speed up matching, pcre_study() returns a
+       pointer to a pcre_extra block, in which the study_data field points  to
        the results of the study.
 
        The  returned  value  from  pcre_study()  can  be  passed  directly  to
-       pcre_exec().  However,  a  pcre_extra  block also contains other fields
-       that can be set by the caller before the block  is  passed;  these  are
+       pcre_exec(). However, a pcre_extra block  also  contains  other  fields
+       that  can  be  set  by the caller before the block is passed; these are
        described below in the section on matching a pattern.
 
-       If  studying  the  pattern  does not produce any additional information
+       If studying the pattern does not  produce  any  additional  information
        pcre_study() returns NULL. In that circumstance, if the calling program
-       wants  to  pass  any of the other fields to pcre_exec(), it must set up
+       wants to pass any of the other fields to pcre_exec(), it  must  set  up
        its own pcre_extra block.
 
-       The second argument of pcre_study() contains option bits.  At  present,
+       The  second  argument of pcre_study() contains option bits. At present,
        no options are defined, and this argument should always be zero.
 
-       The  third argument for pcre_study() is a pointer for an error message.
-       If studying succeeds (even if no data is  returned),  the  variable  it
-       points  to  is set to NULL. Otherwise it points to a textual error mes-
-       sage. You should therefore test the error pointer for NULL after  call-
-       ing pcre_study(), to be sure that it has run successfully.
+       The third argument for pcre_study() is a pointer for an error  message.
+       If  studying  succeeds  (even  if no data is returned), the variable it
+       points to is set to NULL. Otherwise it is set to  point  to  a  textual
+       error message. This is a static string that is part of the library. You
+       must not try to free it. You should test the  error  pointer  for  NULL
+       after calling pcre_study(), to be sure that it has run successfully.
 
        This is a typical call to pcre_study():
 
@@ -1122,40 +1144,41 @@ LOCALE SUPPORT
        by  character  value.  When running in UTF-8 mode, this applies only to
        characters with codes less than 128. Higher-valued  codes  never  match
        escapes  such  as  \w or \d, but can be tested with \p if PCRE is built
-       with Unicode character property support.
-
-       An internal set of tables is created in the default C locale when  PCRE
-       is  built.  This  is  used when the final argument of pcre_compile() is
-       NULL, and is sufficient for many applications. An  alternative  set  of
-       tables  can,  however, be supplied. These may be created in a different
-       locale from the default. As more and more applications change to  using
+       with Unicode character property support. The use of locales  with  Uni-
+       code is discouraged.
+
+       An  internal set of tables is created in the default C locale when PCRE
+       is built. This is used when the final  argument  of  pcre_compile()  is
+       NULL,  and  is  sufficient for many applications. An alternative set of
+       tables can, however, be supplied. These may be created in  a  different
+       locale  from the default. As more and more applications change to using
        Unicode, the need for this locale support is expected to die away.
 
-       External  tables  are  built by calling the pcre_maketables() function,
-       which has no arguments, in the relevant locale. The result can then  be
-       passed  to  pcre_compile()  or  pcre_exec()  as often as necessary. For
-       example, to build and use tables that are appropriate  for  the  French
-       locale  (where  accented  characters  with  values greater than 128 are
+       External tables are built by calling  the  pcre_maketables()  function,
+       which  has no arguments, in the relevant locale. The result can then be
+       passed to pcre_compile() or pcre_exec()  as  often  as  necessary.  For
+       example,  to  build  and use tables that are appropriate for the French
+       locale (where accented characters with  values  greater  than  128  are
        treated as letters), the following code could be used:
 
          setlocale(LC_CTYPE, "fr_FR");
          tables = pcre_maketables();
          re = pcre_compile(..., tables);
 
-       When pcre_maketables() runs, the tables are built  in  memory  that  is
-       obtained  via  pcre_malloc. It is the caller's responsibility to ensure
-       that the memory containing the tables remains available for as long  as
+       When  pcre_maketables()  runs,  the  tables are built in memory that is
+       obtained via pcre_malloc. It is the caller's responsibility  to  ensure
+       that  the memory containing the tables remains available for as long as
        it is needed.
 
        The pointer that is passed to pcre_compile() is saved with the compiled
-       pattern, and the same tables are used via this pointer by  pcre_study()
+       pattern,  and the same tables are used via this pointer by pcre_study()
        and normally also by pcre_exec(). Thus, by default, for any single pat-
        tern, compilation, studying and matching all happen in the same locale,
        but different patterns can be compiled in different locales.
 
-       It  is  possible to pass a table pointer or NULL (indicating the use of
-       the internal tables) to pcre_exec(). Although  not  intended  for  this
-       purpose,  this facility could be used to match a pattern in a different
+       It is possible to pass a table pointer or NULL (indicating the  use  of
+       the  internal  tables)  to  pcre_exec(). Although not intended for this
+       purpose, this facility could be used to match a pattern in a  different
        locale from the one in which it was compiled. Passing table pointers at
        run time is discussed below in the section on matching a pattern.
 
@@ -1165,15 +1188,15 @@ INFORMATION ABOUT A PATTERN
        int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
             int what, void *where);
 
-       The  pcre_fullinfo() function returns information about a compiled pat-
+       The pcre_fullinfo() function returns information about a compiled  pat-
        tern. It replaces the obsolete pcre_info() function, which is neverthe-
        less retained for backwards compability (and is documented below).
 
-       The  first  argument  for  pcre_fullinfo() is a pointer to the compiled
-       pattern. The second argument is the result of pcre_study(), or NULL  if
-       the  pattern  was not studied. The third argument specifies which piece
-       of information is required, and the fourth argument is a pointer  to  a
-       variable  to  receive  the  data. The yield of the function is zero for
+       The first argument for pcre_fullinfo() is a  pointer  to  the  compiled
+       pattern.  The second argument is the result of pcre_study(), or NULL if
+       the pattern was not studied. The third argument specifies  which  piece
+       of  information  is required, and the fourth argument is a pointer to a
+       variable to receive the data. The yield of the  function  is  zero  for
        success, or one of the following negative numbers:
 
          PCRE_ERROR_NULL       the argument code was NULL
@@ -1181,9 +1204,9 @@ INFORMATION ABOUT A PATTERN
          PCRE_ERROR_BADMAGIC   the "magic number" was not found
          PCRE_ERROR_BADOPTION  the value of what was invalid
 
-       The "magic number" is placed at the start of each compiled  pattern  as
-       an  simple check against passing an arbitrary memory pointer. Here is a
-       typical call of pcre_fullinfo(), to obtain the length of  the  compiled
+       The  "magic  number" is placed at the start of each compiled pattern as
+       an simple check against passing an arbitrary memory pointer. Here is  a
+       typical  call  of pcre_fullinfo(), to obtain the length of the compiled
        pattern:
 
          int rc;
@@ -1194,64 +1217,64 @@ INFORMATION ABOUT A PATTERN
            PCRE_INFO_SIZE,   /* what is required */
            &length);         /* where to put the data */
 
-       The  possible  values for the third argument are defined in pcre.h, and
+       The possible values for the third argument are defined in  pcre.h,  and
        are as follows:
 
          PCRE_INFO_BACKREFMAX
 
-       Return the number of the highest back reference  in  the  pattern.  The
-       fourth  argument  should  point to an int variable. Zero is returned if
+       Return  the  number  of  the highest back reference in the pattern. The
+       fourth argument should point to an int variable. Zero  is  returned  if
        there are no back references.
 
          PCRE_INFO_CAPTURECOUNT
 
-       Return the number of capturing subpatterns in the pattern.  The  fourth
+       Return  the  number of capturing subpatterns in the pattern. The fourth
        argument should point to an int variable.
 
          PCRE_INFO_DEFAULT_TABLES
 
-       Return  a pointer to the internal default character tables within PCRE.
-       The fourth argument should point to an unsigned char *  variable.  This
+       Return a pointer to the internal default character tables within  PCRE.
+       The  fourth  argument should point to an unsigned char * variable. This
        information call is provided for internal use by the pcre_study() func-
-       tion. External callers can cause PCRE to use  its  internal  tables  by
+       tion.  External  callers  can  cause PCRE to use its internal tables by
        passing a NULL table pointer.
 
          PCRE_INFO_FIRSTBYTE
 
-       Return  information  about  the first byte of any matched string, for a
-       non-anchored   pattern.   (This    option    used    to    be    called
-       PCRE_INFO_FIRSTCHAR;  the  old  name  is still recognized for backwards
+       Return information about the first byte of any matched  string,  for  a
+       non-anchored    pattern.    (This    option    used    to   be   called
+       PCRE_INFO_FIRSTCHAR; the old name is  still  recognized  for  backwards
        compatibility.)
 
-       If there is a fixed first byte, for example, from  a  pattern  such  as
-       (cat|cow|coyote),  it  is  returned in the integer pointed to by where.
+       If  there  is  a  fixed first byte, for example, from a pattern such as
+       (cat|cow|coyote), it is returned in the integer pointed  to  by  where.
        Otherwise, if either
 
-       (a) the pattern was compiled with the PCRE_MULTILINE option, and  every
+       (a)  the pattern was compiled with the PCRE_MULTILINE option, and every
        branch starts with "^", or
 
        (b) every branch of the pattern starts with ".*" and PCRE_DOTALL is not
        set (if it were set, the pattern would be anchored),
 
-       -1 is returned, indicating that the pattern matches only at  the  start
-       of  a  subject string or after any newline within the string. Otherwise
+       -1  is  returned, indicating that the pattern matches only at the start
+       of a subject string or after any newline within the  string.  Otherwise
        -2 is returned. For anchored patterns, -2 is returned.
 
          PCRE_INFO_FIRSTTABLE
 
-       If the pattern was studied, and this resulted in the construction of  a
+       If  the pattern was studied, and this resulted in the construction of a
        256-bit table indicating a fixed set of bytes for the first byte in any
-       matching string, a pointer to the table is returned. Otherwise NULL  is
-       returned.  The fourth argument should point to an unsigned char * vari-
+       matching  string, a pointer to the table is returned. Otherwise NULL is
+       returned. The fourth argument should point to an unsigned char *  vari-
        able.
 
          PCRE_INFO_LASTLITERAL
 
-       Return the value of the rightmost literal byte that must exist  in  any
-       matched  string,  other  than  at  its  start,  if such a byte has been
+       Return  the  value of the rightmost literal byte that must exist in any
+       matched string, other than at its  start,  if  such  a  byte  has  been
        recorded. The fourth argument should point to an int variable. If there
-       is  no such byte, -1 is returned. For anchored patterns, a last literal
-       byte is recorded only if it follows something of variable  length.  For
+       is no such byte, -1 is returned. For anchored patterns, a last  literal
+       byte  is  recorded only if it follows something of variable length. For
        example, for the pattern /^a\d+z\d+/ the returned value is "z", but for
        /^a\dz\d/ the returned value is -1.
 
@@ -1259,32 +1282,32 @@ INFORMATION ABOUT A PATTERN
          PCRE_INFO_NAMEENTRYSIZE
          PCRE_INFO_NAMETABLE
 
-       PCRE supports the use of named as well as numbered capturing  parenthe-
-       ses.  The names are just an additional way of identifying the parenthe-
+       PCRE  supports the use of named as well as numbered capturing parenthe-
+       ses. The names are just an additional way of identifying the  parenthe-
        ses,  which  still  acquire  numbers.  A  convenience  function  called
-       pcre_get_named_substring()  is  provided  for  extracting an individual
-       captured substring by name. It is also possible  to  extract  the  data
-       directly,  by  first converting the name to a number in order to access
-       the correct pointers in the output vector (described  with  pcre_exec()
-       below).  To  do the conversion, you need to use the name-to-number map,
+       pcre_get_named_substring() is provided  for  extracting  an  individual
+       captured  substring  by  name.  It is also possible to extract the data
+       directly, by first converting the name to a number in order  to  access
+       the  correct  pointers in the output vector (described with pcre_exec()
+       below). To do the conversion, you need to use the  name-to-number  map,
        which is described by these three values.
 
        The map consists of a number of fixed-size entries. PCRE_INFO_NAMECOUNT
        gives the number of entries, and PCRE_INFO_NAMEENTRYSIZE gives the size
-       of each entry; both of these  return  an  int  value.  The  entry  size
-       depends  on the length of the longest name. PCRE_INFO_NAMETABLE returns
-       a pointer to the first entry of the table  (a  pointer  to  char).  The
+       of  each  entry;  both  of  these  return  an int value. The entry size
+       depends on the length of the longest name. PCRE_INFO_NAMETABLE  returns
+       a  pointer  to  the  first  entry of the table (a pointer to char). The
        first two bytes of each entry are the number of the capturing parenthe-
-       sis, most significant byte first. The rest of the entry is  the  corre-
-       sponding  name,  zero  terminated. The names are in alphabetical order.
-       For example, consider the following pattern  (assume  PCRE_EXTENDED  is
+       sis,  most  significant byte first. The rest of the entry is the corre-
+       sponding name, zero terminated. The names are  in  alphabetical  order.
+       For  example,  consider  the following pattern (assume PCRE_EXTENDED is
        set, so white space - including newlines - is ignored):
 
          (?P<date> (?P<year>(\d\d)?\d\d) -
          (?P<month>\d\d) - (?P<day>\d\d) )
 
-       There  are  four  named subpatterns, so the table has four entries, and
-       each entry in the table is eight bytes long. The table is  as  follows,
+       There are four named subpatterns, so the table has  four  entries,  and
+       each  entry  in the table is eight bytes long. The table is as follows,
        with non-printing bytes shows in hexadecimal, and undefined bytes shown
        as ??:
 
@@ -1293,18 +1316,18 @@ INFORMATION ABOUT A PATTERN
          00 04 m  o  n  t  h  00
          00 02 y  e  a  r  00 ??
 
-       When writing code to extract data  from  named  subpatterns  using  the
+       When  writing  code  to  extract  data from named subpatterns using the
        name-to-number map, remember that the length of each entry is likely to
        be different for each compiled pattern.
 
          PCRE_INFO_OPTIONS
 
-       Return a copy of the options with which the pattern was  compiled.  The
-       fourth  argument  should  point to an unsigned long int variable. These
+       Return  a  copy of the options with which the pattern was compiled. The
+       fourth argument should point to an unsigned long  int  variable.  These
        option bits are those specified in the call to pcre_compile(), modified
        by any top-level option settings within the pattern itself.
 
-       A  pattern  is  automatically  anchored by PCRE if all of its top-level
+       A pattern is automatically anchored by PCRE if  all  of  its  top-level
        alternatives begin with one of the following:
 
          ^     unless PCRE_MULTILINE is set
@@ -1318,7 +1341,7 @@ INFORMATION ABOUT A PATTERN
 
          PCRE_INFO_SIZE
 
-       Return  the  size  of the compiled pattern, that is, the value that was
+       Return the size of the compiled pattern, that is, the  value  that  was
        passed as the argument to pcre_malloc() when PCRE was getting memory in
        which to place the compiled data. The fourth argument should point to a
        size_t variable.
@@ -1326,9 +1349,9 @@ INFORMATION ABOUT A PATTERN
          PCRE_INFO_STUDYSIZE
 
        Return the size of the data block pointed to by the study_data field in
-       a  pcre_extra  block.  That  is,  it  is  the  value that was passed to
+       a pcre_extra block. That is,  it  is  the  value  that  was  passed  to
        pcre_malloc() when PCRE was getting memory into which to place the data
-       created  by  pcre_study(). The fourth argument should point to a size_t
+       created by pcre_study(). The fourth argument should point to  a  size_t
        variable.
 
 
@@ -1336,21 +1359,21 @@ OBSOLETE INFO FUNCTION
 
        int pcre_info(const pcre *code, int *optptr, int *firstcharptr);
 
-       The pcre_info() function is now obsolete because its interface  is  too
-       restrictive  to return all the available data about a compiled pattern.
-       New  programs  should  use  pcre_fullinfo()  instead.  The   yield   of
-       pcre_info()  is the number of capturing subpatterns, or one of the fol-
+       The  pcre_info()  function is now obsolete because its interface is too
+       restrictive to return all the available data about a compiled  pattern.
+       New   programs   should  use  pcre_fullinfo()  instead.  The  yield  of
+       pcre_info() is the number of capturing subpatterns, or one of the  fol-
        lowing negative numbers:
 
          PCRE_ERROR_NULL       the argument code was NULL
          PCRE_ERROR_BADMAGIC   the "magic number" was not found
 
-       If the optptr argument is not NULL, a copy of the  options  with  which
-       the  pattern  was  compiled  is placed in the integer it points to (see
+       If  the  optptr  argument is not NULL, a copy of the options with which
+       the pattern was compiled is placed in the integer  it  points  to  (see
        PCRE_INFO_OPTIONS above).
 
-       If the pattern is not anchored and the  firstcharptr  argument  is  not
-       NULL,  it is used to pass back information about the first character of
+       If  the  pattern  is  not anchored and the firstcharptr argument is not
+       NULL, it is used to pass back information about the first character  of
        any matched string (see PCRE_INFO_FIRSTBYTE above).
 
 
@@ -1358,21 +1381,21 @@ REFERENCE COUNTS
 
        int pcre_refcount(pcre *code, int adjust);
 
-       The pcre_refcount() function is used to maintain a reference  count  in
+       The  pcre_refcount()  function is used to maintain a reference count in
        the data block that contains a compiled pattern. It is provided for the
-       benefit of applications that  operate  in  an  object-oriented  manner,
+       benefit  of  applications  that  operate  in an object-oriented manner,
        where different parts of the application may be using the same compiled
        pattern, but you want to free the block when they are all done.
 
        When a pattern is compiled, the reference count field is initialized to
-       zero.   It is changed only by calling this function, whose action is to
-       add the adjust value (which may be positive or  negative)  to  it.  The
+       zero.  It is changed only by calling this function, whose action is  to
+       add  the  adjust  value  (which may be positive or negative) to it. The
        yield of the function is the new value. However, the value of the count
-       is constrained to lie between 0 and 65535, inclusive. If the new  value
+       is  constrained to lie between 0 and 65535, inclusive. If the new value
        is outside these limits, it is forced to the appropriate limit value.
 
-       Except  when it is zero, the reference count is not correctly preserved
-       if a pattern is compiled on one host and then  transferred  to  a  host
+       Except when it is zero, the reference count is not correctly  preserved
+       if  a  pattern  is  compiled on one host and then transferred to a host
        whose byte-order is different. (This seems a highly unlikely scenario.)
 
 
@@ -1382,18 +1405,18 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
             const char *subject, int length, int startoffset,
             int options, int *ovector, int ovecsize);
 
-       The function pcre_exec() is called to match a subject string against  a
-       compiled  pattern, which is passed in the code argument. If the pattern
+       The  function pcre_exec() is called to match a subject string against a
+       compiled pattern, which is passed in the code argument. If the  pattern
        has been studied, the result of the study should be passed in the extra
-       argument.  This  function is the main matching facility of the library,
+       argument. This function is the main matching facility of  the  library,
        and it operates in a Perl-like manner. For specialist use there is also
-       an  alternative matching function, which is described below in the sec-
+       an alternative matching function, which is described below in the  sec-
        tion about the pcre_dfa_exec() function.
 
-       In most applications, the pattern will have been compiled (and  option-
-       ally  studied)  in the same process that calls pcre_exec(). However, it
+       In  most applications, the pattern will have been compiled (and option-
+       ally studied) in the same process that calls pcre_exec().  However,  it
        is possible to save compiled patterns and study data, and then use them
-       later  in  different processes, possibly even on different hosts. For a
+       later in different processes, possibly even on different hosts.  For  a
        discussion about this, see the pcreprecompile documentation.
 
        Here is an example of a simple call to pcre_exec():
@@ -1412,249 +1435,268 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
 
    Extra data for pcre_exec()
 
-       If the extra argument is not NULL, it must point to a  pcre_extra  data
-       block.  The pcre_study() function returns such a block (when it doesn't
-       return NULL), but you can also create one for yourself, and pass  addi-
-       tional  information in it. The fields in a pcre_extra block are as fol-
-       lows:
+       If  the  extra argument is not NULL, it must point to a pcre_extra data
+       block. The pcre_study() function returns such a block (when it  doesn't
+       return  NULL), but you can also create one for yourself, and pass addi-
+       tional information in it. The pcre_extra block contains  the  following
+       fields (not necessarily in this order):
 
          unsigned long int flags;
          void *study_data;
          unsigned long int match_limit;
+         unsigned long int match_limit_recursion;
          void *callout_data;
          const unsigned char *tables;
 
-       The flags field is a bitmap that specifies which of  the  other  fields
+       The  flags  field  is a bitmap that specifies which of the other fields
        are set. The flag bits are:
 
          PCRE_EXTRA_STUDY_DATA
          PCRE_EXTRA_MATCH_LIMIT
+         PCRE_EXTRA_MATCH_LIMIT_RECURSION
          PCRE_EXTRA_CALLOUT_DATA
          PCRE_EXTRA_TABLES
 
-       Other  flag  bits should be set to zero. The study_data field is set in
-       the pcre_extra block that is returned by  pcre_study(),  together  with
+       Other flag bits should be set to zero. The study_data field is  set  in
+       the  pcre_extra  block  that is returned by pcre_study(), together with
        the appropriate flag bit. You should not set this yourself, but you may
-       add to the block by setting the other fields  and  their  corresponding
+       add  to  the  block by setting the other fields and their corresponding
        flag bits.
 
        The match_limit field provides a means of preventing PCRE from using up
-       a vast amount of resources when running patterns that are not going  to
-       match,  but  which  have  a very large number of possibilities in their
-       search trees. The classic  example  is  the  use  of  nested  unlimited
+       a  vast amount of resources when running patterns that are not going to
+       match, but which have a very large number  of  possibilities  in  their
+       search  trees.  The  classic  example  is  the  use of nested unlimited
        repeats.
 
-       Internally,  PCRE uses a function called match() which it calls repeat-
-       edly (sometimes recursively). The limit is imposed  on  the  number  of
-       times  this  function is called during a match, which has the effect of
-       limiting the amount of recursion and backtracking that can take  place.
-       For patterns that are not anchored, the count starts from zero for each
-       position in the subject string.
-
-       The default limit for the library can be set when PCRE  is  built;  the
-       default  default  is 10 million, which handles all but the most extreme
-       cases. You can reduce  the  default  by  suppling  pcre_exec()  with  a
-       pcre_extra  block  in  which match_limit is set to a smaller value, and
-       PCRE_EXTRA_MATCH_LIMIT is set in the  flags  field.  If  the  limit  is
+       Internally, PCRE uses a function called match() which it calls  repeat-
+       edly  (sometimes  recursively). The limit set by match_limit is imposed
+       on the number of times this function is called during  a  match,  which
+       has  the  effect  of  limiting the amount of backtracking that can take
+       place. For patterns that are not anchored, the count restarts from zero
+       for each position in the subject string.
+
+       The  default  value  for  the  limit can be set when PCRE is built; the
+       default default is 10 million, which handles all but the  most  extreme
+       cases.  You  can  override  the  default by suppling pcre_exec() with a
+       pcre_extra    block    in    which    match_limit    is    set,     and
+       PCRE_EXTRA_MATCH_LIMIT  is  set  in  the  flags  field. If the limit is
        exceeded, pcre_exec() returns PCRE_ERROR_MATCHLIMIT.
 
-       The  pcre_callout  field is used in conjunction with the "callout" fea-
+       The match_limit_recursion field is similar to match_limit, but  instead
+       of limiting the total number of times that match() is called, it limits
+       the depth of recursion. The recursion depth is a  smaller  number  than
+       the  total number of calls, because not all calls to match() are recur-
+       sive.  This limit is of use only if it is set smaller than match_limit.
+
+       Limiting  the  recursion  depth  limits the amount of stack that can be
+       used, or, when PCRE has been compiled to use memory on the heap instead
+       of the stack, the amount of heap memory that can be used.
+
+       The  default  value  for  match_limit_recursion can be set when PCRE is
+       built; the default default  is  the  same  value  as  the  default  for
+       match_limit.  You can override the default by suppling pcre_exec() with
+       a  pcre_extra  block  in  which  match_limit_recursion  is   set,   and
+       PCRE_EXTRA_MATCH_LIMIT_RECURSION  is  set  in  the  flags field. If the
+       limit is exceeded, pcre_exec() returns PCRE_ERROR_RECURSIONLIMIT.
+
+       The pcre_callout field is used in conjunction with the  "callout"  fea-
        ture, which is described in the pcrecallout documentation.
 
-       The tables field  is  used  to  pass  a  character  tables  pointer  to
-       pcre_exec();  this overrides the value that is stored with the compiled
-       pattern. A non-NULL value is stored with the compiled pattern  only  if
-       custom  tables  were  supplied to pcre_compile() via its tableptr argu-
+       The  tables  field  is  used  to  pass  a  character  tables pointer to
+       pcre_exec(); this overrides the value that is stored with the  compiled
+       pattern.  A  non-NULL value is stored with the compiled pattern only if
+       custom tables were supplied to pcre_compile() via  its  tableptr  argu-
        ment.  If NULL is passed to pcre_exec() using this mechanism, it forces
-       PCRE's  internal  tables  to be used. This facility is helpful when re-
-       using patterns that have been saved after compiling  with  an  external
-       set  of  tables,  because  the  external tables might be at a different
-       address when pcre_exec() is called. See the  pcreprecompile  documenta-
+       PCRE's internal tables to be used. This facility is  helpful  when  re-
+       using  patterns  that  have been saved after compiling with an external
+       set of tables, because the external tables  might  be  at  a  different
+       address  when  pcre_exec() is called. See the pcreprecompile documenta-
        tion for a discussion of saving compiled patterns for later use.
 
    Option bits for pcre_exec()
 
-       The  unused  bits of the options argument for pcre_exec() must be zero.
-       The  only  bits  that  may  be  set  are  PCRE_ANCHORED,   PCRE_NOTBOL,
+       The unused bits of the options argument for pcre_exec() must  be  zero.
+       The   only  bits  that  may  be  set  are  PCRE_ANCHORED,  PCRE_NOTBOL,
        PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK and PCRE_PARTIAL.
 
          PCRE_ANCHORED
 
-       The  PCRE_ANCHORED  option  limits pcre_exec() to matching at the first
-       matching position. If a pattern was  compiled  with  PCRE_ANCHORED,  or
-       turned  out to be anchored by virtue of its contents, it cannot be made
+       The PCRE_ANCHORED option limits pcre_exec() to matching  at  the  first
+       matching  position.  If  a  pattern was compiled with PCRE_ANCHORED, or
+       turned out to be anchored by virtue of its contents, it cannot be  made
        unachored at matching time.
 
          PCRE_NOTBOL
 
        This option specifies that first character of the subject string is not
-       the  beginning  of  a  line, so the circumflex metacharacter should not
-       match before it. Setting this without PCRE_MULTILINE (at compile  time)
-       causes  circumflex  never to match. This option affects only the behav-
+       the beginning of a line, so the  circumflex  metacharacter  should  not
+       match  before it. Setting this without PCRE_MULTILINE (at compile time)
+       causes circumflex never to match. This option affects only  the  behav-
        iour of the circumflex metacharacter. It does not affect \A.
 
          PCRE_NOTEOL
 
        This option specifies that the end of the subject string is not the end
-       of  a line, so the dollar metacharacter should not match it nor (except
-       in multiline mode) a newline immediately before it. Setting this  with-
+       of a line, so the dollar metacharacter should not match it nor  (except
+       in  multiline mode) a newline immediately before it. Setting this with-
        out PCRE_MULTILINE (at compile time) causes dollar never to match. This
-       option affects only the behaviour of the dollar metacharacter. It  does
+       option  affects only the behaviour of the dollar metacharacter. It does
        not affect \Z or \z.
 
          PCRE_NOTEMPTY
 
        An empty string is not considered to be a valid match if this option is
-       set. If there are alternatives in the pattern, they are tried.  If  all
-       the  alternatives  match  the empty string, the entire match fails. For
+       set.  If  there are alternatives in the pattern, they are tried. If all
+       the alternatives match the empty string, the entire  match  fails.  For
        example, if the pattern
 
          a?b?
 
-       is applied to a string not beginning with "a" or "b",  it  matches  the
-       empty  string at the start of the subject. With PCRE_NOTEMPTY set, this
+       is  applied  to  a string not beginning with "a" or "b", it matches the
+       empty string at the start of the subject. With PCRE_NOTEMPTY set,  this
        match is not valid, so PCRE searches further into the string for occur-
        rences of "a" or "b".
 
        Perl has no direct equivalent of PCRE_NOTEMPTY, but it does make a spe-
-       cial case of a pattern match of the empty  string  within  its  split()
-       function,  and  when  using  the /g modifier. It is possible to emulate
+       cial  case  of  a  pattern match of the empty string within its split()
+       function, and when using the /g modifier. It  is  possible  to  emulate
        Perl's behaviour after matching a null string by first trying the match
        again at the same offset with PCRE_NOTEMPTY and PCRE_ANCHORED, and then
-       if that fails by advancing the starting offset (see below)  and  trying
+       if  that  fails by advancing the starting offset (see below) and trying
        an ordinary match again. There is some code that demonstrates how to do
        this in the pcredemo.c sample program.
 
          PCRE_NO_UTF8_CHECK
 
        When PCRE_UTF8 is set at compile time, the validity of the subject as a
-       UTF-8  string is automatically checked when pcre_exec() is subsequently
-       called.  The value of startoffset is also checked  to  ensure  that  it
-       points  to the start of a UTF-8 character. If an invalid UTF-8 sequence
+       UTF-8 string is automatically checked when pcre_exec() is  subsequently
+       called.   The  value  of  startoffset is also checked to ensure that it
+       points to the start of a UTF-8 character. If an invalid UTF-8  sequence
        of bytes is found, pcre_exec() returns the error PCRE_ERROR_BADUTF8. If
-       startoffset  contains  an  invalid  value, PCRE_ERROR_BADUTF8_OFFSET is
+       startoffset contains an  invalid  value,  PCRE_ERROR_BADUTF8_OFFSET  is
        returned.
 
-       If you already know that your subject is valid, and you  want  to  skip
-       these    checks    for   performance   reasons,   you   can   set   the
-       PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might  want  to
-       do  this  for the second and subsequent calls to pcre_exec() if you are
-       making repeated calls to find all  the  matches  in  a  single  subject
-       string.  However,  you  should  be  sure  that the value of startoffset
-       points to the start of a UTF-8 character.  When  PCRE_NO_UTF8_CHECK  is
-       set,  the  effect of passing an invalid UTF-8 string as a subject, or a
-       value of startoffset that does not point to the start of a UTF-8  char-
+       If  you  already  know that your subject is valid, and you want to skip
+       these   checks   for   performance   reasons,   you   can    set    the
+       PCRE_NO_UTF8_CHECK  option  when calling pcre_exec(). You might want to
+       do this for the second and subsequent calls to pcre_exec() if  you  are
+       making  repeated  calls  to  find  all  the matches in a single subject
+       string. However, you should be  sure  that  the  value  of  startoffset
+       points  to  the  start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is
+       set, the effect of passing an invalid UTF-8 string as a subject,  or  a
+       value  of startoffset that does not point to the start of a UTF-8 char-
        acter, is undefined. Your program may crash.
 
          PCRE_PARTIAL
 
-       This  option  turns  on  the  partial  matching feature. If the subject
-       string fails to match the pattern, but at some point during the  match-
-       ing  process  the  end of the subject was reached (that is, the subject
-       partially matches the pattern and the failure to  match  occurred  only
-       because  there were not enough subject characters), pcre_exec() returns
-       PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL  is
-       used,  there  are restrictions on what may appear in the pattern. These
+       This option turns on the  partial  matching  feature.  If  the  subject
+       string  fails to match the pattern, but at some point during the match-
+       ing process the end of the subject was reached (that  is,  the  subject
+       partially  matches  the  pattern and the failure to match occurred only
+       because there were not enough subject characters), pcre_exec()  returns
+       PCRE_ERROR_PARTIAL  instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is
+       used, there are restrictions on what may appear in the  pattern.  These
        are discussed in the pcrepartial documentation.
 
    The string to be matched by pcre_exec()
 
-       The subject string is passed to pcre_exec() as a pointer in subject,  a
-       length  in  length, and a starting byte offset in startoffset. In UTF-8
-       mode, the byte offset must point to the start  of  a  UTF-8  character.
-       Unlike  the  pattern string, the subject may contain binary zero bytes.
-       When the starting offset is zero, the search for a match starts at  the
+       The  subject string is passed to pcre_exec() as a pointer in subject, a
+       length in length, and a starting byte offset in startoffset.  In  UTF-8
+       mode,  the  byte  offset  must point to the start of a UTF-8 character.
+       Unlike the pattern string, the subject may contain binary  zero  bytes.
+       When  the starting offset is zero, the search for a match starts at the
        beginning of the subject, and this is by far the most common case.
 
-       A  non-zero  starting offset is useful when searching for another match
-       in the same subject by calling pcre_exec() again after a previous  suc-
-       cess.   Setting  startoffset differs from just passing over a shortened
-       string and setting PCRE_NOTBOL in the case of  a  pattern  that  begins
+       A non-zero starting offset is useful when searching for  another  match
+       in  the same subject by calling pcre_exec() again after a previous suc-
+       cess.  Setting startoffset differs from just passing over  a  shortened
+       string  and  setting  PCRE_NOTBOL  in the case of a pattern that begins
        with any kind of lookbehind. For example, consider the pattern
 
          \Biss\B
 
-       which  finds  occurrences  of "iss" in the middle of words. (\B matches
-       only if the current position in the subject is not  a  word  boundary.)
-       When  applied  to the string "Mississipi" the first call to pcre_exec()
-       finds the first occurrence. If pcre_exec() is called  again  with  just
-       the  remainder  of  the  subject,  namely  "issipi", it does not match,
+       which finds occurrences of "iss" in the middle of  words.  (\B  matches
+       only  if  the  current position in the subject is not a word boundary.)
+       When applied to the string "Mississipi" the first call  to  pcre_exec()
+       finds  the  first  occurrence. If pcre_exec() is called again with just
+       the remainder of the subject,  namely  "issipi",  it  does  not  match,
        because \B is always false at the start of the subject, which is deemed
-       to  be  a  word  boundary. However, if pcre_exec() is passed the entire
+       to be a word boundary. However, if pcre_exec()  is  passed  the  entire
        string again, but with startoffset set to 4, it finds the second occur-
-       rence  of "iss" because it is able to look behind the starting point to
+       rence of "iss" because it is able to look behind the starting point  to
        discover that it is preceded by a letter.
 
-       If a non-zero starting offset is passed when the pattern  is  anchored,
+       If  a  non-zero starting offset is passed when the pattern is anchored,
        one attempt to match at the given offset is made. This can only succeed
-       if the pattern does not require the match to be at  the  start  of  the
+       if  the  pattern  does  not require the match to be at the start of the
        subject.
 
    How pcre_exec() returns captured substrings
 
-       In  general, a pattern matches a certain portion of the subject, and in
-       addition, further substrings from the subject  may  be  picked  out  by
-       parts  of  the  pattern.  Following the usage in Jeffrey Friedl's book,
-       this is called "capturing" in what follows, and the  phrase  "capturing
-       subpattern"  is  used for a fragment of a pattern that picks out a sub-
-       string. PCRE supports several other kinds of  parenthesized  subpattern
+       In general, a pattern matches a certain portion of the subject, and  in
+       addition,  further  substrings  from  the  subject may be picked out by
+       parts of the pattern. Following the usage  in  Jeffrey  Friedl's  book,
+       this  is  called "capturing" in what follows, and the phrase "capturing
+       subpattern" is used for a fragment of a pattern that picks out  a  sub-
+       string.  PCRE  supports several other kinds of parenthesized subpattern
        that do not cause substrings to be captured.
 
-       Captured  substrings are returned to the caller via a vector of integer
-       offsets whose address is passed in ovector. The number of  elements  in
-       the  vector is passed in ovecsize, which must be a non-negative number.
+       Captured substrings are returned to the caller via a vector of  integer
+       offsets  whose  address is passed in ovector. The number of elements in
+       the vector is passed in ovecsize, which must be a non-negative  number.
        Note: this argument is NOT the size of ovector in bytes.
 
-       The first two-thirds of the vector is used to pass back  captured  sub-
-       strings,  each  substring using a pair of integers. The remaining third
-       of the vector is used as workspace by pcre_exec() while  matching  cap-
-       turing  subpatterns, and is not available for passing back information.
-       The length passed in ovecsize should always be a multiple of three.  If
+       The  first  two-thirds of the vector is used to pass back captured sub-
+       strings, each substring using a pair of integers. The  remaining  third
+       of  the  vector is used as workspace by pcre_exec() while matching cap-
+       turing subpatterns, and is not available for passing back  information.
+       The  length passed in ovecsize should always be a multiple of three. If
        it is not, it is rounded down.
 
-       When  a  match  is successful, information about captured substrings is
-       returned in pairs of integers, starting at the  beginning  of  ovector,
-       and  continuing  up  to two-thirds of its length at the most. The first
+       When a match is successful, information about  captured  substrings  is
+       returned  in  pairs  of integers, starting at the beginning of ovector,
+       and continuing up to two-thirds of its length at the  most.  The  first
        element of a pair is set to the offset of the first character in a sub-
-       string,  and  the  second  is  set to the offset of the first character
-       after the end of a substring. The  first  pair,  ovector[0]  and  ovec-
-       tor[1],  identify  the  portion  of  the  subject string matched by the
-       entire pattern. The next pair is used for the first  capturing  subpat-
-       tern,  and  so  on.  The value returned by pcre_exec() is the number of
-       pairs that have been set. If there are no  capturing  subpatterns,  the
-       return  value  from  a  successful match is 1, indicating that just the
+       string, and the second is set to the  offset  of  the  first  character
+       after  the  end  of  a  substring. The first pair, ovector[0] and ovec-
+       tor[1], identify the portion of  the  subject  string  matched  by  the
+       entire  pattern.  The next pair is used for the first capturing subpat-
+       tern, and so on. The value returned by pcre_exec()  is  the  number  of
+       pairs  that  have  been set. If there are no capturing subpatterns, the
+       return value from a successful match is 1,  indicating  that  just  the
        first pair of offsets has been set.
 
-       Some convenience functions are provided  for  extracting  the  captured
-       substrings  as  separate  strings. These are described in the following
+       Some  convenience  functions  are  provided for extracting the captured
+       substrings as separate strings. These are described  in  the  following
        section.
 
-       It is possible for an capturing subpattern number  n+1  to  match  some
-       part  of  the  subject  when subpattern n has not been used at all. For
+       It  is  possible  for  an capturing subpattern number n+1 to match some
+       part of the subject when subpattern n has not been  used  at  all.  For
        example, if the string "abc" is matched against the pattern (a|(z))(bc)
-       subpatterns  1 and 3 are matched, but 2 is not. When this happens, both
+       subpatterns 1 and 3 are matched, but 2 is not. When this happens,  both
        offset values corresponding to the unused subpattern are set to -1.
 
        If a capturing subpattern is matched repeatedly, it is the last portion
        of the string that it matched that is returned.
 
-       If  the vector is too small to hold all the captured substring offsets,
+       If the vector is too small to hold all the captured substring  offsets,
        it is used as far as possible (up to two-thirds of its length), and the
-       function  returns a value of zero. In particular, if the substring off-
+       function returns a value of zero. In particular, if the substring  off-
        sets are not of interest, pcre_exec() may be called with ovector passed
-       as  NULL  and  ovecsize  as zero. However, if the pattern contains back
-       references and the ovector is not big enough to  remember  the  related
-       substrings,  PCRE has to get additional memory for use during matching.
+       as NULL and ovecsize as zero. However, if  the  pattern  contains  back
+       references  and  the  ovector is not big enough to remember the related
+       substrings, PCRE has to get additional memory for use during  matching.
        Thus it is usually advisable to supply an ovector.
 
-       Note that pcre_info() can be used to find out how many  capturing  sub-
+       Note  that  pcre_info() can be used to find out how many capturing sub-
        patterns there are in a compiled pattern. The smallest size for ovector
-       that will allow for n captured substrings, in addition to  the  offsets
+       that  will  allow for n captured substrings, in addition to the offsets
        of the substring matched by the whole pattern, is (n+1)*3.
 
    Return values from pcre_exec()
 
-       If  pcre_exec()  fails, it returns a negative number. The following are
+       If pcre_exec() fails, it returns a negative number. The  following  are
        defined in the header file:
 
          PCRE_ERROR_NOMATCH        (-1)
@@ -1663,7 +1705,7 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
 
          PCRE_ERROR_NULL           (-2)
 
-       Either code or subject was passed as NULL,  or  ovector  was  NULL  and
+       Either  code  or  subject  was  passed as NULL, or ovector was NULL and
        ovecsize was not zero.
 
          PCRE_ERROR_BADOPTION      (-3)
@@ -1672,74 +1714,80 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
 
          PCRE_ERROR_BADMAGIC       (-4)
 
-       PCRE  stores a 4-byte "magic number" at the start of the compiled code,
+       PCRE stores a 4-byte "magic number" at the start of the compiled  code,
        to catch the case when it is passed a junk pointer and to detect when a
        pattern that was compiled in an environment of one endianness is run in
-       an environment with the other endianness. This is the error  that  PCRE
+       an  environment  with the other endianness. This is the error that PCRE
        gives when the magic number is not present.
 
          PCRE_ERROR_UNKNOWN_NODE   (-5)
 
        While running the pattern match, an unknown item was encountered in the
-       compiled pattern. This error could be caused by a bug  in  PCRE  or  by
+       compiled  pattern.  This  error  could be caused by a bug in PCRE or by
        overwriting of the compiled pattern.
 
          PCRE_ERROR_NOMEMORY       (-6)
 
-       If  a  pattern contains back references, but the ovector that is passed
+       If a pattern contains back references, but the ovector that  is  passed
        to pcre_exec() is not big enough to remember the referenced substrings,
-       PCRE  gets  a  block of memory at the start of matching to use for this
-       purpose. If the call via pcre_malloc() fails, this error is given.  The
+       PCRE gets a block of memory at the start of matching to  use  for  this
+       purpose.  If the call via pcre_malloc() fails, this error is given. The
        memory is automatically freed at the end of matching.
 
          PCRE_ERROR_NOSUBSTRING    (-7)
 
-       This  error is used by the pcre_copy_substring(), pcre_get_substring(),
+       This error is used by the pcre_copy_substring(),  pcre_get_substring(),
        and  pcre_get_substring_list()  functions  (see  below).  It  is  never
        returned by pcre_exec().
 
          PCRE_ERROR_MATCHLIMIT     (-8)
 
-       The  recursion  and backtracking limit, as specified by the match_limit
-       field in a pcre_extra structure (or defaulted)  was  reached.  See  the
+       The backtracking limit, as specified by  the  match_limit  field  in  a
+       pcre_extra  structure  (or  defaulted) was reached. See the description
+       above.
+
+         PCRE_ERROR_RECURSIONLIMIT (-21)
+
+       The internal recursion limit, as specified by the match_limit_recursion
+       field  in  a  pcre_extra  structure (or defaulted) was reached. See the
        description above.
 
          PCRE_ERROR_CALLOUT        (-9)
 
        This error is never generated by pcre_exec() itself. It is provided for
-       use by callout functions that want to yield a distinctive  error  code.
+       use  by  callout functions that want to yield a distinctive error code.
        See the pcrecallout documentation for details.
 
          PCRE_ERROR_BADUTF8        (-10)
 
-       A  string  that contains an invalid UTF-8 byte sequence was passed as a
+       A string that contains an invalid UTF-8 byte sequence was passed  as  a
        subject.
 
          PCRE_ERROR_BADUTF8_OFFSET (-11)
 
        The UTF-8 byte sequence that was passed as a subject was valid, but the
-       value  of startoffset did not point to the beginning of a UTF-8 charac-
+       value of startoffset did not point to the beginning of a UTF-8  charac-
        ter.
 
          PCRE_ERROR_PARTIAL        (-12)
 
-       The subject string did not match, but it did match partially.  See  the
+       The  subject  string did not match, but it did match partially. See the
        pcrepartial documentation for details of partial matching.
 
          PCRE_ERROR_BADPARTIAL     (-13)
 
-       The  PCRE_PARTIAL  option  was  used with a compiled pattern containing
-       items that are not supported for partial matching. See the  pcrepartial
+       The PCRE_PARTIAL option was used with  a  compiled  pattern  containing
+       items  that are not supported for partial matching. See the pcrepartial
        documentation for details of partial matching.
 
          PCRE_ERROR_INTERNAL       (-14)
 
-       An  unexpected  internal error has occurred. This error could be caused
+       An unexpected internal error has occurred. This error could  be  caused
        by a bug in PCRE or by overwriting of the compiled pattern.
 
          PCRE_ERROR_BADCOUNT       (-15)
 
-       This error is given if the value of the ovecsize argument is  negative.
+       This  error is given if the value of the ovecsize argument is negative.
 
 
 EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
@@ -1755,71 +1803,71 @@ EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
        int pcre_get_substring_list(const char *subject,
             int *ovector, int stringcount, const char ***listptr);
 
-       Captured  substrings  can  be  accessed  directly  by using the offsets
-       returned by pcre_exec() in  ovector.  For  convenience,  the  functions
+       Captured substrings can be  accessed  directly  by  using  the  offsets
+       returned  by  pcre_exec()  in  ovector.  For convenience, the functions
        pcre_copy_substring(),    pcre_get_substring(),    and    pcre_get_sub-
-       string_list() are provided for extracting captured substrings  as  new,
-       separate,  zero-terminated strings. These functions identify substrings
-       by number. The next section describes functions  for  extracting  named
-       substrings.  A  substring  that  contains  a  binary  zero is correctly
-       extracted and has a further zero added on the end, but  the  result  is
+       string_list()  are  provided for extracting captured substrings as new,
+       separate, zero-terminated strings. These functions identify  substrings
+       by  number.  The  next section describes functions for extracting named
+       substrings. A substring  that  contains  a  binary  zero  is  correctly
+       extracted  and  has  a further zero added on the end, but the result is
        not, of course, a C string.
 
-       The  first  three  arguments  are the same for all three of these func-
-       tions: subject is the subject string that has  just  been  successfully
+       The first three arguments are the same for all  three  of  these  func-
+       tions:  subject  is  the subject string that has just been successfully
        matched, ovector is a pointer to the vector of integer offsets that was
        passed to pcre_exec(), and stringcount is the number of substrings that
-       were  captured  by  the match, including the substring that matched the
+       were captured by the match, including the substring  that  matched  the
        entire regular expression. This is the value returned by pcre_exec() if
-       it  is greater than zero. If pcre_exec() returned zero, indicating that
-       it ran out of space in ovector, the value passed as stringcount  should
+       it is greater than zero. If pcre_exec() returned zero, indicating  that
+       it  ran out of space in ovector, the value passed as stringcount should
        be the number of elements in the vector divided by three.
 
-       The  functions pcre_copy_substring() and pcre_get_substring() extract a
-       single substring, whose number is given as  stringnumber.  A  value  of
-       zero  extracts  the  substring that matched the entire pattern, whereas
-       higher values  extract  the  captured  substrings.  For  pcre_copy_sub-
-       string(),  the  string  is  placed  in buffer, whose length is given by
-       buffersize, while for pcre_get_substring() a new  block  of  memory  is
-       obtained  via  pcre_malloc,  and its address is returned via stringptr.
-       The yield of the function is the length of the  string,  not  including
+       The functions pcre_copy_substring() and pcre_get_substring() extract  a
+       single  substring,  whose  number  is given as stringnumber. A value of
+       zero extracts the substring that matched the  entire  pattern,  whereas
+       higher  values  extract  the  captured  substrings.  For pcre_copy_sub-
+       string(), the string is placed in buffer,  whose  length  is  given  by
+       buffersize,  while  for  pcre_get_substring()  a new block of memory is
+       obtained via pcre_malloc, and its address is  returned  via  stringptr.
+       The  yield  of  the function is the length of the string, not including
        the terminating zero, or one of
 
          PCRE_ERROR_NOMEMORY       (-6)
 
-       The  buffer  was too small for pcre_copy_substring(), or the attempt to
+       The buffer was too small for pcre_copy_substring(), or the  attempt  to
        get memory failed for pcre_get_substring().
 
          PCRE_ERROR_NOSUBSTRING    (-7)
 
        There is no substring whose number is stringnumber.
 
-       The pcre_get_substring_list()  function  extracts  all  available  sub-
-       strings  and  builds  a list of pointers to them. All this is done in a
+       The  pcre_get_substring_list()  function  extracts  all  available sub-
+       strings and builds a list of pointers to them. All this is  done  in  a
        single block of memory that is obtained via pcre_malloc. The address of
-       the  memory  block  is returned via listptr, which is also the start of
-       the list of string pointers. The end of the list is marked  by  a  NULL
+       the memory block is returned via listptr, which is also  the  start  of
+       the  list  of  string pointers. The end of the list is marked by a NULL
        pointer. The yield of the function is zero if all went well, or
 
          PCRE_ERROR_NOMEMORY       (-6)
 
        if the attempt to get the memory block failed.
 
-       When  any of these functions encounter a substring that is unset, which
-       can happen when capturing subpattern number n+1 matches  some  part  of
-       the  subject, but subpattern n has not been used at all, they return an
+       When any of these functions encounter a substring that is unset,  which
+       can  happen  when  capturing subpattern number n+1 matches some part of
+       the subject, but subpattern n has not been used at all, they return  an
        empty string. This can be distinguished from a genuine zero-length sub-
-       string  by inspecting the appropriate offset in ovector, which is nega-
+       string by inspecting the appropriate offset in ovector, which is  nega-
        tive for unset substrings.
 
-       The two convenience functions pcre_free_substring() and  pcre_free_sub-
-       string_list()  can  be  used  to free the memory returned by a previous
+       The  two convenience functions pcre_free_substring() and pcre_free_sub-
+       string_list() can be used to free the memory  returned  by  a  previous
        call  of  pcre_get_substring()  or  pcre_get_substring_list(),  respec-
-       tively.  They  do  nothing  more  than  call the function pointed to by
-       pcre_free, which of course could be called directly from a  C  program.
-       However,  PCRE is used in some situations where it is linked via a spe-
+       tively. They do nothing more than  call  the  function  pointed  to  by
+       pcre_free,  which  of course could be called directly from a C program.
+       However, PCRE is used in some situations where it is linked via a  spe-
        cial  interface  to  another  programming  language  which  cannot  use
-       pcre_free  directly;  it is for these cases that the functions are pro-
+       pcre_free directly; it is for these cases that the functions  are  pro-
        vided.
 
 
@@ -1838,52 +1886,52 @@ EXTRACTING CAPTURED SUBSTRINGS BY NAME
             int stringcount, const char *stringname,
             const char **stringptr);
 
-       To extract a substring by name, you first have to find associated  num-
+       To  extract a substring by name, you first have to find associated num-
        ber.  For example, for this pattern
 
          (a+)b(?P<xxx>\d+)...
 
        the number of the subpattern called "xxx" is 2. You can find the number
        from the name by calling pcre_get_stringnumber(). The first argument is
-       the  compiled  pattern,  and  the  second is the name. The yield of the
-       function is the subpattern number, or  PCRE_ERROR_NOSUBSTRING  (-7)  if
+       the compiled pattern, and the second is the  name.  The  yield  of  the
+       function  is  the  subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if
        there is no subpattern of that name.
 
        Given the number, you can extract the substring directly, or use one of
        the functions described in the previous section. For convenience, there
        are also two functions that do the whole job.
 
-       Most    of    the    arguments   of   pcre_copy_named_substring()   and
-       pcre_get_named_substring() are the same  as  those  for  the  similarly
-       named  functions  that extract by number. As these are described in the
-       previous section, they are not re-described here. There  are  just  two
+       Most   of   the   arguments    of    pcre_copy_named_substring()    and
+       pcre_get_named_substring()  are  the  same  as  those for the similarly
+       named functions that extract by number. As these are described  in  the
+       previous  section,  they  are not re-described here. There are just two
        differences:
 
-       First,  instead  of a substring number, a substring name is given. Sec-
+       First, instead of a substring number, a substring name is  given.  Sec-
        ond, there is an extra argument, given at the start, which is a pointer
-       to  the compiled pattern. This is needed in order to gain access to the
+       to the compiled pattern. This is needed in order to gain access to  the
        name-to-number translation table.
 
-       These functions call pcre_get_stringnumber(), and if it succeeds,  they
-       then  call  pcre_copy_substring() or pcre_get_substring(), as appropri-
+       These  functions call pcre_get_stringnumber(), and if it succeeds, they
+       then call pcre_copy_substring() or pcre_get_substring(),  as  appropri-
        ate.
 
 
 FINDING ALL POSSIBLE MATCHES
 
-       The traditional matching function uses a  similar  algorithm  to  Perl,
+       The  traditional  matching  function  uses a similar algorithm to Perl,
        which stops when it finds the first match, starting at a given point in
-       the subject. If you want to find all possible matches, or  the  longest
-       possible  match,  consider using the alternative matching function (see
-       below) instead. If you cannot use the alternative function,  but  still
-       need  to  find all possible matches, you can kludge it up by making use
+       the  subject.  If you want to find all possible matches, or the longest
+       possible match, consider using the alternative matching  function  (see
+       below)  instead.  If you cannot use the alternative function, but still
+       need to find all possible matches, you can kludge it up by  making  use
        of the callout facility, which is described in the pcrecallout documen-
        tation.
 
        What you have to do is to insert a callout right at the end of the pat-
-       tern.  When your callout function is called, extract and save the  cur-
-       rent  matched  substring.  Then  return  1, which forces pcre_exec() to
-       backtrack and try other alternatives. Ultimately, when it runs  out  of
+       tern.   When your callout function is called, extract and save the cur-
+       rent matched substring. Then return  1,  which  forces  pcre_exec()  to
+       backtrack  and  try other alternatives. Ultimately, when it runs out of
        matches, pcre_exec() will yield PCRE_ERROR_NOMATCH.
 
 
@@ -1894,32 +1942,32 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
             int options, int *ovector, int ovecsize,
             int *workspace, int wscount);
 
-       The  function  pcre_dfa_exec()  is  called  to  match  a subject string
-       against a compiled pattern, using a "DFA" matching algorithm. This  has
-       different  characteristics to the normal algorithm, and is not compati-
+       The function pcre_dfa_exec()  is  called  to  match  a  subject  string
+       against  a compiled pattern, using a "DFA" matching algorithm. This has
+       different characteristics to the normal algorithm, and is not  compati-
        ble with Perl. Some of the features of PCRE patterns are not supported.
        Nevertheless, there are times when this kind of matching can be useful.
-       For a discussion of the two matching algorithms, see  the  pcrematching
+       For  a  discussion of the two matching algorithms, see the pcrematching
        documentation.
 
-       The  arguments  for  the  pcre_dfa_exec()  function are the same as for
+       The arguments for the pcre_dfa_exec() function  are  the  same  as  for
        pcre_exec(), plus two extras. The ovector argument is used in a differ-
-       ent  way,  and  this is described below. The other common arguments are
-       used in the same way as for pcre_exec(), so their  description  is  not
+       ent way, and this is described below. The other  common  arguments  are
+       used  in  the  same way as for pcre_exec(), so their description is not
        repeated here.
 
-       The  two  additional  arguments provide workspace for the function. The
-       workspace vector should contain at least 20 elements. It  is  used  for
+       The two additional arguments provide workspace for  the  function.  The
+       workspace  vector  should  contain at least 20 elements. It is used for
        keeping  track  of  multiple  paths  through  the  pattern  tree.  More
-       workspace will be needed for patterns and subjects where  there  are  a
+       workspace  will  be  needed for patterns and subjects where there are a
        lot of possible matches.
 
-       Here is an example of a simple call to pcre_exec():
+       Here is an example of a simple call to pcre_dfa_exec():
 
          int rc;
          int ovector[10];
          int wspace[20];
-         rc = pcre_exec(
+         rc = pcre_dfa_exec(
            re,             /* result of pcre_compile() */
            NULL,           /* we didn't study the pattern */
            "some string",  /* the subject string */
@@ -1933,47 +1981,47 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
 
    Option bits for pcre_dfa_exec()
 
-       The  unused  bits  of  the options argument for pcre_dfa_exec() must be
-       zero. The only bits that may be  set  are  PCRE_ANCHORED,  PCRE_NOTBOL,
-       PCRE_NOTEOL,     PCRE_NOTEMPTY,    PCRE_NO_UTF8_CHECK,    PCRE_PARTIAL,
-       PCRE_DFA_SHORTEST, and PCRE_DFA_RESTART. All  but  the  last  three  of
-       these  are  the  same  as  for pcre_exec(), so their description is not
+       The unused bits of the options argument  for  pcre_dfa_exec()  must  be
+       zero.  The  only  bits  that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
+       PCRE_NOTEOL,    PCRE_NOTEMPTY,    PCRE_NO_UTF8_CHECK,     PCRE_PARTIAL,
+       PCRE_DFA_SHORTEST,  and  PCRE_DFA_RESTART.  All  but  the last three of
+       these are the same as for pcre_exec(),  so  their  description  is  not
        repeated here.
 
          PCRE_PARTIAL
 
-       This has the same general effect as it does for  pcre_exec(),  but  the
-       details   are   slightly   different.  When  PCRE_PARTIAL  is  set  for
-       pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is  converted  into
-       PCRE_ERROR_PARTIAL  if  the  end  of the subject is reached, there have
+       This  has  the  same general effect as it does for pcre_exec(), but the
+       details  are  slightly  different.  When  PCRE_PARTIAL   is   set   for
+       pcre_dfa_exec(),  the  return code PCRE_ERROR_NOMATCH is converted into
+       PCRE_ERROR_PARTIAL if the end of the subject  is  reached,  there  have
        been no complete matches, but there is still at least one matching pos-
-       sibility.  The portion of the string that provided the partial match is
+       sibility. The portion of the string that provided the partial match  is
        set as the first matching string.
 
          PCRE_DFA_SHORTEST
 
-       Setting the PCRE_DFA_SHORTEST option causes the matching  algorithm  to
-       stop  as  soon  as  it  has found one match. Because of the way the DFA
+       Setting  the  PCRE_DFA_SHORTEST option causes the matching algorithm to
+       stop as soon as it has found one match. Because  of  the  way  the  DFA
        algorithm works, this is necessarily the shortest possible match at the
        first possible matching point in the subject string.
 
          PCRE_DFA_RESTART
 
-       When  pcre_dfa_exec()  is  called  with  the  PCRE_PARTIAL  option, and
-       returns a partial match, it is possible to call it  again,  with  addi-
-       tional  subject  characters,  and have it continue with the same match.
-       The PCRE_DFA_RESTART option requests this action; when it is  set,  the
-       workspace  and wscount options must reference the same vector as before
-       because data about the match so far is left in  them  after  a  partial
-       match.  There  is  more  discussion of this facility in the pcrepartial
+       When pcre_dfa_exec()  is  called  with  the  PCRE_PARTIAL  option,  and
+       returns  a  partial  match, it is possible to call it again, with addi-
+       tional subject characters, and have it continue with  the  same  match.
+       The  PCRE_DFA_RESTART  option requests this action; when it is set, the
+       workspace and wscount options must reference the same vector as  before
+       because  data  about  the  match so far is left in them after a partial
+       match. There is more discussion of this  facility  in  the  pcrepartial
        documentation.
 
    Successful returns from pcre_dfa_exec()
 
-       When pcre_dfa_exec() succeeds, it may have matched more than  one  sub-
+       When  pcre_dfa_exec()  succeeds, it may have matched more than one sub-
        string in the subject. Note, however, that all the matches from one run
-       of the function start at the same point in  the  subject.  The  shorter
-       matches  are all initial substrings of the longer matches. For example,
+       of  the  function  start  at the same point in the subject. The shorter
+       matches are all initial substrings of the longer matches. For  example,
        if the pattern
 
          <.*>
@@ -1988,59 +2036,59 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
          <something> <something else>
          <something> <something else> <something further>
 
-       On success, the yield of the function is a number  greater  than  zero,
-       which  is  the  number of matched substrings. The substrings themselves
-       are returned in ovector. Each string uses two elements;  the  first  is
-       the  offset  to the start, and the second is the offset to the end. All
+       On  success,  the  yield of the function is a number greater than zero,
+       which is the number of matched substrings.  The  substrings  themselves
+       are  returned  in  ovector. Each string uses two elements; the first is
+       the offset to the start, and the second is the offset to the  end.  All
        the strings have the same start offset. (Space could have been saved by
-       giving  this only once, but it was decided to retain some compatibility
-       with the way pcre_exec() returns data, even though the meaning  of  the
+       giving this only once, but it was decided to retain some  compatibility
+       with  the  way pcre_exec() returns data, even though the meaning of the
        strings is different.)
 
        The strings are returned in reverse order of length; that is, the long-
-       est matching string is given first. If there were too many  matches  to
-       fit  into ovector, the yield of the function is zero, and the vector is
+       est  matching  string is given first. If there were too many matches to
+       fit into ovector, the yield of the function is zero, and the vector  is
        filled with the longest matches.
 
    Error returns from pcre_dfa_exec()
 
-       The pcre_dfa_exec() function returns a negative number when  it  fails.
-       Many  of  the  errors  are  the  same as for pcre_exec(), and these are
-       described above.  There are in addition the following errors  that  are
+       The  pcre_dfa_exec()  function returns a negative number when it fails.
+       Many of the errors are the same  as  for  pcre_exec(),  and  these  are
+       described  above.   There are in addition the following errors that are
        specific to pcre_dfa_exec():
 
          PCRE_ERROR_DFA_UITEM      (-16)
 
-       This  return is given if pcre_dfa_exec() encounters an item in the pat-
-       tern that it does not support, for instance, the use of \C  or  a  back
+       This return is given if pcre_dfa_exec() encounters an item in the  pat-
+       tern  that  it  does not support, for instance, the use of \C or a back
        reference.
 
          PCRE_ERROR_DFA_UCOND      (-17)
 
-       This  return is given if pcre_dfa_exec() encounters a condition item in
-       a pattern that uses a back reference for the  condition.  This  is  not
+       This return is given if pcre_dfa_exec() encounters a condition item  in
+       a  pattern  that  uses  a back reference for the condition. This is not
        supported.
 
          PCRE_ERROR_DFA_UMLIMIT    (-18)
 
-       This  return  is given if pcre_dfa_exec() is called with an extra block
+       This return is given if pcre_dfa_exec() is called with an  extra  block
        that contains a setting of the match_limit field. This is not supported
        (it is meaningless).
 
          PCRE_ERROR_DFA_WSSIZE     (-19)
 
-       This  return  is  given  if  pcre_dfa_exec()  runs  out of space in the
+       This return is given if  pcre_dfa_exec()  runs  out  of  space  in  the
        workspace vector.
 
          PCRE_ERROR_DFA_RECURSE    (-20)
 
-       When a recursive subpattern is processed, the matching  function  calls
-       itself  recursively,  using  private vectors for ovector and workspace.
-       This error is given if the output vector  is  not  large  enough.  This
+       When  a  recursive subpattern is processed, the matching function calls
+       itself recursively, using private vectors for  ovector  and  workspace.
+       This  error  is  given  if  the output vector is not large enough. This
        should be extremely rare, as a vector of size 1000 is used.
 
-Last updated: 16 May 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 18 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -2216,35 +2264,37 @@ DIFFERENCES BETWEEN PCRE AND PERL
        handle regular expressions. The differences  described  here  are  with
        respect to Perl 5.8.
 
-       1.  PCRE does not have full UTF-8 support. Details of what it does have
-       are given in the section on UTF-8 support in the main pcre page.
+       1.  PCRE has only a subset of Perl's UTF-8 and Unicode support. Details
+       of what it does have are given in the section on UTF-8 support  in  the
+       main pcre page.
 
        2. PCRE does not allow repeat quantifiers on lookahead assertions. Perl
-       permits  them,  but they do not mean what you might think. For example,
+       permits them, but they do not mean what you might think.  For  example,
        (?!a){3} does not assert that the next three characters are not "a". It
        just asserts that the next character is not "a" three times.
 
-       3.  Capturing  subpatterns  that occur inside negative lookahead asser-
-       tions are counted, but their entries in the offsets  vector  are  never
-       set.  Perl sets its numerical variables from any such patterns that are
+       3. Capturing subpatterns that occur inside  negative  lookahead  asser-
+       tions  are  counted,  but their entries in the offsets vector are never
+       set. Perl sets its numerical variables from any such patterns that  are
        matched before the assertion fails to match something (thereby succeed-
-       ing),  but  only  if the negative lookahead assertion contains just one
+       ing), but only if the negative lookahead assertion  contains  just  one
        branch.
 
-       4. Though binary zero characters are supported in the  subject  string,
+       4.  Though  binary zero characters are supported in the subject string,
        they are not allowed in a pattern string because it is passed as a nor-
        mal C string, terminated by zero. The escape sequence \0 can be used in
        the pattern to represent a binary zero.
 
-       5.  The  following Perl escape sequences are not supported: \l, \u, \L,
+       5. The following Perl escape sequences are not supported: \l,  \u,  \L,
        \U, and \N. In fact these are implemented by Perl's general string-han-
-       dling  and are not part of its pattern matching engine. If any of these
+       dling and are not part of its pattern matching engine. If any of  these
        are encountered by PCRE, an error is generated.
 
-       6. The Perl escape sequences \p, \P, and \X are supported only if  PCRE
-       is  built  with Unicode character property support. The properties that
-       can be tested with \p and \P are limited to the general category  prop-
-       erties such as Lu and Nd.
+       6.  The Perl escape sequences \p, \P, and \X are supported only if PCRE
+       is built with Unicode character property support. The  properties  that
+       can  be tested with \p and \P are limited to the general category prop-
+       erties such as Lu and Nd, script names such as Greek or  Han,  and  the
+       derived properties Any and L&.
 
        7. PCRE does support the \Q...\E escape for quoting substrings. Charac-
        ters in between are treated as literals.  This  is  slightly  different
@@ -2317,8 +2367,8 @@ DIFFERENCES BETWEEN PCRE AND PERL
        (n)  The  alternative  matching function (pcre_dfa_exec()) matches in a
        different way and is not Perl-compatible.
 
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -2464,7 +2514,7 @@ BACKSLASH
          \t        tab (hex 09)
          \ddd      character with octal code ddd, or backreference
          \xhh      character with hex code hh
-         \x{hhh..} character with hex code hhh... (UTF-8 mode only)
+         \x{hhh..} character with hex code hhh..
 
        The  precise  effect of \cx is as follows: if x is a lower case letter,
        it is converted to upper case. Then bit 6 of the character (hex 40)  is
@@ -2472,38 +2522,37 @@ BACKSLASH
        becomes hex 7B.
 
        After \x, from zero to two hexadecimal digits are read (letters can  be
-       in  upper or lower case). In UTF-8 mode, any number of hexadecimal dig-
-       its may appear between \x{ and }, but the value of the  character  code
-       must  be  less  than  2**31  (that is, the maximum hexadecimal value is
-       7FFFFFFF). If characters other than hexadecimal digits  appear  between
-       \x{  and }, or if there is no terminating }, this form of escape is not
-       recognized. Instead, the initial \x will  be  interpreted  as  a  basic
-       hexadecimal  escape, with no following digits, giving a character whose
-       value is zero.
+       in  upper  or  lower case). Any number of hexadecimal digits may appear
+       between \x{ and }, but the value of the character  code  must  be  less
+       than 256 in non-UTF-8 mode, and less than 2**31 in UTF-8 mode (that is,
+       the maximum hexadecimal value is 7FFFFFFF). If  characters  other  than
+       hexadecimal  digits  appear between \x{ and }, or if there is no termi-
+       nating }, this form of escape is not recognized.  Instead, the  initial
+       \x will be interpreted as a basic hexadecimal escape, with no following
+       digits, giving a character whose value is zero.
 
        Characters whose value is less than 256 can be defined by either of the
-       two  syntaxes for \x when PCRE is in UTF-8 mode. There is no difference
-       in the way they are handled. For example, \xdc is exactly the  same  as
-       \x{dc}.
-
-       After  \0  up  to  two further octal digits are read. In both cases, if
-       there are fewer than two digits, just those that are present are  used.
-       Thus  the sequence \0\x\07 specifies two binary zeros followed by a BEL
-       character (code value 7). Make sure you supply  two  digits  after  the
-       initial  zero  if the pattern character that follows is itself an octal
+       two  syntaxes  for  \x. There is no difference in the way they are han-
+       dled. For example, \xdc is exactly the same as \x{dc}.
+
+       After \0 up to two further octal digits are read.  In  both  cases,  if
+       there  are fewer than two digits, just those that are present are used.
+       Thus the sequence \0\x\07 specifies two binary zeros followed by a  BEL
+       character  (code  value  7).  Make sure you supply two digits after the
+       initial zero if the pattern character that follows is itself  an  octal
        digit.
 
        The handling of a backslash followed by a digit other than 0 is compli-
        cated.  Outside a character class, PCRE reads it and any following dig-
-       its as a decimal number. If the number is less than  10,  or  if  there
+       its  as  a  decimal  number. If the number is less than 10, or if there
        have been at least that many previous capturing left parentheses in the
-       expression, the entire  sequence  is  taken  as  a  back  reference.  A
-       description  of how this works is given later, following the discussion
+       expression,  the  entire  sequence  is  taken  as  a  back reference. A
+       description of how this works is given later, following the  discussion
        of parenthesized subpatterns.
 
-       Inside a character class, or if the decimal number is  greater  than  9
-       and  there have not been that many capturing subpatterns, PCRE re-reads
-       up to three octal digits following the backslash, and generates a  sin-
+       Inside  a  character  class, or if the decimal number is greater than 9
+       and there have not been that many capturing subpatterns, PCRE  re-reads
+       up  to three octal digits following the backslash, and generates a sin-
        gle byte from the least significant 8 bits of the value. Any subsequent
        digits stand for themselves.  For example:
 
@@ -2522,19 +2571,19 @@ BACKSLASH
          \81    is either a back reference, or a binary zero
                    followed by the two characters "8" and "1"
 
-       Note that octal values of 100 or greater must not be  introduced  by  a
+       Note  that  octal  values of 100 or greater must not be introduced by a
        leading zero, because no more than three octal digits are ever read.
 
-       All  the  sequences  that  define a single byte value or a single UTF-8
+       All the sequences that define a single byte value  or  a  single  UTF-8
        character (in UTF-8 mode) can be used both inside and outside character
-       classes.  In  addition,  inside  a  character class, the sequence \b is
+       classes. In addition, inside a character  class,  the  sequence  \b  is
        interpreted as the backspace character (hex 08), and the sequence \X is
-       interpreted  as  the  character  "X".  Outside a character class, these
+       interpreted as the character "X".  Outside  a  character  class,  these
        sequences have different meanings (see below).
 
    Generic character types
 
-       The third use of backslash is for specifying generic  character  types.
+       The  third  use of backslash is for specifying generic character types.
        The following are always recognized:
 
          \d     any decimal digit
@@ -2545,56 +2594,81 @@ BACKSLASH
          \W     any "non-word" character
 
        Each pair of escape sequences partitions the complete set of characters
-       into two disjoint sets. Any given character matches one, and only  one,
+       into  two disjoint sets. Any given character matches one, and only one,
        of each pair.
 
        These character type sequences can appear both inside and outside char-
-       acter classes. They each match one character of the  appropriate  type.
-       If  the current matching point is at the end of the subject string, all
+       acter  classes.  They each match one character of the appropriate type.
+       If the current matching point is at the end of the subject string,  all
        of them fail, since there is no character to match.
 
-       For compatibility with Perl, \s does not match the VT  character  (code
-       11).   This makes it different from the the POSIX "space" class. The \s
+       For  compatibility  with Perl, \s does not match the VT character (code
+       11).  This makes it different from the the POSIX "space" class. The  \s
        characters are HT (9), LF (10), FF (12), CR (13), and space (32).
 
        A "word" character is an underscore or any character less than 256 that
-       is  a  letter  or  digit.  The definition of letters and digits is con-
-       trolled by PCRE's low-valued character tables, and may vary if  locale-
-       specific  matching is taking place (see "Locale support" in the pcreapi
-       page). For example, in the  "fr_FR"  (French)  locale,  some  character
-       codes  greater  than  128  are used for accented letters, and these are
+       is a letter or digit. The definition of  letters  and  digits  is  con-
+       trolled  by PCRE's low-valued character tables, and may vary if locale-
+       specific matching is taking place (see "Locale support" in the  pcreapi
+       page).  For  example,  in  the  "fr_FR" (French) locale, some character
+       codes greater than 128 are used for accented  letters,  and  these  are
        matched by \w.
 
-       In UTF-8 mode, characters with values greater than 128 never match  \d,
+       In  UTF-8 mode, characters with values greater than 128 never match \d,
        \s, or \w, and always match \D, \S, and \W. This is true even when Uni-
-       code character property support is available.
+       code  character  property support is available. The use of locales with
+       Unicode is discouraged.
 
    Unicode character properties
 
        When PCRE is built with Unicode character property support, three addi-
-       tional  escape sequences to match generic character types are available
+       tional  escape  sequences  to  match character properties are available
        when UTF-8 mode is selected. They are:
 
-        \p{xx}   a character with the xx property
-        \P{xx}   a character without the xx property
-        \X       an extended Unicode sequence
+         \p{xx}   a character with the xx property
+         \P{xx}   a character without the xx property
+         \X       an extended Unicode sequence
 
        The property names represented by xx above are limited to  the  Unicode
-       general  category properties. Each character has exactly one such prop-
-       erty, specified by a two-letter abbreviation.  For  compatibility  with
-       Perl,  negation  can be specified by including a circumflex between the
-       opening brace and the property name. For example, \p{^Lu} is  the  same
-       as \P{Lu}.
-
-       If  only  one  letter  is  specified with \p or \P, it includes all the
-       properties that start with that letter. In this case, in the absence of
-       negation, the curly brackets in the escape sequence are optional; these
-       two examples have the same effect:
+       script names, the general category properties, and "Any", which matches
+       any character (including newline). Other properties such as "InMusical-
+       Symbols"  are  not  currently supported by PCRE. Note that \P{Any} does
+       not match any characters, so always causes a match failure.
+
+       Sets of Unicode characters are defined as belonging to certain scripts.
+       A  character from one of these sets can be matched using a script name.
+       For example:
+
+         \p{Greek}
+         \P{Han}
+
+       Those that are not part of an identified script are lumped together  as
+       "Common". The current list of scripts is:
+
+       Arabic,  Armenian,  Bengali,  Bopomofo, Braille, Buginese, Buhid, Cana-
+       dian_Aboriginal, Cherokee, Common, Coptic, Cypriot, Cyrillic,  Deseret,
+       Devanagari,  Ethiopic,  Georgian,  Glagolitic, Gothic, Greek, Gujarati,
+       Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana,  Inherited,  Kannada,
+       Katakana,  Kharoshthi,  Khmer,  Lao, Latin, Limbu, Linear_B, Malayalam,
+       Mongolian, Myanmar, New_Tai_Lue, Ogham, Old_Italic, Old_Persian, Oriya,
+       Osmanya,  Runic,  Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tag-
+       banwa,  Tai_Le,  Tamil,  Telugu,  Thaana,  Thai,   Tibetan,   Tifinagh,
+       Ugaritic, Yi.
+
+       Each  character has exactly one general category property, specified by
+       a two-letter abbreviation. For compatibility with Perl, negation can be
+       specified  by  including a circumflex between the opening brace and the
+       property name. For example, \p{^Lu} is the same as \P{Lu}.
+
+       If only one letter is specified with \p or \P, it includes all the gen-
+       eral  category properties that start with that letter. In this case, in
+       the absence of negation, the curly brackets in the escape sequence  are
+       optional; these two examples have the same effect:
 
          \p{L}
          \pL
 
-       The following property codes are supported:
+       The following general category property codes are supported:
 
          C     Other
          Cc    Control
@@ -2640,8 +2714,17 @@ BACKSLASH
          Zp    Paragraph separator
          Zs    Space separator
 
-       Extended properties such as "Greek" or "InMusicalSymbols" are not  sup-
-       ported by PCRE.
+       The  special property L& is also supported: it matches a character that
+       has the Lu, Ll, or Lt property, in other words, a letter  that  is  not
+       classified as a modifier or "other".
+
+       The  long  synonyms  for  these  properties that Perl supports (such as
+       \p{Letter}) are not supported by PCRE. Nor is is  permitted  to  prefix
+       any of these properties with "Is".
+
+       No character that is in the Unicode table has the Cn (unassigned) prop-
+       erty.  Instead, this property is assumed for any code point that is not
+       in the Unicode table.
 
        Specifying  caseless  matching  does not affect these escape sequences.
        For example, \p{Lu} always matches only upper case letters.
@@ -3620,15 +3703,19 @@ RECURSIVE PATTERNS
        tion.)  The special item (?R) is a recursive call of the entire regular
        expression.
 
-       For example, this PCRE pattern solves the  nested  parentheses  problem
-       (assume  the  PCRE_EXTENDED  option  is  set  so  that  white  space is
-       ignored):
+       A recursive subpattern call is always treated as an atomic group.  That
+       is,  once  it  has  matched some of the subject string, it is never re-
+       entered, even if it contains untried alternatives and there is a subse-
+       quent matching failure.
+
+       This  PCRE  pattern  solves  the nested parentheses problem (assume the
+       PCRE_EXTENDED option is set so that white space is ignored):
 
          \( ( (?>[^()]+) | (?R) )* \)
 
        First it matches an opening parenthesis. Then it matches any number  of
        substrings  which  can  either  be  a sequence of non-parentheses, or a
-       recursive match of the pattern itself (that is  a  correctly  parenthe-
+       recursive match of the pattern itself (that is, a  correctly  parenthe-
        sized substring).  Finally there is a closing parenthesis.
 
        If  this  were  part of a larger pattern, you would not want to recurse
@@ -3712,43 +3799,48 @@ SUBPATTERNS AS SUBROUTINES
        two strings. Such references must, however, follow  the  subpattern  to
        which they refer.
 
+       Like recursive subpatterns, a "subroutine" call is always treated as an
+       atomic group. That is, once it has matched some of the subject  string,
+       it  is  never  re-entered, even if it contains untried alternatives and
+       there is a subsequent matching failure.
+
 
 CALLOUTS
 
        Perl has a feature whereby using the sequence (?{...}) causes arbitrary
-       Perl code to be obeyed in the middle of matching a regular  expression.
+       Perl  code to be obeyed in the middle of matching a regular expression.
        This makes it possible, amongst other things, to extract different sub-
        strings that match the same pair of parentheses when there is a repeti-
        tion.
 
        PCRE provides a similar feature, but of course it cannot obey arbitrary
        Perl code. The feature is called "callout". The caller of PCRE provides
-       an  external function by putting its entry point in the global variable
-       pcre_callout.  By default, this variable contains NULL, which  disables
+       an external function by putting its entry point in the global  variable
+       pcre_callout.   By default, this variable contains NULL, which disables
        all calling out.
 
-       Within  a  regular  expression,  (?C) indicates the points at which the
-       external function is to be called. If you want  to  identify  different
-       callout  points, you can put a number less than 256 after the letter C.
-       The default value is zero.  For example, this pattern has  two  callout
+       Within a regular expression, (?C) indicates the  points  at  which  the
+       external  function  is  to be called. If you want to identify different
+       callout points, you can put a number less than 256 after the letter  C.
+       The  default  value is zero.  For example, this pattern has two callout
        points:
 
          (?C1)abc(?C2)def
 
        If the PCRE_AUTO_CALLOUT flag is passed to pcre_compile(), callouts are
-       automatically installed before each item in the pattern. They  are  all
+       automatically  installed  before each item in the pattern. They are all
        numbered 255.
 
        During matching, when PCRE reaches a callout point (and pcre_callout is
-       set), the external function is called. It is provided with  the  number
-       of  the callout, the position in the pattern, and, optionally, one item
-       of data originally supplied by the caller of pcre_exec().  The  callout
-       function  may cause matching to proceed, to backtrack, or to fail alto-
+       set),  the  external function is called. It is provided with the number
+       of the callout, the position in the pattern, and, optionally, one  item
+       of  data  originally supplied by the caller of pcre_exec(). The callout
+       function may cause matching to proceed, to backtrack, or to fail  alto-
        gether. A complete description of the interface to the callout function
        is given in the pcrecallout documentation.
 
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -3838,16 +3930,16 @@ EXAMPLE OF PARTIAL MATCHING USING PCRETEST
        uses the date example quoted above:
 
            re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
-         data> 25jun04P
+         data> 25jun04\P
           0: 25jun04
           1: jun
-         data> 25dec3P
+         data> 25dec3\P
          Partial match
-         data> 3juP
+         data> 3ju\P
          Partial match
-         data> 3jujP
+         data> 3juj\P
          No match
-         data> jP
+         data> j\P
          No match
 
        The first data string is matched  completely,  so  pcretest  shows  the
@@ -3937,8 +4029,27 @@ MULTI-SEGMENT MATCHING WITH pcre_dfa_exec()
        Because of this phenomenon, it does not usually make  sense  to  end  a
        pattern that is going to be matched in this way with a variable repeat.
 
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+       4. Patterns that contain alternatives at the top level which do not all
+       start with the same pattern item may not work as expected. For example,
+       consider this pattern:
+
+         1234|3789
+
+       If the first part of the subject is "ABC123", a partial  match  of  the
+       first  alternative  is found at offset 3. There is no partial match for
+       the second alternative, because such a match does not start at the same
+       point  in  the  subject  string. Attempting to continue with the string
+       "789" does not yield a match because only those alternatives that match
+       at  one point in the subject are remembered. The problem arises because
+       the start of the second alternative matches within the  first  alterna-
+       tive. There is no problem with anchored patterns or patterns such as:
+
+         1234|ABCD
+
+       where no string can be a partial match for both alternatives.
+
+Last updated: 16 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -4052,8 +4163,12 @@ COMPATIBILITY WITH DIFFERENT PCRE RELEASES
        them for release 5.0. However, from now on, it should  be  possible  to
        make changes in a compatible manner.
 
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+       Notwithstanding the above, if you have any saved patterns in UTF-8 mode
+       that use \p or \P that were compiled with any release up to and includ-
+       ing 6.4, you will have to recompile them for release 6.5 and above.
+
+Last updated: 01 February 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -4178,11 +4293,11 @@ DESCRIPTION
        functions call the native ones, it is also necessary to add -lpcre.
 
        I have implemented only those option bits that can be reasonably mapped
-       to  PCRE  native  options.  In  addition,  the options REG_EXTENDED and
-       REG_NOSUB are defined with the value zero. They  have  no  effect,  but
-       since  programs that are written to the POSIX interface often use them,
-       this makes it easier to slot in PCRE as a  replacement  library.  Other
-       POSIX options are not even defined.
+       to PCRE native options. In addition, the option REG_EXTENDED is defined
+       with the value zero. This has no effect, but since  programs  that  are
+       written  to  the  POSIX interface often use it, this makes it easier to
+       slot in PCRE as a replacement library. Other POSIX options are not even
+       defined.
 
        When  PCRE  is  called  via these functions, it is only the API that is
        POSIX-like in style. The syntax and semantics of  the  regular  expres-
@@ -4207,27 +4322,43 @@ COMPILING A PATTERN
        form. The pattern is a C string terminated by a  binary  zero,  and  is
        passed  in  the  argument  pattern. The preg argument is a pointer to a
        regex_t structure that is used as a base for storing information  about
-       the compiled expression.
+       the compiled regular expression.
 
        The argument cflags is either zero, or contains one or more of the bits
        defined by the following macros:
 
          REG_DOTALL
 
-       The PCRE_DOTALL option is set when the expression is passed for  compi-
-       lation  to the native function. Note that REG_DOTALL is not part of the
-       POSIX standard.
+       The PCRE_DOTALL option is set when the regular expression is passed for
+       compilation to the native function. Note that REG_DOTALL is not part of
+       the POSIX standard.
 
          REG_ICASE
 
-       The PCRE_CASELESS option is set when the expression is passed for  com-
-       pilation to the native function.
+       The PCRE_CASELESS option is set when the regular expression  is  passed
+       for compilation to the native function.
 
          REG_NEWLINE
 
-       The PCRE_MULTILINE option is set when the expression is passed for com-
-       pilation to the native function. Note that  this  does  not  mimic  the
-       defined POSIX behaviour for REG_NEWLINE (see the following section).
+       The  PCRE_MULTILINE option is set when the regular expression is passed
+       for compilation to the native function. Note that this does  not  mimic
+       the  defined  POSIX  behaviour  for REG_NEWLINE (see the following sec-
+       tion).
+
+         REG_NOSUB
+
+       The PCRE_NO_AUTO_CAPTURE option is set when the regular  expression  is
+       passed for compilation to the native function. In addition, when a pat-
+       tern that is compiled with this flag is passed to regexec() for  match-
+       ing,  the  nmatch  and  pmatch  arguments  are ignored, and no captured
+       strings are returned.
+
+         REG_UTF8
+
+       The PCRE_UTF8 option is set when the regular expression is  passed  for
+       compilation  to the native function. This causes the pattern itself and
+       all data strings used for matching it to be treated as  UTF-8  strings.
+       Note that REG_UTF8 is not part of the POSIX standard.
 
        In  the  absence  of  these  flags, no options are passed to the native
        function.  This means the the  regex  is  compiled  with  PCRE  default
@@ -4294,15 +4425,19 @@ MATCHING A PATTERN
        The PCRE_NOTEOL option is set when calling the underlying PCRE matching
        function.
 
-       The  portion of the string that was matched, and also any captured sub-
-       strings, are returned via the pmatch argument, which points to an array
-       of  nmatch  structures of type regmatch_t, containing the members rm_so
-       and rm_eo. These contain the offset to the first character of each sub-
-       string and the offset to the first character after the end of each sub-
-       string, respectively. The 0th element of  the  vector  relates  to  the
-       entire  portion  of string that was matched; subsequent elements relate
-       to the capturing subpatterns of the regular expression. Unused  entries
-       in the array have both structure members set to -1.
+       If  the pattern was compiled with the REG_NOSUB flag, no data about any
+       matched strings  is  returned.  The  nmatch  and  pmatch  arguments  of
+       regexec() are ignored.
+
+       Otherwise,the portion of the string that was matched, and also any cap-
+       tured substrings, are returned via the pmatch argument, which points to
+       an  array  of nmatch structures of type regmatch_t, containing the mem-
+       bers rm_so and rm_eo. These contain the offset to the  first  character
+       of  each  substring and the offset to the first character after the end
+       of each substring, respectively. The 0th element of the vector  relates
+       to  the  entire portion of string that was matched; subsequent elements
+       relate to the capturing subpatterns of the regular  expression.  Unused
+       entries in the array have both structure members set to -1.
 
        A  successful  match  yields  a  zero  return;  various error codes are
        defined in the header file, of  which  REG_NOMATCH  is  the  "expected"
@@ -4333,8 +4468,8 @@ AUTHOR
        University Computing Service,
        Cambridge CB2 3QG, England.
 
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 16 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
 ------------------------------------------------------------------------------
 
 
@@ -4507,13 +4642,17 @@ PASSING MODIFIERS TO THE REGULAR EXPRESSION ENGINE
 
          RE_Options & set_caseless(bool)
 
-       which sets or unsets the  modifier.  Moreover,  PCRE_CONFIG_MATCH_LIMIT
-       can  be accessed through the set_match_limit() and match_limit() member
+       which sets or unsets the modifier. Moreover, PCRE_EXTRA_MATCH_LIMIT can
+       be  accessed  through  the  set_match_limit()  and match_limit() member
        functions. Setting match_limit to a non-zero value will limit the  exe-
        cution  of pcre to keep it from doing bad things like blowing the stack
        or taking an eternity to return a result.  A  value  of  5000  is  good
        enough  to stop stack blowup in a 2MB thread stack. Setting match_limit
-       to zero disables match limiting.
+       to  zero  disables  match  limiting.  Alternatively,   you   can   call
+       match_limit_recursion()  which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to
+       limit how much  PCRE  recurses.  match_limit()  limits  the  number  of
+       matches PCRE does; match_limit_recursion() limits the depth of internal
+       recursion, and therefore the amount of stack that is used.
 
        Normally, to pass one or more modifiers to a RE class,  you  declare  a
        RE_Options object, set the appropriate options, and pass this object to
index adb53160d304d845c4b5a102b50597e9dafcad74..ec2c7b395bbc52be69cfb7a74707401ecea203e9 100644 (file)
@@ -4,16 +4,22 @@ pcre_malloc DATA
 pcre_free DATA
 
 pcre_compile
+pcre_compile2
+pcre_config
+pcre_copy_named_substring
 pcre_copy_substring
 pcre_dfa_exec
 pcre_exec
-pcre_get_substring
-pcre_get_substring_list
 pcre_free_substring
 pcre_free_substring_list
-pcre_info
 pcre_fullinfo
+pcre_get_named_substring
+pcre_get_stringnumber
+pcre_get_substring
+pcre_get_substring_list
+pcre_info
 pcre_maketables
+pcre_refcount
 pcre_study
 pcre_version
 
index ff3577402418c80adf42c2b93450f3950f8751e7..e16cc7096cb3397f2b9056f41122e66b19fc3103 100644 (file)
@@ -2,8 +2,8 @@
 *       Perl-Compatible Regular Expressions      *
 *************************************************/
 
-/* In its original form, this is the .in file that is transformed by
-"configure" into pcre.h.
+/* This is the public header file for the PCRE library, to be #included by
+applications that call the PCRE functions.
 
            Copyright (c) 1997-2005 University of Cambridge
 
@@ -38,17 +38,29 @@ POSSIBILITY OF SUCH DAMAGE.
 
 #ifndef _PCRE_H
 #define _PCRE_H
+#include "php_compat.h"
 
-/* The file pcre.h is build by "configure". Do not edit it; instead
-make changes to pcre.in. */
+/* The current PCRE version information. */
 
-#include "php_compat.h"
+/* NOTES FOR FUTURE MAINTAINERS: Do not use numbers with leading zeros, because
+they may be treated as octal constants. The PCRE_PRERELEASE feature is for
+identifying release candidates. It might be defined as -RC2, for example. In
+real releases, it should be defined empty. Do not change the alignment of these
+statments. The code in ./configure greps out the version numbers by using "cut"
+to get values from column 29 onwards. These are substituted into pcre-config
+and libpcre.pc. The values are not put into configure.ac and substituted here
+(which would simplify this issue) because that makes life harder for those who
+cannot run ./configure. As it now stands, this file need not be edited in that
+circumstance. */
 
 #define PCRE_MAJOR          6
-#define PCRE_MINOR          2
-#define PCRE_DATE           01-Aug-2005
+#define PCRE_MINOR          6
+#define PCRE_PRERELEASE
+#define PCRE_DATE           06-Feb-2006
 
-/* Win32 uses DLL by default; it needs special stuff for exported functions. */
+/* Win32 uses DLL by default; it needs special stuff for exported functions
+when building PCRE. */
 
 #ifdef _WIN32
 #  ifdef PCRE_DEFINITION
@@ -62,7 +74,7 @@ make changes to pcre.in. */
 #  endif
 #endif
 
-/* For other operating systems, we use the standard "extern". */
+/* Otherwise, we use the standard "extern". */
 
 #ifndef PCRE_DATA_SCOPE
 #  ifdef __cplusplus
@@ -127,6 +139,7 @@ extern "C" {
 #define PCRE_ERROR_DFA_UMLIMIT    (-18)
 #define PCRE_ERROR_DFA_WSSIZE     (-19)
 #define PCRE_ERROR_DFA_RECURSE    (-20)
+#define PCRE_ERROR_RECURSIONLIMIT (-21)
 
 /* Request types for pcre_fullinfo() */
 
@@ -144,7 +157,8 @@ extern "C" {
 #define PCRE_INFO_STUDYSIZE         10
 #define PCRE_INFO_DEFAULT_TABLES    11
 
-/* Request types for pcre_config() */
+/* Request types for pcre_config(). Do not re-arrange, in order to remain
+compatible. */
 
 #define PCRE_CONFIG_UTF8                    0
 #define PCRE_CONFIG_NEWLINE                 1
@@ -153,19 +167,30 @@ extern "C" {
 #define PCRE_CONFIG_MATCH_LIMIT             4
 #define PCRE_CONFIG_STACKRECURSE            5
 #define PCRE_CONFIG_UNICODE_PROPERTIES      6
+#define PCRE_CONFIG_MATCH_LIMIT_RECURSION   7
 
-/* Bit flags for the pcre_extra structure */
+/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine
+these bits, just add new ones on the end, in order to remain compatible. */
 
-#define PCRE_EXTRA_STUDY_DATA          0x0001
-#define PCRE_EXTRA_MATCH_LIMIT         0x0002
-#define PCRE_EXTRA_CALLOUT_DATA        0x0004
-#define PCRE_EXTRA_TABLES              0x0008
+#define PCRE_EXTRA_STUDY_DATA             0x0001
+#define PCRE_EXTRA_MATCH_LIMIT            0x0002
+#define PCRE_EXTRA_CALLOUT_DATA           0x0004
+#define PCRE_EXTRA_TABLES                 0x0008
+#define PCRE_EXTRA_MATCH_LIMIT_RECURSION  0x0010
 
 /* Types */
 
 struct real_pcre;                 /* declaration; the definition is private  */
 typedef struct real_pcre pcre;
 
+/* When PCRE is compiled as a C++ library, the subject pointer type can be
+replaced with a custom type. For conventional use, the public interface is a
+const char *. */
+
+#ifndef PCRE_SPTR
+#define PCRE_SPTR const char *
+#endif
+
 /* The structure for passing additional data to pcre_exec(). This is defined in
 such as way as to be extensible. Always add new fields at the end, in order to
 remain compatible. */
@@ -176,6 +201,7 @@ typedef struct pcre_extra {
   unsigned long int match_limit;  /* Maximum number of calls to match() */
   void *callout_data;             /* Data passed back in callouts */
   const unsigned char *tables;    /* Pointer to character tables */
+  unsigned long int match_limit_recursion; /* Max recursive calls to match() */
 } pcre_extra;
 
 /* The structure for passing out data via the pcre_callout_function. We use a
@@ -188,7 +214,7 @@ typedef struct pcre_callout_block {
   /* ------------------------ Version 0 ------------------------------- */
   int          callout_number;    /* Number compiled into pattern */
   int         *offset_vector;     /* The offset vector */
-  const char  *subject;           /* The subject being matched */
+  PCRE_SPTR    subject;           /* The subject being matched */
   int          subject_length;    /* The length of the subject */
   int          start_match;       /* Offset to start of this match attempt */
   int          current_position;  /* Where we currently are in the subject */
@@ -234,7 +260,7 @@ PCRE_DATA_SCOPE int  pcre_copy_substring(const char *, int *, int, int, char *,
                   int);
 PCRE_DATA_SCOPE int  pcre_dfa_exec(const pcre *, const pcre_extra *,
                   const char *, int, int, int, int *, int , int *, int);
-PCRE_DATA_SCOPE int  pcre_exec(const pcre *, const pcre_extra *, const char *,
+PCRE_DATA_SCOPE int  pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR,
                    int, int, int, int *, int);
 PCRE_DATA_SCOPE void pcre_free_substring(const char *);
 PCRE_DATA_SCOPE void pcre_free_substring_list(const char **);
index 228995252551f40fc8481e0a128a62fdff30fd6b..0bbc7f5ba18da7b4246157e4b9a27ef4abe05069 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -45,6 +45,15 @@ supporting internal functions that are not used by other modules. */
 #include "pcre_internal.h"
 
 
+/* When DEBUG is defined, we need the pcre_printint() function, which is also
+used by pcretest. DEBUG is not defined when building a production library. */
+
+#ifdef DEBUG
+#include "pcre_printint.src"
+#endif
+
+
+
 /*************************************************
 *      Code parameters and static tables         *
 *************************************************/
@@ -107,7 +116,7 @@ static const short int escapes[] = {
 
 
 /* Tables of names of POSIX character classes and their lengths. The list is
-terminated by a zero length entry. The first three must be alpha, upper, lower,
+terminated by a zero length entry. The first three must be alpha, lower, upper,
 as this is assumed for handling case independence. */
 
 static const char *const posix_names[] = {
@@ -118,25 +127,31 @@ static const char *const posix_names[] = {
 static const uschar posix_name_lengths[] = {
   5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 };
 
-/* Table of class bit maps for each POSIX class; up to three may be combined
-to form the class. The table for [:blank:] is dynamically modified to remove
-the vertical space characters. */
+/* Table of class bit maps for each POSIX class. Each class is formed from a
+base map, with an optional addition or removal of another map. Then, for some
+classes, there is some additional tweaking: for [:blank:] the vertical space
+characters are removed, and for [:alpha:] and [:alnum:] the underscore
+character is removed. The triples in the table consist of the base map offset,
+second map offset or -1 if no second map, and a non-negative value for map
+addition or a negative value for map subtraction (if there are two maps). The
+absolute value of the third field has these meanings: 0 => no tweaking, 1 =>
+remove vertical space characters, 2 => remove underscore. */
 
 static const int posix_class_maps[] = {
-  cbit_lower, cbit_upper, -1,             /* alpha */
-  cbit_lower, -1,         -1,             /* lower */
-  cbit_upper, -1,         -1,             /* upper */
-  cbit_digit, cbit_lower, cbit_upper,     /* alnum */
-  cbit_print, cbit_cntrl, -1,             /* ascii */
-  cbit_space, -1,         -1,             /* blank - a GNU extension */
-  cbit_cntrl, -1,         -1,             /* cntrl */
-  cbit_digit, -1,         -1,             /* digit */
-  cbit_graph, -1,         -1,             /* graph */
-  cbit_print, -1,         -1,             /* print */
-  cbit_punct, -1,         -1,             /* punct */
-  cbit_space, -1,         -1,             /* space */
-  cbit_word,  -1,         -1,             /* word - a Perl extension */
-  cbit_xdigit,-1,         -1              /* xdigit */
+  cbit_word,  cbit_digit, -2,             /* alpha */
+  cbit_lower, -1,          0,             /* lower */
+  cbit_upper, -1,          0,             /* upper */
+  cbit_word,  -1,          2,             /* alnum - word without underscore */
+  cbit_print, cbit_cntrl,  0,             /* ascii */
+  cbit_space, -1,          1,             /* blank - a GNU extension */
+  cbit_cntrl, -1,          0,             /* cntrl */
+  cbit_digit, -1,          0,             /* digit */
+  cbit_graph, -1,          0,             /* graph */
+  cbit_print, -1,          0,             /* print */
+  cbit_punct, -1,          0,             /* punct */
+  cbit_space, -1,          0,             /* space */
+  cbit_word,  -1,          0,             /* word - a Perl extension */
+  cbit_xdigit,-1,          0              /* xdigit */
 };
 
 
@@ -362,12 +377,15 @@ static int
 check_escape(const uschar **ptrptr, int *errorcodeptr, int bracount,
   int options, BOOL isclass)
 {
-const uschar *ptr = *ptrptr;
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+const uschar *ptr = *ptrptr + 1;
 int c, i;
 
+GETCHARINCTEST(c, ptr);           /* Get character value, increment pointer */
+ptr--;                            /* Set pointer back to the last byte */
+
 /* If backslash is at the end of the pattern, it's an error. */
 
-c = *(++ptr);
 if (c == 0) *errorcodeptr = ERR1;
 
 /* Non-alphamerics are literals. For digits or letters, do an initial lookup in
@@ -451,40 +469,44 @@ else
     c &= 255;     /* Take least significant 8 bits */
     break;
 
-    /* \x is complicated when UTF-8 is enabled. \x{ddd} is a character number
-    which can be greater than 0xff, but only if the ddd are hex digits. */
+    /* \x is complicated. \x{ddd} is a character number which can be greater
+    than 0xff in utf8 mode, but only if the ddd are hex digits. If not, { is
+    treated as a data character. */
 
     case 'x':
-#ifdef SUPPORT_UTF8
-    if (ptr[1] == '{' && (options & PCRE_UTF8) != 0)
+    if (ptr[1] == '{')
       {
       const uschar *pt = ptr + 2;
-      register int count = 0;
+      int count = 0;
+
       c = 0;
       while ((digitab[*pt] & ctype_xdigit) != 0)
         {
-        int cc = *pt++;
+        register int cc = *pt++;
+        if (c == 0 && cc == '0') continue;     /* Leading zeroes */
         count++;
+
 #if !EBCDIC    /* ASCII coding */
         if (cc >= 'a') cc -= 32;               /* Convert to upper case */
-        c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10));
+        c = (c << 4) + cc - ((cc < 'A')? '0' : ('A' - 10));
 #else          /* EBCDIC coding */
         if (cc >= 'a' && cc <= 'z') cc += 64;  /* Convert to upper case */
-        c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10));
+        c = (c << 4) + cc - ((cc >= '0')? '0' : ('A' - 10));
 #endif
         }
+
       if (*pt == '}')
         {
-        if (c < 0 || count > 8) *errorcodeptr = ERR34;
+        if (c < 0 || count > (utf8? 8 : 2)) *errorcodeptr = ERR34;
         ptr = pt;
         break;
         }
+
       /* If the sequence of hex digits does not end with '}', then we don't
       recognize this construct; fall through to the normal \x handling. */
       }
-#endif
 
-    /* Read just a single hex char */
+    /* Read just a single-byte hex-defined char */
 
     c = 0;
     while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0)
@@ -560,25 +582,26 @@ escape sequence.
 Argument:
   ptrptr         points to the pattern position pointer
   negptr         points to a boolean that is set TRUE for negation else FALSE
+  dptr           points to an int that is set to the detailed property value
   errorcodeptr   points to the error code variable
 
-Returns:     value from ucp_type_table, or -1 for an invalid type
+Returns:         type value from ucp_type_table, or -1 for an invalid type
 */
 
 static int
-get_ucp(const uschar **ptrptr, BOOL *negptr, int *errorcodeptr)
+get_ucp(const uschar **ptrptr, BOOL *negptr, int *dptr, int *errorcodeptr)
 {
 int c, i, bot, top;
 const uschar *ptr = *ptrptr;
-char name[4];
+char name[32];
 
 c = *(++ptr);
 if (c == 0) goto ERROR_RETURN;
 
 *negptr = FALSE;
 
-/* \P or \p can be followed by a one- or two-character name in {}, optionally
-preceded by ^ for negation. */
+/* \P or \p can be followed by a name in {}, optionally preceded by ^ for
+negation. */
 
 if (c == '{')
   {
@@ -587,18 +610,14 @@ if (c == '{')
     *negptr = TRUE;
     ptr++;
     }
-  for (i = 0; i <= 2; i++)
+  for (i = 0; i < sizeof(name) - 1; i++)
     {
     c = *(++ptr);
     if (c == 0) goto ERROR_RETURN;
     if (c == '}') break;
     name[i] = c;
     }
-  if (c !='}')   /* Try to distinguish error cases */
-    {
-    while (*(++ptr) != 0 && *ptr != '}');
-    if (*ptr == '}') goto UNKNOWN_RETURN; else goto ERROR_RETURN;
-    }
+  if (c !='}') goto ERROR_RETURN;
   name[i] = 0;
   }
 
@@ -619,13 +638,16 @@ top = _pcre_utt_size;
 
 while (bot < top)
   {
-  i = (bot + top)/2;
+  i = (bot + top) >> 1;
   c = strcmp(name, _pcre_utt[i].name);
-  if (c == 0) return _pcre_utt[i].value;
+  if (c == 0)
+    {
+    *dptr = _pcre_utt[i].value;
+    return _pcre_utt[i].type;
+    }
   if (c > 0) bot = i + 1; else top = i;
   }
 
-UNKNOWN_RETURN:
 *errorcodeptr = ERR47;
 *ptrptr = ptr;
 return -1;
@@ -928,7 +950,7 @@ for (;;)
 
     case OP_PROP:
     case OP_NOTPROP:
-    cc++;
+    cc += 2;
     /* Fall through */
 
     case OP_NOT_DIGIT:
@@ -1488,13 +1510,10 @@ Yield:        TRUE when range returned; FALSE when no more
 static BOOL
 get_othercase_range(int *cptr, int d, int *ocptr, int *odptr)
 {
-int c, chartype, othercase, next;
+int c, othercase, next;
 
 for (c = *cptr; c <= d; c++)
-  {
-  if (_pcre_ucp_findchar(c, &chartype, &othercase) == ucp_L && othercase != 0)
-    break;
-  }
+  { if ((othercase = _pcre_ucp_othercase(c)) >= 0) break; }
 
 if (c > d) return FALSE;
 
@@ -1503,9 +1522,7 @@ next = othercase + 1;
 
 for (++c; c <= d; c++)
   {
-  if (_pcre_ucp_findchar(c, &chartype, &othercase) != ucp_L ||
-        othercase != next)
-    break;
+  if (_pcre_ucp_othercase(c) != next) break;
   next++;
   }
 
@@ -1722,11 +1739,11 @@ for (;; ptr++)
     *code++ = OP_ANY;
     break;
 
-    /* Character classes. If the included characters are all < 255 in value, we
-    build a 32-byte bitmap of the permitted characters, except in the special
-    case where there is only one such character. For negated classes, we build
-    the map as usual, then invert it at the end. However, we use a different
-    opcode so that data characters > 255 can be handled correctly.
+    /* Character classes. If the included characters are all < 256, we build a
+    32-byte bitmap of the permitted characters, except in the special case
+    where there is only one such character. For negated classes, we build the
+    map as usual, then invert it at the end. However, we use a different opcode
+    so that data characters > 255 can be handled correctly.
 
     If the class contains characters outside the 0-255 range, a different
     opcode is compiled. It may optionally have a bit map for characters < 256,
@@ -1817,8 +1834,9 @@ for (;; ptr++)
           check_posix_syntax(ptr, &tempptr, cd))
         {
         BOOL local_negate = FALSE;
-        int posix_class, i;
+        int posix_class, taboffset, tabopt;
         register const uschar *cbits = cd->cbits;
+        uschar pbits[32];
 
         if (ptr[1] != ':')
           {
@@ -1847,32 +1865,46 @@ for (;; ptr++)
         if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
           posix_class = 0;
 
-        /* Or into the map we are building up to 3 of the static class
-        tables, or their negations. The [:blank:] class sets up the same
-        chars as the [:space:] class (all white space). We remove the vertical
-        white space chars afterwards. */
+        /* We build the bit map for the POSIX class in a chunk of local store
+        because we may be adding and subtracting from it, and we don't want to
+        subtract bits that may be in the main map already. At the end we or the
+        result into the bit map that is being built. */
 
         posix_class *= 3;
-        for (i = 0; i < 3; i++)
+
+        /* Copy in the first table (always present) */
+
+        memcpy(pbits, cbits + posix_class_maps[posix_class],
+          32 * sizeof(uschar));
+
+        /* If there is a second table, add or remove it as required. */
+
+        taboffset = posix_class_maps[posix_class + 1];
+        tabopt = posix_class_maps[posix_class + 2];
+
+        if (taboffset >= 0)
           {
-          BOOL blankclass = strncmp((char *)ptr, "blank", 5) == 0;
-          int taboffset = posix_class_maps[posix_class + i];
-          if (taboffset < 0) break;
-          if (local_negate)
-            {
-            if (i == 0)
-              for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+taboffset];
-            else
-              for (c = 0; c < 32; c++) classbits[c] &= ~cbits[c+taboffset];
-            if (blankclass) classbits[1] |= 0x3c;
-            }
+          if (tabopt >= 0)
+            for (c = 0; c < 32; c++) pbits[c] |= cbits[c + taboffset];
           else
-            {
-            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+taboffset];
-            if (blankclass) classbits[1] &= ~0x3c;
-            }
+            for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset];
           }
 
+        /* Not see if we need to remove any special characters. An option
+        value of 1 removes vertical space and 2 removes underscore. */
+
+        if (tabopt < 0) tabopt = -tabopt;
+        if (tabopt == 1) pbits[1] &= ~0x3c;
+          else if (tabopt == 2) pbits[11] &= 0x7f;
+
+        /* Add the POSIX table or its complement into the main table that is
+        being built and we are done. */
+
+        if (local_negate)
+          for (c = 0; c < 32; c++) classbits[c] |= ~pbits[c];
+        else
+          for (c = 0; c < 32; c++) classbits[c] |= pbits[c];
+
         ptr = tempptr + 1;
         class_charcount = 10;  /* Set > 1; assumes more than 1 per class */
         continue;    /* End of POSIX syntax handling */
@@ -1939,12 +1971,14 @@ for (;; ptr++)
             case ESC_P:
               {
               BOOL negated;
-              int property = get_ucp(&ptr, &negated, errorcodeptr);
-              if (property < 0) goto FAILED;
+              int pdata;
+              int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
+              if (ptype < 0) goto FAILED;
               class_utf8 = TRUE;
               *class_utf8data++ = ((-c == ESC_p) != negated)?
                 XCL_PROP : XCL_NOTPROP;
-              *class_utf8data++ = property;
+              *class_utf8data++ = ptype;
+              *class_utf8data++ = pdata;
               class_charcount -= 2;   /* Not a < 256 character */
               }
             continue;
@@ -2126,10 +2160,8 @@ for (;; ptr++)
 #ifdef SUPPORT_UCP
         if ((options & PCRE_CASELESS) != 0)
           {
-          int chartype;
           int othercase;
-          if (_pcre_ucp_findchar(c, &chartype, &othercase) >= 0 &&
-               othercase > 0)
+          if ((othercase = _pcre_ucp_othercase(c)) >= 0)
             {
             *class_utf8data++ = XCL_SINGLE;
             class_utf8data += _pcre_ord2utf8(othercase, class_utf8data);
@@ -2414,13 +2446,17 @@ for (;; ptr++)
     else if (*previous < OP_EODN)
       {
       uschar *oldcode;
-      int prop_type;
+      int prop_type, prop_value;
       op_type = OP_TYPESTAR - OP_STAR;  /* Use type opcodes */
       c = *previous;
 
       OUTPUT_SINGLE_REPEAT:
-      prop_type = (*previous == OP_PROP || *previous == OP_NOTPROP)?
-        previous[1] : -1;
+      if (*previous == OP_PROP || *previous == OP_NOTPROP)
+        {
+        prop_type = previous[1];
+        prop_value = previous[2];
+        }
+      else prop_type = prop_value = -1;
 
       oldcode = code;
       code = previous;                  /* Usually overwrite previous item */
@@ -2481,7 +2517,7 @@ for (;; ptr++)
 
         /* If the maximum is unlimited, insert an OP_STAR. Before doing so,
         we have to insert the character for the previous code. For a repeated
-        Unicode property match, there is an extra byte that defines the
+        Unicode property match, there are two extra bytes that define the
         required property. In UTF-8 mode, long characters have their length in
         c, with the 0x80 bit as a flag. */
 
@@ -2497,7 +2533,11 @@ for (;; ptr++)
 #endif
             {
             *code++ = c;
-            if (prop_type >= 0) *code++ = prop_type;
+            if (prop_type >= 0)
+              {
+              *code++ = prop_type;
+              *code++ = prop_value;
+              }
             }
           *code++ = OP_STAR + repeat_type;
           }
@@ -2516,7 +2556,11 @@ for (;; ptr++)
           else
 #endif
           *code++ = c;
-          if (prop_type >= 0) *code++ = prop_type;
+          if (prop_type >= 0)
+            {
+            *code++ = prop_type;
+            *code++ = prop_value;
+            }
           repeat_max -= repeat_min;
           *code++ = OP_UPTO + repeat_type;
           PUT2INC(code, 0, repeat_max);
@@ -2535,11 +2579,15 @@ for (;; ptr++)
 #endif
       *code++ = c;
 
-      /* For a repeated Unicode property match, there is an extra byte that
-      defines the required property. */
+      /* For a repeated Unicode property match, there are two extra bytes that
+      define the required property. */
 
 #ifdef SUPPORT_UCP
-      if (prop_type >= 0) *code++ = prop_type;
+      if (prop_type >= 0)
+        {
+        *code++ = prop_type;
+        *code++ = prop_value;
+        }
 #endif
       }
 
@@ -3007,11 +3055,20 @@ for (;; ptr++)
             goto FAILED;
             }
 
-          /* Insert the recursion/subroutine item */
+          /* Insert the recursion/subroutine item, automatically wrapped inside
+          "once" brackets. */
+
+          *code = OP_ONCE;
+          PUT(code, 1, 2 + 2*LINK_SIZE);
+          code += 1 + LINK_SIZE;
 
           *code = OP_RECURSE;
           PUT(code, 1, called - cd->start_code);
           code += 1 + LINK_SIZE;
+
+          *code = OP_KET;
+          PUT(code, 1, 2 + 2*LINK_SIZE);
+          code += 1 + LINK_SIZE;
           }
         continue;
 
@@ -3281,10 +3338,12 @@ for (;; ptr++)
       else if (-c == ESC_P || -c == ESC_p)
         {
         BOOL negated;
-        int value = get_ucp(&ptr, &negated, errorcodeptr);
+        int pdata;
+        int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
         previous = code;
         *code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP;
-        *code++ = value;
+        *code++ = ptype;
+        *code++ = pdata;
         }
 #endif
 
@@ -3839,7 +3898,7 @@ Returns:        pointer to compiled data block, or NULL on error,
                 with errorptr and erroroffset set
 */
 
-EXPORT pcre *
+PCRE_DATA_SCOPE pcre *
 pcre_compile(const char *pattern, int options, const char **errorptr,
   int *erroroffset, const unsigned char *tables)
 {
@@ -3847,7 +3906,7 @@ return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables);
 }
 
 
-EXPORT pcre *
+PCRE_DATA_SCOPE pcre *
 pcre_compile2(const char *pattern, int options, int *errorcodeptr,
   const char **errorptr, int *erroroffset, const unsigned char *tables)
 {
@@ -4040,15 +4099,17 @@ while ((c = *(++ptr)) != 0)
 #endif
 
     /* \P and \p are for Unicode properties, but only when the support has
-    been compiled. Each item needs 2 bytes. */
+    been compiled. Each item needs 3 bytes. */
 
     else if (-c == ESC_P || -c == ESC_p)
       {
 #ifdef SUPPORT_UCP
       BOOL negated;
-      length += 2;
-      lastitemlength = 2;
-      if (get_ucp(&ptr, &negated, &errorcode) < 0) goto PCRE_ERROR_RETURN;
+      BOOL pdata;
+      length += 3;
+      lastitemlength = 3;
+      if (get_ucp(&ptr, &negated, &pdata, &errorcode) < 0)
+        goto PCRE_ERROR_RETURN;
       continue;
 #else
       errorcode = ERR45;
@@ -4214,7 +4275,7 @@ while ((c = *(++ptr)) != 0)
               class_utf8 = TRUE;
               length += LINK_SIZE + 2;
               }
-            length += 2;
+            length += 3;
             }
 #endif
           }
@@ -4477,7 +4538,7 @@ while ((c = *(++ptr)) != 0)
           errorcode = ERR29;
           goto PCRE_ERROR_RETURN;
           }
-        length += 1 + LINK_SIZE;
+        length += 3 + 3*LINK_SIZE;  /* Allows for the automatic "once" */
 
         /* If this item is quantified, it will get wrapped inside brackets so
         as to use the code for quantified brackets. We jump down and use the
@@ -4533,6 +4594,7 @@ while ((c = *(++ptr)) != 0)
 
         if (*ptr == '=' || *ptr == '>')
           {
+          length += 2 + 2*LINK_SIZE;  /* Allow for the automatic "once" */
           while ((compile_block.ctypes[*(++ptr)] & ctype_word) != 0);
           if (*ptr != ')')
             {
@@ -5000,7 +5062,8 @@ if (reqbyte >= 0 &&
   re->options |= PCRE_REQCHSET;
   }
 
-/* Print out the compiled data for debugging */
+/* Print out the compiled data if debugging is enabled. This is never the
+case when building a production library. */
 
 #ifdef DEBUG
 
@@ -5025,7 +5088,8 @@ if (re->options != 0)
 if ((re->options & PCRE_FIRSTSET) != 0)
   {
   int ch = re->first_byte & 255;
-  const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)? "" : " (caseless)";
+  const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)?
+    "" : " (caseless)";
   if (isprint(ch)) printf("First char = %c%s\n", ch, caseless);
     else printf("First char = \\x%02x%s\n", ch, caseless);
   }
@@ -5033,12 +5097,13 @@ if ((re->options & PCRE_FIRSTSET) != 0)
 if ((re->options & PCRE_REQCHSET) != 0)
   {
   int ch = re->req_byte & 255;
-  const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)? "" : " (caseless)";
+  const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)?
+    "" : " (caseless)";
   if (isprint(ch)) printf("Req char = %c%s\n", ch, caseless);
     else printf("Req char = \\x%02x%s\n", ch, caseless);
   }
 
-_pcre_printint(re, stdout);
+pcre_printint(re, stdout);
 
 /* This check is done here in the debugging case so that the code that
 was compiled can be seen. */
index 04029a9464c769c89974a5c3822a1af874012320..29e6c1a358d3316c82a95d79820673d1fd98e7aa 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -58,7 +58,7 @@ Arguments:
 Returns:           0 if data returned, negative on error
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 pcre_config(int what, void *where)
 {
 switch (what)
@@ -95,6 +95,10 @@ switch (what)
   *((unsigned int *)where) = MATCH_LIMIT;
   break;
 
+  case PCRE_CONFIG_MATCH_LIMIT_RECURSION:
+  *((unsigned int *)where) = MATCH_LIMIT_RECURSION;
+  break;
+
   case PCRE_CONFIG_STACKRECURSE:
 #ifdef NO_RECURSE
   *((int *)where) = 0;
index cb3ec186c6df941dd597f400466b1feea8abf7fe..b5e01dac32d4cfc1dba1bf2275d8ccc330c94764 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -288,7 +288,9 @@ const uschar *start_subject = md->start_subject;
 const uschar *end_subject = md->end_subject;
 const uschar *start_code = md->start_code;
 
+#ifdef SUPPORT_UTF8
 BOOL utf8 = (md->poptions & PCRE_UTF8) != 0;
+#endif
 
 rlevel++;
 offsetcount &= (-2);
@@ -480,7 +482,7 @@ for (;;)
     const uschar *code;
     int state_offset = current_state->offset;
     int count, codevalue;
-    int chartype, othercase;
+    int chartype, script;
 
 #ifdef DEBUG
     printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);
@@ -757,19 +759,38 @@ for (;;)
       case OP_NOTPROP:
       if (clen > 0)
         {
-        int rqdtype, category;
-        category = ucp_findchar(c, &chartype, &othercase);
-        rqdtype = code[1];
-        if (rqdtype >= 128)
-          {
-          if ((rqdtype - 128 == category) == (codevalue == OP_PROP))
-            { ADD_NEW(state_offset + 2, 0); }
-          }
-        else
+        BOOL OK;
+        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        switch(code[1])
           {
-          if ((rqdtype == chartype) == (codevalue == OP_PROP))
-            { ADD_NEW(state_offset + 2, 0); }
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = category == code[2];
+          break;
+
+          case PT_PC:
+          OK = chartype == code[2];
+          break;
+
+          case PT_SC:
+          OK = script == code[2];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
           }
+
+        if (OK == (codevalue == OP_PROP)) { ADD_NEW(state_offset + 3, 0); }
         }
       break;
 #endif
@@ -862,14 +883,41 @@ for (;;)
       case OP_PROP_EXTRA + OP_TYPEPLUS:
       case OP_PROP_EXTRA + OP_TYPEMINPLUS:
       count = current_state->count;           /* Already matched */
-      if (count > 0) { ADD_ACTIVE(state_offset + 3, 0); }
+      if (count > 0) { ADD_ACTIVE(state_offset + 4, 0); }
       if (clen > 0)
         {
-        int category = ucp_findchar(c, &chartype, &othercase);
-        int rqdtype = code[2];
-        if ((d == OP_PROP) ==
-            (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
-          { count++; ADD_NEW(state_offset, count); }
+        BOOL OK;
+        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        switch(code[2])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = category == code[3];
+          break;
+
+          case PT_PC:
+          OK = chartype == code[3];
+          break;
+
+          case PT_SC:
+          OK = script == code[3];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (d == OP_PROP)) { count++; ADD_NEW(state_offset, count); }
         }
       break;
 
@@ -878,7 +926,7 @@ for (;;)
       case OP_EXTUNI_EXTRA + OP_TYPEMINPLUS:
       count = current_state->count;  /* Already matched */
       if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -887,7 +935,7 @@ for (;;)
           int nd;
           int ndlen = 1;
           GETCHARLEN(nd, nptr, ndlen);
-          if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+          if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
           ncount++;
           nptr += ndlen;
           }
@@ -899,7 +947,7 @@ for (;;)
       /*-----------------------------------------------------------------*/
       case OP_PROP_EXTRA + OP_TYPEQUERY:
       case OP_PROP_EXTRA + OP_TYPEMINQUERY:
-      count = 3;
+      count = 4;
       goto QS1;
 
       case OP_PROP_EXTRA + OP_TYPESTAR:
@@ -908,14 +956,41 @@ for (;;)
 
       QS1:
 
-      ADD_ACTIVE(state_offset + 3, 0);
+      ADD_ACTIVE(state_offset + 4, 0);
       if (clen > 0)
         {
-        int category = ucp_findchar(c, &chartype, &othercase);
-        int rqdtype = code[2];
-        if ((d == OP_PROP) ==
-            (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
-          { ADD_NEW(state_offset + count, 0); }
+        BOOL OK;
+        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        switch(code[2])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = category == code[3];
+          break;
+
+          case PT_PC:
+          OK = chartype == code[3];
+          break;
+
+          case PT_SC:
+          OK = script == code[3];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (d == OP_PROP)) { ADD_NEW(state_offset + count, 0); }
         }
       break;
 
@@ -932,7 +1007,7 @@ for (;;)
       QS2:
 
       ADD_ACTIVE(state_offset + 2, 0);
-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -941,7 +1016,7 @@ for (;;)
           int nd;
           int ndlen = 1;
           GETCHARLEN(nd, nptr, ndlen);
-          if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+          if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
           ncount++;
           nptr += ndlen;
           }
@@ -954,17 +1029,45 @@ for (;;)
       case OP_PROP_EXTRA + OP_TYPEUPTO:
       case OP_PROP_EXTRA + OP_TYPEMINUPTO:
       if (codevalue != OP_PROP_EXTRA + OP_TYPEEXACT)
-        { ADD_ACTIVE(state_offset + 5, 0); }
+        { ADD_ACTIVE(state_offset + 6, 0); }
       count = current_state->count;  /* Number already matched */
       if (clen > 0)
         {
-        int category = ucp_findchar(c, &chartype, &othercase);
-        int rqdtype = code[4];
-        if ((d == OP_PROP) ==
-            (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
+        BOOL OK;
+        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        switch(code[4])
+          {
+          case PT_ANY:
+          OK = TRUE;
+          break;
+
+          case PT_LAMP:
+          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          break;
+
+          case PT_GC:
+          OK = category == code[5];
+          break;
+
+          case PT_PC:
+          OK = chartype == code[5];
+          break;
+
+          case PT_SC:
+          OK = script == code[5];
+          break;
+
+          /* Should never occur, but keep compilers from grumbling. */
+
+          default:
+          OK = codevalue != OP_PROP;
+          break;
+          }
+
+        if (OK == (d == OP_PROP))
           {
           if (++count >= GET2(code, 1))
-            { ADD_NEW(state_offset + 5, 0); }
+            { ADD_NEW(state_offset + 6, 0); }
           else
             { ADD_NEW(state_offset, count); }
           }
@@ -978,7 +1081,7 @@ for (;;)
       if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT)
         { ADD_ACTIVE(state_offset + 4, 0); }
       count = current_state->count;  /* Number already matched */
-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -987,7 +1090,7 @@ for (;;)
           int nd;
           int ndlen = 1;
           GETCHARLEN(nd, nptr, ndlen);
-          if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+          if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
           ncount++;
           nptr += ndlen;
           }
@@ -1018,17 +1121,17 @@ for (;;)
         {
         if (c == d) { ADD_NEW(state_offset + dlen + 1, 0); } else
           {
+          int othercase;
           if (c < 128) othercase = fcc[c]; else
 
           /* If we have Unicode property support, we can use it to test the
-          other case of the character, if there is one. The result of
-          ucp_findchar() is < 0 if the char isn't found, and othercase is
-          returned as zero if there isn't another case. */
+          other case of the character. */
 
 #ifdef SUPPORT_UCP
-          if (ucp_findchar(c, &chartype, &othercase) < 0)
+          othercase = _pcre_ucp_othercase(c);
+#else
+          othercase = -1;
 #endif
-            othercase = -1;
 
           if (d == othercase) { ADD_NEW(state_offset + dlen + 1, 0); }
           }
@@ -1050,7 +1153,7 @@ for (;;)
       to wait for them to pass before continuing. */
 
       case OP_EXTUNI:
-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -1058,7 +1161,7 @@ for (;;)
           {
           int nclen = 1;
           GETCHARLEN(c, nptr, nclen);
-          if (ucp_findchar(c, &chartype, &othercase) != ucp_M) break;
+          if (_pcre_ucp_findprop(c, &chartype, &script) != ucp_M) break;
           ncount++;
           nptr += nclen;
           }
@@ -1093,10 +1196,10 @@ for (;;)
         if ((ims & PCRE_CASELESS) != 0)
           {
 #ifdef SUPPORT_UTF8
-          if (utf8 && c >= 128)
+          if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            if (ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;
+            otherd = _pcre_ucp_othercase(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -1120,10 +1223,10 @@ for (;;)
         if ((ims && PCRE_CASELESS) != 0)
           {
 #ifdef SUPPORT_UTF8
-          if (utf8 && c >= 128)
+          if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            if (ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;
+            otherd = _pcre_ucp_othercase(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -1147,10 +1250,10 @@ for (;;)
         if ((ims && PCRE_CASELESS) != 0)
           {
 #ifdef SUPPORT_UTF8
-          if (utf8 && c >= 128)
+          if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            if (ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;
+            otherd = _pcre_ucp_othercase(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -1178,10 +1281,10 @@ for (;;)
         if ((ims & PCRE_CASELESS) != 0)
           {
 #ifdef SUPPORT_UTF8
-          if (utf8 && c >= 128)
+          if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            if (ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;
+            otherd = _pcre_ucp_othercase(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -1519,7 +1622,7 @@ for (;;)
         cb.version          = 1;   /* Version 1 of the callout block */
         cb.callout_number   = code[1];
         cb.offset_vector    = offsets;
-        cb.subject          = (char *)start_subject;
+        cb.subject          = (PCRE_SPTR)start_subject;
         cb.subject_length   = end_subject - start_subject;
         cb.start_match      = current_subject - start_subject;
         cb.current_position = ptr - start_subject;
@@ -1611,7 +1714,7 @@ Returns:          > 0 => number of match offset pairs placed in offsets
                  < -1 => some kind of unexpected problem
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 pcre_dfa_exec(const pcre *argument_re, const pcre_extra *extra_data,
   const char *subject, int length, int start_offset, int options, int *offsets,
   int offsetcount, int *workspace, int wscount)
@@ -1655,6 +1758,8 @@ if (extra_data != NULL)
   if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)
     study = (const pcre_study_data *)extra_data->study_data;
   if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0) return PCRE_ERROR_DFA_UMLIMIT;
+  if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+    return PCRE_ERROR_DFA_UMLIMIT;
   if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
     match_block.callout_data = extra_data->callout_data;
   if ((flags & PCRE_EXTRA_TABLES) != 0)
@@ -1680,7 +1785,9 @@ end_subject = (const unsigned char *)subject + length;
 req_byte_ptr = current_subject - 1;
 
 utf8 = (re->options & PCRE_UTF8) != 0;
-anchored = (options & PCRE_ANCHORED) != 0 || (re->options & PCRE_ANCHORED) != 0;
+
+anchored = (options & (PCRE_ANCHORED|PCRE_DFA_RESTART)) != 0 ||
+  (re->options & PCRE_ANCHORED) != 0;
 
 /* The remaining fixed data for passing around. */
 
@@ -1771,9 +1878,9 @@ for (;;)
 
     /* Advance to a unique first char if possible. If firstline is TRUE, the
     start of the match is constrained to the first line of a multiline string.
-    Implement this by temporarily adjusting end_subject so that we stop scanning
-    at a newline. If the match fails at the newline, later code breaks this loop.
-    */
+    Implement this by temporarily adjusting end_subject so that we stop
+    scanning at a newline. If the match fails at the newline, later code breaks
+    this loop. */
 
     if (firstline)
       {
index 65173e2ba2419930114c08f47e522c45ffc3b59f..ecb32977df4c37686c1e11a64cd9ba423f30b145 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -54,7 +54,7 @@ are on the heap, not on the stack. */
 
 typedef struct eptrblock {
   struct eptrblock *epb_prev;
-  const uschar *epb_saved_eptr;
+  USPTR epb_saved_eptr;
 } eptrblock;
 
 /* Flag bits for the match() function */
@@ -128,10 +128,10 @@ Returns:      TRUE if matched
 */
 
 static BOOL
-match_ref(int offset, register const uschar *eptr, int length, match_data *md,
+match_ref(int offset, register USPTR eptr, int length, match_data *md,
   unsigned long int ims)
 {
-const uschar *p = md->start_subject + md->offset_vector[offset];
+USPTR p = md->start_subject + md->offset_vector[offset];
 
 #ifdef DEBUG
 if (eptr >= md->end_subject)
@@ -169,32 +169,50 @@ return TRUE;
 ****************************************************************************
                    RECURSION IN THE match() FUNCTION
 
-The match() function is highly recursive. Some regular expressions can cause
-it to recurse thousands of times. I was writing for Unix, so I just let it
-call itself recursively. This uses the stack for saving everything that has
-to be saved for a recursive call. On Unix, the stack can be large, and this
-works fine.
+The match() function is highly recursive, though not every recursive call
+increases the recursive depth. Nevertheless, some regular expressions can cause
+it to recurse to a great depth. I was writing for Unix, so I just let it call
+itself recursively. This uses the stack for saving everything that has to be
+saved for a recursive call. On Unix, the stack can be large, and this works
+fine.
 
-It turns out that on non-Unix systems there are problems with programs that
-use a lot of stack. (This despite the fact that every last chip has oodles
-of memory these days, and techniques for extending the stack have been known
-for decades.) So....
+It turns out that on some non-Unix-like systems there are problems with
+programs that use a lot of stack. (This despite the fact that every last chip
+has oodles of memory these days, and techniques for extending the stack have
+been known for decades.) So....
 
 There is a fudge, triggered by defining NO_RECURSE, which avoids recursive
 calls by keeping local variables that need to be preserved in blocks of memory
-obtained from malloc instead instead of on the stack. Macros are used to
+obtained from malloc() instead instead of on the stack. Macros are used to
 achieve this so that the actual code doesn't look very different to what it
 always used to.
 ****************************************************************************
 ***************************************************************************/
 
 
-/* These versions of the macros use the stack, as normal */
+/* These versions of the macros use the stack, as normal. There are debugging
+versions and production versions. */
 
 #ifndef NO_RECURSE
 #define REGISTER register
-#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) rx = match(ra,rb,rc,rd,re,rf,rg)
+#ifdef DEBUG
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) \
+  { \
+  printf("match() called in line %d\n", __LINE__); \
+  rx = match(ra,rb,rc,rd,re,rf,rg,rdepth+1); \
+  printf("to line %d\n", __LINE__); \
+  }
+#define RRETURN(ra) \
+  { \
+  printf("match() returned %d from line %d ", ra, __LINE__); \
+  return ra; \
+  }
+#else
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) \
+  rx = match(ra,rb,rc,rd,re,rf,rg,rdepth+1)
 #define RRETURN(ra) return ra
+#endif
+
 #else
 
 
@@ -215,6 +233,7 @@ match(), which never changes. */
     newframe->Xims = re;\
     newframe->Xeptrb = rf;\
     newframe->Xflags = rg;\
+    newframe->Xrdepth = frame->Xrdepth + 1;\
     newframe->Xprevframe = frame;\
     frame = newframe;\
     DPRINTF(("restarting from line %d\n", __LINE__));\
@@ -256,6 +275,7 @@ typedef struct heapframe {
   long int Xims;
   eptrblock *Xeptrb;
   int Xflags;
+  int Xrdepth;
 
   /* Function local variables */
 
@@ -278,11 +298,11 @@ typedef struct heapframe {
 
 #ifdef SUPPORT_UCP
   int Xprop_type;
+  int Xprop_value;
   int Xprop_fail_result;
   int Xprop_category;
   int Xprop_chartype;
-  int Xprop_othercase;
-  int Xprop_test_against;
+  int Xprop_script;
   int *Xprop_test_variable;
 #endif
 
@@ -343,17 +363,18 @@ Arguments:
    flags       can contain
                  match_condassert - this is an assertion condition
                  match_isgroup - this is the start of a bracketed group
+   rdepth      the recursion depth
 
 Returns:       MATCH_MATCH if matched            )  these values are >= 0
                MATCH_NOMATCH if failed to match  )
                a negative PCRE_ERROR_xxx value if aborted by an error condition
-                 (e.g. stopped by recursion limit)
+                 (e.g. stopped by repeated call or recursion limit)
 */
 
 static int
-match(REGISTER const uschar *eptr, REGISTER const uschar *ecode,
+match(REGISTER USPTR eptr, REGISTER const uschar *ecode,
   int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,
-  int flags)
+  int flags, int rdepth)
 {
 /* These variables do not need to be preserved over recursion in this function,
 so they can be ordinary variables in all cases. Mark them with "register"
@@ -381,6 +402,7 @@ frame->Xoffset_top = offset_top;
 frame->Xims = ims;
 frame->Xeptrb = eptrb;
 frame->Xflags = flags;
+frame->Xrdepth = rdepth;
 
 /* This is where control jumps back to to effect "recursion" */
 
@@ -394,6 +416,7 @@ HEAP_RECURSE:
 #define ims                frame->Xims
 #define eptrb              frame->Xeptrb
 #define flags              frame->Xflags
+#define rdepth             frame->Xrdepth
 
 /* Ditto for the local variables */
 
@@ -418,11 +441,11 @@ HEAP_RECURSE:
 
 #ifdef SUPPORT_UCP
 #define prop_type          frame->Xprop_type
+#define prop_value         frame->Xprop_value
 #define prop_fail_result   frame->Xprop_fail_result
 #define prop_category      frame->Xprop_category
 #define prop_chartype      frame->Xprop_chartype
-#define prop_othercase     frame->Xprop_othercase
-#define prop_test_against  frame->Xprop_test_against
+#define prop_script        frame->Xprop_script
 #define prop_test_variable frame->Xprop_test_variable
 #endif
 
@@ -452,20 +475,20 @@ i, and fc and c, can be the same variables. */
 #define fc c
 
 
-#ifdef SUPPORT_UTF8                /* Many of these variables are used ony */
-const uschar *charptr;             /* small blocks of the code. My normal  */
-#endif                             /* style of coding would have declared  */
-const uschar *callpat;             /* them within each of those blocks.    */
-const uschar *data;                /* However, in order to accommodate the */
-const uschar *next;                /* version of this code that uses an    */
-const uschar *pp;                  /* external "stack" implemented on the  */
-const uschar *prev;                /* heap, it is easier to declare them   */
-const uschar *saved_eptr;          /* all here, so the declarations can    */
-                                   /* be cut out in a block. The only      */
-recursion_info new_recursive;      /* declarations within blocks below are */
-                                   /* for variables that do not have to    */
-BOOL cur_is_word;                  /* be preserved over a recursive call   */
-BOOL condition;                    /* to RMATCH().                         */
+#ifdef SUPPORT_UTF8                /* Many of these variables are used only  */
+const uschar *charptr;             /* in small blocks of the code. My normal */
+#endif                             /* style of coding would have declared    */
+const uschar *callpat;             /* them within each of those blocks.      */
+const uschar *data;                /* However, in order to accommodate the   */
+const uschar *next;                /* version of this code that uses an      */
+USPTR         pp;                  /* external "stack" implemented on the    */
+const uschar *prev;                /* heap, it is easier to declare them all */
+USPTR         saved_eptr;          /* here, so the declarations can be cut   */
+                                   /* out in a block. The only declarations  */
+recursion_info new_recursive;      /* within blocks below are for variables  */
+                                   /* that do not have to be preserved over  */
+BOOL cur_is_word;                  /* a recursive call to RMATCH().          */
+BOOL condition;
 BOOL minimize;
 BOOL prev_is_word;
 
@@ -473,11 +496,11 @@ unsigned long int original_ims;
 
 #ifdef SUPPORT_UCP
 int prop_type;
+int prop_value;
 int prop_fail_result;
 int prop_category;
 int prop_chartype;
-int prop_othercase;
-int prop_test_against;
+int prop_script;
 int *prop_test_variable;
 #endif
 
@@ -499,19 +522,24 @@ eptrblock newptrb;
 variables. */
 
 #ifdef SUPPORT_UCP
+prop_value = 0;
 prop_fail_result = 0;
-prop_test_against = 0;
 prop_test_variable = NULL;
 #endif
 
-/* OK, now we can get on with the real code of the function. Recursion is
-specified by the macros RMATCH and RRETURN. When NO_RECURSE is *not* defined,
-these just turn into a recursive call to match() and a "return", respectively.
-However, RMATCH isn't like a function call because it's quite a complicated
-macro. It has to be used in one particular way. This shouldn't, however, impact
-performance when true recursion is being used. */
+/* OK, now we can get on with the real code of the function. Recursive calls
+are specified by the macro RMATCH and RRETURN is used to return. When
+NO_RECURSE is *not* defined, these just turn into a recursive call to match()
+and a "return", respectively (possibly with some debugging if DEBUG is
+defined). However, RMATCH isn't like a function call because it's quite a
+complicated macro. It has to be used in one particular way. This shouldn't,
+however, impact performance when true recursion is being used. */
+
+/* First check that we haven't called match() too many times, or that we
+haven't exceeded the recursive call limit. */
 
 if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT);
+if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT);
 
 original_ims = ims;    /* Save for resetting on ')' */
 utf8 = md->utf8;       /* Local copy of the flag */
@@ -681,7 +709,7 @@ for (;;)
     if (md->recursive != NULL && md->recursive->group_num == 0)
       {
       recursion_info *rec = md->recursive;
-      DPRINTF(("Hit the end in a (?0) recursion\n"));
+      DPRINTF(("End of pattern in a (?0) recursion\n"));
       md->recursive = rec->prevrec;
       memmove(md->offset_vector, rec->offset_save,
         rec->saved_max * sizeof(int));
@@ -800,7 +828,7 @@ for (;;)
       cb.version          = 1;   /* Version 1 of the callout block */
       cb.callout_number   = ecode[1];
       cb.offset_vector    = md->offset_vector;
-      cb.subject          = (const char *)md->start_subject;
+      cb.subject          = (PCRE_SPTR)md->start_subject;
       cb.subject_length   = md->end_subject - md->start_subject;
       cb.start_match      = md->start_match - md->start_subject;
       cb.current_position = eptr - md->start_subject;
@@ -882,12 +910,17 @@ for (;;)
             eptrb, match_isgroup);
         if (rrc == MATCH_MATCH)
           {
+          DPRINTF(("Recursion matched\n"));
           md->recursive = new_recursive.prevrec;
           if (new_recursive.offset_save != stacksave)
             (pcre_free)(new_recursive.offset_save);
           RRETURN(MATCH_MATCH);
           }
-        else if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+        else if (rrc != MATCH_NOMATCH)
+          {
+          DPRINTF(("Recursion gave error %d\n", rrc));
+          RRETURN(rrc);
+          }
 
         md->recursive = &new_recursive;
         memcpy(md->offset_vector, new_recursive.offset_save,
@@ -1352,23 +1385,43 @@ for (;;)
     if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
     GETCHARINCTEST(c, eptr);
       {
-      int chartype, rqdtype;
-      int othercase;
-      int category = ucp_findchar(c, &chartype, &othercase);
+      int chartype, script;
+      int category = _pcre_ucp_findprop(c, &chartype, &script);
 
-      rqdtype = *(++ecode);
-      ecode++;
-
-      if (rqdtype >= 128)
+      switch(ecode[1])
         {
-        if ((rqdtype - 128 != category) == (op == OP_PROP))
+        case PT_ANY:
+        if (op == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
+        break;
+
+        case PT_LAMP:
+        if ((chartype == ucp_Lu ||
+             chartype == ucp_Ll ||
+             chartype == ucp_Lt) == (op == OP_NOTPROP))
           RRETURN(MATCH_NOMATCH);
-        }
-      else
-        {
-        if ((rqdtype != chartype) == (op == OP_PROP))
+         break;
+
+        case PT_GC:
+        if ((ecode[2] != category) == (op == OP_PROP))
+          RRETURN(MATCH_NOMATCH);
+        break;
+
+        case PT_PC:
+        if ((ecode[2] != chartype) == (op == OP_PROP))
+          RRETURN(MATCH_NOMATCH);
+        break;
+
+        case PT_SC:
+        if ((ecode[2] != script) == (op == OP_PROP))
           RRETURN(MATCH_NOMATCH);
+        break;
+
+        default:
+        RRETURN(PCRE_ERROR_INTERNAL);
+        break;
         }
+
+      ecode += 3;
       }
     break;
 
@@ -1379,9 +1432,8 @@ for (;;)
     if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
     GETCHARINCTEST(c, eptr);
       {
-      int chartype;
-      int othercase;
-      int category = ucp_findchar(c, &chartype, &othercase);
+      int chartype, script;
+      int category = _pcre_ucp_findprop(c, &chartype, &script);
       if (category == ucp_M) RRETURN(MATCH_NOMATCH);
       while (eptr < md->end_subject)
         {
@@ -1390,7 +1442,7 @@ for (;;)
           {
           GETCHARLEN(c, eptr, len);
           }
-        category = ucp_findchar(c, &chartype, &othercase);
+        category = _pcre_ucp_findprop(c, &chartype, &script);
         if (category != ucp_M) break;
         eptr += len;
         }
@@ -1683,8 +1735,8 @@ for (;;)
           while (eptr >= pp)
             {
             RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
-            eptr--;
             if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            eptr--;
             }
           }
 
@@ -1841,16 +1893,12 @@ for (;;)
         ecode += length;
 
         /* If we have Unicode property support, we can use it to test the other
-        case of the character, if there is one. The result of ucp_findchar() is
-        < 0 if the char isn't found, and othercase is returned as zero if there
-        isn't one. */
+        case of the character, if there is one. */
 
         if (fc != dc)
           {
 #ifdef SUPPORT_UCP
-          int chartype;
-          int othercase;
-          if (ucp_findchar(fc, &chartype, &othercase) < 0 || dc != othercase)
+          if (dc != _pcre_ucp_othercase(fc))
 #endif
             RRETURN(MATCH_NOMATCH);
           }
@@ -1918,10 +1966,9 @@ for (;;)
 
 #ifdef SUPPORT_UCP
         int othercase;
-        int chartype;
         if ((ims & PCRE_CASELESS) != 0 &&
-             ucp_findchar(fc, &chartype, &othercase) >= 0 &&
-             othercase > 0)
+            (othercase = _pcre_ucp_othercase(fc)) >= 0 &&
+             othercase >= 0)
           oclength = _pcre_ord2utf8(othercase, occhars);
 #endif  /* SUPPORT_UCP */
 
@@ -2408,16 +2455,7 @@ for (;;)
       {
       prop_fail_result = ctype == OP_NOTPROP;
       prop_type = *ecode++;
-      if (prop_type >= 128)
-        {
-        prop_test_against = prop_type - 128;
-        prop_test_variable = &prop_category;
-        }
-      else
-        {
-        prop_test_against = prop_type;
-        prop_test_variable = &prop_chartype;
-        }
+      prop_value = *ecode++;
       }
     else prop_type = -1;
 #endif
@@ -2434,14 +2472,68 @@ for (;;)
     if (min > 0)
       {
 #ifdef SUPPORT_UCP
-      if (prop_type > 0)
+      if (prop_type >= 0)
         {
-        for (i = 1; i <= min; i++)
+        switch(prop_type)
           {
-          GETCHARINC(c, eptr);
-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
-          if ((*prop_test_variable == prop_test_against) == prop_fail_result)
-            RRETURN(MATCH_NOMATCH);
+          case PT_ANY:
+          if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            }
+          break;
+
+          case PT_LAMP:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_chartype == ucp_Lu ||
+                 prop_chartype == ucp_Ll ||
+                 prop_chartype == ucp_Lt) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_GC:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_category == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_PC:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_chartype == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_SC:
+          for (i = 1; i <= min; i++)
+            {
+            if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_script == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          default:
+          RRETURN(PCRE_ERROR_INTERNAL);
+          break;
           }
         }
 
@@ -2453,7 +2545,7 @@ for (;;)
         for (i = 1; i <= min; i++)
           {
           GETCHARINCTEST(c, eptr);
-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+          prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
           if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
           while (eptr < md->end_subject)
             {
@@ -2462,7 +2554,7 @@ for (;;)
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
             if (prop_category != ucp_M) break;
             eptr += len;
             }
@@ -2624,17 +2716,78 @@ for (;;)
     if (minimize)
       {
 #ifdef SUPPORT_UCP
-      if (prop_type > 0)
+      if (prop_type >= 0)
         {
-        for (fi = min;; fi++)
+        switch(prop_type)
           {
-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);
-          if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
-          GETCHARINC(c, eptr);
-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
-          if ((*prop_test_variable == prop_test_against) == prop_fail_result)
-            RRETURN(MATCH_NOMATCH);
+          case PT_ANY:
+          for (fi = min;; fi++)
+            {
+            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_LAMP:
+          for (fi = min;; fi++)
+            {
+            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_chartype == ucp_Lu ||
+                 prop_chartype == ucp_Ll ||
+                 prop_chartype == ucp_Lt) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_GC:
+          for (fi = min;; fi++)
+            {
+            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_category == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_PC:
+          for (fi = min;; fi++)
+            {
+            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_chartype == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          case PT_SC:
+          for (fi = min;; fi++)
+            {
+            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+            if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+            GETCHARINC(c, eptr);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_script == prop_value) == prop_fail_result)
+              RRETURN(MATCH_NOMATCH);
+            }
+          break;
+
+          default:
+          RRETURN(PCRE_ERROR_INTERNAL);
+          break;
           }
         }
 
@@ -2649,7 +2802,7 @@ for (;;)
           if (rrc != MATCH_NOMATCH) RRETURN(rrc);
           if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
           GETCHARINCTEST(c, eptr);
-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+          prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
           if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
           while (eptr < md->end_subject)
             {
@@ -2658,7 +2811,7 @@ for (;;)
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
             if (prop_category != ucp_M) break;
             eptr += len;
             }
@@ -2783,17 +2936,74 @@ for (;;)
       pp = eptr;  /* Remember where we started */
 
 #ifdef SUPPORT_UCP
-      if (prop_type > 0)
+      if (prop_type >= 0)
         {
-        for (i = min; i < max; i++)
+        switch(prop_type)
           {
-          int len = 1;
-          if (eptr >= md->end_subject) break;
-          GETCHARLEN(c, eptr, len);
-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
-          if ((*prop_test_variable == prop_test_against) == prop_fail_result)
-            break;
-          eptr+= len;
+          case PT_ANY:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject) break;
+            GETCHARLEN(c, eptr, len);
+            if (prop_fail_result) break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_LAMP:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject) break;
+            GETCHARLEN(c, eptr, len);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_chartype == ucp_Lu ||
+                 prop_chartype == ucp_Ll ||
+                 prop_chartype == ucp_Lt) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_GC:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject) break;
+            GETCHARLEN(c, eptr, len);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_category == prop_value) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_PC:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject) break;
+            GETCHARLEN(c, eptr, len);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_chartype == prop_value) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
+
+          case PT_SC:
+          for (i = min; i < max; i++)
+            {
+            int len = 1;
+            if (eptr >= md->end_subject) break;
+            GETCHARLEN(c, eptr, len);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            if ((prop_script == prop_value) == prop_fail_result)
+              break;
+            eptr+= len;
+            }
+          break;
           }
 
         /* eptr is now past the end of the maximum run */
@@ -2816,7 +3026,7 @@ for (;;)
           {
           if (eptr >= md->end_subject) break;
           GETCHARINCTEST(c, eptr);
-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+          prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
           if (prop_category == ucp_M) break;
           while (eptr < md->end_subject)
             {
@@ -2825,7 +3035,7 @@ for (;;)
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
             if (prop_category != ucp_M) break;
             eptr += len;
             }
@@ -2846,7 +3056,7 @@ for (;;)
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
             if (prop_category != ucp_M) break;
             eptr--;
             }
@@ -3200,9 +3410,9 @@ Returns:          > 0 => success; value is the number of elements filled in
                  < -1 => some kind of unexpected problem
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,
-  const char *subject, int length, int start_offset, int options, int *offsets,
+  PCRE_SPTR subject, int length, int start_offset, int options, int *offsets,
   int offsetcount)
 {
 int rc, resetcount, ocount;
@@ -3219,9 +3429,9 @@ BOOL req_byte_caseless = FALSE;
 match_data match_block;
 const uschar *tables;
 const uschar *start_bits = NULL;
-const uschar *start_match = (const uschar *)subject + start_offset;
-const uschar *end_subject;
-const uschar *req_byte_ptr = start_match - 1;
+USPTR start_match = (USPTR)subject + start_offset;
+USPTR end_subject;
+USPTR req_byte_ptr = start_match - 1;
 
 pcre_study_data internal_study;
 const pcre_study_data *study;
@@ -3242,6 +3452,7 @@ the default values. */
 
 study = NULL;
 match_block.match_limit = MATCH_LIMIT;
+match_block.match_limit_recursion = MATCH_LIMIT_RECURSION;
 match_block.callout_data = NULL;
 
 /* The table pointer is always in native byte order. */
@@ -3255,6 +3466,8 @@ if (extra_data != NULL)
     study = (const pcre_study_data *)extra_data->study_data;
   if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0)
     match_block.match_limit = extra_data->match_limit;
+  if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+    match_block.match_limit_recursion = extra_data->match_limit_recursion;
   if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
     match_block.callout_data = extra_data->callout_data;
   if ((flags & PCRE_EXTRA_TABLES) != 0) tables = extra_data->tables;
@@ -3289,7 +3502,7 @@ firstline = (re->options & PCRE_FIRSTLINE) != 0;
 match_block.start_code = (const uschar *)external_re + re->name_table_offset +
   re->name_count * re->name_entry_size;
 
-match_block.start_subject = (const uschar *)subject;
+match_block.start_subject = (USPTR)subject;
 match_block.start_offset = start_offset;
 match_block.end_subject = match_block.start_subject + length;
 end_subject = match_block.end_subject;
@@ -3415,7 +3628,7 @@ the loop runs just once. */
 
 do
   {
-  const uschar *save_end_subject = end_subject;
+  USPTR save_end_subject = end_subject;
 
   /* Reset the maximum number of extractions we might see. */
 
@@ -3434,7 +3647,7 @@ do
 
   if (firstline)
     {
-    const uschar *t = start_match;
+    USPTR t = start_match;
     while (t < save_end_subject && *t != '\n') t++;
     end_subject = t;
     }
@@ -3504,7 +3717,7 @@ do
       end_subject - start_match < REQ_BYTE_MAX &&
       !match_block.partial)
     {
-    register const uschar *p = start_match + ((first_byte >= 0)? 1 : 0);
+    register USPTR p = start_match + ((first_byte >= 0)? 1 : 0);
 
     /* We don't need to repeat the search if we haven't yet reached the
     place we found it at last time. */
@@ -3550,7 +3763,7 @@ do
   match_block.match_call_count = 0;
 
   rc = match(start_match, match_block.start_code, 2, &match_block, ims, NULL,
-    match_isgroup);
+    match_isgroup, 0);
 
   /* When the result is no match, if the subject's first character was a
   newline and the PCRE_FIRSTLINE option is set, break (which will return
index ac80e65e2a1bb41d24543d7dea885e55ab2f0b71..4a8edc6f47c6754d1c3eb4c6b42d5240f601a3cb 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -61,7 +61,7 @@ Arguments:
 Returns:           0 if data returned, negative on error
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what,
   void *where)
 {
index fc4a14ac14f8ea19fe2a9be58bc97f06c2806a25..674625a0e9ab9fb0f6e3adc8f30f58102de23fec 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
index 1a839802ba0286e00f917d7e26a17d50af7d0fcc..f829acfb1b87209e0f26919fe6bf57e046a4cf2d 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
index 228949d0cd2a461dea8112bd630d5763460639f9..b318b93eaa6fdb23dd7cf48ce0351d6aca35c97c 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -68,7 +68,7 @@ Returns:        number of capturing subpatterns
                 or negative values on error
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 pcre_info(const pcre *argument_re, int *optptr, int *first_byte)
 {
 real_pcre internal_re;
index bffab024cb3b95d876c28eace49ef0d57f5435ac..386ed3ddf94d9d0fe5fa909a90b274fb7ef05dd6 100644 (file)
@@ -7,7 +7,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -42,12 +42,14 @@ POSSIBILITY OF SUCH DAMAGE.
 modules, but which are not relevant to the exported API. This includes some
 functions whose names all begin with "_pcre_". */
 
+#ifndef PCRE_INTERNAL_H
+#define PCRE_INTERNAL_H
 
 /* Define DEBUG to get debugging output on stdout. */
 
-/****
+#if 0
 #define DEBUG
-****/
+#endif
 
 /* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef
 inline, and there are *still* stupid compilers about that don't like indented
@@ -116,14 +118,27 @@ Unix, where it is defined in sys/types, so use "uschar" instead. */
 
 typedef unsigned char uschar;
 
-/* Include the public PCRE header */
-
-#include "pcre.h"
+/* When PCRE is compiled as a C++ library, the subject pointer can be replaced
+with a custom type. This makes it possible, for example, to allow pcre_exec()
+to process subject strings that are discontinuous by using a smart pointer
+class. It must always be possible to inspect all of the subject string in
+pcre_exec() because of the way it backtracks. Two macros are required in the
+normal case, for sign-unspecified and unsigned char pointers. The former is
+used for the external interface and appears in pcre.h, which is why its name
+must begin with PCRE_. */
+
+#ifdef CUSTOM_SUBJECT_PTR
+#define PCRE_SPTR CUSTOM_SUBJECT_PTR
+#define USPTR CUSTOM_SUBJECT_PTR
+#else
+#define PCRE_SPTR const char *
+#define USPTR const unsigned char *
+#endif
 
-/* Include the (copy of) the public ucp header, changing the external name into
-a private one. This does no harm, even if we aren't compiling UCP support. */
+/* Include the public PCRE header and the definitions of UCP character property
+values. */
 
-#define ucp_findchar _pcre_ucp_findchar
+#include "pcre.h"
 #include "ucp.h"
 
 /* When compiling for use with the Virtual Pascal compiler, these functions
@@ -152,10 +167,11 @@ case in PCRE. */
 void *
 pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)
 {
-int i;
+size_t i;
 dest += n;
 src += n;
 for (i = 0; i < n; ++i) *(--dest) =  *(--src);
+return dest;
 }
 #define memmove(a, b, c) pcre_memmove(a, b, c)
 #endif   /* not HAVE_BCOPY */
@@ -449,6 +465,26 @@ ESC_n is defined as yet another macro, which is set in config.h to either \n
 #define ESC_tee '\t'
 #endif
 
+/* Codes for different types of Unicode property */
+
+#define PT_ANY        0    /* Any property - matches all chars */
+#define PT_LAMP       1    /* L& - the union of Lu, Ll, Lt */
+#define PT_GC         2    /* General characteristic (e.g. L) */
+#define PT_PC         3    /* Particular characteristic (e.g. Lu) */
+#define PT_SC         4    /* Script (e.g. Han) */
+
+/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
+contain UTF-8 characters with values greater than 255. */
+
+#define XCL_NOT    0x01    /* Flag: this is a negative class */
+#define XCL_MAP    0x02    /* Flag: a 32-byte map is present */
+
+#define XCL_END       0    /* Marks end of individual items */
+#define XCL_SINGLE    1    /* Single item (one multibyte char) follows */
+#define XCL_RANGE     2    /* A range (two multibyte chars) follows */
+#define XCL_PROP      3    /* Unicode property (2-byte property code follows) */
+#define XCL_NOTPROP   4    /* Unicode inverted property (ditto) */
+
 /* These are escaped items that aren't just an encoding of a particular data
 value such as \n. They must have non-zero values, as check_escape() returns
 their negation. Also, they must appear in the same order as in the opcode
@@ -464,19 +500,6 @@ enum { ESC_A = 1, ESC_G, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W,
        ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_X, ESC_Z, ESC_z, ESC_E,
        ESC_Q, ESC_REF };
 
-/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
-contain UTF-8 characters with values greater than 255. */
-
-#define XCL_NOT    0x01    /* Flag: this is a negative class */
-#define XCL_MAP    0x02    /* Flag: a 32-byte map is present */
-
-#define XCL_END       0    /* Marks end of individual items */
-#define XCL_SINGLE    1    /* Single item (one multibyte char) follows */
-#define XCL_RANGE     2    /* A range (two multibyte chars) follows */
-#define XCL_PROP      3    /* Unicode property (one property code) follows */
-#define XCL_NOTPROP   4    /* Unicode inverted property (ditto) */
-
-
 /* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
 that extract substrings. Starting from 1 (i.e. after OP_END), the values up to
 OP_EOD must correspond in order to the list of escapes immediately above.
@@ -640,7 +663,7 @@ in UTF-8 mode. The code that uses this table must know about such things. */
   1,                             /* End                                    */ \
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  /* \A, \G, \B, \B, \D, \d, \S, \s, \W, \w */ \
   1, 1,                          /* Any, Anybyte                           */ \
-  2, 2, 1,                       /* NOTPROP, PROP, EXTUNI                  */ \
+  3, 3, 1,                       /* NOTPROP, PROP, EXTUNI                  */ \
   1, 1, 2, 1, 1,                 /* \Z, \z, Opt, ^, $                      */ \
   2,                             /* Char  - the minimum length             */ \
   2,                             /* Charnc  - the minimum length           */ \
@@ -772,7 +795,7 @@ typedef struct recursion_info {
   struct recursion_info *prevrec; /* Previous recursion record (or NULL) */
   int group_num;                /* Number of group that was called */
   const uschar *after_call;     /* "Return value": points after the call in the expr */
-  const uschar *save_start;     /* Old value of md->start_match */
+  USPTR save_start;             /* Old value of md->start_match */
   int *offset_save;             /* Pointer to start of saved offsets */
   int saved_max;                /* Number of saved offsets */
 } recursion_info;
@@ -791,8 +814,9 @@ struct heapframe;
 doing traditional NFA matching, so that they are thread-safe. */
 
 typedef struct match_data {
-  unsigned long int match_call_count; /* As it says */
-  unsigned long int match_limit;/* As it says */
+  unsigned long int match_call_count;      /* As it says */
+  unsigned long int match_limit;           /* As it says */
+  unsigned long int match_limit_recursion; /* As it says */
   int   *offset_vector;         /* Offset vector */
   int    offset_end;            /* One past the end */
   int    offset_max;            /* The maximum usable for return data */
@@ -807,10 +831,10 @@ typedef struct match_data {
   BOOL   partial;               /* PARTIAL flag */
   BOOL   hitend;                /* Hit the end of the subject at some point */
   const uschar *start_code;     /* For use when recursing */
-  const uschar *start_subject;  /* Start of the subject string */
-  const uschar *end_subject;    /* End of the subject string */
-  const uschar *start_match;    /* Start of this match attempt */
-  const uschar *end_match_ptr;  /* Subject position at end match */
+  USPTR  start_subject;         /* Start of the subject string */
+  USPTR  end_subject;           /* End of the subject string */
+  USPTR  start_match;           /* Start of this match attempt */
+  USPTR  end_match_ptr;         /* Subject position at end match */
   int    end_offset_top;        /* Highwater mark at end of match */
   int    capture_last;          /* Most recent capture number */
   int    start_offset;          /* The start offset value */
@@ -865,12 +889,13 @@ total length. */
 #define ctypes_offset (cbits_offset + cbit_length)
 #define tables_length (ctypes_offset + 256)
 
-/* Layout of the UCP type table that translates property names into codes for
-ucp_findchar(). */
+/* Layout of the UCP type table that translates property names into types and
+codes. */
 
 typedef struct {
   const char *name;
-  int value;
+  pcre_uint16 type;
+  pcre_uint16 value;
 } ucp_type_table;
 
 
@@ -899,11 +924,13 @@ one of the exported public functions. They have to be "external" in the C
 sense, but are not part of the PCRE public API. */
 
 extern int         _pcre_ord2utf8(int, uschar *);
-extern void        _pcre_printint(pcre *, FILE *);
 extern real_pcre * _pcre_try_flipped(const real_pcre *, real_pcre *,
                      const pcre_study_data *, pcre_study_data *);
-extern int         _pcre_ucp_findchar(const int, int *, int *);
+extern int         _pcre_ucp_findprop(const int, int *, int *);
+extern int         _pcre_ucp_othercase(const int);
 extern int         _pcre_valid_utf8(const uschar *, int);
 extern BOOL        _pcre_xclass(int, const uschar *);
 
+#endif
+
 /* End of pcre_internal.h */
index c4954b2648170735d1efa99b32344e7baab3488f..abc272f4989498f1c9addc2a00c0a28e2fdda874 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -86,29 +86,22 @@ for (i = 0; i < 256; i++) *p++ = tolower(i);
 
 for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);
 
-/* Then the character class tables. Don't try to be clever and save effort
-on exclusive ones - in some locales things may be different. Note that the
-table for "space" includes everything "isspace" gives, including VT in the
-default locale. This makes it work for the POSIX class [:space:]. */
+/* Then the character class tables. Don't try to be clever and save effort on
+exclusive ones - in some locales things may be different. Note that the table
+for "space" includes everything "isspace" gives, including VT in the default
+locale. This makes it work for the POSIX class [:space:]. Note also that it is
+possible for a character to be alnum or alpha without being lower or upper,
+such as "male and female ordinals" (\xAA and \xBA) in the fr_FR locale (at
+least under Debian Linux's locales as of 12/2005). So we must test for alnum
+specially. */
 
 memset(p, 0, cbit_length);
 for (i = 0; i < 256; i++)
   {
-  if (isdigit(i))
-    {
-    p[cbit_digit  + i/8] |= 1 << (i&7);
-    p[cbit_word   + i/8] |= 1 << (i&7);
-    }
-  if (isupper(i))
-    {
-    p[cbit_upper  + i/8] |= 1 << (i&7);
-    p[cbit_word   + i/8] |= 1 << (i&7);
-    }
-  if (islower(i))
-    {
-    p[cbit_lower  + i/8] |= 1 << (i&7);
-    p[cbit_word   + i/8] |= 1 << (i&7);
-    }
+  if (isdigit(i)) p[cbit_digit  + i/8] |= 1 << (i&7);
+  if (isupper(i)) p[cbit_upper  + i/8] |= 1 << (i&7);
+  if (islower(i)) p[cbit_lower  + i/8] |= 1 << (i&7);
+  if (isalnum(i)) p[cbit_word   + i/8] |= 1 << (i&7);
   if (i == '_')   p[cbit_word   + i/8] |= 1 << (i&7);
   if (isspace(i)) p[cbit_space  + i/8] |= 1 << (i&7);
   if (isxdigit(i))p[cbit_xdigit + i/8] |= 1 << (i&7);
index f6a06fc6eafe05b6d5992554232398c50fc52de7..fc4d6de81262f2d443d14fad27869774f46f4564 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -59,7 +59,7 @@ Arguments:
 Returns:     number of characters placed in the buffer
 */
 
-EXPORT int
+int
 _pcre_ord2utf8(int cvalue, uschar *buffer)
 {
 register int i, j;
similarity index 90%
rename from ext/pcre/pcrelib/pcre_printint.c
rename to ext/pcre/pcrelib/pcre_printint.src
index d18f399252722d068a299d2e1a582f7fdfc8e7ee..34f52d114d9fe709840e2d0dd7e750957019c679 100644 (file)
@@ -38,12 +38,15 @@ POSSIBILITY OF SUCH DAMAGE.
 */
 
 
-/* This module contains an PCRE private debugging function for printing out the
+/* This module contains a PCRE private debugging function for printing out the
 internal form of a compiled regular expression, along with some supporting
-local functions. */
+local functions. This source file is used in two places:
 
+(1) It is #included by pcre_compile.c when it is compiled in debugging mode
+(DEBUG defined in pcre_internal.h). It is not included in production compiles.
 
-#include "pcre_internal.h"
+(2) It is always #included by pcretest.c, which can be asked to print out a
+compiled regex for debugging purposes. */
 
 
 static const char *OP_names[] = { OP_NAME_LIST };
@@ -98,16 +101,18 @@ else
 *************************************************/
 
 static const char *
-get_ucpname(int property)
+get_ucpname(int ptype, int pvalue)
 {
 #ifdef SUPPORT_UCP
 int i;
 for (i = _pcre_utt_size; i >= 0; i--)
   {
-  if (property == _pcre_utt[i].value) break;
+  if (ptype == _pcre_utt[i].type && pvalue == _pcre_utt[i].value) break;
   }
 return (i >= 0)? _pcre_utt[i].name : "??";
 #else
+ptype = ptype;    /* Avoid compiler warning */
+pvalue = pvalue;
 return "??";
 #endif
 }
@@ -121,8 +126,8 @@ return "??";
 /* Make this function work for a regex with integers either byte order.
 However, we assume that what we are passed is a compiled regex. */
 
-EXPORT void
-_pcre_printint(pcre *external_re, FILE *f)
+static void
+pcre_printint(pcre *external_re, FILE *f)
 {
 real_pcre *re = (real_pcre *)external_re;
 uschar *codestart, *code;
@@ -247,8 +252,8 @@ for(;;)
       fprintf(f, "%s", OP_names[code[1]]);
       if (code[1] == OP_PROP || code[1] == OP_NOTPROP)
         {
-        fprintf(f, " %s ", get_ucpname(code[2]));
-        extra = 1;
+        fprintf(f, " %s ", get_ucpname(code[2], code[3]));
+        extra = 2;
         }
       }
     else extra = print_char(f, code+1, utf8);
@@ -272,8 +277,8 @@ for(;;)
     fprintf(f, "    %s", OP_names[code[3]]);
     if (code[3] == OP_PROP || code[3] == OP_NOTPROP)
       {
-      fprintf(f, " %s ", get_ucpname(code[4]));
-      extra = 1;
+      fprintf(f, " %s ", get_ucpname(code[4], code[5]));
+      extra = 2;
       }
     fprintf(f, "{");
     if (*code != OP_TYPEEXACT) fprintf(f, "0,");
@@ -323,7 +328,7 @@ for(;;)
 
     case OP_PROP:
     case OP_NOTPROP:
-    fprintf(f, "    %s %s", OP_names[*code], get_ucpname(code[1]));
+    fprintf(f, "    %s %s", OP_names[*code], get_ucpname(code[1], code[2]));
     break;
 
     /* OP_XCLASS can only occur in UTF-8 mode. However, there's no harm in
@@ -386,11 +391,15 @@ for(;;)
           {
           if (ch == XCL_PROP)
             {
-            fprintf(f, "\\p{%s}", get_ucpname(*ccode++));
+            int ptype = *ccode++;
+            int pvalue = *ccode++;
+            fprintf(f, "\\p{%s}", get_ucpname(ptype, pvalue));
             }
           else if (ch == XCL_NOTPROP)
             {
-            fprintf(f, "\\P{%s}", get_ucpname(*ccode++));
+            int ptype = *ccode++;
+            int pvalue = *ccode++;
+            fprintf(f, "\\P{%s}", get_ucpname(ptype, pvalue));
             }
           else
             {
@@ -432,6 +441,12 @@ for(;;)
         if (*ccode == OP_CRMINRANGE) fprintf(f, "?");
         extra += _pcre_OP_lengths[*ccode];
         break;
+
+        /* Do nothing if it's not a repeat; this code stops picky compilers
+        warning about the lack of a default code path. */
+
+        default:
+        break;
         }
       }
     break;
@@ -448,4 +463,4 @@ for(;;)
   }
 }
 
-/* End of pcre_printint.c */
+/* End of pcre_printint.src */
index 35a7ee869113ad1fee09c0489785c1cbf8b9c3d8..e6965812ef2df3741c10d697166461f8d4414b47 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -63,7 +63,7 @@ Returns:        the (possibly updated) count value (a non-negative number), or
                 a negative error number
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 pcre_refcount(pcre *argument_re, int adjust)
 {
 real_pcre *re = (real_pcre *)argument_re;
index 4a66fdf0ba2af628cef67b334b0eb09f04c76f25..29e0d8400b887ff99960da675f6b00fca4d21953 100644 (file)
@@ -30,7 +30,6 @@
 // Author: Sanjay Ghemawat
 
 #include <vector>
-#include <algorithm>     // for count()
 #include <assert.h>
 #include "config.h"
 #include "pcre_scanner.h"
@@ -90,7 +89,12 @@ void Scanner::EnableSkip() {
 int Scanner::LineNumber() const {
   // TODO: Make it more efficient by keeping track of the last point
   // where we computed line numbers and counting newlines since then.
-  return 1 + std::count(data_.data(), input_.data(), '\n');
+  // We could use std:count, but not all systems have it. :-(
+  int count = 1;
+  for (const char* p = data_.data(); p < input_.data(); ++p)
+    if (*p == '\n')
+      ++count;
+  return count;
 }
 
 int Scanner::Offset() const {
index e000a078d592f967c5fd51f7632bb565d672b1c2..756823cbb153441bf595c6d3238049baf3123e3d 100644 (file)
@@ -68,6 +68,7 @@ static void TestScanner() {
   s.Consume(re, &var, &number);
   CHECK_EQ(var, "alpha");
   CHECK_EQ(number, 1);
+  CHECK_EQ(s.LineNumber(), 3);
   s.GetNextComments(&comments);
   CHECK_EQ(comments.size(), 1);
   CHECK_EQ(comments[0].as_string(), " // this sets alpha\n");
index 7c10c049171ad119243bfa7277466c85888b6479..d3ea04ff7ef52375b225ed684190ccfdaf8095d6 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -401,7 +401,7 @@ Returns:    pointer to a pcre_extra block, with study_data filled in and the
             NULL on error or if no optimization possible
 */
 
-EXPORT pcre_extra *
+PCRE_DATA_SCOPE pcre_extra *
 pcre_study(const pcre *external_re, int options, const char **errorptr)
 {
 uschar start_bits[32];
index 4f442eae033e97adbd3ec2c50840bde912fe7f21..480257cab8ddca43b1b61dff422e6209bb9b4c9a 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -39,14 +39,16 @@ POSSIBILITY OF SUCH DAMAGE.
 
 
 /* This module contains some fixed tables that are used by more than one of the
-PCRE code modules. */
+PCRE code modules. The tables are also #included by the pcretest program, which
+uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name
+clashes with the library. */
 
 
 #include "pcre_internal.h"
 
 
 /* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
-the definition is next to the definition of the opcodes in internal.h. */
+the definition is next to the definition of the opcodes in pcre_internal.h. */
 
 const uschar _pcre_OP_lengths[] = { OP_LENGTHS };
 
@@ -80,48 +82,110 @@ const uschar _pcre_utf8_table4[] = {
   2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
   3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };
 
-/* This table translates Unicode property names into code values for the
-ucp_findchar() function. It is used by pcretest as well as by the library
-functions. */
+/* This table translates Unicode property names into type and code values. It
+is searched by binary chop, so must be in collating sequence of name. */
 
 const ucp_type_table _pcre_utt[] = {
-  { "C",  128 + ucp_C },
-  { "Cc", ucp_Cc },
-  { "Cf", ucp_Cf },
-  { "Cn", ucp_Cn },
-  { "Co", ucp_Co },
-  { "Cs", ucp_Cs },
-  { "L",  128 + ucp_L },
-  { "Ll", ucp_Ll },
-  { "Lm", ucp_Lm },
-  { "Lo", ucp_Lo },
-  { "Lt", ucp_Lt },
-  { "Lu", ucp_Lu },
-  { "M",  128 + ucp_M },
-  { "Mc", ucp_Mc },
-  { "Me", ucp_Me },
-  { "Mn", ucp_Mn },
-  { "N",  128 + ucp_N },
-  { "Nd", ucp_Nd },
-  { "Nl", ucp_Nl },
-  { "No", ucp_No },
-  { "P",  128 + ucp_P },
-  { "Pc", ucp_Pc },
-  { "Pd", ucp_Pd },
-  { "Pe", ucp_Pe },
-  { "Pf", ucp_Pf },
-  { "Pi", ucp_Pi },
-  { "Po", ucp_Po },
-  { "Ps", ucp_Ps },
-  { "S",  128 + ucp_S },
-  { "Sc", ucp_Sc },
-  { "Sk", ucp_Sk },
-  { "Sm", ucp_Sm },
-  { "So", ucp_So },
-  { "Z",  128 + ucp_Z },
-  { "Zl", ucp_Zl },
-  { "Zp", ucp_Zp },
-  { "Zs", ucp_Zs }
+  { "Any",                 PT_ANY,  0 },
+  { "Arabic",              PT_SC,   ucp_Arabic },
+  { "Armenian",            PT_SC,   ucp_Armenian },
+  { "Bengali",             PT_SC,   ucp_Bengali },
+  { "Bopomofo",            PT_SC,   ucp_Bopomofo },
+  { "Braille",             PT_SC,   ucp_Braille },
+  { "Buginese",            PT_SC,   ucp_Buginese },
+  { "Buhid",               PT_SC,   ucp_Buhid },
+  { "C",                   PT_GC,   ucp_C },
+  { "Canadian_Aboriginal", PT_SC,   ucp_Canadian_Aboriginal },
+  { "Cc",                  PT_PC,   ucp_Cc },
+  { "Cf",                  PT_PC,   ucp_Cf },
+  { "Cherokee",            PT_SC,   ucp_Cherokee },
+  { "Cn",                  PT_PC,   ucp_Cn },
+  { "Co",                  PT_PC,   ucp_Co },
+  { "Common",              PT_SC,   ucp_Common },
+  { "Coptic",              PT_SC,   ucp_Coptic },
+  { "Cs",                  PT_PC,   ucp_Cs },
+  { "Cypriot",             PT_SC,   ucp_Cypriot },
+  { "Cyrillic",            PT_SC,   ucp_Cyrillic },
+  { "Deseret",             PT_SC,   ucp_Deseret },
+  { "Devanagari",          PT_SC,   ucp_Devanagari },
+  { "Ethiopic",            PT_SC,   ucp_Ethiopic },
+  { "Georgian",            PT_SC,   ucp_Georgian },
+  { "Glagolitic",          PT_SC,   ucp_Glagolitic },
+  { "Gothic",              PT_SC,   ucp_Gothic },
+  { "Greek",               PT_SC,   ucp_Greek },
+  { "Gujarati",            PT_SC,   ucp_Gujarati },
+  { "Gurmukhi",            PT_SC,   ucp_Gurmukhi },
+  { "Han",                 PT_SC,   ucp_Han },
+  { "Hangul",              PT_SC,   ucp_Hangul },
+  { "Hanunoo",             PT_SC,   ucp_Hanunoo },
+  { "Hebrew",              PT_SC,   ucp_Hebrew },
+  { "Hiragana",            PT_SC,   ucp_Hiragana },
+  { "Inherited",           PT_SC,   ucp_Inherited },
+  { "Kannada",             PT_SC,   ucp_Kannada },
+  { "Katakana",            PT_SC,   ucp_Katakana },
+  { "Kharoshthi",          PT_SC,   ucp_Kharoshthi },
+  { "Khmer",               PT_SC,   ucp_Khmer },
+  { "L",                   PT_GC,   ucp_L },
+  { "L&",                  PT_LAMP, 0 },
+  { "Lao",                 PT_SC,   ucp_Lao },
+  { "Latin",               PT_SC,   ucp_Latin },
+  { "Limbu",               PT_SC,   ucp_Limbu },
+  { "Linear_B",            PT_SC,   ucp_Linear_B },
+  { "Ll",                  PT_PC,   ucp_Ll },
+  { "Lm",                  PT_PC,   ucp_Lm },
+  { "Lo",                  PT_PC,   ucp_Lo },
+  { "Lt",                  PT_PC,   ucp_Lt },
+  { "Lu",                  PT_PC,   ucp_Lu },
+  { "M",                   PT_GC,   ucp_M },
+  { "Malayalam",           PT_SC,   ucp_Malayalam },
+  { "Mc",                  PT_PC,   ucp_Mc },
+  { "Me",                  PT_PC,   ucp_Me },
+  { "Mn",                  PT_PC,   ucp_Mn },
+  { "Mongolian",           PT_SC,   ucp_Mongolian },
+  { "Myanmar",             PT_SC,   ucp_Myanmar },
+  { "N",                   PT_GC,   ucp_N },
+  { "Nd",                  PT_PC,   ucp_Nd },
+  { "New_Tai_Lue",         PT_SC,   ucp_New_Tai_Lue },
+  { "Nl",                  PT_PC,   ucp_Nl },
+  { "No",                  PT_PC,   ucp_No },
+  { "Ogham",               PT_SC,   ucp_Ogham },
+  { "Old_Italic",          PT_SC,   ucp_Old_Italic },
+  { "Old_Persian",         PT_SC,   ucp_Old_Persian },
+  { "Oriya",               PT_SC,   ucp_Oriya },
+  { "Osmanya",             PT_SC,   ucp_Osmanya },
+  { "P",                   PT_GC,   ucp_P },
+  { "Pc",                  PT_PC,   ucp_Pc },
+  { "Pd",                  PT_PC,   ucp_Pd },
+  { "Pe",                  PT_PC,   ucp_Pe },
+  { "Pf",                  PT_PC,   ucp_Pf },
+  { "Pi",                  PT_PC,   ucp_Pi },
+  { "Po",                  PT_PC,   ucp_Po },
+  { "Ps",                  PT_PC,   ucp_Ps },
+  { "Runic",               PT_SC,   ucp_Runic },
+  { "S",                   PT_GC,   ucp_S },
+  { "Sc",                  PT_PC,   ucp_Sc },
+  { "Shavian",             PT_SC,   ucp_Shavian },
+  { "Sinhala",             PT_SC,   ucp_Sinhala },
+  { "Sk",                  PT_PC,   ucp_Sk },
+  { "Sm",                  PT_PC,   ucp_Sm },
+  { "So",                  PT_PC,   ucp_So },
+  { "Syloti_Nagri",        PT_SC,   ucp_Syloti_Nagri },
+  { "Syriac",              PT_SC,   ucp_Syriac },
+  { "Tagalog",             PT_SC,   ucp_Tagalog },
+  { "Tagbanwa",            PT_SC,   ucp_Tagbanwa },
+  { "Tai_Le",              PT_SC,   ucp_Tai_Le },
+  { "Tamil",               PT_SC,   ucp_Tamil },
+  { "Telugu",              PT_SC,   ucp_Telugu },
+  { "Thaana",              PT_SC,   ucp_Thaana },
+  { "Thai",                PT_SC,   ucp_Thai },
+  { "Tibetan",             PT_SC,   ucp_Tibetan },
+  { "Tifinagh",            PT_SC,   ucp_Tifinagh },
+  { "Ugaritic",            PT_SC,   ucp_Ugaritic },
+  { "Yi",                  PT_SC,   ucp_Yi },
+  { "Z",                   PT_GC,   ucp_Z },
+  { "Zl",                  PT_PC,   ucp_Zl },
+  { "Zp",                  PT_PC,   ucp_Zp },
+  { "Zs",                  PT_PC,   ucp_Zs }
 };
 
 const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table);
index a07bb23db0610bd46996e6b9a4a46e25da873539..7174cb6e12d1ec844b0494d2fd4ac4a8e0c1ce8f 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -94,7 +94,7 @@ Returns:           the new block if is is indeed a byte-flipped regex
                    NULL if it is not
 */
 
-EXPORT real_pcre *
+real_pcre *
 _pcre_try_flipped(const real_pcre *re, real_pcre *internal_re,
   const pcre_study_data *study, pcre_study_data *internal_study)
 {
diff --git a/ext/pcre/pcrelib/pcre_ucp_findchar.c b/ext/pcre/pcrelib/pcre_ucp_findchar.c
deleted file mode 100644 (file)
index 9f8de06..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*************************************************
-*      Perl-Compatible Regular Expressions       *
-*************************************************/
-
-/* PCRE is a library of functions to support regular expressions whose syntax
-and semantics are as close as possible to those of the Perl 5 language.
-
-                       Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
-
------------------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-    * Neither the name of the University of Cambridge nor the names of its
-      contributors may be used to endorse or promote products derived from
-      this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
-*/
-
-
-/* This module compiles code for supporting the use of Unicode character
-properties. We use the (embryonic at the time of writing) UCP library, by
-including some of its files, copies of which have been put in the PCRE
-distribution. There is a macro in pcre_internal.h that changes the name
-ucp_findchar into _pcre_ucp_findchar. */
-
-
-#include "pcre_internal.h"
-
-#include "ucp_findchar.c"
-
-
-/* End of pcre_ucp_findchar.c */
diff --git a/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c b/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c
new file mode 100644 (file)
index 0000000..ac964ca
--- /dev/null
@@ -0,0 +1,175 @@
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+                       Written by Philip Hazel
+           Copyright (c) 1997-2006 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains code for searching the table of Unicode character
+properties. */
+
+#include "pcre_internal.h"
+
+#include "ucp.h"               /* Category definitions */
+#include "ucpinternal.h"       /* Internal table details */
+#include "ucptable.c"          /* The table itself */
+
+
+/* Table to translate from particular type value to the general value. */
+
+static int ucp_gentype[] = {
+  ucp_C, ucp_C, ucp_C, ucp_C, ucp_C,  /* Cc, Cf, Cn, Co, Cs */
+  ucp_L, ucp_L, ucp_L, ucp_L, ucp_L,  /* Ll, Lu, Lm, Lo, Lt */
+  ucp_M, ucp_M, ucp_M,                /* Mc, Me, Mn */
+  ucp_N, ucp_N, ucp_N,                /* Nd, Nl, No */
+  ucp_P, ucp_P, ucp_P, ucp_P, ucp_P,  /* Pc, Pd, Pe, Pf, Pi */
+  ucp_P, ucp_P,                       /* Ps, Po */
+  ucp_S, ucp_S, ucp_S, ucp_S,         /* Sc, Sk, Sm, So */
+  ucp_Z, ucp_Z, ucp_Z                 /* Zl, Zp, Zs */
+};
+
+
+
+/*************************************************
+*         Search table and return type           *
+*************************************************/
+
+/* Three values are returned: the category is ucp_C, ucp_L, etc. The detailed
+character type is ucp_Lu, ucp_Nd, etc. The script is ucp_Latin, etc.
+
+Arguments:
+  c           the character value
+  type_ptr    the detailed character type is returned here
+  script_ptr  the script is returned here
+
+Returns:      the character type category
+*/
+
+int
+_pcre_ucp_findprop(const int c, int *type_ptr, int *script_ptr)
+{
+int bot = 0;
+int top = sizeof(ucp_table)/sizeof(cnode);
+int mid;
+
+/* The table is searched using a binary chop. You might think that using
+intermediate variables to hold some of the common expressions would speed
+things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it
+makes things a lot slower. */
+
+for (;;)
+  {
+  if (top <= bot)
+    {
+    *type_ptr = ucp_Cn;
+    *script_ptr = ucp_Common;
+    return ucp_C;
+    }
+  mid = (bot + top) >> 1;
+  if (c == (ucp_table[mid].f0 & f0_charmask)) break;
+  if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
+  else
+    {
+    if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
+        c <= (ucp_table[mid].f0 & f0_charmask) +
+             (ucp_table[mid].f1 & f1_rangemask)) break;
+    bot = mid + 1;
+    }
+  }
+
+/* Found an entry in the table. Set the script and detailed type values, and
+return the general type. */
+
+*script_ptr = (ucp_table[mid].f0 & f0_scriptmask) >> f0_scriptshift;
+*type_ptr = (ucp_table[mid].f1 & f1_typemask) >> f1_typeshift;
+
+return ucp_gentype[*type_ptr];
+}
+
+
+
+/*************************************************
+*       Search table and return other case       *
+*************************************************/
+
+/* If the given character is a letter, and there is another case for the
+letter, return the other case. Otherwise, return -1.
+
+Arguments:
+  c           the character value
+
+Returns:      the other case or -1 if none
+*/
+
+int
+_pcre_ucp_othercase(const int c)
+{
+int bot = 0;
+int top = sizeof(ucp_table)/sizeof(cnode);
+int mid, offset;
+
+/* The table is searched using a binary chop. You might think that using
+intermediate variables to hold some of the common expressions would speed
+things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it
+makes things a lot slower. */
+
+for (;;)
+  {
+  if (top <= bot) return -1;
+  mid = (bot + top) >> 1;
+  if (c == (ucp_table[mid].f0 & f0_charmask)) break;
+  if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
+  else
+    {
+    if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
+        c <= (ucp_table[mid].f0 & f0_charmask) +
+             (ucp_table[mid].f1 & f1_rangemask)) break;
+    bot = mid + 1;
+    }
+  }
+
+/* Found an entry in the table. Return -1 for a range entry. Otherwise return
+the other case if there is one, else -1. */
+
+if ((ucp_table[mid].f0 & f0_rangeflag) != 0) return -1;
+
+offset = ucp_table[mid].f1 & f1_casemask;
+if ((offset & f1_caseneg) != 0) offset |= f1_caseneg;
+return (offset == 0)? -1 : c + offset;
+}
+
+
+/* End of pcre_ucp_searchfuncs.c */
index 72f0f5e6e206b1e66300c2f54037ae3bd1c395a0..1c6094a0c9aa17127b248c81dbccc6ef163d3cb5 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -63,7 +63,7 @@ Returns:       < 0    if the string is a valid UTF-8 string
                >= 0   otherwise; the value is the offset of the bad byte
 */
 
-EXPORT int
+int
 _pcre_valid_utf8(const uschar *string, int length)
 {
 register const uschar *p;
index d296eea809c9ff09594410455c68b51518bdd43e..c2aad4da0622cf59ed9a7145256ac562716c0d54 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -52,10 +52,13 @@ string that identifies the PCRE version that is in use. */
 #define STRING(a)  # a
 #define XSTRING(s) STRING(s)
 
-EXPORT const char *
+PCRE_DATA_SCOPE const char *
 pcre_version(void)
 {
-return XSTRING(PCRE_MAJOR) "." XSTRING(PCRE_MINOR) " " XSTRING(PCRE_DATE);
+return XSTRING(PCRE_MAJOR)
+       "." XSTRING(PCRE_MINOR)
+           XSTRING(PCRE_PRERELEASE)
+       " " XSTRING(PCRE_DATE);
 }
 
 /* End of pcre_version.c */
index 40d2654da0881a38b81f6faee27fa9febb70761b..57c514b78a3c7601f80197229cf56d6a418d4756 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -60,7 +60,7 @@ Arguments:
 Returns:      TRUE if character matches, else FALSE
 */
 
-EXPORT BOOL
+BOOL
 _pcre_xclass(int c, const uschar *data)
 {
 int t;
@@ -100,17 +100,40 @@ while ((t = *data++) != XCL_END)
 #ifdef SUPPORT_UCP
   else  /* XCL_PROP & XCL_NOTPROP */
     {
-    int chartype, othercase;
-    int rqdtype = *data++;
-    int category = ucp_findchar(c, &chartype, &othercase);
-    if (rqdtype >= 128)
-      {
-      if ((rqdtype - 128 == category) == (t == XCL_PROP)) return !negated;
-      }
-    else
+    int chartype, script;
+    int category = _pcre_ucp_findprop(c, &chartype, &script);
+
+    switch(*data)
       {
-      if ((rqdtype == chartype) == (t == XCL_PROP)) return !negated;
+      case PT_ANY:
+      if (t == XCL_PROP) return !negated;
+      break;
+
+      case PT_LAMP:
+      if ((chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt) ==
+          (t == XCL_PROP)) return !negated;
+      break;
+
+      case PT_GC:
+      if ((data[1] == category) == (t == XCL_PROP)) return !negated;
+      break;
+
+      case PT_PC:
+      if ((data[1] == chartype) == (t == XCL_PROP)) return !negated;
+      break;
+
+      case PT_SC:
+      if ((data[1] == script) == (t == XCL_PROP)) return !negated;
+      break;
+
+      /* This should never occur, but compilers may mutter if there is no
+      default. */
+
+      default:
+      return FALSE;
       }
+
+    data += 2;
     }
 #endif  /* SUPPORT_UCP */
   }
index 0ffd221d2335e1b92eb40ba57dd80e595fcc3b17..70d59a2723f6f8a424bac89ba8d38d72064b36a2 100644 (file)
@@ -397,12 +397,16 @@ int RE::TryMatch(const StringPiece& text,
 
   pcre_extra extra = { 0 };
   if (options_.match_limit() > 0) {
-    extra.flags = PCRE_EXTRA_MATCH_LIMIT;
+    extra.flags |= PCRE_EXTRA_MATCH_LIMIT;
     extra.match_limit = options_.match_limit();
   }
+  if (options_.match_limit_recursion() > 0) {
+    extra.flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
+    extra.match_limit_recursion = options_.match_limit_recursion();
+  }
   int rc = pcre_exec(re,              // The regular expression object
                      &extra,
-                     text.data(),
+                     (text.data() == NULL) ? "" : text.data(),
                      text.size(),
                      startpos,
                      (anchor == UNANCHORED) ? 0 : PCRE_ANCHORED,
@@ -449,11 +453,16 @@ bool RE::DoMatchImpl(const StringPiece& text,
 
   *consumed = vec[1];
 
-  if (args == NULL) {
+  if (n == 0 || args == NULL) {
     // We are not interested in results
     return true;
   }
 
+  if (NumberOfCapturingGroups() < n) {
+    // RE has fewer capturing groups than number of arg pointers passed in
+    return false;
+  }
+
   // If we got here, we must have matched the whole pattern.
   // We do not need (can not do) any more checks on the value of 'matches' here
   // -- see the comment for TryMatch.
@@ -517,7 +526,7 @@ bool RE::Rewrite(string *out, const StringPiece &rewrite,
 
 // Return the number of capturing subpatterns, or -1 if the
 // regexp wasn't valid on construction.
-int RE::NumberOfCapturingGroups() {
+int RE::NumberOfCapturingGroups() const {
   if (re_partial_ == NULL) return -1;
 
   int result;
@@ -613,6 +622,7 @@ bool Arg::parse_ulong_radix(const char* str,
   if (n == 0) return false;
   char buf[kMaxNumberLength+1];
   str = TerminateNumber(buf, str, n);
+  if (str[0] == '-') return false;    // strtoul() on a negative number?!
   char* end;
   errno = 0;
   unsigned long r = strtoul(str, &end, radix);
@@ -702,6 +712,7 @@ bool Arg::parse_ulonglong_radix(const char* str,
   if (n == 0) return false;
   char buf[kMaxNumberLength+1];
   str = TerminateNumber(buf, str, n);
+  if (str[0] == '-') return false;    // strtoull() on a negative number?!
   char* end;
   errno = 0;
 #if defined HAVE_STRTOQ
index ef9d9b2b58c0ab6aeae5ae7da8479ae67aa83c1f..5916d86432247f5587c365a71c5fdaafff9f3d02 100644 (file)
@@ -30,8 +30,8 @@
 // Author: Sanjay Ghemawat
 // Support for PCRE_XXX modifiers added by Giuseppe Maxia, July 2005
 
-#ifndef _PCRE_REGEXP_H
-#define _PCRE_REGEXP_H
+#ifndef _PCRECPP_H
+#define _PCRECPP_H
 
 // C++ interface to the pcre regular-expression library.  RE supports
 // Perl-style regular expressions (with extensions like \d, \w, \s,
 //    RE_Options & set_caseless(bool),
 // which sets or unsets the modifier.
 //
-// Moreover, PCRE_CONFIG_MATCH_LIMIT can be accessed through the
+// Moreover, PCRE_EXTRA_MATCH_LIMIT can be accessed through the
 // set_match_limit() and match_limit() member functions.
 // Setting match_limit to a non-zero value will limit the executation of
 // pcre to keep it from doing bad things like blowing the stack or taking
 // an eternity to return a result.  A value of 5000 is good enough to stop
 // stack blowup in a 2MB thread stack.  Setting match_limit to zero will
-// disable match limiting.
+// disable match limiting.  Alternately, you can set match_limit_recursion()
+// which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to limit how much pcre
+// recurses.  match_limit() caps the number of matches pcre does;
+// match_limit_recrusion() caps the depth of recursion.
 //
 // Normally, to pass one or more modifiers to a RE class, you declare
 // a RE_Options object, set the appropriate options, and pass this
 
 
 #include <string>
+#include <pcrecpparg.h>   // defines the Arg class
 // These aren't technically needed here, but we include them
 // anyway so folks who include pcrecpp.h don't have to include
 // all these other header files as well.
@@ -338,18 +342,18 @@ namespace pcrecpp {
         (all_options_ & o) == o
 
 // We convert user-passed pointers into special Arg objects
-class Arg;
 extern Arg no_arg;
 
 /***** Compiling regular expressions: the RE class *****/
 
 // RE_Options allow you to set options to be passed along to pcre,
 // along with other options we put on top of pcre.
-// Only 9 modifiers, plus match_limit are supported now.
+// Only 9 modifiers, plus match_limit and match_limit_recursion,
+// are supported now.
 class RE_Options {
  public:
   // constructor
-  RE_Options() : match_limit_(0), all_options_(0) {}
+  RE_Options() : match_limit_(0), match_limit_recursion_(0), all_options_(0) {}
 
   // alternative constructor.
   // To facilitate transfer of legacy code from C programs
@@ -359,7 +363,8 @@ class RE_Options {
   // But new code is better off doing
   //    RE(pattern,
   //      RE_Options().set_caseless(true).set_multiline(true)).PartialMatch(str);
-  RE_Options(int option_flags) : match_limit_(0), all_options_ (option_flags) {}
+  RE_Options(int option_flags) : match_limit_(0), match_limit_recursion_(0),
+                                 all_options_(option_flags) {}
   // we're fine with the default destructor, copy constructor, etc.
 
   // accessors and mutators
@@ -369,6 +374,12 @@ class RE_Options {
     return *this;
   }
 
+  int match_limit_recursion() const { return match_limit_recursion_; };
+  RE_Options &set_match_limit_recursion(int limit) {
+    match_limit_recursion_ = limit;
+    return *this;
+  }
+
   bool caseless() const {
     return PCRE_IS_SET(PCRE_CASELESS);
   }
@@ -444,6 +455,7 @@ class RE_Options {
 
  private:
   int match_limit_;
+  int match_limit_recursion_;
   int all_options_;
 };
 
@@ -595,7 +607,7 @@ class RE {
 
   // Return the number of capturing subpatterns, or -1 if the
   // regexp wasn't valid on construction.
-  int NumberOfCapturingGroups();
+  int NumberOfCapturingGroups() const;
 
  private:
 
@@ -643,7 +655,6 @@ class RE {
   pcre*         re_full_;       // For full matches
   pcre*         re_partial_;    // For partial matches
   const string* error_;         // Error indicator (or points to empty string)
-  int           match_limit_;   // limit on execution resources
 
   // Don't allow the default copy or assignment constructors --
   // they're expensive and too easy to do by accident.
@@ -651,136 +662,6 @@ class RE {
   void operator=(const RE&);
 };
 
-
-/***** Implementation details *****/
-
-// Hex/Octal/Binary?
-
-// Special class for parsing into objects that define a ParseFrom() method
-template <class T>
-class _RE_MatchObject {
- public:
-  static inline bool Parse(const char* str, int n, void* dest) {
-    T* object = reinterpret_cast<T*>(dest);
-    return object->ParseFrom(str, n);
-  }
-};
-
-class Arg {
- public:
-  // Empty constructor so we can declare arrays of Arg
-  Arg();
-
-  // Constructor specially designed for NULL arguments
-  Arg(void*);
-
-  typedef bool (*Parser)(const char* str, int n, void* dest);
-
-// Type-specific parsers
-#define PCRE_MAKE_PARSER(type,name)                             \
-  Arg(type* p) : arg_(p), parser_(name) { }                     \
-  Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
-
-
-  PCRE_MAKE_PARSER(char,               parse_char);
-  PCRE_MAKE_PARSER(unsigned char,      parse_uchar);
-  PCRE_MAKE_PARSER(short,              parse_short);
-  PCRE_MAKE_PARSER(unsigned short,     parse_ushort);
-  PCRE_MAKE_PARSER(int,                parse_int);
-  PCRE_MAKE_PARSER(unsigned int,       parse_uint);
-  PCRE_MAKE_PARSER(long,               parse_long);
-  PCRE_MAKE_PARSER(unsigned long,      parse_ulong);
-#if 1
-  PCRE_MAKE_PARSER(long long,          parse_longlong);
-#endif
-#if 1
-  PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong);
-#endif
-  PCRE_MAKE_PARSER(float,              parse_float);
-  PCRE_MAKE_PARSER(double,             parse_double);
-  PCRE_MAKE_PARSER(string,             parse_string);
-  PCRE_MAKE_PARSER(StringPiece,        parse_stringpiece);
-
-#undef PCRE_MAKE_PARSER
-
-  // Generic constructor
-  template <class T> Arg(T*, Parser parser);
-  // Generic constructor template
-  template <class T> Arg(T* p)
-    : arg_(p), parser_(_RE_MatchObject<T>::Parse) {
-  }
-
-  // Parse the data
-  bool Parse(const char* str, int n) const;
-
- private:
-  void*         arg_;
-  Parser        parser_;
-
-  static bool parse_null          (const char* str, int n, void* dest);
-  static bool parse_char          (const char* str, int n, void* dest);
-  static bool parse_uchar         (const char* str, int n, void* dest);
-  static bool parse_float         (const char* str, int n, void* dest);
-  static bool parse_double        (const char* str, int n, void* dest);
-  static bool parse_string        (const char* str, int n, void* dest);
-  static bool parse_stringpiece   (const char* str, int n, void* dest);
-
-#define PCRE_DECLARE_INTEGER_PARSER(name)                                   \
- private:                                                                   \
-  static bool parse_ ## name(const char* str, int n, void* dest);           \
-  static bool parse_ ## name ## _radix(                                     \
-    const char* str, int n, void* dest, int radix);                         \
- public:                                                                    \
-  static bool parse_ ## name ## _hex(const char* str, int n, void* dest);   \
-  static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
-  static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
-
-  PCRE_DECLARE_INTEGER_PARSER(short);
-  PCRE_DECLARE_INTEGER_PARSER(ushort);
-  PCRE_DECLARE_INTEGER_PARSER(int);
-  PCRE_DECLARE_INTEGER_PARSER(uint);
-  PCRE_DECLARE_INTEGER_PARSER(long);
-  PCRE_DECLARE_INTEGER_PARSER(ulong);
-  PCRE_DECLARE_INTEGER_PARSER(longlong);
-  PCRE_DECLARE_INTEGER_PARSER(ulonglong);
-
-#undef PCRE_DECLARE_INTEGER_PARSER
-};
-
-inline Arg::Arg() : arg_(NULL), parser_(parse_null) { }
-inline Arg::Arg(void* p) : arg_(p), parser_(parse_null) { }
-
-inline bool Arg::Parse(const char* str, int n) const {
-  return (*parser_)(str, n, arg_);
-}
-
-// This part of the parser, appropriate only for ints, deals with bases
-#define MAKE_INTEGER_PARSER(type, name) \
-  inline Arg Hex(type* ptr) { \
-    return Arg(ptr, Arg::parse_ ## name ## _hex); } \
-  inline Arg Octal(type* ptr) { \
-    return Arg(ptr, Arg::parse_ ## name ## _octal); } \
-  inline Arg CRadix(type* ptr) { \
-    return Arg(ptr, Arg::parse_ ## name ## _cradix); }
-
-MAKE_INTEGER_PARSER(short,              short);
-MAKE_INTEGER_PARSER(unsigned short,     ushort);
-MAKE_INTEGER_PARSER(int,                int);
-MAKE_INTEGER_PARSER(unsigned int,       uint);
-MAKE_INTEGER_PARSER(long,               long);
-MAKE_INTEGER_PARSER(unsigned long,      ulong);
-#if 1
-MAKE_INTEGER_PARSER(long long,          longlong);
-#endif
-#if 1
-MAKE_INTEGER_PARSER(unsigned long long, ulonglong);
-#endif
-
-#undef PCRE_IS_SET
-#undef PCRE_SET_OR_CLEAR
-#undef MAKE_INTEGER_PARSER
-
 }   // namespace pcrecpp
 
-
-#endif /* _PCRE_REGEXP_H */
+#endif /* _PCRECPP_H */
index 6a03744a7dbea6436a1331833661f1f6d09004a7..ba808bc4f6eb413e6033a89f0aa04eb762150ad8 100644 (file)
@@ -348,21 +348,46 @@ static void TestMatchNumberPeculiarity() {
   CHECK_EQ(a, "");
 }
 
-static void TestRecursion(int size, const char *pattern, int match_limit) {
+static void TestRecursion() {
   printf("Testing recursion\n");
 
-  // Fill up a string repeating the pattern given
-  string domain;
-  domain.resize(size);
-  int patlen = strlen(pattern);
-  for (int i = 0; i < size; ++i) {
-    domain[i] = pattern[i % patlen];
-  }
-  // Just make sure it doesn't crash due to too much recursion.
-  RE_Options options;
-  options.set_match_limit(match_limit);
-  RE re("([a-zA-Z0-9]|-)+(\\.([a-zA-Z0-9]|-)+)*(\\.)?", options);
-  re.FullMatch(domain);
+  // Get one string that passes (sometimes), one that never does.
+  string text_good("abcdefghijk");
+  string text_bad("acdefghijkl");
+
+  // According to pcretest, matching text_good against (\w+)*b
+  // requires match_limit of at least 8192, and match_recursion_limit
+  // of at least 37.
+
+  RE_Options options_ml;
+  options_ml.set_match_limit(8192);
+  RE re("(\\w+)*b", options_ml);
+  CHECK(re.PartialMatch(text_good) == true);
+  CHECK(re.PartialMatch(text_bad) == false);
+  CHECK(re.FullMatch(text_good) == false);
+  CHECK(re.FullMatch(text_bad) == false);
+
+  options_ml.set_match_limit(1024);
+  RE re2("(\\w+)*b", options_ml);
+  CHECK(re2.PartialMatch(text_good) == false);   // because of match_limit
+  CHECK(re2.PartialMatch(text_bad) == false);
+  CHECK(re2.FullMatch(text_good) == false);
+  CHECK(re2.FullMatch(text_bad) == false);
+
+  RE_Options options_mlr;
+  options_mlr.set_match_limit_recursion(50);
+  RE re3("(\\w+)*b", options_mlr);
+  CHECK(re3.PartialMatch(text_good) == true);
+  CHECK(re3.PartialMatch(text_bad) == false);
+  CHECK(re3.FullMatch(text_good) == false);
+  CHECK(re3.FullMatch(text_bad) == false);
+
+  options_mlr.set_match_limit_recursion(10);
+  RE re4("(\\w+)*b", options_mlr);
+  CHECK(re4.PartialMatch(text_good) == false);
+  CHECK(re4.PartialMatch(text_bad) == false);
+  CHECK(re4.FullMatch(text_good) == false);
+  CHECK(re4.FullMatch(text_bad) == false);
 }
 
 //
@@ -1021,14 +1046,8 @@ int main(int argc, char** argv) {
     CHECK(!re.error().empty());
   }
 
-  // Test that recursion is stopped: there will be some errors reported
-  int matchlimit = 5000;
-  int bytes = 15 * 1024;  // enough to crash if there was no match limit
-  TestRecursion(bytes, ".", matchlimit);
-  TestRecursion(bytes, "a", matchlimit);
-  TestRecursion(bytes, "a.", matchlimit);
-  TestRecursion(bytes, "ab.", matchlimit);
-  TestRecursion(bytes, "abc.", matchlimit);
+  // Test that recursion is stopped
+  TestRecursion();
 
   // Test Options
   if (getenv("VERBOSE_TEST") != NULL)
diff --git a/ext/pcre/pcrelib/pcrecpparg.h b/ext/pcre/pcrelib/pcrecpparg.h
new file mode 100644 (file)
index 0000000..323dde5
--- /dev/null
@@ -0,0 +1,171 @@
+// Copyright (c) 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Sanjay Ghemawat
+
+#ifndef _PCRECPPARG_H
+#define _PCRECPPARG_H
+
+#include <stdlib.h>    // for NULL
+#include <string>
+
+namespace pcrecpp {
+
+class StringPiece;
+
+// Hex/Octal/Binary?
+
+// Special class for parsing into objects that define a ParseFrom() method
+template <class T>
+class _RE_MatchObject {
+ public:
+  static inline bool Parse(const char* str, int n, void* dest) {
+    T* object = reinterpret_cast<T*>(dest);
+    return object->ParseFrom(str, n);
+  }
+};
+
+class Arg {
+ public:
+  // Empty constructor so we can declare arrays of Arg
+  Arg();
+
+  // Constructor specially designed for NULL arguments
+  Arg(void*);
+
+  typedef bool (*Parser)(const char* str, int n, void* dest);
+
+// Type-specific parsers
+#define PCRE_MAKE_PARSER(type,name)                             \
+  Arg(type* p) : arg_(p), parser_(name) { }                     \
+  Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
+
+
+  PCRE_MAKE_PARSER(char,               parse_char);
+  PCRE_MAKE_PARSER(unsigned char,      parse_uchar);
+  PCRE_MAKE_PARSER(short,              parse_short);
+  PCRE_MAKE_PARSER(unsigned short,     parse_ushort);
+  PCRE_MAKE_PARSER(int,                parse_int);
+  PCRE_MAKE_PARSER(unsigned int,       parse_uint);
+  PCRE_MAKE_PARSER(long,               parse_long);
+  PCRE_MAKE_PARSER(unsigned long,      parse_ulong);
+#if 1
+  PCRE_MAKE_PARSER(long long,          parse_longlong);
+#endif
+#if 1
+  PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong);
+#endif
+  PCRE_MAKE_PARSER(float,              parse_float);
+  PCRE_MAKE_PARSER(double,             parse_double);
+  PCRE_MAKE_PARSER(std::string,        parse_string);
+  PCRE_MAKE_PARSER(StringPiece,        parse_stringpiece);
+
+#undef PCRE_MAKE_PARSER
+
+  // Generic constructor
+  template <class T> Arg(T*, Parser parser);
+  // Generic constructor template
+  template <class T> Arg(T* p)
+    : arg_(p), parser_(_RE_MatchObject<T>::Parse) {
+  }
+
+  // Parse the data
+  bool Parse(const char* str, int n) const;
+
+ private:
+  void*         arg_;
+  Parser        parser_;
+
+  static bool parse_null          (const char* str, int n, void* dest);
+  static bool parse_char          (const char* str, int n, void* dest);
+  static bool parse_uchar         (const char* str, int n, void* dest);
+  static bool parse_float         (const char* str, int n, void* dest);
+  static bool parse_double        (const char* str, int n, void* dest);
+  static bool parse_string        (const char* str, int n, void* dest);
+  static bool parse_stringpiece   (const char* str, int n, void* dest);
+
+#define PCRE_DECLARE_INTEGER_PARSER(name)                                   \
+ private:                                                                   \
+  static bool parse_ ## name(const char* str, int n, void* dest);           \
+  static bool parse_ ## name ## _radix(                                     \
+    const char* str, int n, void* dest, int radix);                         \
+ public:                                                                    \
+  static bool parse_ ## name ## _hex(const char* str, int n, void* dest);   \
+  static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
+  static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
+
+  PCRE_DECLARE_INTEGER_PARSER(short);
+  PCRE_DECLARE_INTEGER_PARSER(ushort);
+  PCRE_DECLARE_INTEGER_PARSER(int);
+  PCRE_DECLARE_INTEGER_PARSER(uint);
+  PCRE_DECLARE_INTEGER_PARSER(long);
+  PCRE_DECLARE_INTEGER_PARSER(ulong);
+  PCRE_DECLARE_INTEGER_PARSER(longlong);
+  PCRE_DECLARE_INTEGER_PARSER(ulonglong);
+
+#undef PCRE_DECLARE_INTEGER_PARSER
+};
+
+inline Arg::Arg() : arg_(NULL), parser_(parse_null) { }
+inline Arg::Arg(void* p) : arg_(p), parser_(parse_null) { }
+
+inline bool Arg::Parse(const char* str, int n) const {
+  return (*parser_)(str, n, arg_);
+}
+
+// This part of the parser, appropriate only for ints, deals with bases
+#define MAKE_INTEGER_PARSER(type, name) \
+  inline Arg Hex(type* ptr) { \
+    return Arg(ptr, Arg::parse_ ## name ## _hex); } \
+  inline Arg Octal(type* ptr) { \
+    return Arg(ptr, Arg::parse_ ## name ## _octal); } \
+  inline Arg CRadix(type* ptr) { \
+    return Arg(ptr, Arg::parse_ ## name ## _cradix); }
+
+MAKE_INTEGER_PARSER(short,              short);
+MAKE_INTEGER_PARSER(unsigned short,     ushort);
+MAKE_INTEGER_PARSER(int,                int);
+MAKE_INTEGER_PARSER(unsigned int,       uint);
+MAKE_INTEGER_PARSER(long,               long);
+MAKE_INTEGER_PARSER(unsigned long,      ulong);
+#if 1
+MAKE_INTEGER_PARSER(long long,          longlong);
+#endif
+#if 1
+MAKE_INTEGER_PARSER(unsigned long long, ulonglong);
+#endif
+
+#undef PCRE_IS_SET
+#undef PCRE_SET_OR_CLEAR
+#undef MAKE_INTEGER_PARSER
+
+}   // namespace pcrecpp
+
+
+#endif /* _PCRECPPARG_H */
index f6e5180557e5c2f84b3a7724e0615ff7b6bceb2c..1533c8366ae3a67dcd8f32328905f1fbadfff4cc 100644 (file)
@@ -6,7 +6,7 @@
 its pattern matching. On a Unix or Win32 system it can recurse into
 directories.
 
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -38,6 +38,7 @@ POSSIBILITY OF SUCH DAMAGE.
 */
 
 #include <ctype.h>
+#include <locale.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -55,7 +56,7 @@ POSSIBILITY OF SUCH DAMAGE.
 
 typedef int BOOL;
 
-#define VERSION "4.0 07-Jun-2005"
+#define VERSION "4.2 09-Jan-2006"
 #define MAX_PATTERN_COUNT 100
 
 #if BUFSIZ > 8192
@@ -65,13 +66,50 @@ typedef int BOOL;
 #endif
 
 
+/* Values for the "filenames" variable, which specifies options for file name
+output. The order is important; it is assumed that a file name is wanted for
+all values greater than FN_DEFAULT. */
+
+enum { FN_NONE, FN_DEFAULT, FN_ONLY, FN_NOMATCH_ONLY, FN_FORCE };
+
+/* Actions for the -d and -D options */
+
+enum { dee_READ, dee_SKIP, dee_RECURSE };
+enum { DEE_READ, DEE_SKIP };
+
+/* Actions for special processing options (flag bits) */
+
+#define PO_WORD_MATCH     0x0001
+#define PO_LINE_MATCH     0x0002
+#define PO_FIXED_STRINGS  0x0004
+
+
 
 /*************************************************
 *               Global variables                 *
 *************************************************/
 
+/* Jeffrey Friedl has some debugging requirements that are not part of the
+regular code. */
+
+#ifdef JFRIEDL_DEBUG
+static int S_arg = -1;
+static unsigned int jfriedl_XR = 0; /* repeat regex attempt this many times */
+static unsigned int jfriedl_XT = 0; /* replicate text this many times */
+static const char *jfriedl_prefix = "";
+static const char *jfriedl_postfix = "";
+#endif
+
+static char *colour_string = (char *)"1;31";
+static char *colour_option = NULL;
+static char *dee_option = NULL;
+static char *DEE_option = NULL;
 static char *pattern_filename = NULL;
 static char *stdin_name = (char *)"(standard input)";
+static char *locale = NULL;
+
+static const unsigned char *pcretables = NULL;
+
 static int  pattern_count = 0;
 static pcre **pattern_list;
 static pcre_extra **hints_list;
@@ -85,24 +123,26 @@ static pcre *exclude_compiled = NULL;
 static int after_context = 0;
 static int before_context = 0;
 static int both_context = 0;
+static int dee_action = dee_READ;
+static int DEE_action = DEE_READ;
+static int error_count = 0;
+static int filenames = FN_DEFAULT;
+static int process_options = 0;
 
 static BOOL count_only = FALSE;
-static BOOL filenames = TRUE;
-static BOOL filenames_only = FALSE;
-static BOOL filenames_nomatch_only = FALSE;
+static BOOL do_colour = FALSE;
 static BOOL hyphenpending = FALSE;
 static BOOL invert = FALSE;
 static BOOL multiline = FALSE;
 static BOOL number = FALSE;
+static BOOL only_matching = FALSE;
 static BOOL quiet = FALSE;
-static BOOL recurse = FALSE;
 static BOOL silent = FALSE;
-static BOOL whole_lines = FALSE;
-static BOOL word_match = FALSE;
 
 /* Structure for options and list of them */
 
-enum { OP_NODATA, OP_STRING, OP_NUMBER };
+enum { OP_NODATA, OP_STRING, OP_OP_STRING, OP_NUMBER, OP_OP_NUMBER,
+       OP_PATLIST };
 
 typedef struct option_item {
   int type;
@@ -112,42 +152,76 @@ typedef struct option_item {
   const char *help_text;
 } option_item;
 
+/* Options without a single-letter equivalent get a negative value. This can be
+used to identify them. */
+
+#define N_COLOUR    (-1)
+#define N_EXCLUDE   (-2)
+#define N_HELP      (-3)
+#define N_INCLUDE   (-4)
+#define N_LABEL     (-5)
+#define N_LOCALE    (-6)
+#define N_NULL      (-7)
+
 static option_item optionlist[] = {
-  { OP_NODATA, -1,  NULL,              "",              "  terminate options" },
-  { OP_NODATA, -1,  NULL,              "help",          "display this help and exit" },
-  { OP_NUMBER, 'A', &after_context,    "after-context=number", "set number of following context lines" },
-  { OP_NUMBER, 'B', &before_context,   "before-context=number", "set number of prior context lines" },
-  { OP_NUMBER, 'C', &both_context,     "context=number", "set number of context lines, before & after" },
-  { OP_NODATA, 'c', NULL,              "count",         "print only a count of matching lines per FILE" },
-  { OP_STRING, 'f', &pattern_filename, "file=path",     "read patterns from file" },
-  { OP_NODATA, 'h', NULL,              "no-filename",   "suppress the prefixing filename on output" },
-  { OP_NODATA, 'i', NULL,              "ignore-case",   "ignore case distinctions" },
-  { OP_NODATA, 'l', NULL,              "files-with-matches", "print only FILE names containing matches" },
-  { OP_NODATA, 'L', NULL,              "files-without-match","print only FILE names not containing matches" },
-  { OP_STRING, -1,  &stdin_name,       "label=name",    "set name for standard input" },
-  { OP_NODATA, 'M', NULL,              "multiline",     "run in multiline mode" },
-  { OP_NODATA, 'n', NULL,              "line-number",   "print line number with output lines" },
-  { OP_NODATA, 'q', NULL,              "quiet",         "suppress output, just set return code" },
-  { OP_NODATA, 'r', NULL,              "recursive",     "recursively scan sub-directories" },
-  { OP_STRING, -1,  &exclude_pattern,  "exclude=pattern","exclude matching files when recursing" },
-  { OP_STRING, -1,  &include_pattern,  "include=pattern","include matching files when recursing" },
-  { OP_NODATA, 's', NULL,              "no-messages",   "suppress error messages" },
-  { OP_NODATA, 'u', NULL,              "utf-8",         "use UTF-8 mode" },
-  { OP_NODATA, 'V', NULL,              "version",       "print version information and exit" },
-  { OP_NODATA, 'v', NULL,              "invert-match",  "select non-matching lines" },
-  { OP_NODATA, 'w', NULL,              "word-regex(p)", "force PATTERN to match only as a word"  },
-  { OP_NODATA, 'x', NULL,              "line-regex(p)", "force PATTERN to match only whole lines" },
-  { OP_NODATA, 0,   NULL,               NULL,            NULL }
+  { OP_NODATA,    N_NULL,   NULL,              "",              "  terminate options" },
+  { OP_NODATA,    N_HELP,   NULL,              "help",          "display this help and exit" },
+  { OP_NUMBER,    'A',      &after_context,    "after-context=number", "set number of following context lines" },
+  { OP_NUMBER,    'B',      &before_context,   "before-context=number", "set number of prior context lines" },
+  { OP_OP_STRING, N_COLOUR, &colour_option,    "color=option",  "matched text color option" },
+  { OP_NUMBER,    'C',      &both_context,     "context=number", "set number of context lines, before & after" },
+  { OP_NODATA,    'c',      NULL,              "count",         "print only a count of matching lines per FILE" },
+  { OP_OP_STRING, N_COLOUR, &colour_option,    "colour=option", "matched text colour option" },
+  { OP_STRING,    'D',      &DEE_option,       "devices=action","how to handle devices, FIFOs, and sockets" },
+  { OP_STRING,    'd',      &dee_option,       "directories=action", "how to handle directories" },
+  { OP_PATLIST,   'e',      NULL,              "regex(p)",      "specify pattern (may be used more than once)" },
+  { OP_NODATA,    'F',      NULL,              "fixed_strings", "patterns are sets of newline-separated strings" },
+  { OP_STRING,    'f',      &pattern_filename, "file=path",     "read patterns from file" },
+  { OP_NODATA,    'H',      NULL,              "with-filename", "force the prefixing filename on output" },
+  { OP_NODATA,    'h',      NULL,              "no-filename",   "suppress the prefixing filename on output" },
+  { OP_NODATA,    'i',      NULL,              "ignore-case",   "ignore case distinctions" },
+  { OP_NODATA,    'l',      NULL,              "files-with-matches", "print only FILE names containing matches" },
+  { OP_NODATA,    'L',      NULL,              "files-without-match","print only FILE names not containing matches" },
+  { OP_STRING,    N_LABEL,  &stdin_name,       "label=name",    "set name for standard input" },
+  { OP_STRING,    N_LOCALE, &locale,           "locale=locale", "use the named locale" },
+  { OP_NODATA,    'M',      NULL,              "multiline",     "run in multiline mode" },
+  { OP_NODATA,    'n',      NULL,              "line-number",   "print line number with output lines" },
+  { OP_NODATA,    'o',      NULL,              "only-matching", "show only the part of the line that matched" },
+  { OP_NODATA,    'q',      NULL,              "quiet",         "suppress output, just set return code" },
+  { OP_NODATA,    'r',      NULL,              "recursive",     "recursively scan sub-directories" },
+  { OP_STRING,    N_EXCLUDE,&exclude_pattern,  "exclude=pattern","exclude matching files when recursing" },
+  { OP_STRING,    N_INCLUDE,&include_pattern,  "include=pattern","include matching files when recursing" },
+#ifdef JFRIEDL_DEBUG
+  { OP_OP_NUMBER, 'S',      &S_arg,            "jeffS",         "replace matched (sub)string with X" },
+#endif
+  { OP_NODATA,    's',      NULL,              "no-messages",   "suppress error messages" },
+  { OP_NODATA,    'u',      NULL,              "utf-8",         "use UTF-8 mode" },
+  { OP_NODATA,    'V',      NULL,              "version",       "print version information and exit" },
+  { OP_NODATA,    'v',      NULL,              "invert-match",  "select non-matching lines" },
+  { OP_NODATA,    'w',      NULL,              "word-regex(p)", "force patterns to match only as words"  },
+  { OP_NODATA,    'x',      NULL,              "line-regex(p)", "force patterns to match only whole lines" },
+  { OP_NODATA,    0,        NULL,               NULL,            NULL }
 };
 
+/* Tables for prefixing and suffixing patterns, according to the -w, -x, and -F
+options. These set the 1, 2, and 4 bits in process_options, respectively. Note
+that the combination of -w and -x has the same effect as -x on its own, so we
+can treat them as the same. */
+
+static const char *prefix[] = {
+  "", "\\b", "^(?:", "^(?:", "\\Q", "\\b\\Q", "^(?:\\Q", "^(?:\\Q" };
+
+static const char *suffix[] = {
+  "", "\\b", ")$",   ")$",   "\\E", "\\E\\b", "\\E)$",   "\\E)$" };
+
+
 
 /*************************************************
-*       Functions for directory scanning         *
+*            OS-specific functions               *
 *************************************************/
 
 /* These functions are defined so that they can be made system specific,
-although at present the only ones are for Unix, Win32, and for "no directory
-recursion support". */
+although at present the only ones are for Unix, Win32, and for "no support". */
 
 
 /************* Directory scanning in Unix ***********/
@@ -194,6 +268,27 @@ closedir(dir);
 }
 
 
+/************* Test for regular file in Unix **********/
+
+static int
+isregfile(char *filename)
+{
+struct stat statbuf;
+if (stat(filename, &statbuf) < 0)
+  return 1;        /* In the expectation that opening as a file will fail */
+return (statbuf.st_mode & S_IFMT) == S_IFREG;
+}
+
+
+/************* Test stdout for being a terminal in Unix **********/
+
+static BOOL
+is_stdout_tty(void)
+{
+return isatty(fileno(stdout));
+}
+
+
 /************* Directory scanning in Win32 ***********/
 
 /* I (Philip Hazel) have no means of testing this code. It was contributed by
@@ -292,6 +387,28 @@ free(dir);
 }
 
 
+/************* Test for regular file in Win32 **********/
+
+/* I don't know how to do this, or if it can be done; assume all paths are
+regular if they are not directories. */
+
+int isregfile(char *filename)
+{
+return !isdirectory(filename)
+}
+
+
+/************* Test stdout for being a terminal in Win32 **********/
+
+/* I don't know how to do this; assume never */
+
+static BOOL
+is_stdout_tty(void)
+{
+FALSE;
+}
+
+
 /************* Directory scanning when we can't do it ***********/
 
 /* The type is void, and apart from isdirectory(), the functions do nothing. */
@@ -300,11 +417,28 @@ free(dir);
 
 typedef void directory_type;
 
-int isdirectory(char *filename) { return FALSE; }
+int isdirectory(char *filename) { return 0; }
 directory_type * opendirectory(char *filename) {}
 char *readdirectory(directory_type *dir) {}
 void closedirectory(directory_type *dir) {}
 
+
+/************* Test for regular when we can't do it **********/
+
+/* Assume all files are regular. */
+
+int isregfile(char *filename) { return 1; }
+
+
+/************* Test stdout for being a terminal when we can't do it **********/
+
+static BOOL
+is_stdout_tty(void)
+{
+return FALSE;
+}
+
+
 #endif
 
 
@@ -336,7 +470,8 @@ return sys_errlist[n];
 *************************************************/
 
 /* This is called if we are about to lose said lines because of buffer filling,
-and at the end of the file.
+and at the end of the file. The data in the line is written using fwrite() so
+that a binary zero does not terminate it.
 
 Arguments:
   lastmatchnumber   the number of the last matching line, plus one
@@ -359,7 +494,7 @@ if (after_context > 0 && lastmatchnumber > 0)
     if (printname != NULL) fprintf(stdout, "%s-", printname);
     if (number) fprintf(stdout, "%d-", lastmatchnumber++);
     while (*pp != '\n') pp++;
-    fprintf(stdout, "%.*s", pp - lastmatchrestart + 1, lastmatchrestart);
+    fwrite(lastmatchrestart, 1, pp - lastmatchrestart + 1, stdout);
     lastmatchrestart = pp + 1;
     }
   hyphenpending = TRUE;
@@ -418,6 +553,7 @@ way, the buffer is shifted left and re-filled. */
 while (ptr < endptr)
   {
   int i;
+  int mrc = 0;
   BOOL match = FALSE;
   char *t = ptr;
   size_t length, linelength;
@@ -433,33 +569,130 @@ while (ptr < endptr)
   while (t < endptr && *t++ != '\n') linelength++;
   length = multiline? endptr - ptr : linelength;
 
+
+  /* Extra processing for Jeffrey Friedl's debugging. */
+
+#ifdef JFRIEDL_DEBUG
+  if (jfriedl_XT || jfriedl_XR)
+  {
+      #include <sys/time.h>
+      #include <time.h>
+      struct timeval start_time, end_time;
+      struct timezone dummy;
+
+      if (jfriedl_XT)
+      {
+          unsigned long newlen = length * jfriedl_XT + strlen(jfriedl_prefix) + strlen(jfriedl_postfix);
+          const char *orig = ptr;
+          ptr = malloc(newlen + 1);
+          if (!ptr) {
+                  printf("out of memory");
+                  exit(2);
+          }
+          endptr = ptr;
+          strcpy(endptr, jfriedl_prefix); endptr += strlen(jfriedl_prefix);
+          for (i = 0; i < jfriedl_XT; i++) {
+                  strncpy(endptr, orig,  length);
+                  endptr += length;
+          }
+          strcpy(endptr, jfriedl_postfix); endptr += strlen(jfriedl_postfix);
+          length = newlen;
+      }
+
+      if (gettimeofday(&start_time, &dummy) != 0)
+              perror("bad gettimeofday");
+
+
+      for (i = 0; i < jfriedl_XR; i++)
+          match = (pcre_exec(pattern_list[0], hints_list[0], ptr, length, 0, 0, offsets, 99) >= 0);
+
+      if (gettimeofday(&end_time, &dummy) != 0)
+              perror("bad gettimeofday");
+
+      double delta = ((end_time.tv_sec + (end_time.tv_usec / 1000000.0))
+                      -
+                      (start_time.tv_sec + (start_time.tv_usec / 1000000.0)));
+
+      printf("%s TIMER[%.4f]\n", match ? "MATCH" : "FAIL", delta);
+      return 0;
+  }
+#endif
+
+
   /* Run through all the patterns until one matches. Note that we don't include
   the final newline in the subject string. */
 
-  for (i = 0; !match && i < pattern_count; i++)
+  for (i = 0; i < pattern_count; i++)
     {
-    match = pcre_exec(pattern_list[i], hints_list[i], ptr, length, 0, 0,
-      offsets, 99) >= 0;
+    mrc = pcre_exec(pattern_list[i], hints_list[i], ptr, length, 0, 0,
+      offsets, 99);
+    if (mrc >= 0) { match = TRUE; break; }
+    if (mrc != PCRE_ERROR_NOMATCH)
+      {
+      fprintf(stderr, "pcregrep: pcre_exec() error %d while matching ", mrc);
+      if (pattern_count > 1) fprintf(stderr, "pattern number %d to ", i+1);
+      fprintf(stderr, "this line:\n");
+      fwrite(ptr, 1, linelength, stderr);   /* In case binary zero included */
+      fprintf(stderr, "\n");
+      if (error_count == 0 &&
+          (mrc == PCRE_ERROR_MATCHLIMIT || mrc == PCRE_ERROR_RECURSIONLIMIT))
+        {
+        fprintf(stderr, "pcregrep: error %d means that a resource limit "
+          "was exceeded\n", mrc);
+        fprintf(stderr, "pcregrep: check your regex for nested unlimited loops\n");
+        }
+      if (error_count++ > 20)
+        {
+        fprintf(stderr, "pcregrep: too many errors - abandoned\n");
+        exit(2);
+        }
+      match = invert;    /* No more matching; don't show the line again */
+      break;
+      }
     }
 
-  /* If it's a match or a not-match (as required), print what's wanted. */
+  /* If it's a match or a not-match (as required), do what's wanted. */
 
   if (match != invert)
     {
     BOOL hyphenprinted = FALSE;
 
-    if (filenames_nomatch_only) return 1;
+    /* We've failed if we want a file that doesn't have any matches. */
+
+    if (filenames == FN_NOMATCH_ONLY) return 1;
+
+    /* Just count if just counting is wanted. */
 
     if (count_only) count++;
 
-    else if (filenames_only)
+    /* If all we want is a file name, there is no need to scan any more lines
+    in the file. */
+
+    else if (filenames == FN_ONLY)
       {
       fprintf(stdout, "%s\n", printname);
       return 0;
       }
 
+    /* Likewise, if all we want is a yes/no answer. */
+
     else if (quiet) return 0;
 
+    /* The --only-matching option prints just the substring that matched, and
+    does not pring any context. */
+
+    else if (only_matching)
+      {
+      if (printname != NULL) fprintf(stdout, "%s:", printname);
+      if (number) fprintf(stdout, "%d:", linenumber);
+      fwrite(ptr + offsets[0], 1, offsets[1] - offsets[0], stdout);
+      fprintf(stdout, "\n");
+      }
+
+    /* This is the default case when none of the above options is set. We print
+    the matching lines(s), possibly preceded and/or followed by other lines of
+    context. */
+
     else
       {
       /* See if there is a requirement to print some "after" lines from a
@@ -478,7 +711,8 @@ while (ptr < endptr)
           }
 
         /* It is important to advance lastmatchrestart during this printing so
-        that it interacts correctly with any "before" printing below. */
+        that it interacts correctly with any "before" printing below. Print
+        each line's data using fwrite() in case there are binary zeroes. */
 
         while (lastmatchrestart < p)
           {
@@ -486,7 +720,7 @@ while (ptr < endptr)
           if (printname != NULL) fprintf(stdout, "%s-", printname);
           if (number) fprintf(stdout, "%d-", lastmatchnumber++);
           while (*pp != '\n') pp++;
-          fprintf(stdout, "%.*s", pp - lastmatchrestart + 1, lastmatchrestart);
+          fwrite(lastmatchrestart, 1, pp - lastmatchrestart + 1, stdout);
           lastmatchrestart = pp + 1;
           }
         if (lastmatchrestart != ptr) hyphenpending = TRUE;
@@ -510,8 +744,9 @@ while (ptr < endptr)
         char *p = ptr;
 
         while (p > buffer && (lastmatchnumber == 0 || p > lastmatchrestart) &&
-               linecount++ < before_context)
+               linecount < before_context)
           {
+          linecount++;
           p--;
           while (p > buffer && p[-1] != '\n') p--;
           }
@@ -525,15 +760,17 @@ while (ptr < endptr)
           if (printname != NULL) fprintf(stdout, "%s-", printname);
           if (number) fprintf(stdout, "%d-", linenumber - linecount--);
           while (*pp != '\n') pp++;
-          fprintf(stdout, "%.*s", pp - p + 1, p);
+          fwrite(p, 1, pp - p + 1, stdout);   /* In case binary zero */
           p = pp + 1;
           }
         }
 
       /* Now print the matching line(s); ensure we set hyphenpending at the end
-      of the file. */
+      of the file if any context lines are being output. */
+
+      if (after_context > 0 || before_context > 0)
+        endhyphenpending = TRUE;
 
-      endhyphenpending = TRUE;
       if (printname != NULL) fprintf(stdout, "%s:", printname);
       if (number) fprintf(stdout, "%d:", linenumber);
 
@@ -551,9 +788,42 @@ while (ptr < endptr)
         linelength = endmatch - ptr;
         }
 
-      fprintf(stdout, "%.*s\n", linelength, ptr);
+      /*** NOTE: Use only fwrite() to output the data line, so that binary
+      zeroes are treated as just another data character. */
+
+      /* This extra option, for Jeffrey Friedl's debugging requirements,
+      replaces the matched string, or a specific captured string if it exists,
+      with X. When this happens, colouring is ignored. */
+
+#ifdef JFRIEDL_DEBUG
+      if (S_arg >= 0 && S_arg < mrc)
+        {
+        int first = S_arg * 2;
+        int last  = first + 1;
+        fwrite(ptr, 1, offsets[first], stdout);
+        fprintf(stdout, "X");
+        fwrite(ptr + offsets[last], 1, linelength - offsets[last], stdout);
+        }
+      else
+#endif
+
+      /* We have to split the line(s) up if colouring. */
+
+      if (do_colour)
+        {
+        fwrite(ptr, 1, offsets[0], stdout);
+        fprintf(stdout, "%c[%sm", 0x1b, colour_string);
+        fwrite(ptr + offsets[0], 1, offsets[1] - offsets[0], stdout);
+        fprintf(stdout, "%c[00m", 0x1b);
+        fwrite(ptr + offsets[1], 1, linelength - offsets[1], stdout);
+        }
+      else fwrite(ptr, 1, linelength, stdout);
+
+      fprintf(stdout, "\n");
       }
 
+    /* End of doing what has to be done for a match */
+
     rc = 0;    /* Had some success */
 
     /* Remember where the last match happened for after_context. We remember
@@ -599,13 +869,16 @@ while (ptr < endptr)
 /* End of file; print final "after" lines if wanted; do_after_lines sets
 hyphenpending if it prints something. */
 
-do_after_lines(lastmatchnumber, lastmatchrestart, endptr, printname);
-hyphenpending |= endhyphenpending;
+if (!only_matching && !count_only)
+  {
+  do_after_lines(lastmatchnumber, lastmatchrestart, endptr, printname);
+  hyphenpending |= endhyphenpending;
+  }
 
 /* Print the file name if we are looking for those without matches and there
 were none. If we found a match, we won't have got this far. */
 
-if (filenames_nomatch_only)
+if (filenames == FN_NOMATCH_ONLY)
   {
   fprintf(stdout, "%s\n", printname);
   return 0;
@@ -633,9 +906,7 @@ recursing; if it's a file, grep it.
 
 Arguments:
   pathname          the path to investigate
-  dir_recurse       TRUE if recursing is wanted (-r)
-  show_filenames    TRUE if file names are wanted for multiple files, except
-                      for the only file at top level when not filenames_only
+  dir_recurse       TRUE if recursing is wanted (-r or -drecurse)
   only_one_at_top   TRUE if the path is the only one at toplevel
 
 Returns:   0 if there was at least one match
@@ -646,69 +917,77 @@ However, file opening failures are suppressed if "silent" is set.
 */
 
 static int
-grep_or_recurse(char *pathname, BOOL dir_recurse, BOOL show_filenames,
-  BOOL only_one_at_top)
+grep_or_recurse(char *pathname, BOOL dir_recurse, BOOL only_one_at_top)
 {
 int rc = 1;
 int sep;
 FILE *in;
-char *printname;
 
 /* If the file name is "-" we scan stdin */
 
 if (strcmp(pathname, "-") == 0)
   {
   return pcregrep(stdin,
-    (filenames_only || filenames_nomatch_only ||
-    (show_filenames && !only_one_at_top))?
+    (filenames > FN_DEFAULT || (filenames == FN_DEFAULT && !only_one_at_top))?
       stdin_name : NULL);
   }
 
-/* If the file is a directory and we are recursing, scan each file within it,
-subject to any include or exclude patterns that were set. The scanning code is
-localized so it can be made system-specific. */
 
-if ((sep = isdirectory(pathname)) != 0 && dir_recurse)
-  {
-  char buffer[1024];
-  char *nextfile;
-  directory_type *dir = opendirectory(pathname);
+/* If the file is a directory, skip if skipping or if we are recursing, scan
+each file within it, subject to any include or exclude patterns that were set.
+The scanning code is localized so it can be made system-specific. */
 
-  if (dir == NULL)
+if ((sep = isdirectory(pathname)) != 0)
+  {
+  if (dee_action == dee_SKIP) return 1;
+  if (dee_action == dee_RECURSE)
     {
-    if (!silent)
-      fprintf(stderr, "pcregrep: Failed to open directory %s: %s\n", pathname,
-        strerror(errno));
-    return 2;
-    }
+    char buffer[1024];
+    char *nextfile;
+    directory_type *dir = opendirectory(pathname);
 
-  while ((nextfile = readdirectory(dir)) != NULL)
-    {
-    int frc, blen;
-    sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
-    blen = strlen(buffer);
+    if (dir == NULL)
+      {
+      if (!silent)
+        fprintf(stderr, "pcregrep: Failed to open directory %s: %s\n", pathname,
+          strerror(errno));
+      return 2;
+      }
 
-    if (exclude_compiled != NULL &&
-        pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
-      continue;
+    while ((nextfile = readdirectory(dir)) != NULL)
+      {
+      int frc, blen;
+      sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
+      blen = strlen(buffer);
 
-    if (include_compiled != NULL &&
-        pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0)
-      continue;
+      if (exclude_compiled != NULL &&
+          pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
+        continue;
 
-    frc = grep_or_recurse(buffer, dir_recurse, TRUE, FALSE);
-    if (frc > 1) rc = frc;
-     else if (frc == 0 && rc == 1) rc = 0;
-    }
+      if (include_compiled != NULL &&
+          pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0)
+        continue;
 
-  closedirectory(dir);
-  return rc;
+      frc = grep_or_recurse(buffer, dir_recurse, FALSE);
+      if (frc > 1) rc = frc;
+       else if (frc == 0 && rc == 1) rc = 0;
+      }
+
+    closedirectory(dir);
+    return rc;
+    }
   }
 
-/* If the file is not a directory, or we are not recursing, scan it. If this is
-the first and only argument at top level, we don't show the file name (unless
-we are only showing the file name). Otherwise, control is via the
-show_filenames variable. */
+/* If the file is not a directory and not a regular file, skip it if that's
+been requested. */
+
+else if (!isregfile(pathname) && DEE_action == DEE_SKIP) return 1;
+
+/* Control reaches here if we have a regular file, or if we have a directory
+and recursion or skipping was not requested, or if we have anything else and
+skipping was not requested. The scan proceeds. If this is the first and only
+argument at top level, we don't show the file name, unless we are only showing
+the file name, or the filename was forced (-H). */
 
 in = fopen(pathname, "r");
 if (in == NULL)
@@ -719,10 +998,8 @@ if (in == NULL)
   return 2;
   }
 
-printname =  (filenames_only || filenames_nomatch_only ||
-  (show_filenames && !only_one_at_top))? pathname : NULL;
-
-rc = pcregrep(in, printname);
+rc = pcregrep(in, (filenames > FN_DEFAULT ||
+  (filenames == FN_DEFAULT && !only_one_at_top))? pathname : NULL);
 
 fclose(in);
 return rc;
@@ -738,7 +1015,13 @@ return rc;
 static int
 usage(int rc)
 {
-fprintf(stderr, "Usage: pcregrep [-LMVcfhilnqrsvwx] [long-options] [pattern] [file1 file2 ...]\n");
+option_item *op;
+fprintf(stderr, "Usage: pcregrep [-");
+for (op = optionlist; op->one_char != 0; op++)
+  {
+  if (op->one_char > 0) fprintf(stderr, "%c", op->one_char);
+  }
+fprintf(stderr, "] [long options] [pattern] [files]\n");
 fprintf(stderr, "Type `pcregrep --help' for more information.\n");
 return rc;
 }
@@ -757,8 +1040,8 @@ option_item *op;
 
 printf("Usage: pcregrep [OPTION]... [PATTERN] [FILE1 FILE2 ...]\n");
 printf("Search for PATTERN in each FILE or standard input.\n");
-printf("PATTERN must be present if -f is not used.\n");
-printf("\"-\" can be used as a file name to mean STDIN.\n");
+printf("PATTERN must be present if neither -e nor -f is used.\n");
+printf("\"-\" can be used as a file name to mean STDIN.\n\n");
 printf("Example: pcregrep -i 'hello.*world' menu.h main.c\n\n");
 
 printf("Options:\n");
@@ -794,21 +1077,24 @@ handle_option(int letter, int options)
 {
 switch(letter)
   {
-  case -1:  help(); exit(0);
+  case N_HELP: help(); exit(0);
   case 'c': count_only = TRUE; break;
-  case 'h': filenames = FALSE; break;
+  case 'F': process_options |= PO_FIXED_STRINGS; break;
+  case 'H': filenames = FN_FORCE; break;
+  case 'h': filenames = FN_NONE; break;
   case 'i': options |= PCRE_CASELESS; break;
-  case 'l': filenames_only = TRUE; break;
-  case 'L': filenames_nomatch_only = TRUE; break;
+  case 'l': filenames = FN_ONLY; break;
+  case 'L': filenames = FN_NOMATCH_ONLY; break;
   case 'M': multiline = TRUE; options |= PCRE_MULTILINE|PCRE_FIRSTLINE; break;
   case 'n': number = TRUE; break;
+  case 'o': only_matching = TRUE; break;
   case 'q': quiet = TRUE; break;
-  case 'r': recurse = TRUE; break;
+  case 'r': dee_action = dee_RECURSE; break;
   case 's': silent = TRUE; break;
   case 'u': options |= PCRE_UTF8; break;
   case 'v': invert = TRUE; break;
-  case 'w': word_match = TRUE; break;
-  case 'x': whole_lines = TRUE; break;
+  case 'w': process_options |= PO_WORD_MATCH; break;
+  case 'x': process_options |= PO_LINE_MATCH; break;
 
   case 'V':
   fprintf(stderr, "pcregrep version %s using ", VERSION);
@@ -827,6 +1113,134 @@ return options;
 
 
 
+/*************************************************
+*          Construct printed ordinal             *
+*************************************************/
+
+/* This turns a number into "1st", "3rd", etc. */
+
+static char *
+ordin(int n)
+{
+static char buffer[8];
+char *p = buffer;
+sprintf(p, "%d", n);
+while (*p != 0) p++;
+switch (n%10)
+  {
+  case 1: strcpy(p, "st"); break;
+  case 2: strcpy(p, "nd"); break;
+  case 3: strcpy(p, "rd"); break;
+  default: strcpy(p, "th"); break;
+  }
+return buffer;
+}
+
+
+
+/*************************************************
+*          Compile a single pattern              *
+*************************************************/
+
+/* When the -F option has been used, this is called for each substring.
+Otherwise it's called for each supplied pattern.
+
+Arguments:
+  pattern        the pattern string
+  options        the PCRE options
+  filename       the file name, or NULL for a command-line pattern
+  count          0 if this is the only command line pattern, or
+                 number of the command line pattern, or
+                 linenumber for a pattern from a file
+
+Returns:         TRUE on success, FALSE after an error
+*/
+
+static BOOL
+compile_single_pattern(char *pattern, int options, char *filename, int count)
+{
+char buffer[MBUFTHIRD + 16];
+const char *error;
+int errptr;
+
+if (pattern_count >= MAX_PATTERN_COUNT)
+  {
+  fprintf(stderr, "pcregrep: Too many %spatterns (max %d)\n",
+    (filename == NULL)? "command-line " : "", MAX_PATTERN_COUNT);
+  return FALSE;
+  }
+
+sprintf(buffer, "%s%.*s%s", prefix[process_options], MBUFTHIRD, pattern,
+  suffix[process_options]);
+pattern_list[pattern_count] =
+  pcre_compile(buffer, options, &error, &errptr, pcretables);
+if (pattern_list[pattern_count++] != NULL) return TRUE;
+
+/* Handle compile errors */
+
+errptr -= (int)strlen(prefix[process_options]);
+if (errptr > (int)strlen(pattern)) errptr = (int)strlen(pattern);
+
+if (filename == NULL)
+  {
+  if (count == 0)
+    fprintf(stderr, "pcregrep: Error in command-line regex "
+      "at offset %d: %s\n", errptr, error);
+  else
+    fprintf(stderr, "pcregrep: Error in %s command-line regex "
+      "at offset %d: %s\n", ordin(count), errptr, error);
+  }
+else
+  {
+  fprintf(stderr, "pcregrep: Error in regex in line %d of %s "
+    "at offset %d: %s\n", count, filename, errptr, error);
+  }
+
+return FALSE;
+}
+
+
+
+/*************************************************
+*           Compile one supplied pattern         *
+*************************************************/
+
+/* When the -F option has been used, each string may be a list of strings,
+separated by newlines. They will be matched literally.
+
+Arguments:
+  pattern        the pattern string
+  options        the PCRE options
+  filename       the file name, or NULL for a command-line pattern
+  count          0 if this is the only command line pattern, or
+                 number of the command line pattern, or
+                 linenumber for a pattern from a file
+
+Returns:         TRUE on success, FALSE after an error
+*/
+
+static BOOL
+compile_pattern(char *pattern, int options, char *filename, int count)
+{
+if ((process_options & PO_FIXED_STRINGS) != 0)
+  {
+  char buffer[MBUFTHIRD];
+  for(;;)
+    {
+    char *p = strchr(pattern, '\n');
+    if (p == NULL)
+      return compile_single_pattern(pattern, options, filename, count);
+    sprintf(buffer, "%.*s", p - pattern, pattern);
+    pattern = p + 1;
+    if (!compile_single_pattern(buffer, options, filename, count))
+      return FALSE;
+    }
+  }
+else return compile_single_pattern(pattern, options, filename, count);
+}
+
+
+
 /*************************************************
 *                Main program                    *
 *************************************************/
@@ -838,10 +1252,13 @@ main(int argc, char **argv)
 {
 int i, j;
 int rc = 1;
-int options = 0;
+int pcre_options = 0;
+int cmd_pattern_count = 0;
 int errptr;
-const char *error;
 BOOL only_one_at_top;
+char *patterns[MAX_PATTERN_COUNT];
+const char *locale_from = "--locale";
+const char *error;
 
 /* Process the options */
 
@@ -855,11 +1272,11 @@ for (i = 1; i < argc; i++)
   if (argv[i][0] != '-') break;
 
   /* If we hit an argument that is just "-", it may be a reference to STDIN,
-  but only if we have previously had -f to define the patterns. */
+  but only if we have previously had -e or -f to define the patterns. */
 
   if (argv[i][1] == 0)
     {
-    if (pattern_filename != NULL) break;
+    if (pattern_filename != NULL || pattern_count > 0) break;
       else exit(usage(2));
     }
 
@@ -881,9 +1298,9 @@ for (i = 1; i < argc; i++)
     /* Some long options have data that follows after =, for example file=name.
     Some options have variations in the long name spelling: specifically, we
     allow "regexp" because GNU grep allows it, though I personally go along
-    with Jeff Friedl in preferring "regex" without the "p". These options are
-    entered in the table as "regex(p)". No option is in both these categories,
-    fortunately. */
+    with Jeffrey Friedl and Larry Wall in preferring "regex" without the "p".
+    These options are entered in the table as "regex(p)". No option is in both
+    these categories, fortunately. */
 
     for (op = optionlist; op->one_char != 0; op++)
       {
@@ -931,6 +1348,30 @@ for (i = 1; i < argc; i++)
       }
     }
 
+
+  /* Jeffrey Friedl's debugging harness uses these additional options which
+  are not in the right form for putting in the option table because they use
+  only one hyphen, yet are more than one character long. By putting them
+  separately here, they will not get displayed as part of the help() output,
+  but I don't think Jeffrey will care about that. */
+
+#ifdef JFRIEDL_DEBUG
+  else if (strcmp(argv[i], "-pre") == 0) {
+          jfriedl_prefix = argv[++i];
+          continue;
+  } else if (strcmp(argv[i], "-post") == 0) {
+          jfriedl_postfix = argv[++i];
+          continue;
+  } else if (strcmp(argv[i], "-XT") == 0) {
+          sscanf(argv[++i], "%d", &jfriedl_XT);
+          continue;
+  } else if (strcmp(argv[i], "-XR") == 0) {
+          sscanf(argv[++i], "%d", &jfriedl_XR);
+          continue;
+  }
+#endif
+
+
   /* One-char options; many that have no data may be in a single argument; we
   continue till we hit the last one or one that needs data. */
 
@@ -953,42 +1394,94 @@ for (i = 1; i < argc; i++)
         option_data = s+1;
         break;
         }
-      options = handle_option(*s++, options);
+      pcre_options = handle_option(*s++, pcre_options);
       }
     }
 
-  /* At this point we should have op pointing to a matched option */
+  /* At this point we should have op pointing to a matched option. If the type
+  is NO_DATA, it means that there is no data, and the option might set
+  something in the PCRE options. */
 
   if (op->type == OP_NODATA)
-    options = handle_option(op->one_char, options);
-  else
     {
-    if (*option_data == 0)
+    pcre_options = handle_option(op->one_char, pcre_options);
+    continue;
+    }
+
+  /* If the option type is OP_OP_STRING or OP_OP_NUMBER, it's an option that
+  either has a value or defaults to something. It cannot have data in a
+  separate item. At the moment, the only such options are "colo(u)r" and
+  Jeffrey Friedl's special -S debugging option. */
+
+  if (*option_data == 0 &&
+      (op->type == OP_OP_STRING || op->type == OP_OP_NUMBER))
+    {
+    switch (op->one_char)
       {
-      if (i >= argc - 1 || longopwasequals)
-        {
-        fprintf(stderr, "pcregrep: Data missing after %s\n", argv[i]);
-        exit(usage(2));
-        }
-      option_data = argv[++i];
+      case N_COLOUR:
+      colour_option = (char *)"auto";
+      break;
+#ifdef JFRIEDL_DEBUG
+      case 'S':
+      S_arg = 0;
+      break;
+#endif
       }
+    continue;
+    }
 
-    if (op->type == OP_STRING) *((char **)op->dataptr) = option_data; else
+  /* Otherwise, find the data string for the option. */
+
+  if (*option_data == 0)
+    {
+    if (i >= argc - 1 || longopwasequals)
       {
-      char *endptr;
-      int n = strtoul(option_data, &endptr, 10);
-      if (*endptr != 0)
+      fprintf(stderr, "pcregrep: Data missing after %s\n", argv[i]);
+      exit(usage(2));
+      }
+    option_data = argv[++i];
+    }
+
+  /* If the option type is OP_PATLIST, it's the -e option, which can be called
+  multiple times to create a list of patterns. */
+
+  if (op->type == OP_PATLIST)
+    {
+    if (cmd_pattern_count >= MAX_PATTERN_COUNT)
+      {
+      fprintf(stderr, "pcregrep: Too many command-line patterns (max %d)\n",
+        MAX_PATTERN_COUNT);
+      return 2;
+      }
+    patterns[cmd_pattern_count++] = option_data;
+    }
+
+  /* Otherwise, deal with single string or numeric data values. */
+
+  else if (op->type != OP_NUMBER && op->type != OP_OP_NUMBER)
+    {
+    *((char **)op->dataptr) = option_data;
+    }
+  else
+    {
+    char *endptr;
+    int n = strtoul(option_data, &endptr, 10);
+    if (*endptr != 0)
+      {
+      if (longop)
         {
-        if (longop)
-          fprintf(stderr, "pcregrep: Malformed number \"%s\" after --%s\n",
-            option_data, op->long_name);
-        else
-          fprintf(stderr, "pcregrep: Malformed number \"%s\" after -%c\n",
-            option_data, op->one_char);
-        exit(usage(2));
+        char *equals = strchr(op->long_name, '=');
+        int nlen = (equals == NULL)? (int)strlen(op->long_name) :
+          equals - op->long_name;
+        fprintf(stderr, "pcregrep: Malformed number \"%s\" after --%.*s\n",
+          option_data, nlen, op->long_name);
         }
-      *((int *)op->dataptr) = n;
+      else
+        fprintf(stderr, "pcregrep: Malformed number \"%s\" after -%c\n",
+          option_data, op->one_char);
+      exit(usage(2));
       }
+    *((int *)op->dataptr) = n;
     }
   }
 
@@ -1001,102 +1494,163 @@ if (both_context > 0)
   if (before_context == 0) before_context = both_context;
   }
 
-pattern_list = (pcre **)malloc(MAX_PATTERN_COUNT * sizeof(pcre *));
-hints_list = (pcre_extra **)malloc(MAX_PATTERN_COUNT * sizeof(pcre_extra *));
+/* If a locale has not been provided as an option, see if the LC_CTYPE or
+LC_ALL environment variable is set, and if so, use it. */
 
-if (pattern_list == NULL || hints_list == NULL)
+if (locale == NULL)
   {
-  fprintf(stderr, "pcregrep: malloc failed\n");
-  return 2;
+  locale = getenv("LC_ALL");
+  locale_from = "LCC_ALL";
   }
 
-/* Compile the regular expression(s). */
-
-if (pattern_filename != NULL)
+if (locale == NULL)
   {
-  FILE *f = fopen(pattern_filename, "r");
-  char buffer[MBUFTHIRD + 16];
-  char *rdstart;
-  int adjust = 0;
+  locale = getenv("LC_CTYPE");
+  locale_from = "LC_CTYPE";
+  }
 
-  if (f == NULL)
+/* If a locale has been provided, set it, and generate the tables the PCRE
+needs. Otherwise, pcretables==NULL, which causes the use of default tables. */
+
+if (locale != NULL)
+  {
+  if (setlocale(LC_CTYPE, locale) == NULL)
     {
-    fprintf(stderr, "pcregrep: Failed to open %s: %s\n", pattern_filename,
-      strerror(errno));
+    fprintf(stderr, "pcregrep: Failed to set locale %s (obtained from %s)\n",
+      locale, locale_from);
     return 2;
     }
+  pcretables = pcre_maketables();
+  }
+
+/* Sort out colouring */
 
-  if (whole_lines)
+if (colour_option != NULL && strcmp(colour_option, "never") != 0)
+  {
+  if (strcmp(colour_option, "always") == 0) do_colour = TRUE;
+  else if (strcmp(colour_option, "auto") == 0) do_colour = is_stdout_tty();
+  else
     {
-    strcpy(buffer, "^(?:");
-    adjust = 4;
+    fprintf(stderr, "pcregrep: Unknown colour setting \"%s\"\n",
+      colour_option);
+    return 2;
     }
-  else if (word_match)
+  if (do_colour)
     {
-    strcpy(buffer, "\\b");
-    adjust = 2;
+    char *cs = getenv("PCREGREP_COLOUR");
+    if (cs == NULL) cs = getenv("PCREGREP_COLOR");
+    if (cs != NULL) colour_string = cs;
     }
+  }
 
-  rdstart = buffer + adjust;
-  while (fgets(rdstart, MBUFTHIRD, f) != NULL)
+/* Interpret the text values for -d and -D */
+
+if (dee_option != NULL)
+  {
+  if (strcmp(dee_option, "read") == 0) dee_action = dee_READ;
+  else if (strcmp(dee_option, "recurse") == 0) dee_action = dee_RECURSE;
+  else if (strcmp(dee_option, "skip") == 0) dee_action = dee_SKIP;
+  else
     {
-    char *s = rdstart + (int)strlen(rdstart);
-    if (pattern_count >= MAX_PATTERN_COUNT)
-      {
-      fprintf(stderr, "pcregrep: Too many patterns in file (max %d)\n",
-        MAX_PATTERN_COUNT);
-      return 2;
-      }
-    while (s > rdstart && isspace((unsigned char)(s[-1]))) s--;
-    if (s == rdstart) continue;
-    if (whole_lines) strcpy(s, ")$");
-      else if (word_match)strcpy(s, "\\b");
-        else *s = 0;
-    pattern_list[pattern_count] = pcre_compile(buffer, options, &error,
-      &errptr, NULL);
-    if (pattern_list[pattern_count++] == NULL)
-      {
-      fprintf(stderr, "pcregrep: Error in regex number %d at offset %d: %s\n",
-        pattern_count, errptr - adjust, error);
-      return 2;
-      }
+    fprintf(stderr, "pcregrep: Invalid value \"%s\" for -d\n", dee_option);
+    return 2;
     }
-  fclose(f);
   }
 
-/* If no file name, a single regex must be given inline. */
+if (DEE_option != NULL)
+  {
+  if (strcmp(DEE_option, "read") == 0) DEE_action = DEE_READ;
+  else if (strcmp(DEE_option, "skip") == 0) DEE_action = DEE_SKIP;
+  else
+    {
+    fprintf(stderr, "pcregrep: Invalid value \"%s\" for -D\n", DEE_option);
+    return 2;
+    }
+  }
 
-else
+/* Check the values for Jeffrey Friedl's debugging options. */
+
+#ifdef JFRIEDL_DEBUG
+if (S_arg > 9)
   {
-  char buffer[MBUFTHIRD + 16];
-  char *pat;
-  int adjust = 0;
+  fprintf(stderr, "pcregrep: bad value for -S option\n");
+  return 2;
+  }
+if (jfriedl_XT != 0 || jfriedl_XR != 0)
+  {
+  if (jfriedl_XT == 0) jfriedl_XT = 1;
+  if (jfriedl_XR == 0) jfriedl_XR = 1;
+  }
+#endif
+
+/* Get memory to store the pattern and hints lists. */
+
+pattern_list = (pcre **)malloc(MAX_PATTERN_COUNT * sizeof(pcre *));
+hints_list = (pcre_extra **)malloc(MAX_PATTERN_COUNT * sizeof(pcre_extra *));
+
+if (pattern_list == NULL || hints_list == NULL)
+  {
+  fprintf(stderr, "pcregrep: malloc failed\n");
+  return 2;
+  }
 
+/* If no patterns were provided by -e, and there is no file provided by -f,
+the first argument is the one and only pattern, and it must exist. */
+
+if (cmd_pattern_count == 0 && pattern_filename == NULL)
+  {
   if (i >= argc) return usage(2);
+  patterns[cmd_pattern_count++] = argv[i++];
+  }
+
+/* Compile the patterns that were provided on the command line, either by
+multiple uses of -e or as a single unkeyed pattern. */
 
-  if (whole_lines)
+for (j = 0; j < cmd_pattern_count; j++)
+  {
+  if (!compile_pattern(patterns[j], pcre_options, NULL,
+       (j == 0 && cmd_pattern_count == 1)? 0 : j + 1))
+    return 2;
+  }
+
+/* Compile the regular expressions that are provided in a file. */
+
+if (pattern_filename != NULL)
+  {
+  int linenumber = 0;
+  FILE *f;
+  char *filename;
+  char buffer[MBUFTHIRD];
+
+  if (strcmp(pattern_filename, "-") == 0)
     {
-    sprintf(buffer, "^(?:%.*s)$", MBUFTHIRD, argv[i++]);
-    pat = buffer;
-    adjust = 4;
+    f = stdin;
+    filename = stdin_name;
     }
-  else if (word_match)
+  else
     {
-    sprintf(buffer, "\\b%.*s\\b", MBUFTHIRD, argv[i++]);
-    pat = buffer;
-    adjust = 2;
+    f = fopen(pattern_filename, "r");
+    if (f == NULL)
+      {
+      fprintf(stderr, "pcregrep: Failed to open %s: %s\n", pattern_filename,
+        strerror(errno));
+      return 2;
+      }
+    filename = pattern_filename;
     }
-  else pat = argv[i++];
-
-  pattern_list[0] = pcre_compile(pat, options, &error, &errptr, NULL);
 
-  if (pattern_list[0] == NULL)
+  while (fgets(buffer, MBUFTHIRD, f) != NULL)
     {
-    fprintf(stderr, "pcregrep: Error in regex at offset %d: %s\n",
-      errptr - adjust, error);
-    return 2;
+    char *s = buffer + (int)strlen(buffer);
+    while (s > buffer && isspace((unsigned char)(s[-1]))) s--;
+    *s = 0;
+    linenumber++;
+    if (buffer[0] == 0) continue;   /* Skip blank lines */
+    if (!compile_pattern(buffer, pcre_options, filename, linenumber))
+      return 2;
     }
-  pattern_count++;
+
+  if (f != stdin) fclose(f);
   }
 
 /* Study the regular expressions, as we will be running them many times */
@@ -1117,7 +1671,8 @@ for (j = 0; j < pattern_count; j++)
 
 if (exclude_pattern != NULL)
   {
-  exclude_compiled = pcre_compile(exclude_pattern, 0, &error, &errptr, NULL);
+  exclude_compiled = pcre_compile(exclude_pattern, 0, &error, &errptr,
+    pcretables);
   if (exclude_compiled == NULL)
     {
     fprintf(stderr, "pcregrep: Error in 'exclude' regex at offset %d: %s\n",
@@ -1128,7 +1683,8 @@ if (exclude_pattern != NULL)
 
 if (include_pattern != NULL)
   {
-  include_compiled = pcre_compile(include_pattern, 0, &error, &errptr, NULL);
+  include_compiled = pcre_compile(include_pattern, 0, &error, &errptr,
+    pcretables);
   if (include_compiled == NULL)
     {
     fprintf(stderr, "pcregrep: Error in 'include' regex at offset %d: %s\n",
@@ -1137,21 +1693,22 @@ if (include_pattern != NULL)
     }
   }
 
-/* If there are no further arguments, do the business on stdin and exit */
+/* If there are no further arguments, do the business on stdin and exit. */
 
-if (i >= argc) return pcregrep(stdin,
-  (filenames_only || filenames_nomatch_only)? stdin_name : NULL);
+if (i >= argc)
+  return pcregrep(stdin, (filenames > FN_DEFAULT)? stdin_name : NULL);
 
 /* Otherwise, work through the remaining arguments as files or directories.
 Pass in the fact that there is only one argument at top level - this suppresses
-the file name if the argument is not a directory and filenames_only is not set.
-*/
+the file name if the argument is not a directory and filenames are not
+otherwise forced. */
 
-only_one_at_top = (i == argc - 1);
+only_one_at_top = i == argc - 1;   /* Catch initial value of i */
 
 for (; i < argc; i++)
   {
-  int frc = grep_or_recurse(argv[i], recurse, filenames, only_one_at_top);
+  int frc = grep_or_recurse(argv[i], dee_action == dee_RECURSE,
+    only_one_at_top);
   if (frc > 1) rc = frc;
     else if (frc == 0 && rc == 1) rc = 0;
   }
index 06fd58bcbf55236c40afb8e296cf27ad1da4180f..cbb1ff800640a3930524f0f169fe890ea278a30b 100644 (file)
@@ -6,7 +6,7 @@
 and semantics are as close as possible to those of the Perl 5 language.
 
                        Written by Philip Hazel
-           Copyright (c) 1997-2005 University of Cambridge
+           Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -131,7 +131,7 @@ static const char *const pstring[] = {
 *          Translate error code to string        *
 *************************************************/
 
-EXPORT size_t
+PCRE_DATA_SCOPE size_t
 regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)
 {
 const char *message, *addmessage;
@@ -166,7 +166,7 @@ return length + addlength;
 *           Free store held by a regex           *
 *************************************************/
 
-EXPORT void
+PCRE_DATA_SCOPE void
 regfree(regex_t *preg)
 {
 (pcre_free)(preg->re_pcre);
@@ -189,7 +189,7 @@ Returns:      0 on success
               various non-zero codes on failure
 */
 
-EXPORT int
+PCRE_DATA_SCOPE int
 regcomp(regex_t *preg, const char *pattern, int cflags)
 {
 const char *errorptr;
@@ -197,9 +197,11 @@ int erroffset;
 int errorcode;
 int options = 0;
 
-if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS;
+if ((cflags & REG_ICASE) != 0)   options |= PCRE_CASELESS;
 if ((cflags & REG_NEWLINE) != 0) options |= PCRE_MULTILINE;
-if ((cflags & REG_DOTALL) != 0) options |= PCRE_DOTALL;
+if ((cflags & REG_DOTALL) != 0)  options |= PCRE_DOTALL;
+if ((cflags & REG_NOSUB) != 0)   options |= PCRE_NO_AUTO_CAPTURE;
+if ((cflags & REG_UTF8) != 0)    options |= PCRE_UTF8;
 
 preg->re_pcre = pcre_compile2(pattern, options, &errorcode, &errorptr,
   &erroffset, NULL);
@@ -223,9 +225,13 @@ substring, so we have to get and release working store instead of just using
 the POSIX structures as was done in earlier releases when PCRE needed only 2
 ints. However, if the number of possible capturing brackets is small, use a
 block of store on the stack, to reduce the use of malloc/free. The threshold is
-in a macro that can be changed at configure time. */
+in a macro that can be changed at configure time.
 
-EXPORT int
+If REG_NOSUB was specified at compile time, the PCRE_NO_AUTO_CAPTURE flag will
+be set. When this is the case, the nmatch and pmatch arguments are ignored, and
+the only result is yes/no/error. */
+
+PCRE_DATA_SCOPE int
 regexec(const regex_t *preg, const char *string, size_t nmatch,
   regmatch_t pmatch[], int eflags)
 {
@@ -234,13 +240,20 @@ int options = 0;
 int *ovector = NULL;
 int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
 BOOL allocated_ovector = FALSE;
+BOOL nosub =
+  (((const pcre *)preg->re_pcre)->options & PCRE_NO_AUTO_CAPTURE) != 0;
 
 if ((eflags & REG_NOTBOL) != 0) options |= PCRE_NOTBOL;
 if ((eflags & REG_NOTEOL) != 0) options |= PCRE_NOTEOL;
 
 ((regex_t *)preg)->re_erroffset = (size_t)(-1);  /* Only has meaning after compile */
 
-if (nmatch > 0)
+/* When no string data is being returned, ensure that nmatch is zero.
+Otherwise, ensure the vector for holding the return data is large enough. */
+
+if (nosub) nmatch = 0;
+
+else if (nmatch > 0)
   {
   if (nmatch <= POSIX_MALLOC_THRESHOLD)
     {
@@ -248,6 +261,7 @@ if (nmatch > 0)
     }
   else
     {
+    if (nmatch > INT_MAX/(sizeof(int) * 3)) return REG_ESPACE;
     ovector = (int *)malloc(sizeof(int) * nmatch * 3);
     if (ovector == NULL) return REG_ESPACE;
     allocated_ovector = TRUE;
@@ -262,13 +276,16 @@ if (rc == 0) rc = nmatch;    /* All captured slots were filled in */
 if (rc >= 0)
   {
   size_t i;
-  for (i = 0; i < (size_t)rc; i++)
+  if (!nosub)
     {
-    pmatch[i].rm_so = ovector[i*2];
-    pmatch[i].rm_eo = ovector[i*2+1];
+    for (i = 0; i < (size_t)rc; i++)
+      {
+      pmatch[i].rm_so = ovector[i*2];
+      pmatch[i].rm_eo = ovector[i*2+1];
+      }
+    if (allocated_ovector) free(ovector);
+    for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
     }
-  if (allocated_ovector) free(ovector);
-  for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
   return 0;
   }
 
index 4f1b1abd4515d329d9b2c9c1d34b74bec6332a3c..31ee03749c44f9f2c0fedd857c089c2503e479e8 100644 (file)
@@ -9,7 +9,7 @@
 Compatible Regular Expression library. It defines the things POSIX says should
 be there. I hope.
 
-            Copyright (c) 1997-2005 University of Cambridge
+            Copyright (c) 1997-2006 University of Cambridge
 
 -----------------------------------------------------------------------------
 Redistribution and use in source and binary forms, with or without
@@ -50,22 +50,20 @@ POSSIBILITY OF SUCH DAMAGE.
 extern "C" {
 #endif
 
-/* Options defined by POSIX. */
+/* Options, mostly defined by POSIX, but with a couple of extras. */
 
-#define REG_ICASE     0x01
-#define REG_NEWLINE   0x02
-#define REG_NOTBOL    0x04
-#define REG_NOTEOL    0x08
+#define REG_ICASE     0x0001
+#define REG_NEWLINE   0x0002
+#define REG_NOTBOL    0x0004
+#define REG_NOTEOL    0x0008
+#define REG_DOTALL    0x0010   /* NOT defined by POSIX. */
+#define REG_NOSUB     0x0020
+#define REG_UTF8      0x0040   /* NOT defined by POSIX. */
 
-/* Additional options, not defined by POSIX, but somebody wanted them. */
-
-#define REG_DOTALL    0x10
-
-/* These are not used by PCRE, but by defining them we make it easier
+/* This is not used by PCRE, but by defining it we make it easier
 to slot PCRE into existing programs that make POSIX calls. */
 
 #define REG_EXTENDED  0
-#define REG_NOSUB     0
 
 /* Error values. Not all these are relevant or used by the wrapper. */
 
@@ -107,12 +105,40 @@ typedef struct {
   regoff_t rm_eo;
 } regmatch_t;
 
+/* Win32 uses DLL by default; it needs special stuff for exported functions
+when building PCRE. */
+
+#ifndef PCRE_DATA_SCOPE
+#ifdef _WIN32
+#  ifdef PCRE_DEFINITION
+#    ifdef DLL_EXPORT
+#      define PCRE_DATA_SCOPE __declspec(dllexport)
+#    endif
+#  else
+#    ifndef PCRE_STATIC
+#      define PCRE_DATA_SCOPE extern __declspec(dllimport)
+#    endif
+#  endif
+#endif
+#endif
+
+/* Otherwise, we use the standard "extern". */
+
+#ifndef PCRE_DATA_SCOPE
+#  ifdef __cplusplus
+#    define PCRE_DATA_SCOPE     extern "C"
+#  else
+#    define PCRE_DATA_SCOPE     extern
+#  endif
+#endif
+
 /* The functions */
 
-extern int regcomp(regex_t *, const char *, int);
-extern int regexec(const regex_t *, const char *, size_t, regmatch_t *, int);
-extern size_t regerror(int, const regex_t *, char *, size_t);
-extern void regfree(regex_t *);
+PCRE_DATA_SCOPE int regcomp(regex_t *, const char *, int);
+PCRE_DATA_SCOPE int regexec(const regex_t *, const char *, size_t,
+                  regmatch_t *, int);
+PCRE_DATA_SCOPE size_t regerror(int, const regex_t *, char *, size_t);
+PCRE_DATA_SCOPE void regfree(regex_t *);
 
 #ifdef __cplusplus
 }   /* extern "C" */
index 9b63470863883d56c9af3b230914b44eb2c407e1..f5c6cdd2e1d64fc3f15aa23ba6ec889b1f8eae3a 100644 (file)
@@ -46,13 +46,34 @@ POSSIBILITY OF SUCH DAMAGE.
 
 #define PCRE_SPY        /* For Win32 build, import data, not export */
 
-/* We need the internal info for displaying the results of pcre_study() and
-other internal data; pcretest also uses some of the fixed tables, and generally
-has "inside information" compared to a program that strictly follows the PCRE
-API. */
+/* We include pcre_internal.h because we need the internal info for displaying
+the results of pcre_study() and we also need to know about the internal
+macros, structures, and other internal data values; pcretest has "inside
+information" compared to a program that strictly follows the PCRE API. */
 
 #include "pcre_internal.h"
 
+/* We need access to the data tables that PCRE uses. So as not to have to keep
+two copies, we include the source file here, changing the names of the external
+symbols to prevent clashes. */
+
+#define _pcre_utf8_table1      utf8_table1
+#define _pcre_utf8_table1_size utf8_table1_size
+#define _pcre_utf8_table2      utf8_table2
+#define _pcre_utf8_table3      utf8_table3
+#define _pcre_utf8_table4      utf8_table4
+#define _pcre_utt              utt
+#define _pcre_utt_size         utt_size
+#define _pcre_OP_lengths       OP_lengths
+
+#include "pcre_tables.c"
+
+/* We also need the pcre_printint() function for printing out compiled
+patterns. This function is in a separate file so that it can be included in
+pcre_compile.c when that module is compiled with debugging enabled. */
+
+#include "pcre_printint.src"
+
 
 /* It is possible to compile this test program without including support for
 testing the POSIX interface, though this is not available via the standard
@@ -68,6 +89,8 @@ to the DFA matcher (NODFA), and without the doublecheck of the old "info"
 function (define NOINFOCHECK). */
 
 
+/* Other parameters */
+
 #ifndef CLOCKS_PER_SEC
 #ifdef CLK_TCK
 #define CLOCKS_PER_SEC CLK_TCK
@@ -83,6 +106,8 @@ function (define NOINFOCHECK). */
 #define DBUFFER_SIZE BUFFER_SIZE
 
 
+/* Static variables */
+
 static FILE *outfile;
 static int log_store = 0;
 static int callout_count;
@@ -162,7 +187,7 @@ if (i == 0 || i == 6) return 0;        /* invalid UTF-8 */
 /* i now has a value in the range 1-5 */
 
 s = 6*i;
-d = (c & _pcre_utf8_table3[i]) << s;
+d = (c & utf8_table3[i]) << s;
 
 for (j = 0; j < i; j++)
   {
@@ -174,8 +199,8 @@ for (j = 0; j < i; j++)
 
 /* Check that encoding was the correct unique one */
 
-for (j = 0; j < _pcre_utf8_table1_size; j++)
-  if (d <= _pcre_utf8_table1[j]) break;
+for (j = 0; j < utf8_table1_size; j++)
+  if (d <= utf8_table1[j]) break;
 if (j != i) return -(i+1);
 
 /* Valid value */
@@ -188,6 +213,38 @@ return i+1;
 
 
 
+/*************************************************
+*       Convert character value to UTF-8         *
+*************************************************/
+
+/* This function takes an integer value in the range 0 - 0x7fffffff
+and encodes it as a UTF-8 character in 0 to 6 bytes.
+
+Arguments:
+  cvalue     the character value
+  buffer     pointer to buffer for result - at least 6 bytes long
+
+Returns:     number of characters placed in the buffer
+*/
+
+static int
+ord2utf8(int cvalue, uschar *buffer)
+{
+register int i, j;
+for (i = 0; i < utf8_table1_size; i++)
+  if (cvalue <= utf8_table1[i]) break;
+buffer += i;
+for (j = i; j > 0; j--)
+ {
+ *buffer-- = 0x80 | (cvalue & 0x3f);
+ cvalue >>= 6;
+ }
+*buffer = utf8_table2[i] | cvalue;
+return i + 1;
+}
+
+
+
 /*************************************************
 *             Print character string             *
 *************************************************/
@@ -198,7 +255,7 @@ chars without printing. */
 
 static int pchars(unsigned char *p, int length, FILE *f)
 {
-int c;
+int c = 0;
 int yield = 0;
 
 while (length-- > 0)
@@ -417,6 +474,57 @@ return ((value & 0x000000ff) << 24) |
 
 
 
+/*************************************************
+*        Check match or recursion limit          *
+*************************************************/
+
+static int
+check_match_limit(pcre *re, pcre_extra *extra, uschar *bptr, int len,
+  int start_offset, int options, int *use_offsets, int use_size_offsets,
+  int flag, unsigned long int *limit, int errnumber, const char *msg)
+{
+int count;
+int min = 0;
+int mid = 64;
+int max = -1;
+
+extra->flags |= flag;
+
+for (;;)
+  {
+  *limit = mid;
+
+  count = pcre_exec(re, extra, (char *)bptr, len, start_offset, options,
+    use_offsets, use_size_offsets);
+
+  if (count == errnumber)
+    {
+    /* fprintf(outfile, "Testing %s limit = %d\n", msg, mid); */
+    min = mid;
+    mid = (mid == max - 1)? max : (max > 0)? (min + max)/2 : mid*2;
+    }
+
+  else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
+                         count == PCRE_ERROR_PARTIAL)
+    {
+    if (mid == min + 1)
+      {
+      fprintf(outfile, "Minimum %s limit = %d\n", msg, mid);
+      break;
+      }
+    /* fprintf(outfile, "Testing %s limit = %d\n", msg, mid); */
+    max = mid;
+    mid = (min + mid)/2;
+    }
+  else break;    /* Some other error */
+  }
+
+extra->flags &= ~flag;
+return count;
+}
+
+
+
 /*************************************************
 *                Main Program                    *
 *************************************************/
@@ -434,6 +542,7 @@ int op = 1;
 int timeit = 0;
 int showinfo = 0;
 int showstore = 0;
+int quiet = 0;
 int size_offsets = 45;
 int size_offsets_max;
 int *offsets = NULL;
@@ -474,6 +583,7 @@ while (argc > 1 && argv[op][0] == '-')
   if (strcmp(argv[op], "-s") == 0 || strcmp(argv[op], "-m") == 0)
     showstore = 1;
   else if (strcmp(argv[op], "-t") == 0) timeit = 1;
+  else if (strcmp(argv[op], "-q") == 0) quiet = 1;
   else if (strcmp(argv[op], "-i") == 0) showinfo = 1;
   else if (strcmp(argv[op], "-d") == 0) showinfo = debug = 1;
 #if !defined NODFA
@@ -506,6 +616,8 @@ while (argc > 1 && argv[op][0] == '-')
     printf("  POSIX malloc threshold = %d\n", rc);
     (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &rc);
     printf("  Default match limit = %d\n", rc);
+    (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &rc);
+    printf("  Default recursion depth limit = %d\n", rc);
     (void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);
     printf("  Match recursion uses %s\n", rc? "stack" : "heap");
     exit(0);
@@ -577,9 +689,9 @@ pcre_free = new_free;
 pcre_stack_malloc = stack_malloc;
 pcre_stack_free = stack_free;
 
-/* Heading line, then prompt for first regex if stdin */
+/* Heading line unless quiet, then prompt for first regex if stdin */
 
-fprintf(outfile, "PCRE version %s\n\n", pcre_version());
+if (!quiet) fprintf(outfile, "PCRE version %s\n\n", pcre_version());
 
 /* Main loop */
 
@@ -839,6 +951,9 @@ while (!done)
     if ((options & PCRE_CASELESS) != 0) cflags |= REG_ICASE;
     if ((options & PCRE_MULTILINE) != 0) cflags |= REG_NEWLINE;
     if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;
+    if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;
+    if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;
+
     rc = regcomp(&preg, (char *)p, cflags);
 
     /* Compilation failed; go back for another re, skipping to blank line
@@ -988,7 +1103,7 @@ while (!done)
       if (do_debug)
         {
         fprintf(outfile, "------------------------------------------------------------------\n");
-        _pcre_printint(re, outfile);
+        pcre_printint(re, outfile);
         }
 
       new_info(re, NULL, PCRE_INFO_OPTIONS, &get_options);
@@ -1054,7 +1169,7 @@ while (!done)
         fprintf(outfile, "Partial matching not supported\n");
 
       if (get_options == 0) fprintf(outfile, "No options\n");
-        else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s\n",
+        else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s%s\n",
           ((get_options & PCRE_ANCHORED) != 0)? " anchored" : "",
           ((get_options & PCRE_CASELESS) != 0)? " caseless" : "",
           ((get_options & PCRE_EXTENDED) != 0)? " extended" : "",
@@ -1064,6 +1179,7 @@ while (!done)
           ((get_options & PCRE_DOLLAR_ENDONLY) != 0)? " dollar_endonly" : "",
           ((get_options & PCRE_EXTRA) != 0)? " extra" : "",
           ((get_options & PCRE_UNGREEDY) != 0)? " ungreedy" : "",
+          ((get_options & PCRE_NO_AUTO_CAPTURE) != 0)? " no_auto_capture" : "",
           ((get_options & PCRE_UTF8) != 0)? " utf8" : "",
           ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "");
 
@@ -1209,8 +1325,8 @@ while (!done)
 
   for (;;)
     {
-    unsigned char *q;
-    unsigned char *bptr = dbuffer;
+    uschar *q;
+    uschar *bptr = dbuffer;
     int *use_offsets = offsets;
     int use_size_offsets = size_offsets;
     int callout_data = 0;
@@ -1290,7 +1406,7 @@ while (!done)
             {
             unsigned char buff8[8];
             int ii, utn;
-            utn = _pcre_ord2utf8(c, buff8);
+            utn = ord2utf8(c, buff8);
             for (ii = 0; ii < utn - 1; ii++) *q++ = buff8[ii];
             c = buff8[ii];   /* Last byte */
             p = pt + 1;
@@ -1498,6 +1614,11 @@ while (!done)
         (void)regerror(rc, &preg, (char *)buffer, BUFFER_SIZE);
         fprintf(outfile, "No match: POSIX code %d: %s\n", rc, buffer);
         }
+      else if ((((const pcre *)preg.re_pcre)->options & PCRE_NO_AUTO_CAPTURE)
+              != 0)
+        {
+        fprintf(outfile, "Matched with REG_NOSUB\n");
+        }
       else
         {
         size_t i;
@@ -1558,48 +1679,26 @@ while (!done)
         }
 
       /* If find_match_limit is set, we want to do repeated matches with
-      varying limits in order to find the minimum value. */
+      varying limits in order to find the minimum value for the match limit and
+      for the recursion limit. */
 
       if (find_match_limit)
         {
-        int min = 0;
-        int mid = 64;
-        int max = -1;
-
         if (extra == NULL)
           {
           extra = (pcre_extra *)malloc(sizeof(pcre_extra));
           extra->flags = 0;
           }
-        extra->flags |= PCRE_EXTRA_MATCH_LIMIT;
 
-        for (;;)
-          {
-          extra->match_limit = mid;
-          count = pcre_exec(re, extra, (char *)bptr, len, start_offset,
-            options | g_notempty, use_offsets, use_size_offsets);
-          if (count == PCRE_ERROR_MATCHLIMIT)
-            {
-            /* fprintf(outfile, "Testing match limit = %d\n", mid); */
-            min = mid;
-            mid = (mid == max - 1)? max : (max > 0)? (min + max)/2 : mid*2;
-            }
-          else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
-                                 count == PCRE_ERROR_PARTIAL)
-            {
-            if (mid == min + 1)
-              {
-              fprintf(outfile, "Minimum match limit = %d\n", mid);
-              break;
-              }
-            /* fprintf(outfile, "Testing match limit = %d\n", mid); */
-            max = mid;
-            mid = (min + mid)/2;
-            }
-          else break;    /* Some other error */
-          }
+        count = check_match_limit(re, extra, bptr, len, start_offset,
+          options|g_notempty, use_offsets, use_size_offsets,
+          PCRE_EXTRA_MATCH_LIMIT, &(extra->match_limit),
+          PCRE_ERROR_MATCHLIMIT, "match()");
 
-        extra->flags &= ~PCRE_EXTRA_MATCH_LIMIT;
+        count = check_match_limit(re, extra, bptr, len, start_offset,
+          options|g_notempty, use_offsets, use_size_offsets,
+          PCRE_EXTRA_MATCH_LIMIT_RECURSION, &(extra->match_limit_recursion),
+          PCRE_ERROR_RECURSIONLIMIT, "match() recursion");
         }
 
       /* If callout_data is set, use the interface with additional data */
index 2a89c2e09dd53f699c1f216e8c23dd7af53e8f35..0ded82475cd536b8bede5e9120f0eac7a534c966 100644 (file)
@@ -583,6 +583,26 @@ jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
 brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
 -------------------------------------------------------------------------------
 
-Check up on PATTERN near the end.
+aaaaa0
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+bbbbbb
+cccccccccccccccccccccccccccccccccccccccccc
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+eeeee
+aaaaa2
+ffffffffff
+
+This is a line before the binary zero.
+This line contains a binary zero here >This is a line after the binary zero.
+
+ABOVE the elephant 
+ABOVE
+ABOVE theatre
+AB.VE
+AB.VE the turtle
+
+PUT NEW DATA ABOVE THIS LINE.
+=============================
 
+Check up on PATTERN near the end.
 This is the last line of this file.
index bb2705e390abfa492b40a9bd65d9194eb24d8f7b..1434ae96f614ce74f19a1ac408e00f1683bdd6e1 100644 (file)
@@ -1,4 +1,7 @@
 This is a file of patterns for testing the -f option. Don't include any blank
-lines because they will match everything!
+lines because they will match everything! This is no longer true, so have one.
+
 pattern
 line by itself
+
+End of the list of patterns.
index 27ab7e4a5ff6b637a843ba77ef9cd0573529530c..1dd375b65a2b64883c44d127af891110bd0983b9 100644 (file)
@@ -1,4 +1,3 @@
-pcregrep version 4.0 07-Jun-2005 using PCRE version 6.2 01-Aug-2005
 ---------------------------- Test 1 ------------------------------
 PATTERN at the start of a line.
 In the middle of a line, PATTERN appears.
@@ -9,23 +8,21 @@ PATTERN at the start of a line.
 7:PATTERN at the start of a line.
 8:In the middle of a line, PATTERN appears.
 10:This pattern is in lower case.
-586:Check up on PATTERN near the end.
+608:Check up on PATTERN near the end.
 ---------------------------- Test 4 ------------------------------
 4
 ---------------------------- Test 5 ------------------------------
 ./testdata/grepinput:7:PATTERN at the start of a line.
 ./testdata/grepinput:8:In the middle of a line, PATTERN appears.
 ./testdata/grepinput:10:This pattern is in lower case.
-./testdata/grepinput:586:Check up on PATTERN near the end.
---
+./testdata/grepinput:608:Check up on PATTERN near the end.
 ./testdata/grepinputx:3:Here is the pattern again.
 ./testdata/grepinputx:5:Pattern
 ---------------------------- Test 6 ------------------------------
 7:PATTERN at the start of a line.
 8:In the middle of a line, PATTERN appears.
 10:This pattern is in lower case.
-586:Check up on PATTERN near the end.
---
+608:Check up on PATTERN near the end.
 3:Here is the pattern again.
 5:Pattern
 ---------------------------- Test 7 ------------------------------
@@ -87,7 +84,7 @@ That time it was on a line by itself.
 ---------------------------- Test 14 -----------------------------
 ./testdata/grepinputx:To pat or not to pat, that is the question.
 ---------------------------- Test 15 -----------------------------
-pcregrep: Error in regex at offset 4: nothing to repeat
+pcregrep: Error in command-line regex at offset 4: nothing to repeat
 ---------------------------- Test 16 -----------------------------
 pcregrep: Failed to open ./testdata/nonexistfile: No such file or directory
 ---------------------------- Test 17 -----------------------------
@@ -116,14 +113,14 @@ of lines
 36-sixteen
 37-seventeen
 ---------------------------- Test 22 -----------------------------
-20-one
-21-two
-22-three
+21-one
+22-two
+23-three
 24:four
 --
-30-eleven
-31-twelve
-32-thirteen
+31-eleven
+32-twelve
+33-thirteen
 34:fourteen
 ---------------------------- Test 23 -----------------------------
 one
@@ -162,15 +159,15 @@ twenty
 
 This is the last line of this file.
 ---------------------------- Test 25 -----------------------------
-14-
-15-complete pair
-16-of lines
-17-
-18-And there they were again, to check line numbers.
-19-
-20-one
-21-two
-22-three
+15-
+16-complete pair
+17-of lines
+18-
+19-And there they were again, to check line numbers.
+20-
+21-one
+22-two
+23-three
 24:four
 25-five
 26-six
@@ -232,16 +229,16 @@ twenty
 
 This is the last line of this file.
 ---------------------------- Test 28 -----------------------------
-13-of lines all by themselves.
-14-
-15-complete pair
-16-of lines
-17-
-18-And there they were again, to check line numbers.
-19-
-20-one
-21-two
-22-three
+14-of lines all by themselves.
+15-
+16-complete pair
+17-of lines
+18-
+19-And there they were again, to check line numbers.
+20-
+21-one
+22-two
+23-three
 24:four
 25-five
 26-six
@@ -284,18 +281,18 @@ twenty
 
 This is the last line of this file.
 ---------------------------- Test 30 -----------------------------
-./testdata/grepinput-3-features should be added at the end, because some of the tests involve the
-./testdata/grepinput-4-output of line numbers, and we don't want these to change.
-./testdata/grepinput-5-
+./testdata/grepinput-4-features should be added at the end, because some of the tests involve the
+./testdata/grepinput-5-output of line numbers, and we don't want these to change.
+./testdata/grepinput-6-
 ./testdata/grepinput:7:PATTERN at the start of a line.
 ./testdata/grepinput:8:In the middle of a line, PATTERN appears.
 ./testdata/grepinput-9-
 ./testdata/grepinput:10:This pattern is in lower case.
 --
-./testdata/grepinput-582-brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-./testdata/grepinput-583--------------------------------------------------------------------------------
-./testdata/grepinput-584-
-./testdata/grepinput:586:Check up on PATTERN near the end.
+./testdata/grepinput-605-PUT NEW DATA ABOVE THIS LINE.
+./testdata/grepinput-606-=============================
+./testdata/grepinput-607-
+./testdata/grepinput:608:Check up on PATTERN near the end.
 --
 ./testdata/grepinputx-1-This is a second file of input for the pcregrep tests.
 ./testdata/grepinputx-2-
@@ -311,9 +308,8 @@ This is the last line of this file.
 ./testdata/grepinput-12-Here follows a whole lot of stuff that makes the file over 24K long.
 ./testdata/grepinput-13-
 --
-./testdata/grepinput:586:Check up on PATTERN near the end.
-./testdata/grepinput-587-
-./testdata/grepinput-588-This is the last line of this file.
+./testdata/grepinput:608:Check up on PATTERN near the end.
+./testdata/grepinput-609-This is the last line of this file.
 --
 ./testdata/grepinputx:3:Here is the pattern again.
 ./testdata/grepinputx-4-
@@ -334,3 +330,51 @@ RC=0
 ---------------------------- Test 36 -----------------------------
 ./testdata/grepinputx
 RC=0
+---------------------------- Test 37 -----------------------------
+aaaaa0
+aaaaa2
+RC=0
+======== STDERR ========
+pcregrep: pcre_exec() error -8 while matching this line:
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+pcregrep: error -8 means that a resource limit was exceeded
+pcregrep: check your regex for nested unlimited loops
+pcregrep: pcre_exec() error -8 while matching this line:
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+---------------------------- Test 38 ------------------------------
+This line contains a binary zero here >---------------------------- Test 39 ------------------------------
+This is a line before the binary zero.
+This line contains a binary zero here >---------------------------- Test 40 ------------------------------
+This line contains a binary zero here >This is a line after the binary zero.
+---------------------------- Test 41 ------------------------------
+before the binary zero
+after the binary zero
+---------------------------- Test 41 ------------------------------
+./testdata/grepinput:595:before the binary zero
+./testdata/grepinput:597:after the binary zero
+---------------------------- Test 42 ------------------------------
+595:before
+596:zero
+597:after
+---------------------------- Test 43 ------------------------------
+595:before
+596:zero
+597:zero
+---------------------------- Test 44 ------------------------------
+10:pattern
+595:binary
+596:binary
+597:binary
+---------------------------- Test 45 ------------------------------
+pcregrep: Error in 2nd command-line regex at offset 9: missing )
+---------------------------- Test 46 ------------------------------
+AB.VE
+---------------------------- Test 47 ------------------------------
+ABOVE the elephant 
+AB.VE
+AB.VE the turtle
+---------------------------- Test 48 ------------------------------
+ABOVE the elephant 
+AB.VE
+AB.VE the turtle
+PUT NEW DATA ABOVE THIS LINE.
index befb65a4412f408a1cccf3828f640db26b11ab5e..60d2db00f1e6d4b0ed98ef921bd9d8424d309d0b 100644 (file)
 
 /^[[:^alpha:]]/D
              
+/[_[:alpha:]]/IS
+
 /^[[:ascii:]]/D
 
 /^[[:^ascii:]]/D
 
 /^[[:blank:]]/D
 
+/^[[:^blank:]]/D
+
+/[\n\x0b\x0c\x0d[:blank:]]/IS
+
 /^[[:cntrl:]]/D
 
 /^[[:digit:]]/D
 "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
+/[^()]*(?:\((?R)\)[^()]*)*/
+    (this(and)that
+    (this(and)that) 
+    (this(and)that)stuff
+
+/[^()]*(?:\((?>(?R))\)[^()]*)*/
+    (this(and)that
+    (this(and)that) 
+    
+/[^()]*(?:\((?R)\))*[^()]*/
+    (this(and)that
+    (this(and)that) 
+
+/(?:\((?R)\))*[^()]*/
+    (this(and)that
+    (this(and)that) 
+    ((this)) 
+
+/(?:\((?R)\))|[^()]*/
+    (this(and)that
+    (this(and)that) 
+    (this)
+    ((this)) 
+    
+/a(b)c/PN
+    abc
+    
+/a(?P<name>b)c/PN
+    abc  
+    
+/\x{100}/ 
+
+/\x{0000ff}/
+
 / End of testinput2 /
index c2abdbfdb55c18c9dcfbb2cc1c3e90c8e3632828..e6ac826f77e00965846ba07e4685ecc99d081159 100644 (file)
     *** Failers 
     école
 
+/\W+/Lfr_FR
+    >>>\xaa<<<
+    >>>\xba<<< 
+
+/[\W]+/Lfr_FR
+    >>>\xaa<<<
+    >>>\xba<<< 
+
+/[^[:alpha:]]+/Lfr_FR
+    >>>\xaa<<<
+    >>>\xba<<< 
+
+/\w+/Lfr_FR
+    >>>\xaa<<<
+    >>>\xba<<< 
+
+/[\w]+/Lfr_FR
+    >>>\xaa<<<
+    >>>\xba<<< 
+
+/[[:alpha:]]+/Lfr_FR
+    >>>\xaa<<<
+    >>>\xba<<< 
+    
+/[[:alpha:]][[:lower:]][[:upper:]]/DLfr_FR 
+
 / End of testinput3 /
index c16e9d9983bbdfedc63a0985e8cb8afd776cf6f0..6e0099c649006c31148e0df05961a200702dbec2 100644 (file)
 /^\x{85}$/8i
     \x{85}
 
+/^\ሴ/8
+    ሴ 
+
 / End of testinput4 /
index fe6ee3e65652b3da3543d0dc810e7c811ff4bd62..dc45445f68334fc566a25f988ec905fd3714e19c 100644 (file)
 /\w/8
     \x{100}X   
 
+/a\x{1234}b/P8
+    a\x{1234}b
+
+/^\ሴ/8D
+
 / End of testinput5 /
index 01a39477ac45a1033744c80c71515d9d2a2d6e0e..a45920a17e7923da7e2191ea59fb6984a164c884 100644 (file)
@@ -51,6 +51,7 @@
     \x{09f} 
   
 /^\p{Cn}/8
+    \x{e0000}
     ** Failers
     \x{09f} 
   
   
 /^\p{Lo}/8
     \x{1bb}
+    \x{3400}
+    \x{3401}
+    \x{4d00}
+    \x{4db4}
+    \x{4db5}     
     ** Failers
     a 
     \x{2b0}
+    \x{4db6} 
   
 /^\p{Lt}/8
     \x{1c5}
     A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
     A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
     
+/^\p{Han}+/8
+    \x{2e81}\x{3007}\x{2f804}\x{31a0}
+    ** Failers
+    \x{2e7f}  
+
+/^\P{Katakana}+/8
+    \x{3105}
+    ** Failers
+    \x{30ff}  
+
+/^[\p{Arabic}]/8
+    \x{06e9}
+    \x{060b}
+    ** Failers
+    X\x{06e9}   
+
+/^[\P{Yi}]/8
+    \x{2f800}
+    ** Failers
+    \x{a014}
+    \x{a4c6}   
+    
+/^\p{Any}X/8
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    X  
+    
+/^\P{Any}X/8
+    ** Failers
+    AX
+    
+/^\p{Any}?X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    ABXYZ   
+
+/^\P{Any}?X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ 
+    ABXYZ   
+
+/^\p{Any}+X/8
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+    XYZ
+
+/^\P{Any}+X/8
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    XYZ
+
+/^\p{Any}*X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+
+/^\P{Any}*X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+
+/^[\p{Any}]X/8
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    X  
+    
+/^[\P{Any}]X/8
+    ** Failers
+    AX
+    
+/^[\p{Any}]?X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    ABXYZ   
+
+/^[\P{Any}]?X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ 
+    ABXYZ   
+
+/^[\p{Any}]+X/8
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+    XYZ
+
+/^[\P{Any}]+X/8
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    XYZ
+
+/^[\p{Any}]*X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+
+/^[\P{Any}]*X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+
+/^\p{Any}{3,5}?/8
+    abcdefgh
+    \x{1234}\n\r\x{3456}xyz 
+
+/^\p{Any}{3,5}/8
+    abcdefgh
+    \x{1234}\n\r\x{3456}xyz 
+
+/^\P{Any}{3,5}?/8
+    ** Failers
+    abcdefgh
+    \x{1234}\n\r\x{3456}xyz 
+
+/^\p{L&}X/8
+     AXY
+     aXY
+     \x{1c5}XY
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^[\p{L&}]X/8
+     AXY
+     aXY
+     \x{1c5}XY
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^\p{L&}+X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^[\p{L&}]+X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^\p{L&}+?X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^[\p{L&}]+?X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^\P{L&}X/8
+     !XY
+     \x{1bb}XY
+     \x{2b0}XY
+     ** Failers
+     \x{1c5}XY
+     AXY      
+
+/^[\P{L&}]X/8
+     !XY
+     \x{1bb}XY
+     \x{2b0}XY
+     ** Failers
+     \x{1c5}XY
+     AXY      
+
 / End of testinput6 /
index cecbc0065f7c175bf66ba4e1b0d6df30693765f5..309ed3f008ce46f17dc822e11b355034294075d2 100644 (file)
    
 /(?<=foo)bar/
    xyzfo\P 
-   foob\R\P\>2 
+   foob\P\>2 
    foobar...\R\P\>4 
    xyzfo\P
-   foobar\R\>2  
+   foobar\>2  
    *** Failers
    xyzfo\P
    obar\R   
     ** Failers 
     line one\nthis is a line\nbreak in the second line 
 
+/1234/
+    123\P
+    a4\P\R
+
+/1234/
+    123\P
+    4\P\R
+
 / End of testinput7 /
index f18dd12c4a67e860bb78be788caebecb86345b0e..23d3d3e434b0e6ef482bd03ca3d1c9e937a53731 100644 (file)
     \x{100}   
     \x{101} 
     
+/^\p{Han}+/8
+    \x{2e81}\x{3007}\x{2f804}\x{31a0}
+    ** Failers
+    \x{2e7f}  
+
+/^\P{Katakana}+/8
+    \x{3105}
+    ** Failers
+    \x{30ff}  
+
+/^[\p{Arabic}]/8
+    \x{06e9}
+    \x{060b}
+    ** Failers
+    X\x{06e9}   
+
+/^[\P{Yi}]/8
+    \x{2f800}
+    ** Failers
+    \x{a014}
+    \x{a4c6}   
+
+/^\p{Any}X/8
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    X  
+    
+/^\P{Any}X/8
+    ** Failers
+    AX
+    
+/^\p{Any}?X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    ABXYZ   
+
+/^\P{Any}?X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ 
+    ABXYZ   
+
+/^\p{Any}+X/8
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+    XYZ
+
+/^\P{Any}+X/8
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    XYZ
+
+/^\p{Any}*X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+
+/^\P{Any}*X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+
+/^[\p{Any}]X/8
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    X  
+    
+/^[\P{Any}]X/8
+    ** Failers
+    AX
+    
+/^[\p{Any}]?X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ 
+    ** Failers
+    ABXYZ   
+
+/^[\P{Any}]?X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ 
+    ABXYZ   
+
+/^[\p{Any}]+X/8
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+    XYZ
+
+/^[\P{Any}]+X/8
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    XYZ
+
+/^[\p{Any}]*X/8
+    XYZ
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+    ** Failers
+
+/^[\P{Any}]*X/8
+    XYZ
+    ** Failers
+    AXYZ
+    \x{1234}XYZ
+    A\x{1234}XYZ
+
+/^\p{Any}{3,5}?/8
+    abcdefgh
+    \x{1234}\n\r\x{3456}xyz 
+
+/^\p{Any}{3,5}/8
+    abcdefgh
+    \x{1234}\n\r\x{3456}xyz 
+
+/^\P{Any}{3,5}?/8
+    ** Failers
+    abcdefgh
+    \x{1234}\n\r\x{3456}xyz 
+
+/^\p{L&}X/8
+     AXY
+     aXY
+     \x{1c5}XY
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^[\p{L&}]X/8
+     AXY
+     aXY
+     \x{1c5}XY
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^\p{L&}+X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^[\p{L&}]+X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^\p{L&}+?X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^[\p{L&}]+?X/8
+     AXY
+     aXY
+     AbcdeXyz 
+     \x{1c5}AbXY
+     abcDEXypqreXlmn 
+     ** Failers
+     \x{1bb}XY
+     \x{2b0}XY
+     !XY      
+
+/^\P{L&}X/8
+     !XY
+     \x{1bb}XY
+     \x{2b0}XY
+     ** Failers
+     \x{1c5}XY
+     AXY      
+
+/^[\P{L&}]X/8
+     !XY
+     \x{1bb}XY
+     \x{2b0}XY
+     ** Failers
+     \x{1c5}XY
+     AXY      
+
 / End / 
index 1f835b7886bf1a98d145123d506d31173072131e..f3e5da3d568cafb3a894527983187f407c427a08 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /the quick brown fox/
     the quick brown fox
  0: the quick brown fox
index 8f078b8464d8f3fb86f98839877ef244c081bd64..55adba0b9d7baa64945e2bc03f119b71fc810e5b 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /(a)b|/
 Capturing subpattern count = 1
 No options
@@ -1945,6 +1943,14 @@ Options: anchored
 No first char
 No need char
              
+/[_[:alpha:]]/IS
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
+  _ a b c d e f g h i j k l m n o p q r s t u v w x y z 
+
 /^[[:ascii:]]/D
 ------------------------------------------------------------------
   0  37 Bra 0
@@ -1984,6 +1990,26 @@ Options: anchored
 No first char
 No need char
 
+/^[[:^blank:]]/D
+------------------------------------------------------------------
+  0  37 Bra 0
+  3     ^
+  4     [\x00-\x08\x0a-\x1f!-\xff]
+ 37  37 Ket
+ 40     End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: anchored
+No first char
+No need char
+
+/[\n\x0b\x0c\x0d[:blank:]]/IS
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 
+
 /^[[:cntrl:]]/D
 ------------------------------------------------------------------
   0  37 Bra 0
@@ -3995,14 +4021,16 @@ Need char = '<'
 
 /(a(?1)b)/D
 ------------------------------------------------------------------
-  0  16 Bra 0
-  3  10 Bra 1
+  0  22 Bra 0
+  3  16 Bra 1
   6     a
-  8   3 Recurse
- 11     b
- 13  10 Ket
- 16  16 Ket
- 19     End
+  8   6 Once
+ 11   3 Recurse
+ 14   6 Ket
+ 17     b
+ 19  16 Ket
+ 22  22 Ket
+ 25     End
 ------------------------------------------------------------------
 Capturing subpattern count = 1
 No options
@@ -4014,7 +4042,7 @@ Need char = 'b'
   0  22 Bra 0
   3  16 Bra 1
   6     a
-  8   6 Bra 0
+  8   6 Once
  11   3 Recurse
  14   6 KetRmax
  17     b
@@ -4246,7 +4274,7 @@ Need char = 'a'
 
 /(?P<a>a)...(?P=a)bbb(?P>a)d/D
 ------------------------------------------------------------------
-  0  28 Bra 0
+  0  34 Bra 0
   3   5 Bra 1
   6     a
   8   5 Ket
@@ -4255,10 +4283,12 @@ Need char = 'a'
  13     Any
  14     \1
  17     bbb
- 23   3 Recurse
- 26     d
- 28  28 Ket
- 31     End
+ 23   6 Once
+ 26   3 Recurse
+ 29   6 Ket
+ 32     d
+ 34  34 Ket
+ 37     End
 ------------------------------------------------------------------
 Capturing subpattern count = 1
 Max back reference = 1
@@ -4418,7 +4448,7 @@ No need char
  24     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
-Options:
+Options: no_auto_capture
 First char = 'a'
 Need char = 'c'
   abc
@@ -4439,7 +4469,7 @@ Need char = 'c'
 Capturing subpattern count = 1
 Named capturing subpatterns:
   one   1
-Options:
+Options: no_auto_capture
 First char = 'a'
 Need char = 'c'
   abc
@@ -4461,7 +4491,7 @@ Need char = 'c'
 Capturing subpattern count = 1
 Named capturing subpatterns:
   named   1
-Options:
+Options: no_auto_capture
 First char = 'a'
 Need char = 'c'
 
@@ -4472,11 +4502,13 @@ No options
 No first char
 Need char = 'z'
   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
-Minimum match limit = 8
+Minimum match() limit = 8
+Minimum match() recursion limit = 7
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   aaaaaaaaaaaaaz\M
-Minimum match limit = 32768
+Minimum match() limit = 32768
+Minimum match() recursion limit = 43
 No match
 
 /(aaa(?C1)bbb|ab)/
@@ -4633,18 +4665,20 @@ Need char = ']'
 
 /(a(b(?2)c))?/D
 ------------------------------------------------------------------
-  0  25 Bra 0
+  0  31 Bra 0
   3     Brazero
-  4  18 Bra 1
+  4  24 Bra 1
   7     a
-  9  10 Bra 2
+  9  16 Bra 2
  12     b
- 14   9 Recurse
- 17     c
- 19  10 Ket
- 22  18 Ket
- 25  25 Ket
- 28     End
+ 14   6 Once
+ 17   9 Recurse
+ 20   6 Ket
+ 23     c
+ 25  16 Ket
+ 28  24 Ket
+ 31  31 Ket
+ 34     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 No options
@@ -4653,18 +4687,20 @@ No need char
 
 /(a(b(?2)c))*/D
 ------------------------------------------------------------------
-  0  25 Bra 0
+  0  31 Bra 0
   3     Brazero
-  4  18 Bra 1
+  4  24 Bra 1
   7     a
-  9  10 Bra 2
+  9  16 Bra 2
  12     b
- 14   9 Recurse
- 17     c
- 19  10 Ket
- 22  18 KetRmax
- 25  25 Ket
- 28     End
+ 14   6 Once
+ 17   9 Recurse
+ 20   6 Ket
+ 23     c
+ 25  16 Ket
+ 28  24 KetRmax
+ 31  31 Ket
+ 34     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 No options
@@ -4673,29 +4709,33 @@ No need char
 
 /(a(b(?2)c)){0,2}/D
 ------------------------------------------------------------------
-  0  53 Bra 0
+  0  65 Bra 0
   3     Brazero
-  4  46 Bra 0
-  7  18 Bra 1
+  4  58 Bra 0
+  7  24 Bra 1
  10     a
- 12  10 Bra 2
+ 12  16 Bra 2
  15     b
- 17  12 Recurse
- 20     c
- 22  10 Ket
- 25  18 Ket
- 28     Brazero
- 29  18 Bra 1
- 32     a
- 34  10 Bra 2
- 37     b
- 39  12 Recurse
- 42     c
- 44  10 Ket
- 47  18 Ket
- 50  46 Ket
- 53  53 Ket
- 56     End
+ 17   6 Once
+ 20  12 Recurse
+ 23   6 Ket
+ 26     c
+ 28  16 Ket
+ 31  24 Ket
+ 34     Brazero
+ 35  24 Bra 1
+ 38     a
+ 40  16 Bra 2
+ 43     b
+ 45   6 Once
+ 48  12 Recurse
+ 51   6 Ket
+ 54     c
+ 56  16 Ket
+ 59  24 Ket
+ 62  58 Ket
+ 65  65 Ket
+ 68     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 No options
@@ -5939,6 +5979,86 @@ Matched, but too many substrings
 13: a
 14: a
 
+/[^()]*(?:\((?R)\)[^()]*)*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+    (this(and)that
+ 0: 
+    (this(and)that) 
+ 0: (this(and)that)
+    (this(and)that)stuff
+ 0: (this(and)that)stuff
+
+/[^()]*(?:\((?>(?R))\)[^()]*)*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+    (this(and)that
+ 0: 
+    (this(and)that) 
+ 0: (this(and)that)
+    
+/[^()]*(?:\((?R)\))*[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+    (this(and)that
+ 0: 
+    (this(and)that) 
+ 0: (this(and)that)
+
+/(?:\((?R)\))*[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+    (this(and)that
+ 0: 
+    (this(and)that) 
+ 0: 
+    ((this)) 
+ 0: ((this))
+
+/(?:\((?R)\))|[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+    (this(and)that
+ 0: 
+    (this(and)that) 
+ 0: 
+    (this)
+ 0: (this)
+    ((this)) 
+ 0: ((this))
+    
+/a(b)c/PN
+    abc
+Matched with REG_NOSUB
+    
+/a(?P<name>b)c/PN
+    abc  
+Matched with REG_NOSUB
+    
+/\x{100}/ 
+Failed: character value in \x{...} sequence is too large at offset 6
+
+/\x{0000ff}/
+Capturing subpattern count = 0
+No options
+First char = 255
+No need char
+
 / End of testinput2 /
 Capturing subpattern count = 0
 No options
index 16ebc7125a374cd22939245610288b2205051a46..06e2888d91bd9d60a8caf807f7c9e8ee1ae526c0 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /^[\w]+/
     *** Failers
 No match
@@ -95,8 +93,8 @@ No first char
 No need char
 Starting byte set: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 
   Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z 
-  µ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä 
-  å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ 
+  ª µ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â 
+  ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ 
 
 /^[\xc8-\xc9]/iLfr_FR
     École
@@ -112,4 +110,54 @@ No match
     école
 No match
 
+/\W+/Lfr_FR
+    >>>\xaa<<<
+ 0: >>>
+    >>>\xba<<< 
+ 0: >>>
+
+/[\W]+/Lfr_FR
+    >>>\xaa<<<
+ 0: >>>
+    >>>\xba<<< 
+ 0: >>>
+
+/[^[:alpha:]]+/Lfr_FR
+    >>>\xaa<<<
+ 0: >>>
+    >>>\xba<<< 
+ 0: >>>
+
+/\w+/Lfr_FR
+    >>>\xaa<<<
+ 0: ª
+    >>>\xba<<< 
+ 0: º
+
+/[\w]+/Lfr_FR
+    >>>\xaa<<<
+ 0: ª
+    >>>\xba<<< 
+ 0: º
+
+/[[:alpha:]]+/Lfr_FR
+    >>>\xaa<<<
+ 0: ª
+    >>>\xba<<< 
+ 0: º
+    
+/[[:alpha:]][[:lower:]][[:upper:]]/DLfr_FR 
+------------------------------------------------------------------
+  0 102 Bra 0
+  3     [A-Za-zªµºÀ-ÖØ-öø-ÿ]
+ 36     [a-zµß-öø-ÿ]
+ 69     [A-ZÀ-ÖØ-Þ]
+102 102 Ket
+105     End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+
 / End of testinput3 /
index 234fd1ae145e0c4dbb763e7b706a60d2b33c73bd..1b98f86a304f478da07c1ae77e76078b3e9055ef 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /-- Do not use the \x{} construct except with patterns that have the --/
 /-- /8 option set, because PCRE doesn't recognize them as UTF-8 unless --/
 No match
@@ -900,4 +898,8 @@ No match
     \x{85}
  0: \x{85}
 
+/^\ሴ/8
+    ሴ 
+ 0: \x{1234}
+
 / End of testinput4 /
index 6e0d41802050841f363621288b882eb4b98aea1b..533fd84b657696211ee4f0f3a4e676768ef2aa82 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /\x{100}/8DM
 Memory allocation (code space): 10
 ------------------------------------------------------------------
@@ -645,12 +643,14 @@ Need char = 'A'
 
 /\x{100}*\d(?R)/8D
 ------------------------------------------------------------------
-  0  10 Bra 0
+  0  16 Bra 0
   3     \x{100}*
   6     \d
-  7   0 Recurse
- 10  10 Ket
- 13     End
+  7   6 Once
+ 10   0 Recurse
+ 13   6 Ket
+ 16  16 Ket
+ 19     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 Partial matching not supported
@@ -660,10 +660,10 @@ No need char
 
 /[^\x{c4}]/D
 ------------------------------------------------------------------
-  0  36 Bra 0
-  3     [\x01-35-bd-z|~-\xff] (neg)
36  36 Ket
39     End
+  0   5 Bra 0
+  3     [^\xc4]
 5   5 Ket
 8     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 No options
@@ -912,14 +912,16 @@ No match
 
 /\x{100}abc(xyz(?1))/8D
 ------------------------------------------------------------------
-  0  27 Bra 0
+  0  33 Bra 0
   3     \x{100}abc
- 12  12 Bra 1
+ 12  18 Bra 1
  15     xyz
- 21  12 Recurse
- 24  12 Ket
- 27  27 Ket
- 30     End
+ 21   6 Once
+ 24  12 Recurse
+ 27   6 Ket
+ 30  18 Ket
+ 33  33 Ket
+ 36     End
 ------------------------------------------------------------------
 Capturing subpattern count = 1
 Options: utf8
@@ -928,15 +930,17 @@ Need char = 'z'
 
 /[^\x{100}]abc(xyz(?1))/8D
 ------------------------------------------------------------------
-  0  32 Bra 0
+  0  38 Bra 0
   3     [^\x{100}]
  11     abc
- 17  12 Bra 1
+ 17  18 Bra 1
  20     xyz
- 26  17 Recurse
- 29  12 Ket
- 32  32 Ket
- 35     End
+ 26   6 Once
+ 29  17 Recurse
+ 32   6 Ket
+ 35  18 Ket
+ 38  38 Ket
+ 41     End
 ------------------------------------------------------------------
 Capturing subpattern count = 1
 Options: utf8
@@ -945,15 +949,17 @@ Need char = 'z'
 
 /[ab\x{100}]abc(xyz(?1))/8D
 ------------------------------------------------------------------
-  0  64 Bra 0
+  0  70 Bra 0
   3     [ab\x{100}]
  43     abc
- 49  12 Bra 1
+ 49  18 Bra 1
  52     xyz
- 58  49 Recurse
- 61  12 Ket
- 64  64 Ket
- 67     End
+ 58   6 Once
+ 61  49 Recurse
+ 64   6 Ket
+ 67  18 Ket
+ 70  70 Ket
+ 73     End
 ------------------------------------------------------------------
 Capturing subpattern count = 1
 Options: utf8
@@ -962,18 +968,20 @@ Need char = 'z'
 
 /(\x{100}(b(?2)c))?/D8
 ------------------------------------------------------------------
-  0  26 Bra 0
+  0  32 Bra 0
   3     Brazero
-  4  19 Bra 1
+  4  25 Bra 1
   7     \x{100}
- 10  10 Bra 2
+ 10  16 Bra 2
  13     b
- 15  10 Recurse
- 18     c
- 20  10 Ket
- 23  19 Ket
- 26  26 Ket
- 29     End
+ 15   6 Once
+ 18  10 Recurse
+ 21   6 Ket
+ 24     c
+ 26  16 Ket
+ 29  25 Ket
+ 32  32 Ket
+ 35     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 Options: utf8
@@ -982,29 +990,33 @@ No need char
 
 /(\x{100}(b(?2)c)){0,2}/D8
 ------------------------------------------------------------------
-  0  55 Bra 0
+  0  67 Bra 0
   3     Brazero
-  4  48 Bra 0
-  7  19 Bra 1
+  4  60 Bra 0
+  7  25 Bra 1
  10     \x{100}
- 13  10 Bra 2
+ 13  16 Bra 2
  16     b
- 18  13 Recurse
- 21     c
- 23  10 Ket
- 26  19 Ket
- 29     Brazero
- 30  19 Bra 1
- 33     \x{100}
- 36  10 Bra 2
- 39     b
- 41  13 Recurse
- 44     c
- 46  10 Ket
- 49  19 Ket
- 52  48 Ket
- 55  55 Ket
- 58     End
+ 18   6 Once
+ 21  13 Recurse
+ 24   6 Ket
+ 27     c
+ 29  16 Ket
+ 32  25 Ket
+ 35     Brazero
+ 36  25 Bra 1
+ 39     \x{100}
+ 42  16 Bra 2
+ 45     b
+ 47   6 Once
+ 50  13 Recurse
+ 53   6 Ket
+ 56     c
+ 58  16 Ket
+ 61  25 Ket
+ 64  60 Ket
+ 67  67 Ket
+ 70     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 Options: utf8
@@ -1013,18 +1025,20 @@ No need char
 
 /(\x{100}(b(?1)c))?/D8
 ------------------------------------------------------------------
-  0  26 Bra 0
+  0  32 Bra 0
   3     Brazero
-  4  19 Bra 1
+  4  25 Bra 1
   7     \x{100}
- 10  10 Bra 2
+ 10  16 Bra 2
  13     b
- 15   4 Recurse
- 18     c
- 20  10 Ket
- 23  19 Ket
- 26  26 Ket
- 29     End
+ 15   6 Once
+ 18   4 Recurse
+ 21   6 Ket
+ 24     c
+ 26  16 Ket
+ 29  25 Ket
+ 32  32 Ket
+ 35     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 Options: utf8
@@ -1033,29 +1047,33 @@ No need char
 
 /(\x{100}(b(?1)c)){0,2}/D8
 ------------------------------------------------------------------
-  0  55 Bra 0
+  0  67 Bra 0
   3     Brazero
-  4  48 Bra 0
-  7  19 Bra 1
+  4  60 Bra 0
+  7  25 Bra 1
  10     \x{100}
- 13  10 Bra 2
+ 13  16 Bra 2
  16     b
- 18   7 Recurse
- 21     c
- 23  10 Ket
- 26  19 Ket
- 29     Brazero
- 30  19 Bra 1
- 33     \x{100}
- 36  10 Bra 2
- 39     b
- 41   7 Recurse
- 44     c
- 46  10 Ket
- 49  19 Ket
- 52  48 Ket
- 55  55 Ket
- 58     End
+ 18   6 Once
+ 21   7 Recurse
+ 24   6 Ket
+ 27     c
+ 29  16 Ket
+ 32  25 Ket
+ 35     Brazero
+ 36  25 Bra 1
+ 39     \x{100}
+ 42  16 Bra 2
+ 45     b
+ 47   6 Once
+ 50   7 Recurse
+ 53   6 Ket
+ 56     c
+ 58  16 Ket
+ 61  25 Ket
+ 64  60 Ket
+ 67  67 Ket
+ 70     End
 ------------------------------------------------------------------
 Capturing subpattern count = 2
 Options: utf8
@@ -1072,4 +1090,21 @@ No need char
     \x{100}X   
  0: X
 
+/a\x{1234}b/P8
+    a\x{1234}b
+ 0: a\x{1234}b
+
+/^\ሴ/8D
+------------------------------------------------------------------
+  0   8 Bra 0
+  3     ^
+  4     \x{1234}
+  8   8 Ket
+ 11     End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: anchored utf8
+No first char
+No need char
+
 / End of testinput5 /
index 9f9421e51937b0a44f3cbbcc001451da51122592..87833bd263ad12d848b6f28235e1ea4ed713cab5 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /^\pC\pL\pM\pN\pP\pS\pZ</8
     \x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
  0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
@@ -85,6 +83,8 @@ No match
 No match
   
 /^\p{Cn}/8
+    \x{e0000}
+ 0: \x{e0000}
     ** Failers
 No match
     \x{09f} 
@@ -127,12 +127,24 @@ No match
 /^\p{Lo}/8
     \x{1bb}
  0: \x{1bb}
+    \x{3400}
+ 0: \x{3400}
+    \x{3401}
+ 0: \x{3401}
+    \x{4d00}
+ 0: \x{4d00}
+    \x{4db4}
+ 0: \x{4db4}
+    \x{4db5}     
+ 0: \x{4db5}
     ** Failers
 No match
     a 
 No match
     \x{2b0}
 No match
+    \x{4db6} 
+No match
   
 /^\p{Lt}/8
     \x{1c5}
@@ -538,10 +550,10 @@ No match
 
 /[\p{L}]/D
 ------------------------------------------------------------------
-  0  10 Bra 0
+  0  11 Bra 0
   3     [\p{L}]
- 10  10 Ket
- 13     End
+ 11  11 Ket
+ 14     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 No options
@@ -550,10 +562,10 @@ No need char
 
 /[\p{^L}]/D
 ------------------------------------------------------------------
-  0  10 Bra 0
+  0  11 Bra 0
   3     [\P{L}]
- 10  10 Ket
- 13     End
+ 11  11 Ket
+ 14     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 No options
@@ -562,10 +574,10 @@ No need char
 
 /[\P{L}]/D
 ------------------------------------------------------------------
-  0  10 Bra 0
+  0  11 Bra 0
   3     [\P{L}]
- 10  10 Ket
- 13     End
+ 11  11 Ket
+ 14     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 No options
@@ -574,10 +586,10 @@ No need char
 
 /[\P{^L}]/D
 ------------------------------------------------------------------
-  0  10 Bra 0
+  0  11 Bra 0
   3     [\p{L}]
- 10  10 Ket
- 13     End
+ 11  11 Ket
+ 14     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 No options
@@ -586,10 +598,10 @@ No need char
 
 /[abc\p{L}\x{0660}]/8D
 ------------------------------------------------------------------
-  0  45 Bra 0
+  0  46 Bra 0
   3     [a-c\p{L}\x{660}]
- 45  45 Ket
- 48     End
+ 46  46 Ket
+ 49     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 Options: utf8
@@ -597,12 +609,12 @@ No first char
 No need char
 
 /[\p{Nd}]/8DM
-Memory allocation (code space): 46
+Memory allocation (code space): 47
 ------------------------------------------------------------------
-  0  10 Bra 0
+  0  11 Bra 0
   3     [\p{Nd}]
- 10  10 Ket
- 13     End
+ 11  11 Ket
+ 14     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 Options: utf8
@@ -612,12 +624,12 @@ No need char
  0: 1
 
 /[\p{Nd}+-]+/8DM
-Memory allocation (code space): 47
+Memory allocation (code space): 48
 ------------------------------------------------------------------
-  0  43 Bra 0
+  0  44 Bra 0
   3     [+\-\p{Nd}]+
- 43  43 Ket
- 46     End
+ 44  44 Ket
+ 47     End
 ------------------------------------------------------------------
 Capturing subpattern count = 0
 Partial matching not supported
@@ -1010,4 +1022,376 @@ No match
  0: A\x{300}\x{301}B\x{300}C
  1: C
     
+/^\p{Han}+/8
+    \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ 0: \x{2e81}\x{3007}\x{2f804}
+    ** Failers
+No match
+    \x{2e7f}  
+No match
+
+/^\P{Katakana}+/8
+    \x{3105}
+ 0: \x{3105}
+    ** Failers
+ 0: ** Failers
+    \x{30ff}  
+No match
+
+/^[\p{Arabic}]/8
+    \x{06e9}
+ 0: \x{6e9}
+    \x{060b}
+ 0: \x{60b}
+    ** Failers
+No match
+    X\x{06e9}   
+No match
+
+/^[\P{Yi}]/8
+    \x{2f800}
+ 0: \x{2f800}
+    ** Failers
+ 0: *
+    \x{a014}
+No match
+    \x{a4c6}   
+No match
+    
+/^\p{Any}X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    X  
+No match
+    
+/^\P{Any}X/8
+    ** Failers
+No match
+    AX
+No match
+    
+/^\p{Any}?X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    ABXYZ   
+No match
+
+/^\P{Any}?X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ 
+No match
+    ABXYZ   
+No match
+
+/^\p{Any}+X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+    XYZ
+No match
+
+/^\P{Any}+X/8
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+    XYZ
+No match
+
+/^\p{Any}*X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+
+/^\P{Any}*X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+
+/^[\p{Any}]X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    X  
+No match
+    
+/^[\P{Any}]X/8
+    ** Failers
+No match
+    AX
+No match
+    
+/^[\p{Any}]?X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    ABXYZ   
+No match
+
+/^[\P{Any}]?X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ 
+No match
+    ABXYZ   
+No match
+
+/^[\p{Any}]+X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+    XYZ
+No match
+
+/^[\P{Any}]+X/8
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+    XYZ
+No match
+
+/^[\p{Any}]*X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+
+/^[\P{Any}]*X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+
+/^\p{Any}{3,5}?/8
+    abcdefgh
+ 0: abc
+    \x{1234}\n\r\x{3456}xyz 
+ 0: \x{1234}\x{0a}\x{0d}
+
+/^\p{Any}{3,5}/8
+    abcdefgh
+ 0: abcde
+    \x{1234}\n\r\x{3456}xyz 
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+
+/^\P{Any}{3,5}?/8
+    ** Failers
+No match
+    abcdefgh
+No match
+    \x{1234}\n\r\x{3456}xyz 
+No match
+
+/^\p{L&}X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     \x{1c5}XY
+ 0: \x{1c5}X
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^[\p{L&}]X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     \x{1c5}XY
+ 0: \x{1c5}X
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^\p{L&}+X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEXypqreX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^[\p{L&}]+X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEXypqreX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^\p{L&}+?X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^[\p{L&}]+?X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^\P{L&}X/8
+     !XY
+ 0: !X
+     \x{1bb}XY
+ 0: \x{1bb}X
+     \x{2b0}XY
+ 0: \x{2b0}X
+     ** Failers
+No match
+     \x{1c5}XY
+No match
+     AXY      
+No match
+
+/^[\P{L&}]X/8
+     !XY
+ 0: !X
+     \x{1bb}XY
+ 0: \x{1bb}X
+     \x{2b0}XY
+ 0: \x{2b0}X
+     ** Failers
+No match
+     \x{1c5}XY
+No match
+     AXY      
+No match
+
 / End of testinput6 /
index 85dd0a634400e3459556512904b37c1438548b0b..13e18bace689404839f689374b3495072a31d622 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /abc/
     abc
  0: abc
@@ -675,7 +673,6 @@ No match
 /^(a*\w|ab)=(?1)/
     ab=ab
  0: ab=ab
- 1: ab=a
 
 /^([^()]|\((?1)*\))*$/
     abc
@@ -983,13 +980,13 @@ Partial match: abc
 /(?<=foo)bar/
    xyzfo\P 
 No match
-   foob\R\P\>2 
+   foob\P\>2 
 Partial match: b
    foobar...\R\P\>4 
  0: ar
    xyzfo\P
 No match
-   foobar\R\>2  
+   foobar\>2  
  0: bar
    *** Failers
 No match
@@ -6514,4 +6511,16 @@ No match
     line one\nthis is a line\nbreak in the second line 
 No match
 
+/1234/
+    123\P
+Partial match: 123
+    a4\P\R
+No match
+
+/1234/
+    123\P
+Partial match: 123
+    4\P\R
+ 0: 4
+
 / End of testinput7 /
index eb585ad1ae699eebd83c5ed928e5103e695da4a2..72e7673f560c1498494741a6c82d917910cb3d05 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /-- Do not use the \x{} construct except with patterns that have the --/
 /-- /8 option set, because PCRE doesn't recognize them as UTF-8 unless --/
 No match
index f7b46611d05a30dda21ac6c157ec27b5ff279386..000e2b98820bd4703086c46770fd2430670cf325 100644 (file)
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
 /\pL\P{Nd}/8
     AB
  0: AB
@@ -1231,4 +1229,399 @@ No match
     \x{101} 
  0: \x{101}
     
+/^\p{Han}+/8
+    \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ 0: \x{2e81}\x{3007}\x{2f804}
+ 1: \x{2e81}\x{3007}
+ 2: \x{2e81}
+    ** Failers
+No match
+    \x{2e7f}  
+No match
+
+/^\P{Katakana}+/8
+    \x{3105}
+ 0: \x{3105}
+    ** Failers
+ 0: ** Failers
+ 1: ** Failer
+ 2: ** Faile
+ 3: ** Fail
+ 4: ** Fai
+ 5: ** Fa
+ 6: ** F
+ 7: ** 
+ 8: **
+ 9: *
+    \x{30ff}  
+No match
+
+/^[\p{Arabic}]/8
+    \x{06e9}
+ 0: \x{6e9}
+    \x{060b}
+ 0: \x{60b}
+    ** Failers
+No match
+    X\x{06e9}   
+No match
+
+/^[\P{Yi}]/8
+    \x{2f800}
+ 0: \x{2f800}
+    ** Failers
+ 0: *
+    \x{a014}
+No match
+    \x{a4c6}   
+No match
+
+/^\p{Any}X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    X  
+No match
+    
+/^\P{Any}X/8
+    ** Failers
+No match
+    AX
+No match
+    
+/^\p{Any}?X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    ABXYZ   
+No match
+
+/^\P{Any}?X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ 
+No match
+    ABXYZ   
+No match
+
+/^\p{Any}+X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+    XYZ
+No match
+
+/^\P{Any}+X/8
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+    XYZ
+No match
+
+/^\p{Any}*X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+
+/^\P{Any}*X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+
+/^[\p{Any}]X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    X  
+No match
+    
+/^[\P{Any}]X/8
+    ** Failers
+No match
+    AX
+No match
+    
+/^[\p{Any}]?X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ 
+ 0: \x{1234}X
+    ** Failers
+No match
+    ABXYZ   
+No match
+
+/^[\P{Any}]?X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ 
+No match
+    ABXYZ   
+No match
+
+/^[\p{Any}]+X/8
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+    XYZ
+No match
+
+/^[\P{Any}]+X/8
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+    XYZ
+No match
+
+/^[\p{Any}]*X/8
+    XYZ
+ 0: X
+    AXYZ
+ 0: AX
+    \x{1234}XYZ
+ 0: \x{1234}X
+    A\x{1234}XYZ
+ 0: A\x{1234}X
+    ** Failers
+No match
+
+/^[\P{Any}]*X/8
+    XYZ
+ 0: X
+    ** Failers
+No match
+    AXYZ
+No match
+    \x{1234}XYZ
+No match
+    A\x{1234}XYZ
+No match
+
+/^\p{Any}{3,5}?/8
+    abcdefgh
+ 0: abcde
+ 1: abcd
+ 2: abc
+    \x{1234}\n\r\x{3456}xyz 
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+ 1: \x{1234}\x{0a}\x{0d}\x{3456}
+ 2: \x{1234}\x{0a}\x{0d}
+
+/^\p{Any}{3,5}/8
+    abcdefgh
+ 0: abcde
+ 1: abcd
+ 2: abc
+    \x{1234}\n\r\x{3456}xyz 
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+ 1: \x{1234}\x{0a}\x{0d}\x{3456}
+ 2: \x{1234}\x{0a}\x{0d}
+
+/^\P{Any}{3,5}?/8
+    ** Failers
+No match
+    abcdefgh
+No match
+    \x{1234}\n\r\x{3456}xyz 
+No match
+
+/^\p{L&}X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     \x{1c5}XY
+ 0: \x{1c5}X
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^[\p{L&}]X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     \x{1c5}XY
+ 0: \x{1c5}X
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^\p{L&}+X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEXypqreX
+ 1: abcDEX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^[\p{L&}]+X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEXypqreX
+ 1: abcDEX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^\p{L&}+?X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEXypqreX
+ 1: abcDEX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^[\p{L&}]+?X/8
+     AXY
+ 0: AX
+     aXY
+ 0: aX
+     AbcdeXyz 
+ 0: AbcdeX
+     \x{1c5}AbXY
+ 0: \x{1c5}AbX
+     abcDEXypqreXlmn 
+ 0: abcDEXypqreX
+ 1: abcDEX
+     ** Failers
+No match
+     \x{1bb}XY
+No match
+     \x{2b0}XY
+No match
+     !XY      
+No match
+
+/^\P{L&}X/8
+     !XY
+ 0: !X
+     \x{1bb}XY
+ 0: \x{1bb}X
+     \x{2b0}XY
+ 0: \x{2b0}X
+     ** Failers
+No match
+     \x{1c5}XY
+No match
+     AXY      
+No match
+
+/^[\P{L&}]X/8
+     !XY
+ 0: !X
+     \x{1bb}XY
+ 0: \x{1bb}X
+     \x{2b0}XY
+ 0: \x{2b0}X
+     ** Failers
+No match
+     \x{1c5}XY
+No match
+     AXY      
+No match
+
 / End / 
index 955e104a6a84191faf41cafd831b456e1e6d2e12..1ca23c9c10c5cae1add94412be94852ea0101999 100644 (file)
@@ -1,12 +1,14 @@
 /*************************************************
-*     libucp - Unicode Property Table handler    *
+*          Unicode Property Table handler        *
 *************************************************/
 
-
 #ifndef _UCP_H
 #define _UCP_H
 
-/* These are the character categories that are returned by ucp_findchar */
+/* This file contains definitions of the property values that are returned by
+the function _pcre_ucp_findprop(). */
+
+/* These are the general character categories. */
 
 enum {
   ucp_C,     /* Other */
@@ -18,7 +20,7 @@ enum {
   ucp_Z      /* Separator */
 };
 
-/* These are the detailed character types that are returned by ucp_findchar */
+/* These are the particular character types. */
 
 enum {
   ucp_Cc,    /* Control */
@@ -53,7 +55,71 @@ enum {
   ucp_Zs     /* Space separator */
 };
 
-extern int ucp_findchar(const int, int *, int *);
+/* These are the script identifications. */
+
+enum {
+  ucp_Arabic,
+  ucp_Armenian,
+  ucp_Bengali,
+  ucp_Bopomofo,
+  ucp_Braille,
+  ucp_Buginese,
+  ucp_Buhid,
+  ucp_Canadian_Aboriginal,
+  ucp_Cherokee,
+  ucp_Common,
+  ucp_Coptic,
+  ucp_Cypriot,
+  ucp_Cyrillic,
+  ucp_Deseret,
+  ucp_Devanagari,
+  ucp_Ethiopic,
+  ucp_Georgian,
+  ucp_Glagolitic,
+  ucp_Gothic,
+  ucp_Greek,
+  ucp_Gujarati,
+  ucp_Gurmukhi,
+  ucp_Han,
+  ucp_Hangul,
+  ucp_Hanunoo,
+  ucp_Hebrew,
+  ucp_Hiragana,
+  ucp_Inherited,
+  ucp_Kannada,
+  ucp_Katakana,
+  ucp_Kharoshthi,
+  ucp_Khmer,
+  ucp_Lao,
+  ucp_Latin,
+  ucp_Limbu,
+  ucp_Linear_B,
+  ucp_Malayalam,
+  ucp_Mongolian,
+  ucp_Myanmar,
+  ucp_New_Tai_Lue,
+  ucp_Ogham,
+  ucp_Old_Italic,
+  ucp_Old_Persian,
+  ucp_Oriya,
+  ucp_Osmanya,
+  ucp_Runic,
+  ucp_Shavian,
+  ucp_Sinhala,
+  ucp_Syloti_Nagri,
+  ucp_Syriac,
+  ucp_Tagalog,
+  ucp_Tagbanwa,
+  ucp_Tai_Le,
+  ucp_Tamil,
+  ucp_Telugu,
+  ucp_Thaana,
+  ucp_Thai,
+  ucp_Tibetan,
+  ucp_Tifinagh,
+  ucp_Ugaritic,
+  ucp_Yi
+};
 
 #endif
 
diff --git a/ext/pcre/pcrelib/ucp_findchar.c b/ext/pcre/pcrelib/ucp_findchar.c
deleted file mode 100644 (file)
index 1f45117..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/*************************************************
-*     libucp - Unicode Property Table handler    *
-*************************************************/
-
-/* Copyright (c) University of Cambridge 2004 */
-
-/* This little library provides a fast way of obtaining the basic Unicode
-properties of a character, using a compact binary tree that occupies less than
-100K bytes.
-
------------------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-    * Neither the name of the University of Cambridge nor the names of its
-      contributors may be used to endorse or promote products derived from
-      this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
-*/
-
-
-#include "ucp.h"               /* Exported interface */
-#include "ucpinternal.h"       /* Internal table details */
-#include "ucptable.c"          /* The table itself */
-
-
-/* In some environments, external functions have to be preceded by some magic.
-In my world (Unix), they do not. Use a macro to deal with this. */
-
-#ifndef EXPORT
-#define EXPORT
-#endif
-
-
-
-/*************************************************
-*         Search table and return data           *
-*************************************************/
-
-/* Two values are returned: the category is ucp_C, ucp_L, etc. The detailed
-character type is ucp_Lu, ucp_Nd, etc.
-
-Arguments:
-  c           the character value
-  type_ptr    the detailed character type is returned here
-  case_ptr    for letters, the opposite case is returned here, if there
-                is one, else zero
-
-Returns:      the character type category or -1 if not found
-*/
-
-EXPORT int
-ucp_findchar(const int c, int *type_ptr, int *case_ptr)
-{
-cnode *node = ucp_table;
-register int cc = c;
-int case_offset;
-
-for (;;)
-  {
-  register int d = node->f1 | ((node->f0 & f0_chhmask) << 16);
-  if (cc == d) break;
-  if (cc < d)
-    {
-    if ((node->f0 & f0_leftexists) == 0) return -1;
-    node ++;
-    }
-  else
-    {
-    register int roffset = (node->f2 & f2_rightmask) >> f2_rightshift;
-    if (roffset == 0) return -1;
-    node += 1 << (roffset - 1);
-    }
-  }
-
-switch ((*type_ptr = ((node->f0 & f0_typemask) >> f0_typeshift)))
-  {
-  case ucp_Cc:
-  case ucp_Cf:
-  case ucp_Cn:
-  case ucp_Co:
-  case ucp_Cs:
-  return ucp_C;
-  break;
-
-  case ucp_Ll:
-  case ucp_Lu:
-  case_offset = node->f2 & f2_casemask;
-  if ((case_offset & 0x0100) != 0) case_offset |= 0xfffff000;
-  *case_ptr = (case_offset == 0)? 0 : cc + case_offset;
-  return ucp_L;
-
-  case ucp_Lm:
-  case ucp_Lo:
-  case ucp_Lt:
-  *case_ptr = 0;
-  return ucp_L;
-  break;
-
-  case ucp_Mc:
-  case ucp_Me:
-  case ucp_Mn:
-  return ucp_M;
-  break;
-
-  case ucp_Nd:
-  case ucp_Nl:
-  case ucp_No:
-  return ucp_N;
-  break;
-
-  case ucp_Pc:
-  case ucp_Pd:
-  case ucp_Pe:
-  case ucp_Pf:
-  case ucp_Pi:
-  case ucp_Ps:
-  case ucp_Po:
-  return ucp_P;
-  break;
-
-  case ucp_Sc:
-  case ucp_Sk:
-  case ucp_Sm:
-  case ucp_So:
-  return ucp_S;
-  break;
-
-  case ucp_Zl:
-  case ucp_Zp:
-  case ucp_Zs:
-  return ucp_Z;
-  break;
-
-  default:         /* "Should never happen" */
-  return -1;
-  break;
-  }
-}
-
-/* End of ucp_findchar.c */
index faefb030c9f613e1356882694552009cfc89431a..16dfbe9b0f7eeaeb1fdc88a3e4a567845e15b07f 100644 (file)
@@ -1,91 +1,87 @@
 /*************************************************
-*     libucp - Unicode Property Table handler    *
+*           Unicode Property Table handler       *
 *************************************************/
 
-/* Internal header file defining the layout of compact nodes in the tree. */
+/* Internal header file defining the layout of the bits in each pair of 32-bit
+words that form a data item in the table. */
 
 typedef struct cnode {
-  unsigned short int f0;
-  unsigned short int f1;
-  unsigned short int f2;
+  pcre_uint32 f0;
+  pcre_uint32 f1;
 } cnode;
 
 /* Things for the f0 field */
 
-#define f0_leftexists   0x8000    /* Left child exists */
-#define f0_typemask     0x3f00    /* Type bits */
-#define f0_typeshift         8    /* Type shift */
-#define f0_chhmask      0x00ff    /* Character high bits */
+#define f0_scriptmask   0xff000000  /* Mask for script field */
+#define f0_scriptshift          24  /* Shift for script value */
+#define f0_rangeflag    0x00f00000  /* Flag for a range item */
+#define f0_charmask     0x001fffff  /* Mask for code point value */
 
-/* Things for the f2 field */
+/* Things for the f1 field */
 
-#define f2_rightmask    0xf000    /* Mask for right offset bits */
-#define f2_rightshift       12    /* Shift for right offset */
-#define f2_casemask     0x0fff    /* Mask for case offset */
+#define f1_typemask     0xfc000000  /* Mask for char type field */
+#define f1_typeshift            26  /* Shift for the type field */
+#define f1_rangemask    0x0000ffff  /* Mask for a range offset */
+#define f1_casemask     0x0000ffff  /* Mask for a case offset */
+#define f1_caseneg      0xffff8000  /* Bits for negation */
 
-/* The tree consists of a vector of structures of type cnode, with the root
-node as the first element. The three short ints (16-bits) are used as follows:
+/* The data consists of a vector of structures of type cnode. The two unsigned
+32-bit integers are used as follows:
 
-(f0) (1) The 0x8000 bit of f0 is set if a left child exists. The child's node
-         is the next node in the vector.
-     (2) The 0x4000 bits of f0 is spare.
-     (3) The 0x3f00 bits of f0 contain the character type; this is a number
-         defined by the enumeration in ucp.h (e.g. ucp_Lu).
-     (4) The bottom 8 bits of f0 contain the most significant byte of the
-         character's 24-bit codepoint.
+(f0) (1) The most significant byte holds the script number. The numbers are
+         defined by the enum in ucp.h.
 
-(f1) (1) The f1 field contains the two least significant bytes of the
-         codepoint.
+     (2) The 0x00800000 bit is set if this entry defines a range of characters.
+         It is not set if this entry defines a single character
 
-(f2) (1) The 0xf000 bits of f2 contain zero if there is no right child of this
-         node. Otherwise, they contain one plus the exponent of the power of
-         two of the offset to the right node (e.g. a value of 3 means 8). The
-         units of the offset are node items.
+     (3) The 0x00600000 bits are spare.
 
-     (2) The 0x0fff bits of f2 contain the signed offset from this character to
-         its alternate cased value. They are zero if there is no such
-         character.
+     (4) The 0x001fffff bits contain the code point. No Unicode code point will
+         ever be greater than 0x0010ffff, so this should be OK for ever.
 
+(f1) (1) The 0xfc000000 bits contain the character type number. The numbers are
+         defined by an enum in ucp.h.
 
------------------------------------------------------------------------------
-||.|.| type (6) | ms char (8) ||  ls char (16)  ||....|  case offset (12)  ||
------------------------------------------------------------------------------
-  | |                                              |
-  | |-> spare                                      |
-  |                                        exponent of right
-  |-> left child exists                       child offset
+     (2) The 0x03ff0000 bits are spare.
 
+     (3) The 0x0000ffff bits contain EITHER the unsigned offset to the top of
+         range if this entry defines a range, OR the *signed* offset to the
+         character's "other case" partner if this entry defines a single
+         character. There is no partner if the value is zero.
 
-The upper/lower casing information is set only for characters that come in
-pairs. There are (at present) four non-one-to-one mappings in the Unicode data.
-These are ignored. They are:
+-------------------------------------------------------------------------------
+| script (8) |.|.|.| codepoint (21) || type (6) |.|.| spare (8) | offset (16) |
+-------------------------------------------------------------------------------
+              | | |                              | |
+              | | |-> spare                      | |-> spare
+              | |                                |
+              | |-> spare                        |-> spare
+              |
+              |-> range flag
 
-  1FBE Greek Prosgegrammeni (lower, with upper -> capital iota)
-  2126 Ohm
-  212A Kelvin
-  212B Angstrom
+The upper/lower casing information is set only for characters that come in
+pairs. The non-one-to-one mappings in the Unicode data are ignored.
 
-Certainly for the last three, having an alternate case would seem to be a
-mistake. I don't know any Greek, so cannot comment on the first one.
+When searching the data, proceed as follows:
 
+(1) Set up for a binary chop search.
 
-When searching the tree, proceed as follows:
+(2) If the top is not greater than the bottom, the character is not in the
+    table. Its type must therefore be "Cn" ("Undefined").
 
-(1) Start at the first node.
+(3) Find the middle vector element.
 
-(2) Extract the character value from f1 and the bottom 8 bits of f0;
+(4) Extract the code point and compare. If equal, we are done.
 
-(3) Compare with the character being sought. If equal, we are done.
+(5) If the test character is smaller, set the top to the current point, and
+    goto (2).
 
-(4) If the test character is smaller, inspect the f0_leftexists flag. If it is
-    not set, the character is not in the tree. If it is set, move to the next
-    node, and go to (2).
+(6) If the current entry defines a range, compute the last character by adding
+    the offset, and see if the test character is within the range. If it is,
+    we are done.
 
-(5) If the test character is bigger, extract the f2_rightmask bits from f2, and
-    shift them right by f2_rightshift. If the result is zero, the character is
-    not in the tree. Otherwise, calculate the number of nodes to skip by
-    shifting the value 1 left by this number minus one. Go to (2).
+(7) Otherwise, set the bottom to one element past the current point and goto
+    (2).
 */
 
-
-/* End of internal.h */
+/* End of ucpinternal.h */
index 7fb3a12343294a0e7d12b83935a62d420d4e4e53..ae665b37607936ca969246be62230ae392050b73 100644 (file)
 /* This source module is automatically generated from the Unicode
-property table. See internal.h for a description of the layout. */
+property table. See ucpinternal.h for a description of the layout. */
 
 static cnode ucp_table[] = {
-  { 0x9a00, 0x2f1f, 0xe000 },
-  { 0x8700, 0x1558, 0xd000 },
-  { 0x8700, 0x0a99, 0xc000 },
-  { 0x8500, 0x0435, 0xbfe0 },
-  { 0x8500, 0x01ff, 0xafff },
-  { 0x8500, 0x00ff, 0x9079 },
-  { 0x8000, 0x007f, 0x8000 },
-  { 0x9500, 0x003f, 0x7000 },
-  { 0x8000, 0x001f, 0x6000 },
-  { 0x8000, 0x000f, 0x5000 },
-  { 0x8000, 0x0007, 0x4000 },
-  { 0x8000, 0x0003, 0x3000 },
-  { 0x8000, 0x0001, 0x2000 },
-  { 0x0000, 0x0000, 0x0000 },
-  { 0x0000, 0x0002, 0x0000 },
-  { 0x8000, 0x0005, 0x2000 },
-  { 0x0000, 0x0004, 0x0000 },
-  { 0x0000, 0x0006, 0x0000 },
-  { 0x8000, 0x000b, 0x3000 },
-  { 0x8000, 0x0009, 0x2000 },
-  { 0x0000, 0x0008, 0x0000 },
-  { 0x0000, 0x000a, 0x0000 },
-  { 0x8000, 0x000d, 0x2000 },
-  { 0x0000, 0x000c, 0x0000 },
-  { 0x0000, 0x000e, 0x0000 },
-  { 0x8000, 0x0017, 0x4000 },
-  { 0x8000, 0x0013, 0x3000 },
-  { 0x8000, 0x0011, 0x2000 },
-  { 0x0000, 0x0010, 0x0000 },
-  { 0x0000, 0x0012, 0x0000 },
-  { 0x8000, 0x0015, 0x2000 },
-  { 0x0000, 0x0014, 0x0000 },
-  { 0x0000, 0x0016, 0x0000 },
-  { 0x8000, 0x001b, 0x3000 },
-  { 0x8000, 0x0019, 0x2000 },
-  { 0x0000, 0x0018, 0x0000 },
-  { 0x0000, 0x001a, 0x0000 },
-  { 0x8000, 0x001d, 0x2000 },
-  { 0x0000, 0x001c, 0x0000 },
-  { 0x0000, 0x001e, 0x0000 },
-  { 0x9500, 0x002f, 0x5000 },
-  { 0x9500, 0x0027, 0x4000 },
-  { 0x9500, 0x0023, 0x3000 },
-  { 0x9500, 0x0021, 0x2000 },
-  { 0x1d00, 0x0020, 0x0000 },
-  { 0x1500, 0x0022, 0x0000 },
-  { 0x9500, 0x0025, 0x2000 },
-  { 0x1700, 0x0024, 0x0000 },
-  { 0x1500, 0x0026, 0x0000 },
-  { 0x9900, 0x002b, 0x3000 },
-  { 0x9200, 0x0029, 0x2000 },
-  { 0x1600, 0x0028, 0x0000 },
-  { 0x1500, 0x002a, 0x0000 },
-  { 0x9100, 0x002d, 0x2000 },
-  { 0x1500, 0x002c, 0x0000 },
-  { 0x1500, 0x002e, 0x0000 },
-  { 0x8d00, 0x0037, 0x4000 },
-  { 0x8d00, 0x0033, 0x3000 },
-  { 0x8d00, 0x0031, 0x2000 },
-  { 0x0d00, 0x0030, 0x0000 },
-  { 0x0d00, 0x0032, 0x0000 },
-  { 0x8d00, 0x0035, 0x2000 },
-  { 0x0d00, 0x0034, 0x0000 },
-  { 0x0d00, 0x0036, 0x0000 },
-  { 0x9500, 0x003b, 0x3000 },
-  { 0x8d00, 0x0039, 0x2000 },
-  { 0x0d00, 0x0038, 0x0000 },
-  { 0x1500, 0x003a, 0x0000 },
-  { 0x9900, 0x003d, 0x2000 },
-  { 0x1900, 0x003c, 0x0000 },
-  { 0x1900, 0x003e, 0x0000 },
-  { 0x9000, 0x005f, 0x6000 },
-  { 0x8900, 0x004f, 0x5020 },
-  { 0x8900, 0x0047, 0x4020 },
-  { 0x8900, 0x0043, 0x3020 },
-  { 0x8900, 0x0041, 0x2020 },
-  { 0x1500, 0x0040, 0x0000 },
-  { 0x0900, 0x0042, 0x0020 },
-  { 0x8900, 0x0045, 0x2020 },
-  { 0x0900, 0x0044, 0x0020 },
-  { 0x0900, 0x0046, 0x0020 },
-  { 0x8900, 0x004b, 0x3020 },
-  { 0x8900, 0x0049, 0x2020 },
-  { 0x0900, 0x0048, 0x0020 },
-  { 0x0900, 0x004a, 0x0020 },
-  { 0x8900, 0x004d, 0x2020 },
-  { 0x0900, 0x004c, 0x0020 },
-  { 0x0900, 0x004e, 0x0020 },
-  { 0x8900, 0x0057, 0x4020 },
-  { 0x8900, 0x0053, 0x3020 },
-  { 0x8900, 0x0051, 0x2020 },
-  { 0x0900, 0x0050, 0x0020 },
-  { 0x0900, 0x0052, 0x0020 },
-  { 0x8900, 0x0055, 0x2020 },
-  { 0x0900, 0x0054, 0x0020 },
-  { 0x0900, 0x0056, 0x0020 },
-  { 0x9600, 0x005b, 0x3000 },
-  { 0x8900, 0x0059, 0x2020 },
-  { 0x0900, 0x0058, 0x0020 },
-  { 0x0900, 0x005a, 0x0020 },
-  { 0x9200, 0x005d, 0x2000 },
-  { 0x1500, 0x005c, 0x0000 },
-  { 0x1800, 0x005e, 0x0000 },
-  { 0x8500, 0x006f, 0x5fe0 },
-  { 0x8500, 0x0067, 0x4fe0 },
-  { 0x8500, 0x0063, 0x3fe0 },
-  { 0x8500, 0x0061, 0x2fe0 },
-  { 0x1800, 0x0060, 0x0000 },
-  { 0x0500, 0x0062, 0x0fe0 },
-  { 0x8500, 0x0065, 0x2fe0 },
-  { 0x0500, 0x0064, 0x0fe0 },
-  { 0x0500, 0x0066, 0x0fe0 },
-  { 0x8500, 0x006b, 0x3fe0 },
-  { 0x8500, 0x0069, 0x2fe0 },
-  { 0x0500, 0x0068, 0x0fe0 },
-  { 0x0500, 0x006a, 0x0fe0 },
-  { 0x8500, 0x006d, 0x2fe0 },
-  { 0x0500, 0x006c, 0x0fe0 },
-  { 0x0500, 0x006e, 0x0fe0 },
-  { 0x8500, 0x0077, 0x4fe0 },
-  { 0x8500, 0x0073, 0x3fe0 },
-  { 0x8500, 0x0071, 0x2fe0 },
-  { 0x0500, 0x0070, 0x0fe0 },
-  { 0x0500, 0x0072, 0x0fe0 },
-  { 0x8500, 0x0075, 0x2fe0 },
-  { 0x0500, 0x0074, 0x0fe0 },
-  { 0x0500, 0x0076, 0x0fe0 },
-  { 0x9600, 0x007b, 0x3000 },
-  { 0x8500, 0x0079, 0x2fe0 },
-  { 0x0500, 0x0078, 0x0fe0 },
-  { 0x0500, 0x007a, 0x0fe0 },
-  { 0x9200, 0x007d, 0x2000 },
-  { 0x1900, 0x007c, 0x0000 },
-  { 0x1900, 0x007e, 0x0000 },
-  { 0x9500, 0x00bf, 0x7000 },
-  { 0x8000, 0x009f, 0x6000 },
-  { 0x8000, 0x008f, 0x5000 },
-  { 0x8000, 0x0087, 0x4000 },
-  { 0x8000, 0x0083, 0x3000 },
-  { 0x8000, 0x0081, 0x2000 },
-  { 0x0000, 0x0080, 0x0000 },
-  { 0x0000, 0x0082, 0x0000 },
-  { 0x8000, 0x0085, 0x2000 },
-  { 0x0000, 0x0084, 0x0000 },
-  { 0x0000, 0x0086, 0x0000 },
-  { 0x8000, 0x008b, 0x3000 },
-  { 0x8000, 0x0089, 0x2000 },
-  { 0x0000, 0x0088, 0x0000 },
-  { 0x0000, 0x008a, 0x0000 },
-  { 0x8000, 0x008d, 0x2000 },
-  { 0x0000, 0x008c, 0x0000 },
-  { 0x0000, 0x008e, 0x0000 },
-  { 0x8000, 0x0097, 0x4000 },
-  { 0x8000, 0x0093, 0x3000 },
-  { 0x8000, 0x0091, 0x2000 },
-  { 0x0000, 0x0090, 0x0000 },
-  { 0x0000, 0x0092, 0x0000 },
-  { 0x8000, 0x0095, 0x2000 },
-  { 0x0000, 0x0094, 0x0000 },
-  { 0x0000, 0x0096, 0x0000 },
-  { 0x8000, 0x009b, 0x3000 },
-  { 0x8000, 0x0099, 0x2000 },
-  { 0x0000, 0x0098, 0x0000 },
-  { 0x0000, 0x009a, 0x0000 },
-  { 0x8000, 0x009d, 0x2000 },
-  { 0x0000, 0x009c, 0x0000 },
-  { 0x0000, 0x009e, 0x0000 },
-  { 0x9800, 0x00af, 0x5000 },
-  { 0x9a00, 0x00a7, 0x4000 },
-  { 0x9700, 0x00a3, 0x3000 },
-  { 0x9500, 0x00a1, 0x2000 },
-  { 0x1d00, 0x00a0, 0x0000 },
-  { 0x1700, 0x00a2, 0x0000 },
-  { 0x9700, 0x00a5, 0x2000 },
-  { 0x1700, 0x00a4, 0x0000 },
-  { 0x1a00, 0x00a6, 0x0000 },
-  { 0x9400, 0x00ab, 0x3000 },
-  { 0x9a00, 0x00a9, 0x2000 },
-  { 0x1800, 0x00a8, 0x0000 },
-  { 0x0500, 0x00aa, 0x0000 },
-  { 0x8100, 0x00ad, 0x2000 },
-  { 0x1900, 0x00ac, 0x0000 },
-  { 0x1a00, 0x00ae, 0x0000 },
-  { 0x9500, 0x00b7, 0x4000 },
-  { 0x8f00, 0x00b3, 0x3000 },
-  { 0x9900, 0x00b1, 0x2000 },
-  { 0x1a00, 0x00b0, 0x0000 },
-  { 0x0f00, 0x00b2, 0x0000 },
-  { 0x8500, 0x00b5, 0x22e7 },
-  { 0x1800, 0x00b4, 0x0000 },
-  { 0x1a00, 0x00b6, 0x0000 },
-  { 0x9300, 0x00bb, 0x3000 },
-  { 0x8f00, 0x00b9, 0x2000 },
-  { 0x1800, 0x00b8, 0x0000 },
-  { 0x0500, 0x00ba, 0x0000 },
-  { 0x8f00, 0x00bd, 0x2000 },
-  { 0x0f00, 0x00bc, 0x0000 },
-  { 0x0f00, 0x00be, 0x0000 },
-  { 0x8500, 0x00df, 0x6000 },
-  { 0x8900, 0x00cf, 0x5020 },
-  { 0x8900, 0x00c7, 0x4020 },
-  { 0x8900, 0x00c3, 0x3020 },
-  { 0x8900, 0x00c1, 0x2020 },
-  { 0x0900, 0x00c0, 0x0020 },
-  { 0x0900, 0x00c2, 0x0020 },
-  { 0x8900, 0x00c5, 0x2020 },
-  { 0x0900, 0x00c4, 0x0020 },
-  { 0x0900, 0x00c6, 0x0020 },
-  { 0x8900, 0x00cb, 0x3020 },
-  { 0x8900, 0x00c9, 0x2020 },
-  { 0x0900, 0x00c8, 0x0020 },
-  { 0x0900, 0x00ca, 0x0020 },
-  { 0x8900, 0x00cd, 0x2020 },
-  { 0x0900, 0x00cc, 0x0020 },
-  { 0x0900, 0x00ce, 0x0020 },
-  { 0x9900, 0x00d7, 0x4000 },
-  { 0x8900, 0x00d3, 0x3020 },
-  { 0x8900, 0x00d1, 0x2020 },
-  { 0x0900, 0x00d0, 0x0020 },
-  { 0x0900, 0x00d2, 0x0020 },
-  { 0x8900, 0x00d5, 0x2020 },
-  { 0x0900, 0x00d4, 0x0020 },
-  { 0x0900, 0x00d6, 0x0020 },
-  { 0x8900, 0x00db, 0x3020 },
-  { 0x8900, 0x00d9, 0x2020 },
-  { 0x0900, 0x00d8, 0x0020 },
-  { 0x0900, 0x00da, 0x0020 },
-  { 0x8900, 0x00dd, 0x2020 },
-  { 0x0900, 0x00dc, 0x0020 },
-  { 0x0900, 0x00de, 0x0020 },
-  { 0x8500, 0x00ef, 0x5fe0 },
-  { 0x8500, 0x00e7, 0x4fe0 },
-  { 0x8500, 0x00e3, 0x3fe0 },
-  { 0x8500, 0x00e1, 0x2fe0 },
-  { 0x0500, 0x00e0, 0x0fe0 },
-  { 0x0500, 0x00e2, 0x0fe0 },
-  { 0x8500, 0x00e5, 0x2fe0 },
-  { 0x0500, 0x00e4, 0x0fe0 },
-  { 0x0500, 0x00e6, 0x0fe0 },
-  { 0x8500, 0x00eb, 0x3fe0 },
-  { 0x8500, 0x00e9, 0x2fe0 },
-  { 0x0500, 0x00e8, 0x0fe0 },
-  { 0x0500, 0x00ea, 0x0fe0 },
-  { 0x8500, 0x00ed, 0x2fe0 },
-  { 0x0500, 0x00ec, 0x0fe0 },
-  { 0x0500, 0x00ee, 0x0fe0 },
-  { 0x9900, 0x00f7, 0x4000 },
-  { 0x8500, 0x00f3, 0x3fe0 },
-  { 0x8500, 0x00f1, 0x2fe0 },
-  { 0x0500, 0x00f0, 0x0fe0 },
-  { 0x0500, 0x00f2, 0x0fe0 },
-  { 0x8500, 0x00f5, 0x2fe0 },
-  { 0x0500, 0x00f4, 0x0fe0 },
-  { 0x0500, 0x00f6, 0x0fe0 },
-  { 0x8500, 0x00fb, 0x3fe0 },
-  { 0x8500, 0x00f9, 0x2fe0 },
-  { 0x0500, 0x00f8, 0x0fe0 },
-  { 0x0500, 0x00fa, 0x0fe0 },
-  { 0x8500, 0x00fd, 0x2fe0 },
-  { 0x0500, 0x00fc, 0x0fe0 },
-  { 0x0500, 0x00fe, 0x0fe0 },
-  { 0x8500, 0x017f, 0x8ed4 },
-  { 0x8900, 0x013f, 0x7001 },
-  { 0x8500, 0x011f, 0x6fff },
-  { 0x8500, 0x010f, 0x5fff },
-  { 0x8500, 0x0107, 0x4fff },
-  { 0x8500, 0x0103, 0x3fff },
-  { 0x8500, 0x0101, 0x2fff },
-  { 0x0900, 0x0100, 0x0001 },
-  { 0x0900, 0x0102, 0x0001 },
-  { 0x8500, 0x0105, 0x2fff },
-  { 0x0900, 0x0104, 0x0001 },
-  { 0x0900, 0x0106, 0x0001 },
-  { 0x8500, 0x010b, 0x3fff },
-  { 0x8500, 0x0109, 0x2fff },
-  { 0x0900, 0x0108, 0x0001 },
-  { 0x0900, 0x010a, 0x0001 },
-  { 0x8500, 0x010d, 0x2fff },
-  { 0x0900, 0x010c, 0x0001 },
-  { 0x0900, 0x010e, 0x0001 },
-  { 0x8500, 0x0117, 0x4fff },
-  { 0x8500, 0x0113, 0x3fff },
-  { 0x8500, 0x0111, 0x2fff },
-  { 0x0900, 0x0110, 0x0001 },
-  { 0x0900, 0x0112, 0x0001 },
-  { 0x8500, 0x0115, 0x2fff },
-  { 0x0900, 0x0114, 0x0001 },
-  { 0x0900, 0x0116, 0x0001 },
-  { 0x8500, 0x011b, 0x3fff },
-  { 0x8500, 0x0119, 0x2fff },
-  { 0x0900, 0x0118, 0x0001 },
-  { 0x0900, 0x011a, 0x0001 },
-  { 0x8500, 0x011d, 0x2fff },
-  { 0x0900, 0x011c, 0x0001 },
-  { 0x0900, 0x011e, 0x0001 },
-  { 0x8500, 0x012f, 0x5fff },
-  { 0x8500, 0x0127, 0x4fff },
-  { 0x8500, 0x0123, 0x3fff },
-  { 0x8500, 0x0121, 0x2fff },
-  { 0x0900, 0x0120, 0x0001 },
-  { 0x0900, 0x0122, 0x0001 },
-  { 0x8500, 0x0125, 0x2fff },
-  { 0x0900, 0x0124, 0x0001 },
-  { 0x0900, 0x0126, 0x0001 },
-  { 0x8500, 0x012b, 0x3fff },
-  { 0x8500, 0x0129, 0x2fff },
-  { 0x0900, 0x0128, 0x0001 },
-  { 0x0900, 0x012a, 0x0001 },
-  { 0x8500, 0x012d, 0x2fff },
-  { 0x0900, 0x012c, 0x0001 },
-  { 0x0900, 0x012e, 0x0001 },
-  { 0x8500, 0x0137, 0x4fff },
-  { 0x8500, 0x0133, 0x3fff },
-  { 0x8500, 0x0131, 0x2f18 },
-  { 0x0900, 0x0130, 0x0f39 },
-  { 0x0900, 0x0132, 0x0001 },
-  { 0x8500, 0x0135, 0x2fff },
-  { 0x0900, 0x0134, 0x0001 },
-  { 0x0900, 0x0136, 0x0001 },
-  { 0x8900, 0x013b, 0x3001 },
-  { 0x8900, 0x0139, 0x2001 },
-  { 0x0500, 0x0138, 0x0000 },
-  { 0x0500, 0x013a, 0x0fff },
-  { 0x8900, 0x013d, 0x2001 },
-  { 0x0500, 0x013c, 0x0fff },
-  { 0x0500, 0x013e, 0x0fff },
-  { 0x8500, 0x015f, 0x6fff },
-  { 0x8500, 0x014f, 0x5fff },
-  { 0x8900, 0x0147, 0x4001 },
-  { 0x8900, 0x0143, 0x3001 },
-  { 0x8900, 0x0141, 0x2001 },
-  { 0x0500, 0x0140, 0x0fff },
-  { 0x0500, 0x0142, 0x0fff },
-  { 0x8900, 0x0145, 0x2001 },
-  { 0x0500, 0x0144, 0x0fff },
-  { 0x0500, 0x0146, 0x0fff },
-  { 0x8500, 0x014b, 0x3fff },
-  { 0x8500, 0x0149, 0x2000 },
-  { 0x0500, 0x0148, 0x0fff },
-  { 0x0900, 0x014a, 0x0001 },
-  { 0x8500, 0x014d, 0x2fff },
-  { 0x0900, 0x014c, 0x0001 },
-  { 0x0900, 0x014e, 0x0001 },
-  { 0x8500, 0x0157, 0x4fff },
-  { 0x8500, 0x0153, 0x3fff },
-  { 0x8500, 0x0151, 0x2fff },
-  { 0x0900, 0x0150, 0x0001 },
-  { 0x0900, 0x0152, 0x0001 },
-  { 0x8500, 0x0155, 0x2fff },
-  { 0x0900, 0x0154, 0x0001 },
-  { 0x0900, 0x0156, 0x0001 },
-  { 0x8500, 0x015b, 0x3fff },
-  { 0x8500, 0x0159, 0x2fff },
-  { 0x0900, 0x0158, 0x0001 },
-  { 0x0900, 0x015a, 0x0001 },
-  { 0x8500, 0x015d, 0x2fff },
-  { 0x0900, 0x015c, 0x0001 },
-  { 0x0900, 0x015e, 0x0001 },
-  { 0x8500, 0x016f, 0x5fff },
-  { 0x8500, 0x0167, 0x4fff },
-  { 0x8500, 0x0163, 0x3fff },
-  { 0x8500, 0x0161, 0x2fff },
-  { 0x0900, 0x0160, 0x0001 },
-  { 0x0900, 0x0162, 0x0001 },
-  { 0x8500, 0x0165, 0x2fff },
-  { 0x0900, 0x0164, 0x0001 },
-  { 0x0900, 0x0166, 0x0001 },
-  { 0x8500, 0x016b, 0x3fff },
-  { 0x8500, 0x0169, 0x2fff },
-  { 0x0900, 0x0168, 0x0001 },
-  { 0x0900, 0x016a, 0x0001 },
-  { 0x8500, 0x016d, 0x2fff },
-  { 0x0900, 0x016c, 0x0001 },
-  { 0x0900, 0x016e, 0x0001 },
-  { 0x8500, 0x0177, 0x4fff },
-  { 0x8500, 0x0173, 0x3fff },
-  { 0x8500, 0x0171, 0x2fff },
-  { 0x0900, 0x0170, 0x0001 },
-  { 0x0900, 0x0172, 0x0001 },
-  { 0x8500, 0x0175, 0x2fff },
-  { 0x0900, 0x0174, 0x0001 },
-  { 0x0900, 0x0176, 0x0001 },
-  { 0x8900, 0x017b, 0x3001 },
-  { 0x8900, 0x0179, 0x2001 },
-  { 0x0900, 0x0178, 0x0f87 },
-  { 0x0500, 0x017a, 0x0fff },
-  { 0x8900, 0x017d, 0x2001 },
-  { 0x0500, 0x017c, 0x0fff },
-  { 0x0500, 0x017e, 0x0fff },
-  { 0x8500, 0x01bf, 0x7038 },
-  { 0x8900, 0x019f, 0x60d6 },
-  { 0x8900, 0x018f, 0x50ca },
-  { 0x8900, 0x0187, 0x4001 },
-  { 0x8500, 0x0183, 0x3fff },
-  { 0x8900, 0x0181, 0x20d2 },
-  { 0x0500, 0x0180, 0x0000 },
-  { 0x0900, 0x0182, 0x0001 },
-  { 0x8500, 0x0185, 0x2fff },
-  { 0x0900, 0x0184, 0x0001 },
-  { 0x0900, 0x0186, 0x00ce },
-  { 0x8900, 0x018b, 0x3001 },
-  { 0x8900, 0x0189, 0x20cd },
-  { 0x0500, 0x0188, 0x0fff },
-  { 0x0900, 0x018a, 0x00cd },
-  { 0x8500, 0x018d, 0x2000 },
-  { 0x0500, 0x018c, 0x0fff },
-  { 0x0900, 0x018e, 0x004f },
-  { 0x8900, 0x0197, 0x40d1 },
-  { 0x8900, 0x0193, 0x30cd },
-  { 0x8900, 0x0191, 0x2001 },
-  { 0x0900, 0x0190, 0x00cb },
-  { 0x0500, 0x0192, 0x0fff },
-  { 0x8500, 0x0195, 0x2061 },
-  { 0x0900, 0x0194, 0x00cf },
-  { 0x0900, 0x0196, 0x00d3 },
-  { 0x8500, 0x019b, 0x3000 },
-  { 0x8500, 0x0199, 0x2fff },
-  { 0x0900, 0x0198, 0x0001 },
-  { 0x0500, 0x019a, 0x0000 },
-  { 0x8900, 0x019d, 0x20d5 },
-  { 0x0900, 0x019c, 0x00d3 },
-  { 0x0500, 0x019e, 0x0082 },
-  { 0x8900, 0x01af, 0x5001 },
-  { 0x8900, 0x01a7, 0x4001 },
-  { 0x8500, 0x01a3, 0x3fff },
-  { 0x8500, 0x01a1, 0x2fff },
-  { 0x0900, 0x01a0, 0x0001 },
-  { 0x0900, 0x01a2, 0x0001 },
-  { 0x8500, 0x01a5, 0x2fff },
-  { 0x0900, 0x01a4, 0x0001 },
-  { 0x0900, 0x01a6, 0x00da },
-  { 0x8500, 0x01ab, 0x3000 },
-  { 0x8900, 0x01a9, 0x20da },
-  { 0x0500, 0x01a8, 0x0fff },
-  { 0x0500, 0x01aa, 0x0000 },
-  { 0x8500, 0x01ad, 0x2fff },
-  { 0x0900, 0x01ac, 0x0001 },
-  { 0x0900, 0x01ae, 0x00da },
-  { 0x8900, 0x01b7, 0x40db },
-  { 0x8900, 0x01b3, 0x3001 },
-  { 0x8900, 0x01b1, 0x20d9 },
-  { 0x0500, 0x01b0, 0x0fff },
-  { 0x0900, 0x01b2, 0x00d9 },
-  { 0x8900, 0x01b5, 0x2001 },
-  { 0x0500, 0x01b4, 0x0fff },
-  { 0x0500, 0x01b6, 0x0fff },
-  { 0x8700, 0x01bb, 0x3000 },
-  { 0x8500, 0x01b9, 0x2fff },
-  { 0x0900, 0x01b8, 0x0001 },
-  { 0x0500, 0x01ba, 0x0000 },
-  { 0x8500, 0x01bd, 0x2fff },
-  { 0x0900, 0x01bc, 0x0001 },
-  { 0x0500, 0x01be, 0x0000 },
-  { 0x8500, 0x01df, 0x6fff },
-  { 0x8900, 0x01cf, 0x5001 },
-  { 0x8900, 0x01c7, 0x4002 },
-  { 0x8700, 0x01c3, 0x3000 },
-  { 0x8700, 0x01c1, 0x2000 },
-  { 0x0700, 0x01c0, 0x0000 },
-  { 0x0700, 0x01c2, 0x0000 },
-  { 0x8800, 0x01c5, 0x2000 },
-  { 0x0900, 0x01c4, 0x0002 },
-  { 0x0500, 0x01c6, 0x0ffe },
-  { 0x8800, 0x01cb, 0x3000 },
-  { 0x8500, 0x01c9, 0x2ffe },
-  { 0x0800, 0x01c8, 0x0000 },
-  { 0x0900, 0x01ca, 0x0002 },
-  { 0x8900, 0x01cd, 0x2001 },
-  { 0x0500, 0x01cc, 0x0ffe },
-  { 0x0500, 0x01ce, 0x0fff },
-  { 0x8900, 0x01d7, 0x4001 },
-  { 0x8900, 0x01d3, 0x3001 },
-  { 0x8900, 0x01d1, 0x2001 },
-  { 0x0500, 0x01d0, 0x0fff },
-  { 0x0500, 0x01d2, 0x0fff },
-  { 0x8900, 0x01d5, 0x2001 },
-  { 0x0500, 0x01d4, 0x0fff },
-  { 0x0500, 0x01d6, 0x0fff },
-  { 0x8900, 0x01db, 0x3001 },
-  { 0x8900, 0x01d9, 0x2001 },
-  { 0x0500, 0x01d8, 0x0fff },
-  { 0x0500, 0x01da, 0x0fff },
-  { 0x8500, 0x01dd, 0x2fb1 },
-  { 0x0500, 0x01dc, 0x0fff },
-  { 0x0900, 0x01de, 0x0001 },
-  { 0x8500, 0x01ef, 0x5fff },
-  { 0x8500, 0x01e7, 0x4fff },
-  { 0x8500, 0x01e3, 0x3fff },
-  { 0x8500, 0x01e1, 0x2fff },
-  { 0x0900, 0x01e0, 0x0001 },
-  { 0x0900, 0x01e2, 0x0001 },
-  { 0x8500, 0x01e5, 0x2fff },
-  { 0x0900, 0x01e4, 0x0001 },
-  { 0x0900, 0x01e6, 0x0001 },
-  { 0x8500, 0x01eb, 0x3fff },
-  { 0x8500, 0x01e9, 0x2fff },
-  { 0x0900, 0x01e8, 0x0001 },
-  { 0x0900, 0x01ea, 0x0001 },
-  { 0x8500, 0x01ed, 0x2fff },
-  { 0x0900, 0x01ec, 0x0001 },
-  { 0x0900, 0x01ee, 0x0001 },
-  { 0x8900, 0x01f7, 0x4fc8 },
-  { 0x8500, 0x01f3, 0x3ffe },
-  { 0x8900, 0x01f1, 0x2002 },
-  { 0x0500, 0x01f0, 0x0000 },
-  { 0x0800, 0x01f2, 0x0000 },
-  { 0x8500, 0x01f5, 0x2fff },
-  { 0x0900, 0x01f4, 0x0001 },
-  { 0x0900, 0x01f6, 0x0f9f },
-  { 0x8500, 0x01fb, 0x3fff },
-  { 0x8500, 0x01f9, 0x2fff },
-  { 0x0900, 0x01f8, 0x0001 },
-  { 0x0900, 0x01fa, 0x0001 },
-  { 0x8500, 0x01fd, 0x2fff },
-  { 0x0900, 0x01fc, 0x0001 },
-  { 0x0900, 0x01fe, 0x0001 },
-  { 0x8c00, 0x0318, 0x9000 },
-  { 0x8500, 0x0298, 0x8000 },
-  { 0x8500, 0x0258, 0x7000 },
-  { 0x8500, 0x021f, 0x6fff },
-  { 0x8500, 0x020f, 0x5fff },
-  { 0x8500, 0x0207, 0x4fff },
-  { 0x8500, 0x0203, 0x3fff },
-  { 0x8500, 0x0201, 0x2fff },
-  { 0x0900, 0x0200, 0x0001 },
-  { 0x0900, 0x0202, 0x0001 },
-  { 0x8500, 0x0205, 0x2fff },
-  { 0x0900, 0x0204, 0x0001 },
-  { 0x0900, 0x0206, 0x0001 },
-  { 0x8500, 0x020b, 0x3fff },
-  { 0x8500, 0x0209, 0x2fff },
-  { 0x0900, 0x0208, 0x0001 },
-  { 0x0900, 0x020a, 0x0001 },
-  { 0x8500, 0x020d, 0x2fff },
-  { 0x0900, 0x020c, 0x0001 },
-  { 0x0900, 0x020e, 0x0001 },
-  { 0x8500, 0x0217, 0x4fff },
-  { 0x8500, 0x0213, 0x3fff },
-  { 0x8500, 0x0211, 0x2fff },
-  { 0x0900, 0x0210, 0x0001 },
-  { 0x0900, 0x0212, 0x0001 },
-  { 0x8500, 0x0215, 0x2fff },
-  { 0x0900, 0x0214, 0x0001 },
-  { 0x0900, 0x0216, 0x0001 },
-  { 0x8500, 0x021b, 0x3fff },
-  { 0x8500, 0x0219, 0x2fff },
-  { 0x0900, 0x0218, 0x0001 },
-  { 0x0900, 0x021a, 0x0001 },
-  { 0x8500, 0x021d, 0x2fff },
-  { 0x0900, 0x021c, 0x0001 },
-  { 0x0900, 0x021e, 0x0001 },
-  { 0x8500, 0x022f, 0x5fff },
-  { 0x8500, 0x0227, 0x4fff },
-  { 0x8500, 0x0223, 0x3fff },
-  { 0x8500, 0x0221, 0x2000 },
-  { 0x0900, 0x0220, 0x0f7e },
-  { 0x0900, 0x0222, 0x0001 },
-  { 0x8500, 0x0225, 0x2fff },
-  { 0x0900, 0x0224, 0x0001 },
-  { 0x0900, 0x0226, 0x0001 },
-  { 0x8500, 0x022b, 0x3fff },
-  { 0x8500, 0x0229, 0x2fff },
-  { 0x0900, 0x0228, 0x0001 },
-  { 0x0900, 0x022a, 0x0001 },
-  { 0x8500, 0x022d, 0x2fff },
-  { 0x0900, 0x022c, 0x0001 },
-  { 0x0900, 0x022e, 0x0001 },
-  { 0x8500, 0x0250, 0x4000 },
-  { 0x8500, 0x0233, 0x3fff },
-  { 0x8500, 0x0231, 0x2fff },
-  { 0x0900, 0x0230, 0x0001 },
-  { 0x0900, 0x0232, 0x0001 },
-  { 0x8500, 0x0235, 0x2000 },
-  { 0x0500, 0x0234, 0x0000 },
-  { 0x0500, 0x0236, 0x0000 },
-  { 0x8500, 0x0254, 0x3f32 },
-  { 0x8500, 0x0252, 0x2000 },
-  { 0x0500, 0x0251, 0x0000 },
-  { 0x0500, 0x0253, 0x0f2e },
-  { 0x8500, 0x0256, 0x2f33 },
-  { 0x0500, 0x0255, 0x0000 },
-  { 0x0500, 0x0257, 0x0f33 },
-  { 0x8500, 0x0278, 0x6000 },
-  { 0x8500, 0x0268, 0x5f2f },
-  { 0x8500, 0x0260, 0x4f33 },
-  { 0x8500, 0x025c, 0x3000 },
-  { 0x8500, 0x025a, 0x2000 },
-  { 0x0500, 0x0259, 0x0f36 },
-  { 0x0500, 0x025b, 0x0f35 },
-  { 0x8500, 0x025e, 0x2000 },
-  { 0x0500, 0x025d, 0x0000 },
-  { 0x0500, 0x025f, 0x0000 },
-  { 0x8500, 0x0264, 0x3000 },
-  { 0x8500, 0x0262, 0x2000 },
-  { 0x0500, 0x0261, 0x0000 },
-  { 0x0500, 0x0263, 0x0f31 },
-  { 0x8500, 0x0266, 0x2000 },
-  { 0x0500, 0x0265, 0x0000 },
-  { 0x0500, 0x0267, 0x0000 },
-  { 0x8500, 0x0270, 0x4000 },
-  { 0x8500, 0x026c, 0x3000 },
-  { 0x8500, 0x026a, 0x2000 },
-  { 0x0500, 0x0269, 0x0f2d },
-  { 0x0500, 0x026b, 0x0000 },
-  { 0x8500, 0x026e, 0x2000 },
-  { 0x0500, 0x026d, 0x0000 },
-  { 0x0500, 0x026f, 0x0f2d },
-  { 0x8500, 0x0274, 0x3000 },
-  { 0x8500, 0x0272, 0x2f2b },
-  { 0x0500, 0x0271, 0x0000 },
-  { 0x0500, 0x0273, 0x0000 },
-  { 0x8500, 0x0276, 0x2000 },
-  { 0x0500, 0x0275, 0x0f2a },
-  { 0x0500, 0x0277, 0x0000 },
-  { 0x8500, 0x0288, 0x5f26 },
-  { 0x8500, 0x0280, 0x4f26 },
-  { 0x8500, 0x027c, 0x3000 },
-  { 0x8500, 0x027a, 0x2000 },
-  { 0x0500, 0x0279, 0x0000 },
-  { 0x0500, 0x027b, 0x0000 },
-  { 0x8500, 0x027e, 0x2000 },
-  { 0x0500, 0x027d, 0x0000 },
-  { 0x0500, 0x027f, 0x0000 },
-  { 0x8500, 0x0284, 0x3000 },
-  { 0x8500, 0x0282, 0x2000 },
-  { 0x0500, 0x0281, 0x0000 },
-  { 0x0500, 0x0283, 0x0f26 },
-  { 0x8500, 0x0286, 0x2000 },
-  { 0x0500, 0x0285, 0x0000 },
-  { 0x0500, 0x0287, 0x0000 },
-  { 0x8500, 0x0290, 0x4000 },
-  { 0x8500, 0x028c, 0x3000 },
-  { 0x8500, 0x028a, 0x2f27 },
-  { 0x0500, 0x0289, 0x0000 },
-  { 0x0500, 0x028b, 0x0f27 },
-  { 0x8500, 0x028e, 0x2000 },
-  { 0x0500, 0x028d, 0x0000 },
-  { 0x0500, 0x028f, 0x0000 },
-  { 0x8500, 0x0294, 0x3000 },
-  { 0x8500, 0x0292, 0x2f25 },
-  { 0x0500, 0x0291, 0x0000 },
-  { 0x0500, 0x0293, 0x0000 },
-  { 0x8500, 0x0296, 0x2000 },
-  { 0x0500, 0x0295, 0x0000 },
-  { 0x0500, 0x0297, 0x0000 },
-  { 0x9800, 0x02d8, 0x7000 },
-  { 0x8600, 0x02b8, 0x6000 },
-  { 0x8500, 0x02a8, 0x5000 },
-  { 0x8500, 0x02a0, 0x4000 },
-  { 0x8500, 0x029c, 0x3000 },
-  { 0x8500, 0x029a, 0x2000 },
-  { 0x0500, 0x0299, 0x0000 },
-  { 0x0500, 0x029b, 0x0000 },
-  { 0x8500, 0x029e, 0x2000 },
-  { 0x0500, 0x029d, 0x0000 },
-  { 0x0500, 0x029f, 0x0000 },
-  { 0x8500, 0x02a4, 0x3000 },
-  { 0x8500, 0x02a2, 0x2000 },
-  { 0x0500, 0x02a1, 0x0000 },
-  { 0x0500, 0x02a3, 0x0000 },
-  { 0x8500, 0x02a6, 0x2000 },
-  { 0x0500, 0x02a5, 0x0000 },
-  { 0x0500, 0x02a7, 0x0000 },
-  { 0x8600, 0x02b0, 0x4000 },
-  { 0x8500, 0x02ac, 0x3000 },
-  { 0x8500, 0x02aa, 0x2000 },
-  { 0x0500, 0x02a9, 0x0000 },
-  { 0x0500, 0x02ab, 0x0000 },
-  { 0x8500, 0x02ae, 0x2000 },
-  { 0x0500, 0x02ad, 0x0000 },
-  { 0x0500, 0x02af, 0x0000 },
-  { 0x8600, 0x02b4, 0x3000 },
-  { 0x8600, 0x02b2, 0x2000 },
-  { 0x0600, 0x02b1, 0x0000 },
-  { 0x0600, 0x02b3, 0x0000 },
-  { 0x8600, 0x02b6, 0x2000 },
-  { 0x0600, 0x02b5, 0x0000 },
-  { 0x0600, 0x02b7, 0x0000 },
-  { 0x8600, 0x02c8, 0x5000 },
-  { 0x8600, 0x02c0, 0x4000 },
-  { 0x8600, 0x02bc, 0x3000 },
-  { 0x8600, 0x02ba, 0x2000 },
-  { 0x0600, 0x02b9, 0x0000 },
-  { 0x0600, 0x02bb, 0x0000 },
-  { 0x8600, 0x02be, 0x2000 },
-  { 0x0600, 0x02bd, 0x0000 },
-  { 0x0600, 0x02bf, 0x0000 },
-  { 0x9800, 0x02c4, 0x3000 },
-  { 0x9800, 0x02c2, 0x2000 },
-  { 0x0600, 0x02c1, 0x0000 },
-  { 0x1800, 0x02c3, 0x0000 },
-  { 0x8600, 0x02c6, 0x2000 },
-  { 0x1800, 0x02c5, 0x0000 },
-  { 0x0600, 0x02c7, 0x0000 },
-  { 0x8600, 0x02d0, 0x4000 },
-  { 0x8600, 0x02cc, 0x3000 },
-  { 0x8600, 0x02ca, 0x2000 },
-  { 0x0600, 0x02c9, 0x0000 },
-  { 0x0600, 0x02cb, 0x0000 },
-  { 0x8600, 0x02ce, 0x2000 },
-  { 0x0600, 0x02cd, 0x0000 },
-  { 0x0600, 0x02cf, 0x0000 },
-  { 0x9800, 0x02d4, 0x3000 },
-  { 0x9800, 0x02d2, 0x2000 },
-  { 0x0600, 0x02d1, 0x0000 },
-  { 0x1800, 0x02d3, 0x0000 },
-  { 0x9800, 0x02d6, 0x2000 },
-  { 0x1800, 0x02d5, 0x0000 },
-  { 0x1800, 0x02d7, 0x0000 },
-  { 0x9800, 0x02f8, 0x6000 },
-  { 0x9800, 0x02e8, 0x5000 },
-  { 0x8600, 0x02e0, 0x4000 },
-  { 0x9800, 0x02dc, 0x3000 },
-  { 0x9800, 0x02da, 0x2000 },
-  { 0x1800, 0x02d9, 0x0000 },
-  { 0x1800, 0x02db, 0x0000 },
-  { 0x9800, 0x02de, 0x2000 },
-  { 0x1800, 0x02dd, 0x0000 },
-  { 0x1800, 0x02df, 0x0000 },
-  { 0x8600, 0x02e4, 0x3000 },
-  { 0x8600, 0x02e2, 0x2000 },
-  { 0x0600, 0x02e1, 0x0000 },
-  { 0x0600, 0x02e3, 0x0000 },
-  { 0x9800, 0x02e6, 0x2000 },
-  { 0x1800, 0x02e5, 0x0000 },
-  { 0x1800, 0x02e7, 0x0000 },
-  { 0x9800, 0x02f0, 0x4000 },
-  { 0x9800, 0x02ec, 0x3000 },
-  { 0x9800, 0x02ea, 0x2000 },
-  { 0x1800, 0x02e9, 0x0000 },
-  { 0x1800, 0x02eb, 0x0000 },
-  { 0x8600, 0x02ee, 0x2000 },
-  { 0x1800, 0x02ed, 0x0000 },
-  { 0x1800, 0x02ef, 0x0000 },
-  { 0x9800, 0x02f4, 0x3000 },
-  { 0x9800, 0x02f2, 0x2000 },
-  { 0x1800, 0x02f1, 0x0000 },
-  { 0x1800, 0x02f3, 0x0000 },
-  { 0x9800, 0x02f6, 0x2000 },
-  { 0x1800, 0x02f5, 0x0000 },
-  { 0x1800, 0x02f7, 0x0000 },
-  { 0x8c00, 0x0308, 0x5000 },
-  { 0x8c00, 0x0300, 0x4000 },
-  { 0x9800, 0x02fc, 0x3000 },
-  { 0x9800, 0x02fa, 0x2000 },
-  { 0x1800, 0x02f9, 0x0000 },
-  { 0x1800, 0x02fb, 0x0000 },
-  { 0x9800, 0x02fe, 0x2000 },
-  { 0x1800, 0x02fd, 0x0000 },
-  { 0x1800, 0x02ff, 0x0000 },
-  { 0x8c00, 0x0304, 0x3000 },
-  { 0x8c00, 0x0302, 0x2000 },
-  { 0x0c00, 0x0301, 0x0000 },
-  { 0x0c00, 0x0303, 0x0000 },
-  { 0x8c00, 0x0306, 0x2000 },
-  { 0x0c00, 0x0305, 0x0000 },
-  { 0x0c00, 0x0307, 0x0000 },
-  { 0x8c00, 0x0310, 0x4000 },
-  { 0x8c00, 0x030c, 0x3000 },
-  { 0x8c00, 0x030a, 0x2000 },
-  { 0x0c00, 0x0309, 0x0000 },
-  { 0x0c00, 0x030b, 0x0000 },
-  { 0x8c00, 0x030e, 0x2000 },
-  { 0x0c00, 0x030d, 0x0000 },
-  { 0x0c00, 0x030f, 0x0000 },
-  { 0x8c00, 0x0314, 0x3000 },
-  { 0x8c00, 0x0312, 0x2000 },
-  { 0x0c00, 0x0311, 0x0000 },
-  { 0x0c00, 0x0313, 0x0000 },
-  { 0x8c00, 0x0316, 0x2000 },
-  { 0x0c00, 0x0315, 0x0000 },
-  { 0x0c00, 0x0317, 0x0000 },
-  { 0x8500, 0x03b0, 0x8000 },
-  { 0x8c00, 0x035d, 0x7000 },
-  { 0x8c00, 0x0338, 0x6000 },
-  { 0x8c00, 0x0328, 0x5000 },
-  { 0x8c00, 0x0320, 0x4000 },
-  { 0x8c00, 0x031c, 0x3000 },
-  { 0x8c00, 0x031a, 0x2000 },
-  { 0x0c00, 0x0319, 0x0000 },
-  { 0x0c00, 0x031b, 0x0000 },
-  { 0x8c00, 0x031e, 0x2000 },
-  { 0x0c00, 0x031d, 0x0000 },
-  { 0x0c00, 0x031f, 0x0000 },
-  { 0x8c00, 0x0324, 0x3000 },
-  { 0x8c00, 0x0322, 0x2000 },
-  { 0x0c00, 0x0321, 0x0000 },
-  { 0x0c00, 0x0323, 0x0000 },
-  { 0x8c00, 0x0326, 0x2000 },
-  { 0x0c00, 0x0325, 0x0000 },
-  { 0x0c00, 0x0327, 0x0000 },
-  { 0x8c00, 0x0330, 0x4000 },
-  { 0x8c00, 0x032c, 0x3000 },
-  { 0x8c00, 0x032a, 0x2000 },
-  { 0x0c00, 0x0329, 0x0000 },
-  { 0x0c00, 0x032b, 0x0000 },
-  { 0x8c00, 0x032e, 0x2000 },
-  { 0x0c00, 0x032d, 0x0000 },
-  { 0x0c00, 0x032f, 0x0000 },
-  { 0x8c00, 0x0334, 0x3000 },
-  { 0x8c00, 0x0332, 0x2000 },
-  { 0x0c00, 0x0331, 0x0000 },
-  { 0x0c00, 0x0333, 0x0000 },
-  { 0x8c00, 0x0336, 0x2000 },
-  { 0x0c00, 0x0335, 0x0000 },
-  { 0x0c00, 0x0337, 0x0000 },
-  { 0x8c00, 0x0348, 0x5000 },
-  { 0x8c00, 0x0340, 0x4000 },
-  { 0x8c00, 0x033c, 0x3000 },
-  { 0x8c00, 0x033a, 0x2000 },
-  { 0x0c00, 0x0339, 0x0000 },
-  { 0x0c00, 0x033b, 0x0000 },
-  { 0x8c00, 0x033e, 0x2000 },
-  { 0x0c00, 0x033d, 0x0000 },
-  { 0x0c00, 0x033f, 0x0000 },
-  { 0x8c00, 0x0344, 0x3000 },
-  { 0x8c00, 0x0342, 0x2000 },
-  { 0x0c00, 0x0341, 0x0000 },
-  { 0x0c00, 0x0343, 0x0000 },
-  { 0x8c00, 0x0346, 0x2000 },
-  { 0x0c00, 0x0345, 0x0000 },
-  { 0x0c00, 0x0347, 0x0000 },
-  { 0x8c00, 0x0350, 0x4000 },
-  { 0x8c00, 0x034c, 0x3000 },
-  { 0x8c00, 0x034a, 0x2000 },
-  { 0x0c00, 0x0349, 0x0000 },
-  { 0x0c00, 0x034b, 0x0000 },
-  { 0x8c00, 0x034e, 0x2000 },
-  { 0x0c00, 0x034d, 0x0000 },
-  { 0x0c00, 0x034f, 0x0000 },
-  { 0x8c00, 0x0354, 0x3000 },
-  { 0x8c00, 0x0352, 0x2000 },
-  { 0x0c00, 0x0351, 0x0000 },
-  { 0x0c00, 0x0353, 0x0000 },
-  { 0x8c00, 0x0356, 0x2000 },
-  { 0x0c00, 0x0355, 0x0000 },
-  { 0x0c00, 0x0357, 0x0000 },
-  { 0x8900, 0x038f, 0x603f },
-  { 0x8c00, 0x036d, 0x5000 },
-  { 0x8c00, 0x0365, 0x4000 },
-  { 0x8c00, 0x0361, 0x3000 },
-  { 0x8c00, 0x035f, 0x2000 },
-  { 0x0c00, 0x035e, 0x0000 },
-  { 0x0c00, 0x0360, 0x0000 },
-  { 0x8c00, 0x0363, 0x2000 },
-  { 0x0c00, 0x0362, 0x0000 },
-  { 0x0c00, 0x0364, 0x0000 },
-  { 0x8c00, 0x0369, 0x3000 },
-  { 0x8c00, 0x0367, 0x2000 },
-  { 0x0c00, 0x0366, 0x0000 },
-  { 0x0c00, 0x0368, 0x0000 },
-  { 0x8c00, 0x036b, 0x2000 },
-  { 0x0c00, 0x036a, 0x0000 },
-  { 0x0c00, 0x036c, 0x0000 },
-  { 0x9800, 0x0385, 0x4000 },
-  { 0x9800, 0x0375, 0x3000 },
-  { 0x8c00, 0x036f, 0x2000 },
-  { 0x0c00, 0x036e, 0x0000 },
-  { 0x1800, 0x0374, 0x0000 },
-  { 0x9500, 0x037e, 0x2000 },
-  { 0x0600, 0x037a, 0x0000 },
-  { 0x1800, 0x0384, 0x0000 },
-  { 0x8900, 0x0389, 0x3025 },
-  { 0x9500, 0x0387, 0x2000 },
-  { 0x0900, 0x0386, 0x0026 },
-  { 0x0900, 0x0388, 0x0025 },
-  { 0x8900, 0x038c, 0x2040 },
-  { 0x0900, 0x038a, 0x0025 },
-  { 0x0900, 0x038e, 0x003f },
-  { 0x8900, 0x039f, 0x5020 },
-  { 0x8900, 0x0397, 0x4020 },
-  { 0x8900, 0x0393, 0x3020 },
-  { 0x8900, 0x0391, 0x2020 },
-  { 0x0500, 0x0390, 0x0000 },
-  { 0x0900, 0x0392, 0x0020 },
-  { 0x8900, 0x0395, 0x2020 },
-  { 0x0900, 0x0394, 0x0020 },
-  { 0x0900, 0x0396, 0x0020 },
-  { 0x8900, 0x039b, 0x3020 },
-  { 0x8900, 0x0399, 0x2020 },
-  { 0x0900, 0x0398, 0x0020 },
-  { 0x0900, 0x039a, 0x0020 },
-  { 0x8900, 0x039d, 0x2020 },
-  { 0x0900, 0x039c, 0x0020 },
-  { 0x0900, 0x039e, 0x0020 },
-  { 0x8900, 0x03a8, 0x4020 },
-  { 0x8900, 0x03a4, 0x3020 },
-  { 0x8900, 0x03a1, 0x2020 },
-  { 0x0900, 0x03a0, 0x0020 },
-  { 0x0900, 0x03a3, 0x0020 },
-  { 0x8900, 0x03a6, 0x2020 },
-  { 0x0900, 0x03a5, 0x0020 },
-  { 0x0900, 0x03a7, 0x0020 },
-  { 0x8500, 0x03ac, 0x3fda },
-  { 0x8900, 0x03aa, 0x2020 },
-  { 0x0900, 0x03a9, 0x0020 },
-  { 0x0900, 0x03ab, 0x0020 },
-  { 0x8500, 0x03ae, 0x2fdb },
-  { 0x0500, 0x03ad, 0x0fdb },
-  { 0x0500, 0x03af, 0x0fdb },
-  { 0x8500, 0x03f1, 0x7fb0 },
-  { 0x8500, 0x03d1, 0x6fc7 },
-  { 0x8500, 0x03c0, 0x5fe0 },
-  { 0x8500, 0x03b8, 0x4fe0 },
-  { 0x8500, 0x03b4, 0x3fe0 },
-  { 0x8500, 0x03b2, 0x2fe0 },
-  { 0x0500, 0x03b1, 0x0fe0 },
-  { 0x0500, 0x03b3, 0x0fe0 },
-  { 0x8500, 0x03b6, 0x2fe0 },
-  { 0x0500, 0x03b5, 0x0fe0 },
-  { 0x0500, 0x03b7, 0x0fe0 },
-  { 0x8500, 0x03bc, 0x3fe0 },
-  { 0x8500, 0x03ba, 0x2fe0 },
-  { 0x0500, 0x03b9, 0x0fe0 },
-  { 0x0500, 0x03bb, 0x0fe0 },
-  { 0x8500, 0x03be, 0x2fe0 },
-  { 0x0500, 0x03bd, 0x0fe0 },
-  { 0x0500, 0x03bf, 0x0fe0 },
-  { 0x8500, 0x03c8, 0x4fe0 },
-  { 0x8500, 0x03c4, 0x3fe0 },
-  { 0x8500, 0x03c2, 0x2fe1 },
-  { 0x0500, 0x03c1, 0x0fe0 },
-  { 0x0500, 0x03c3, 0x0fe0 },
-  { 0x8500, 0x03c6, 0x2fe0 },
-  { 0x0500, 0x03c5, 0x0fe0 },
-  { 0x0500, 0x03c7, 0x0fe0 },
-  { 0x8500, 0x03cc, 0x3fc0 },
-  { 0x8500, 0x03ca, 0x2fe0 },
-  { 0x0500, 0x03c9, 0x0fe0 },
-  { 0x0500, 0x03cb, 0x0fe0 },
-  { 0x8500, 0x03ce, 0x2fc1 },
-  { 0x0500, 0x03cd, 0x0fc1 },
-  { 0x0500, 0x03d0, 0x0fc2 },
-  { 0x8500, 0x03e1, 0x5fff },
-  { 0x8500, 0x03d9, 0x4fff },
-  { 0x8500, 0x03d5, 0x3fd1 },
-  { 0x8900, 0x03d3, 0x2000 },
-  { 0x0900, 0x03d2, 0x0000 },
-  { 0x0900, 0x03d4, 0x0000 },
-  { 0x8500, 0x03d7, 0x2000 },
-  { 0x0500, 0x03d6, 0x0fca },
-  { 0x0900, 0x03d8, 0x0001 },
-  { 0x8500, 0x03dd, 0x3fff },
-  { 0x8500, 0x03db, 0x2fff },
-  { 0x0900, 0x03da, 0x0001 },
-  { 0x0900, 0x03dc, 0x0001 },
-  { 0x8500, 0x03df, 0x2fff },
-  { 0x0900, 0x03de, 0x0001 },
-  { 0x0900, 0x03e0, 0x0001 },
-  { 0x8500, 0x03e9, 0x4fff },
-  { 0x8500, 0x03e5, 0x3fff },
-  { 0x8500, 0x03e3, 0x2fff },
-  { 0x0900, 0x03e2, 0x0001 },
-  { 0x0900, 0x03e4, 0x0001 },
-  { 0x8500, 0x03e7, 0x2fff },
-  { 0x0900, 0x03e6, 0x0001 },
-  { 0x0900, 0x03e8, 0x0001 },
-  { 0x8500, 0x03ed, 0x3fff },
-  { 0x8500, 0x03eb, 0x2fff },
-  { 0x0900, 0x03ea, 0x0001 },
-  { 0x0900, 0x03ec, 0x0001 },
-  { 0x8500, 0x03ef, 0x2fff },
-  { 0x0900, 0x03ee, 0x0001 },
-  { 0x0500, 0x03f0, 0x0faa },
-  { 0x8900, 0x0415, 0x6020 },
-  { 0x8900, 0x0405, 0x5050 },
-  { 0x8900, 0x03f9, 0x4ff9 },
-  { 0x8500, 0x03f5, 0x3fa0 },
-  { 0x8500, 0x03f3, 0x2000 },
-  { 0x0500, 0x03f2, 0x0007 },
-  { 0x0900, 0x03f4, 0x0fc4 },
-  { 0x8900, 0x03f7, 0x2001 },
-  { 0x1900, 0x03f6, 0x0000 },
-  { 0x0500, 0x03f8, 0x0fff },
-  { 0x8900, 0x0401, 0x3050 },
-  { 0x8500, 0x03fb, 0x2fff },
-  { 0x0900, 0x03fa, 0x0001 },
-  { 0x0900, 0x0400, 0x0050 },
-  { 0x8900, 0x0403, 0x2050 },
-  { 0x0900, 0x0402, 0x0050 },
-  { 0x0900, 0x0404, 0x0050 },
-  { 0x8900, 0x040d, 0x4050 },
-  { 0x8900, 0x0409, 0x3050 },
-  { 0x8900, 0x0407, 0x2050 },
-  { 0x0900, 0x0406, 0x0050 },
-  { 0x0900, 0x0408, 0x0050 },
-  { 0x8900, 0x040b, 0x2050 },
-  { 0x0900, 0x040a, 0x0050 },
-  { 0x0900, 0x040c, 0x0050 },
-  { 0x8900, 0x0411, 0x3020 },
-  { 0x8900, 0x040f, 0x2050 },
-  { 0x0900, 0x040e, 0x0050 },
-  { 0x0900, 0x0410, 0x0020 },
-  { 0x8900, 0x0413, 0x2020 },
-  { 0x0900, 0x0412, 0x0020 },
-  { 0x0900, 0x0414, 0x0020 },
-  { 0x8900, 0x0425, 0x5020 },
-  { 0x8900, 0x041d, 0x4020 },
-  { 0x8900, 0x0419, 0x3020 },
-  { 0x8900, 0x0417, 0x2020 },
-  { 0x0900, 0x0416, 0x0020 },
-  { 0x0900, 0x0418, 0x0020 },
-  { 0x8900, 0x041b, 0x2020 },
-  { 0x0900, 0x041a, 0x0020 },
-  { 0x0900, 0x041c, 0x0020 },
-  { 0x8900, 0x0421, 0x3020 },
-  { 0x8900, 0x041f, 0x2020 },
-  { 0x0900, 0x041e, 0x0020 },
-  { 0x0900, 0x0420, 0x0020 },
-  { 0x8900, 0x0423, 0x2020 },
-  { 0x0900, 0x0422, 0x0020 },
-  { 0x0900, 0x0424, 0x0020 },
-  { 0x8900, 0x042d, 0x4020 },
-  { 0x8900, 0x0429, 0x3020 },
-  { 0x8900, 0x0427, 0x2020 },
-  { 0x0900, 0x0426, 0x0020 },
-  { 0x0900, 0x0428, 0x0020 },
-  { 0x8900, 0x042b, 0x2020 },
-  { 0x0900, 0x042a, 0x0020 },
-  { 0x0900, 0x042c, 0x0020 },
-  { 0x8500, 0x0431, 0x3fe0 },
-  { 0x8900, 0x042f, 0x2020 },
-  { 0x0900, 0x042e, 0x0020 },
-  { 0x0500, 0x0430, 0x0fe0 },
-  { 0x8500, 0x0433, 0x2fe0 },
-  { 0x0500, 0x0432, 0x0fe0 },
-  { 0x0500, 0x0434, 0x0fe0 },
-  { 0x8700, 0x06a4, 0xa000 },
-  { 0x8500, 0x0563, 0x9fd0 },
-  { 0x8900, 0x04b6, 0x8001 },
-  { 0x8500, 0x0475, 0x7fff },
-  { 0x8500, 0x0455, 0x6fb0 },
-  { 0x8500, 0x0445, 0x5fe0 },
-  { 0x8500, 0x043d, 0x4fe0 },
-  { 0x8500, 0x0439, 0x3fe0 },
-  { 0x8500, 0x0437, 0x2fe0 },
-  { 0x0500, 0x0436, 0x0fe0 },
-  { 0x0500, 0x0438, 0x0fe0 },
-  { 0x8500, 0x043b, 0x2fe0 },
-  { 0x0500, 0x043a, 0x0fe0 },
-  { 0x0500, 0x043c, 0x0fe0 },
-  { 0x8500, 0x0441, 0x3fe0 },
-  { 0x8500, 0x043f, 0x2fe0 },
-  { 0x0500, 0x043e, 0x0fe0 },
-  { 0x0500, 0x0440, 0x0fe0 },
-  { 0x8500, 0x0443, 0x2fe0 },
-  { 0x0500, 0x0442, 0x0fe0 },
-  { 0x0500, 0x0444, 0x0fe0 },
-  { 0x8500, 0x044d, 0x4fe0 },
-  { 0x8500, 0x0449, 0x3fe0 },
-  { 0x8500, 0x0447, 0x2fe0 },
-  { 0x0500, 0x0446, 0x0fe0 },
-  { 0x0500, 0x0448, 0x0fe0 },
-  { 0x8500, 0x044b, 0x2fe0 },
-  { 0x0500, 0x044a, 0x0fe0 },
-  { 0x0500, 0x044c, 0x0fe0 },
-  { 0x8500, 0x0451, 0x3fb0 },
-  { 0x8500, 0x044f, 0x2fe0 },
-  { 0x0500, 0x044e, 0x0fe0 },
-  { 0x0500, 0x0450, 0x0fb0 },
-  { 0x8500, 0x0453, 0x2fb0 },
-  { 0x0500, 0x0452, 0x0fb0 },
-  { 0x0500, 0x0454, 0x0fb0 },
-  { 0x8500, 0x0465, 0x5fff },
-  { 0x8500, 0x045d, 0x4fb0 },
-  { 0x8500, 0x0459, 0x3fb0 },
-  { 0x8500, 0x0457, 0x2fb0 },
-  { 0x0500, 0x0456, 0x0fb0 },
-  { 0x0500, 0x0458, 0x0fb0 },
-  { 0x8500, 0x045b, 0x2fb0 },
-  { 0x0500, 0x045a, 0x0fb0 },
-  { 0x0500, 0x045c, 0x0fb0 },
-  { 0x8500, 0x0461, 0x3fff },
-  { 0x8500, 0x045f, 0x2fb0 },
-  { 0x0500, 0x045e, 0x0fb0 },
-  { 0x0900, 0x0460, 0x0001 },
-  { 0x8500, 0x0463, 0x2fff },
-  { 0x0900, 0x0462, 0x0001 },
-  { 0x0900, 0x0464, 0x0001 },
-  { 0x8500, 0x046d, 0x4fff },
-  { 0x8500, 0x0469, 0x3fff },
-  { 0x8500, 0x0467, 0x2fff },
-  { 0x0900, 0x0466, 0x0001 },
-  { 0x0900, 0x0468, 0x0001 },
-  { 0x8500, 0x046b, 0x2fff },
-  { 0x0900, 0x046a, 0x0001 },
-  { 0x0900, 0x046c, 0x0001 },
-  { 0x8500, 0x0471, 0x3fff },
-  { 0x8500, 0x046f, 0x2fff },
-  { 0x0900, 0x046e, 0x0001 },
-  { 0x0900, 0x0470, 0x0001 },
-  { 0x8500, 0x0473, 0x2fff },
-  { 0x0900, 0x0472, 0x0001 },
-  { 0x0900, 0x0474, 0x0001 },
-  { 0x8900, 0x0496, 0x6001 },
-  { 0x8c00, 0x0485, 0x5000 },
-  { 0x8500, 0x047d, 0x4fff },
-  { 0x8500, 0x0479, 0x3fff },
-  { 0x8500, 0x0477, 0x2fff },
-  { 0x0900, 0x0476, 0x0001 },
-  { 0x0900, 0x0478, 0x0001 },
-  { 0x8500, 0x047b, 0x2fff },
-  { 0x0900, 0x047a, 0x0001 },
-  { 0x0900, 0x047c, 0x0001 },
-  { 0x8500, 0x0481, 0x3fff },
-  { 0x8500, 0x047f, 0x2fff },
-  { 0x0900, 0x047e, 0x0001 },
-  { 0x0900, 0x0480, 0x0001 },
-  { 0x8c00, 0x0483, 0x2000 },
-  { 0x1a00, 0x0482, 0x0000 },
-  { 0x0c00, 0x0484, 0x0000 },
-  { 0x8900, 0x048e, 0x4001 },
-  { 0x8900, 0x048a, 0x3001 },
-  { 0x8b00, 0x0488, 0x2000 },
-  { 0x0c00, 0x0486, 0x0000 },
-  { 0x0b00, 0x0489, 0x0000 },
-  { 0x8900, 0x048c, 0x2001 },
-  { 0x0500, 0x048b, 0x0fff },
-  { 0x0500, 0x048d, 0x0fff },
-  { 0x8900, 0x0492, 0x3001 },
-  { 0x8900, 0x0490, 0x2001 },
-  { 0x0500, 0x048f, 0x0fff },
-  { 0x0500, 0x0491, 0x0fff },
-  { 0x8900, 0x0494, 0x2001 },
-  { 0x0500, 0x0493, 0x0fff },
-  { 0x0500, 0x0495, 0x0fff },
-  { 0x8900, 0x04a6, 0x5001 },
-  { 0x8900, 0x049e, 0x4001 },
-  { 0x8900, 0x049a, 0x3001 },
-  { 0x8900, 0x0498, 0x2001 },
-  { 0x0500, 0x0497, 0x0fff },
-  { 0x0500, 0x0499, 0x0fff },
-  { 0x8900, 0x049c, 0x2001 },
-  { 0x0500, 0x049b, 0x0fff },
-  { 0x0500, 0x049d, 0x0fff },
-  { 0x8900, 0x04a2, 0x3001 },
-  { 0x8900, 0x04a0, 0x2001 },
-  { 0x0500, 0x049f, 0x0fff },
-  { 0x0500, 0x04a1, 0x0fff },
-  { 0x8900, 0x04a4, 0x2001 },
-  { 0x0500, 0x04a3, 0x0fff },
-  { 0x0500, 0x04a5, 0x0fff },
-  { 0x8900, 0x04ae, 0x4001 },
-  { 0x8900, 0x04aa, 0x3001 },
-  { 0x8900, 0x04a8, 0x2001 },
-  { 0x0500, 0x04a7, 0x0fff },
-  { 0x0500, 0x04a9, 0x0fff },
-  { 0x8900, 0x04ac, 0x2001 },
-  { 0x0500, 0x04ab, 0x0fff },
-  { 0x0500, 0x04ad, 0x0fff },
-  { 0x8900, 0x04b2, 0x3001 },
-  { 0x8900, 0x04b0, 0x2001 },
-  { 0x0500, 0x04af, 0x0fff },
-  { 0x0500, 0x04b1, 0x0fff },
-  { 0x8900, 0x04b4, 0x2001 },
-  { 0x0500, 0x04b3, 0x0fff },
-  { 0x0500, 0x04b5, 0x0fff },
-  { 0x8500, 0x04f9, 0x7fff },
-  { 0x8500, 0x04d7, 0x6fff },
-  { 0x8500, 0x04c6, 0x5fff },
-  { 0x8900, 0x04be, 0x4001 },
-  { 0x8900, 0x04ba, 0x3001 },
-  { 0x8900, 0x04b8, 0x2001 },
-  { 0x0500, 0x04b7, 0x0fff },
-  { 0x0500, 0x04b9, 0x0fff },
-  { 0x8900, 0x04bc, 0x2001 },
-  { 0x0500, 0x04bb, 0x0fff },
-  { 0x0500, 0x04bd, 0x0fff },
-  { 0x8500, 0x04c2, 0x3fff },
-  { 0x8900, 0x04c0, 0x2000 },
-  { 0x0500, 0x04bf, 0x0fff },
-  { 0x0900, 0x04c1, 0x0001 },
-  { 0x8500, 0x04c4, 0x2fff },
-  { 0x0900, 0x04c3, 0x0001 },
-  { 0x0900, 0x04c5, 0x0001 },
-  { 0x8500, 0x04ce, 0x4fff },
-  { 0x8500, 0x04ca, 0x3fff },
-  { 0x8500, 0x04c8, 0x2fff },
-  { 0x0900, 0x04c7, 0x0001 },
-  { 0x0900, 0x04c9, 0x0001 },
-  { 0x8500, 0x04cc, 0x2fff },
-  { 0x0900, 0x04cb, 0x0001 },
-  { 0x0900, 0x04cd, 0x0001 },
-  { 0x8500, 0x04d3, 0x3fff },
-  { 0x8500, 0x04d1, 0x2fff },
-  { 0x0900, 0x04d0, 0x0001 },
-  { 0x0900, 0x04d2, 0x0001 },
-  { 0x8500, 0x04d5, 0x2fff },
-  { 0x0900, 0x04d4, 0x0001 },
-  { 0x0900, 0x04d6, 0x0001 },
-  { 0x8500, 0x04e7, 0x5fff },
-  { 0x8500, 0x04df, 0x4fff },
-  { 0x8500, 0x04db, 0x3fff },
-  { 0x8500, 0x04d9, 0x2fff },
-  { 0x0900, 0x04d8, 0x0001 },
-  { 0x0900, 0x04da, 0x0001 },
-  { 0x8500, 0x04dd, 0x2fff },
-  { 0x0900, 0x04dc, 0x0001 },
-  { 0x0900, 0x04de, 0x0001 },
-  { 0x8500, 0x04e3, 0x3fff },
-  { 0x8500, 0x04e1, 0x2fff },
-  { 0x0900, 0x04e0, 0x0001 },
-  { 0x0900, 0x04e2, 0x0001 },
-  { 0x8500, 0x04e5, 0x2fff },
-  { 0x0900, 0x04e4, 0x0001 },
-  { 0x0900, 0x04e6, 0x0001 },
-  { 0x8500, 0x04ef, 0x4fff },
-  { 0x8500, 0x04eb, 0x3fff },
-  { 0x8500, 0x04e9, 0x2fff },
-  { 0x0900, 0x04e8, 0x0001 },
-  { 0x0900, 0x04ea, 0x0001 },
-  { 0x8500, 0x04ed, 0x2fff },
-  { 0x0900, 0x04ec, 0x0001 },
-  { 0x0900, 0x04ee, 0x0001 },
-  { 0x8500, 0x04f3, 0x3fff },
-  { 0x8500, 0x04f1, 0x2fff },
-  { 0x0900, 0x04f0, 0x0001 },
-  { 0x0900, 0x04f2, 0x0001 },
-  { 0x8500, 0x04f5, 0x2fff },
-  { 0x0900, 0x04f4, 0x0001 },
-  { 0x0900, 0x04f8, 0x0001 },
-  { 0x8900, 0x0540, 0x6030 },
-  { 0x8500, 0x050f, 0x5fff },
-  { 0x8500, 0x0507, 0x4fff },
-  { 0x8500, 0x0503, 0x3fff },
-  { 0x8500, 0x0501, 0x2fff },
-  { 0x0900, 0x0500, 0x0001 },
-  { 0x0900, 0x0502, 0x0001 },
-  { 0x8500, 0x0505, 0x2fff },
-  { 0x0900, 0x0504, 0x0001 },
-  { 0x0900, 0x0506, 0x0001 },
-  { 0x8500, 0x050b, 0x3fff },
-  { 0x8500, 0x0509, 0x2fff },
-  { 0x0900, 0x0508, 0x0001 },
-  { 0x0900, 0x050a, 0x0001 },
-  { 0x8500, 0x050d, 0x2fff },
-  { 0x0900, 0x050c, 0x0001 },
-  { 0x0900, 0x050e, 0x0001 },
-  { 0x8900, 0x0538, 0x4030 },
-  { 0x8900, 0x0534, 0x3030 },
-  { 0x8900, 0x0532, 0x2030 },
-  { 0x0900, 0x0531, 0x0030 },
-  { 0x0900, 0x0533, 0x0030 },
-  { 0x8900, 0x0536, 0x2030 },
-  { 0x0900, 0x0535, 0x0030 },
-  { 0x0900, 0x0537, 0x0030 },
-  { 0x8900, 0x053c, 0x3030 },
-  { 0x8900, 0x053a, 0x2030 },
-  { 0x0900, 0x0539, 0x0030 },
-  { 0x0900, 0x053b, 0x0030 },
-  { 0x8900, 0x053e, 0x2030 },
-  { 0x0900, 0x053d, 0x0030 },
-  { 0x0900, 0x053f, 0x0030 },
-  { 0x8900, 0x0550, 0x5030 },
-  { 0x8900, 0x0548, 0x4030 },
-  { 0x8900, 0x0544, 0x3030 },
-  { 0x8900, 0x0542, 0x2030 },
-  { 0x0900, 0x0541, 0x0030 },
-  { 0x0900, 0x0543, 0x0030 },
-  { 0x8900, 0x0546, 0x2030 },
-  { 0x0900, 0x0545, 0x0030 },
-  { 0x0900, 0x0547, 0x0030 },
-  { 0x8900, 0x054c, 0x3030 },
-  { 0x8900, 0x054a, 0x2030 },
-  { 0x0900, 0x0549, 0x0030 },
-  { 0x0900, 0x054b, 0x0030 },
-  { 0x8900, 0x054e, 0x2030 },
-  { 0x0900, 0x054d, 0x0030 },
-  { 0x0900, 0x054f, 0x0030 },
-  { 0x9500, 0x055a, 0x4000 },
-  { 0x8900, 0x0554, 0x3030 },
-  { 0x8900, 0x0552, 0x2030 },
-  { 0x0900, 0x0551, 0x0030 },
-  { 0x0900, 0x0553, 0x0030 },
-  { 0x8900, 0x0556, 0x2030 },
-  { 0x0900, 0x0555, 0x0030 },
-  { 0x0600, 0x0559, 0x0000 },
-  { 0x9500, 0x055e, 0x3000 },
-  { 0x9500, 0x055c, 0x2000 },
-  { 0x1500, 0x055b, 0x0000 },
-  { 0x1500, 0x055d, 0x0000 },
-  { 0x8500, 0x0561, 0x2fd0 },
-  { 0x1500, 0x055f, 0x0000 },
-  { 0x0500, 0x0562, 0x0fd0 },
-  { 0x9a00, 0x060f, 0x8000 },
-  { 0x8c00, 0x05ab, 0x7000 },
-  { 0x8500, 0x0583, 0x6fd0 },
-  { 0x8500, 0x0573, 0x5fd0 },
-  { 0x8500, 0x056b, 0x4fd0 },
-  { 0x8500, 0x0567, 0x3fd0 },
-  { 0x8500, 0x0565, 0x2fd0 },
-  { 0x0500, 0x0564, 0x0fd0 },
-  { 0x0500, 0x0566, 0x0fd0 },
-  { 0x8500, 0x0569, 0x2fd0 },
-  { 0x0500, 0x0568, 0x0fd0 },
-  { 0x0500, 0x056a, 0x0fd0 },
-  { 0x8500, 0x056f, 0x3fd0 },
-  { 0x8500, 0x056d, 0x2fd0 },
-  { 0x0500, 0x056c, 0x0fd0 },
-  { 0x0500, 0x056e, 0x0fd0 },
-  { 0x8500, 0x0571, 0x2fd0 },
-  { 0x0500, 0x0570, 0x0fd0 },
-  { 0x0500, 0x0572, 0x0fd0 },
-  { 0x8500, 0x057b, 0x4fd0 },
-  { 0x8500, 0x0577, 0x3fd0 },
-  { 0x8500, 0x0575, 0x2fd0 },
-  { 0x0500, 0x0574, 0x0fd0 },
-  { 0x0500, 0x0576, 0x0fd0 },
-  { 0x8500, 0x0579, 0x2fd0 },
-  { 0x0500, 0x0578, 0x0fd0 },
-  { 0x0500, 0x057a, 0x0fd0 },
-  { 0x8500, 0x057f, 0x3fd0 },
-  { 0x8500, 0x057d, 0x2fd0 },
-  { 0x0500, 0x057c, 0x0fd0 },
-  { 0x0500, 0x057e, 0x0fd0 },
-  { 0x8500, 0x0581, 0x2fd0 },
-  { 0x0500, 0x0580, 0x0fd0 },
-  { 0x0500, 0x0582, 0x0fd0 },
-  { 0x8c00, 0x059a, 0x5000 },
-  { 0x8c00, 0x0592, 0x4000 },
-  { 0x8500, 0x0587, 0x3000 },
-  { 0x8500, 0x0585, 0x2fd0 },
-  { 0x0500, 0x0584, 0x0fd0 },
-  { 0x0500, 0x0586, 0x0fd0 },
-  { 0x9100, 0x058a, 0x2000 },
-  { 0x1500, 0x0589, 0x0000 },
-  { 0x0c00, 0x0591, 0x0000 },
-  { 0x8c00, 0x0596, 0x3000 },
-  { 0x8c00, 0x0594, 0x2000 },
-  { 0x0c00, 0x0593, 0x0000 },
-  { 0x0c00, 0x0595, 0x0000 },
-  { 0x8c00, 0x0598, 0x2000 },
-  { 0x0c00, 0x0597, 0x0000 },
-  { 0x0c00, 0x0599, 0x0000 },
-  { 0x8c00, 0x05a3, 0x4000 },
-  { 0x8c00, 0x059e, 0x3000 },
-  { 0x8c00, 0x059c, 0x2000 },
-  { 0x0c00, 0x059b, 0x0000 },
-  { 0x0c00, 0x059d, 0x0000 },
-  { 0x8c00, 0x05a0, 0x2000 },
-  { 0x0c00, 0x059f, 0x0000 },
-  { 0x0c00, 0x05a1, 0x0000 },
-  { 0x8c00, 0x05a7, 0x3000 },
-  { 0x8c00, 0x05a5, 0x2000 },
-  { 0x0c00, 0x05a4, 0x0000 },
-  { 0x0c00, 0x05a6, 0x0000 },
-  { 0x8c00, 0x05a9, 0x2000 },
-  { 0x0c00, 0x05a8, 0x0000 },
-  { 0x0c00, 0x05aa, 0x0000 },
-  { 0x8700, 0x05d7, 0x6000 },
-  { 0x8c00, 0x05bc, 0x5000 },
-  { 0x8c00, 0x05b3, 0x4000 },
-  { 0x8c00, 0x05af, 0x3000 },
-  { 0x8c00, 0x05ad, 0x2000 },
-  { 0x0c00, 0x05ac, 0x0000 },
-  { 0x0c00, 0x05ae, 0x0000 },
-  { 0x8c00, 0x05b1, 0x2000 },
-  { 0x0c00, 0x05b0, 0x0000 },
-  { 0x0c00, 0x05b2, 0x0000 },
-  { 0x8c00, 0x05b7, 0x3000 },
-  { 0x8c00, 0x05b5, 0x2000 },
-  { 0x0c00, 0x05b4, 0x0000 },
-  { 0x0c00, 0x05b6, 0x0000 },
-  { 0x8c00, 0x05b9, 0x2000 },
-  { 0x0c00, 0x05b8, 0x0000 },
-  { 0x0c00, 0x05bb, 0x0000 },
-  { 0x8c00, 0x05c4, 0x4000 },
-  { 0x9500, 0x05c0, 0x3000 },
-  { 0x9500, 0x05be, 0x2000 },
-  { 0x0c00, 0x05bd, 0x0000 },
-  { 0x0c00, 0x05bf, 0x0000 },
-  { 0x8c00, 0x05c2, 0x2000 },
-  { 0x0c00, 0x05c1, 0x0000 },
-  { 0x1500, 0x05c3, 0x0000 },
-  { 0x8700, 0x05d3, 0x3000 },
-  { 0x8700, 0x05d1, 0x2000 },
-  { 0x0700, 0x05d0, 0x0000 },
-  { 0x0700, 0x05d2, 0x0000 },
-  { 0x8700, 0x05d5, 0x2000 },
-  { 0x0700, 0x05d4, 0x0000 },
-  { 0x0700, 0x05d6, 0x0000 },
-  { 0x8700, 0x05e7, 0x5000 },
-  { 0x8700, 0x05df, 0x4000 },
-  { 0x8700, 0x05db, 0x3000 },
-  { 0x8700, 0x05d9, 0x2000 },
-  { 0x0700, 0x05d8, 0x0000 },
-  { 0x0700, 0x05da, 0x0000 },
-  { 0x8700, 0x05dd, 0x2000 },
-  { 0x0700, 0x05dc, 0x0000 },
-  { 0x0700, 0x05de, 0x0000 },
-  { 0x8700, 0x05e3, 0x3000 },
-  { 0x8700, 0x05e1, 0x2000 },
-  { 0x0700, 0x05e0, 0x0000 },
-  { 0x0700, 0x05e2, 0x0000 },
-  { 0x8700, 0x05e5, 0x2000 },
-  { 0x0700, 0x05e4, 0x0000 },
-  { 0x0700, 0x05e6, 0x0000 },
-  { 0x9500, 0x05f4, 0x4000 },
-  { 0x8700, 0x05f0, 0x3000 },
-  { 0x8700, 0x05e9, 0x2000 },
-  { 0x0700, 0x05e8, 0x0000 },
-  { 0x0700, 0x05ea, 0x0000 },
-  { 0x8700, 0x05f2, 0x2000 },
-  { 0x0700, 0x05f1, 0x0000 },
-  { 0x1500, 0x05f3, 0x0000 },
-  { 0x8100, 0x0603, 0x3000 },
-  { 0x8100, 0x0601, 0x2000 },
-  { 0x0100, 0x0600, 0x0000 },
-  { 0x0100, 0x0602, 0x0000 },
-  { 0x9500, 0x060d, 0x2000 },
-  { 0x1500, 0x060c, 0x0000 },
-  { 0x1a00, 0x060e, 0x0000 },
-  { 0x8d00, 0x0664, 0x7000 },
-  { 0x8700, 0x0638, 0x6000 },
-  { 0x8700, 0x0628, 0x5000 },
-  { 0x9500, 0x061f, 0x4000 },
-  { 0x8c00, 0x0613, 0x3000 },
-  { 0x8c00, 0x0611, 0x2000 },
-  { 0x0c00, 0x0610, 0x0000 },
-  { 0x0c00, 0x0612, 0x0000 },
-  { 0x8c00, 0x0615, 0x2000 },
-  { 0x0c00, 0x0614, 0x0000 },
-  { 0x1500, 0x061b, 0x0000 },
-  { 0x8700, 0x0624, 0x3000 },
-  { 0x8700, 0x0622, 0x2000 },
-  { 0x0700, 0x0621, 0x0000 },
-  { 0x0700, 0x0623, 0x0000 },
-  { 0x8700, 0x0626, 0x2000 },
-  { 0x0700, 0x0625, 0x0000 },
-  { 0x0700, 0x0627, 0x0000 },
-  { 0x8700, 0x0630, 0x4000 },
-  { 0x8700, 0x062c, 0x3000 },
-  { 0x8700, 0x062a, 0x2000 },
-  { 0x0700, 0x0629, 0x0000 },
-  { 0x0700, 0x062b, 0x0000 },
-  { 0x8700, 0x062e, 0x2000 },
-  { 0x0700, 0x062d, 0x0000 },
-  { 0x0700, 0x062f, 0x0000 },
-  { 0x8700, 0x0634, 0x3000 },
-  { 0x8700, 0x0632, 0x2000 },
-  { 0x0700, 0x0631, 0x0000 },
-  { 0x0700, 0x0633, 0x0000 },
-  { 0x8700, 0x0636, 0x2000 },
-  { 0x0700, 0x0635, 0x0000 },
-  { 0x0700, 0x0637, 0x0000 },
-  { 0x8c00, 0x064d, 0x5000 },
-  { 0x8700, 0x0645, 0x4000 },
-  { 0x8700, 0x0641, 0x3000 },
-  { 0x8700, 0x063a, 0x2000 },
-  { 0x0700, 0x0639, 0x0000 },
-  { 0x0600, 0x0640, 0x0000 },
-  { 0x8700, 0x0643, 0x2000 },
-  { 0x0700, 0x0642, 0x0000 },
-  { 0x0700, 0x0644, 0x0000 },
-  { 0x8700, 0x0649, 0x3000 },
-  { 0x8700, 0x0647, 0x2000 },
-  { 0x0700, 0x0646, 0x0000 },
-  { 0x0700, 0x0648, 0x0000 },
-  { 0x8c00, 0x064b, 0x2000 },
-  { 0x0700, 0x064a, 0x0000 },
-  { 0x0c00, 0x064c, 0x0000 },
-  { 0x8c00, 0x0655, 0x4000 },
-  { 0x8c00, 0x0651, 0x3000 },
-  { 0x8c00, 0x064f, 0x2000 },
-  { 0x0c00, 0x064e, 0x0000 },
-  { 0x0c00, 0x0650, 0x0000 },
-  { 0x8c00, 0x0653, 0x2000 },
-  { 0x0c00, 0x0652, 0x0000 },
-  { 0x0c00, 0x0654, 0x0000 },
-  { 0x8d00, 0x0660, 0x3000 },
-  { 0x8c00, 0x0657, 0x2000 },
-  { 0x0c00, 0x0656, 0x0000 },
-  { 0x0c00, 0x0658, 0x0000 },
-  { 0x8d00, 0x0662, 0x2000 },
-  { 0x0d00, 0x0661, 0x0000 },
-  { 0x0d00, 0x0663, 0x0000 },
-  { 0x8700, 0x0684, 0x6000 },
-  { 0x8700, 0x0674, 0x5000 },
-  { 0x9500, 0x066c, 0x4000 },
-  { 0x8d00, 0x0668, 0x3000 },
-  { 0x8d00, 0x0666, 0x2000 },
-  { 0x0d00, 0x0665, 0x0000 },
-  { 0x0d00, 0x0667, 0x0000 },
-  { 0x9500, 0x066a, 0x2000 },
-  { 0x0d00, 0x0669, 0x0000 },
-  { 0x1500, 0x066b, 0x0000 },
-  { 0x8c00, 0x0670, 0x3000 },
-  { 0x8700, 0x066e, 0x2000 },
-  { 0x1500, 0x066d, 0x0000 },
-  { 0x0700, 0x066f, 0x0000 },
-  { 0x8700, 0x0672, 0x2000 },
-  { 0x0700, 0x0671, 0x0000 },
-  { 0x0700, 0x0673, 0x0000 },
-  { 0x8700, 0x067c, 0x4000 },
-  { 0x8700, 0x0678, 0x3000 },
-  { 0x8700, 0x0676, 0x2000 },
-  { 0x0700, 0x0675, 0x0000 },
-  { 0x0700, 0x0677, 0x0000 },
-  { 0x8700, 0x067a, 0x2000 },
-  { 0x0700, 0x0679, 0x0000 },
-  { 0x0700, 0x067b, 0x0000 },
-  { 0x8700, 0x0680, 0x3000 },
-  { 0x8700, 0x067e, 0x2000 },
-  { 0x0700, 0x067d, 0x0000 },
-  { 0x0700, 0x067f, 0x0000 },
-  { 0x8700, 0x0682, 0x2000 },
-  { 0x0700, 0x0681, 0x0000 },
-  { 0x0700, 0x0683, 0x0000 },
-  { 0x8700, 0x0694, 0x5000 },
-  { 0x8700, 0x068c, 0x4000 },
-  { 0x8700, 0x0688, 0x3000 },
-  { 0x8700, 0x0686, 0x2000 },
-  { 0x0700, 0x0685, 0x0000 },
-  { 0x0700, 0x0687, 0x0000 },
-  { 0x8700, 0x068a, 0x2000 },
-  { 0x0700, 0x0689, 0x0000 },
-  { 0x0700, 0x068b, 0x0000 },
-  { 0x8700, 0x0690, 0x3000 },
-  { 0x8700, 0x068e, 0x2000 },
-  { 0x0700, 0x068d, 0x0000 },
-  { 0x0700, 0x068f, 0x0000 },
-  { 0x8700, 0x0692, 0x2000 },
-  { 0x0700, 0x0691, 0x0000 },
-  { 0x0700, 0x0693, 0x0000 },
-  { 0x8700, 0x069c, 0x4000 },
-  { 0x8700, 0x0698, 0x3000 },
-  { 0x8700, 0x0696, 0x2000 },
-  { 0x0700, 0x0695, 0x0000 },
-  { 0x0700, 0x0697, 0x0000 },
-  { 0x8700, 0x069a, 0x2000 },
-  { 0x0700, 0x0699, 0x0000 },
-  { 0x0700, 0x069b, 0x0000 },
-  { 0x8700, 0x06a0, 0x3000 },
-  { 0x8700, 0x069e, 0x2000 },
-  { 0x0700, 0x069d, 0x0000 },
-  { 0x0700, 0x069f, 0x0000 },
-  { 0x8700, 0x06a2, 0x2000 },
-  { 0x0700, 0x06a1, 0x0000 },
-  { 0x0700, 0x06a3, 0x0000 },
-  { 0x8700, 0x0926, 0x9000 },
-  { 0x8700, 0x0725, 0x8000 },
-  { 0x8c00, 0x06e4, 0x7000 },
-  { 0x8700, 0x06c4, 0x6000 },
-  { 0x8700, 0x06b4, 0x5000 },
-  { 0x8700, 0x06ac, 0x4000 },
-  { 0x8700, 0x06a8, 0x3000 },
-  { 0x8700, 0x06a6, 0x2000 },
-  { 0x0700, 0x06a5, 0x0000 },
-  { 0x0700, 0x06a7, 0x0000 },
-  { 0x8700, 0x06aa, 0x2000 },
-  { 0x0700, 0x06a9, 0x0000 },
-  { 0x0700, 0x06ab, 0x0000 },
-  { 0x8700, 0x06b0, 0x3000 },
-  { 0x8700, 0x06ae, 0x2000 },
-  { 0x0700, 0x06ad, 0x0000 },
-  { 0x0700, 0x06af, 0x0000 },
-  { 0x8700, 0x06b2, 0x2000 },
-  { 0x0700, 0x06b1, 0x0000 },
-  { 0x0700, 0x06b3, 0x0000 },
-  { 0x8700, 0x06bc, 0x4000 },
-  { 0x8700, 0x06b8, 0x3000 },
-  { 0x8700, 0x06b6, 0x2000 },
-  { 0x0700, 0x06b5, 0x0000 },
-  { 0x0700, 0x06b7, 0x0000 },
-  { 0x8700, 0x06ba, 0x2000 },
-  { 0x0700, 0x06b9, 0x0000 },
-  { 0x0700, 0x06bb, 0x0000 },
-  { 0x8700, 0x06c0, 0x3000 },
-  { 0x8700, 0x06be, 0x2000 },
-  { 0x0700, 0x06bd, 0x0000 },
-  { 0x0700, 0x06bf, 0x0000 },
-  { 0x8700, 0x06c2, 0x2000 },
-  { 0x0700, 0x06c1, 0x0000 },
-  { 0x0700, 0x06c3, 0x0000 },
-  { 0x9500, 0x06d4, 0x5000 },
-  { 0x8700, 0x06cc, 0x4000 },
-  { 0x8700, 0x06c8, 0x3000 },
-  { 0x8700, 0x06c6, 0x2000 },
-  { 0x0700, 0x06c5, 0x0000 },
-  { 0x0700, 0x06c7, 0x0000 },
-  { 0x8700, 0x06ca, 0x2000 },
-  { 0x0700, 0x06c9, 0x0000 },
-  { 0x0700, 0x06cb, 0x0000 },
-  { 0x8700, 0x06d0, 0x3000 },
-  { 0x8700, 0x06ce, 0x2000 },
-  { 0x0700, 0x06cd, 0x0000 },
-  { 0x0700, 0x06cf, 0x0000 },
-  { 0x8700, 0x06d2, 0x2000 },
-  { 0x0700, 0x06d1, 0x0000 },
-  { 0x0700, 0x06d3, 0x0000 },
-  { 0x8c00, 0x06dc, 0x4000 },
-  { 0x8c00, 0x06d8, 0x3000 },
-  { 0x8c00, 0x06d6, 0x2000 },
-  { 0x0700, 0x06d5, 0x0000 },
-  { 0x0c00, 0x06d7, 0x0000 },
-  { 0x8c00, 0x06da, 0x2000 },
-  { 0x0c00, 0x06d9, 0x0000 },
-  { 0x0c00, 0x06db, 0x0000 },
-  { 0x8c00, 0x06e0, 0x3000 },
-  { 0x8b00, 0x06de, 0x2000 },
-  { 0x0100, 0x06dd, 0x0000 },
-  { 0x0c00, 0x06df, 0x0000 },
-  { 0x8c00, 0x06e2, 0x2000 },
-  { 0x0c00, 0x06e1, 0x0000 },
-  { 0x0c00, 0x06e3, 0x0000 },
-  { 0x9500, 0x0704, 0x6000 },
-  { 0x8d00, 0x06f4, 0x5000 },
-  { 0x8c00, 0x06ec, 0x4000 },
-  { 0x8c00, 0x06e8, 0x3000 },
-  { 0x8600, 0x06e6, 0x2000 },
-  { 0x0600, 0x06e5, 0x0000 },
-  { 0x0c00, 0x06e7, 0x0000 },
-  { 0x8c00, 0x06ea, 0x2000 },
-  { 0x1a00, 0x06e9, 0x0000 },
-  { 0x0c00, 0x06eb, 0x0000 },
-  { 0x8d00, 0x06f0, 0x3000 },
-  { 0x8700, 0x06ee, 0x2000 },
-  { 0x0c00, 0x06ed, 0x0000 },
-  { 0x0700, 0x06ef, 0x0000 },
-  { 0x8d00, 0x06f2, 0x2000 },
-  { 0x0d00, 0x06f1, 0x0000 },
-  { 0x0d00, 0x06f3, 0x0000 },
-  { 0x8700, 0x06fc, 0x4000 },
-  { 0x8d00, 0x06f8, 0x3000 },
-  { 0x8d00, 0x06f6, 0x2000 },
-  { 0x0d00, 0x06f5, 0x0000 },
-  { 0x0d00, 0x06f7, 0x0000 },
-  { 0x8700, 0x06fa, 0x2000 },
-  { 0x0d00, 0x06f9, 0x0000 },
-  { 0x0700, 0x06fb, 0x0000 },
-  { 0x9500, 0x0700, 0x3000 },
-  { 0x9a00, 0x06fe, 0x2000 },
-  { 0x1a00, 0x06fd, 0x0000 },
-  { 0x0700, 0x06ff, 0x0000 },
-  { 0x9500, 0x0702, 0x2000 },
-  { 0x1500, 0x0701, 0x0000 },
-  { 0x1500, 0x0703, 0x0000 },
-  { 0x8700, 0x0715, 0x5000 },
-  { 0x9500, 0x070c, 0x4000 },
-  { 0x9500, 0x0708, 0x3000 },
-  { 0x9500, 0x0706, 0x2000 },
-  { 0x1500, 0x0705, 0x0000 },
-  { 0x1500, 0x0707, 0x0000 },
-  { 0x9500, 0x070a, 0x2000 },
-  { 0x1500, 0x0709, 0x0000 },
-  { 0x1500, 0x070b, 0x0000 },
-  { 0x8c00, 0x0711, 0x3000 },
-  { 0x8100, 0x070f, 0x2000 },
-  { 0x1500, 0x070d, 0x0000 },
-  { 0x0700, 0x0710, 0x0000 },
-  { 0x8700, 0x0713, 0x2000 },
-  { 0x0700, 0x0712, 0x0000 },
-  { 0x0700, 0x0714, 0x0000 },
-  { 0x8700, 0x071d, 0x4000 },
-  { 0x8700, 0x0719, 0x3000 },
-  { 0x8700, 0x0717, 0x2000 },
-  { 0x0700, 0x0716, 0x0000 },
-  { 0x0700, 0x0718, 0x0000 },
-  { 0x8700, 0x071b, 0x2000 },
-  { 0x0700, 0x071a, 0x0000 },
-  { 0x0700, 0x071c, 0x0000 },
-  { 0x8700, 0x0721, 0x3000 },
-  { 0x8700, 0x071f, 0x2000 },
-  { 0x0700, 0x071e, 0x0000 },
-  { 0x0700, 0x0720, 0x0000 },
-  { 0x8700, 0x0723, 0x2000 },
-  { 0x0700, 0x0722, 0x0000 },
-  { 0x0700, 0x0724, 0x0000 },
-  { 0x8700, 0x0797, 0x7000 },
-  { 0x8c00, 0x0745, 0x6000 },
-  { 0x8c00, 0x0735, 0x5000 },
-  { 0x8700, 0x072d, 0x4000 },
-  { 0x8700, 0x0729, 0x3000 },
-  { 0x8700, 0x0727, 0x2000 },
-  { 0x0700, 0x0726, 0x0000 },
-  { 0x0700, 0x0728, 0x0000 },
-  { 0x8700, 0x072b, 0x2000 },
-  { 0x0700, 0x072a, 0x0000 },
-  { 0x0700, 0x072c, 0x0000 },
-  { 0x8c00, 0x0731, 0x3000 },
-  { 0x8700, 0x072f, 0x2000 },
-  { 0x0700, 0x072e, 0x0000 },
-  { 0x0c00, 0x0730, 0x0000 },
-  { 0x8c00, 0x0733, 0x2000 },
-  { 0x0c00, 0x0732, 0x0000 },
-  { 0x0c00, 0x0734, 0x0000 },
-  { 0x8c00, 0x073d, 0x4000 },
-  { 0x8c00, 0x0739, 0x3000 },
-  { 0x8c00, 0x0737, 0x2000 },
-  { 0x0c00, 0x0736, 0x0000 },
-  { 0x0c00, 0x0738, 0x0000 },
-  { 0x8c00, 0x073b, 0x2000 },
-  { 0x0c00, 0x073a, 0x0000 },
-  { 0x0c00, 0x073c, 0x0000 },
-  { 0x8c00, 0x0741, 0x3000 },
-  { 0x8c00, 0x073f, 0x2000 },
-  { 0x0c00, 0x073e, 0x0000 },
-  { 0x0c00, 0x0740, 0x0000 },
-  { 0x8c00, 0x0743, 0x2000 },
-  { 0x0c00, 0x0742, 0x0000 },
-  { 0x0c00, 0x0744, 0x0000 },
-  { 0x8700, 0x0787, 0x5000 },
-  { 0x8700, 0x074f, 0x4000 },
-  { 0x8c00, 0x0749, 0x3000 },
-  { 0x8c00, 0x0747, 0x2000 },
-  { 0x0c00, 0x0746, 0x0000 },
-  { 0x0c00, 0x0748, 0x0000 },
-  { 0x8700, 0x074d, 0x2000 },
-  { 0x0c00, 0x074a, 0x0000 },
-  { 0x0700, 0x074e, 0x0000 },
-  { 0x8700, 0x0783, 0x3000 },
-  { 0x8700, 0x0781, 0x2000 },
-  { 0x0700, 0x0780, 0x0000 },
-  { 0x0700, 0x0782, 0x0000 },
-  { 0x8700, 0x0785, 0x2000 },
-  { 0x0700, 0x0784, 0x0000 },
-  { 0x0700, 0x0786, 0x0000 },
-  { 0x8700, 0x078f, 0x4000 },
-  { 0x8700, 0x078b, 0x3000 },
-  { 0x8700, 0x0789, 0x2000 },
-  { 0x0700, 0x0788, 0x0000 },
-  { 0x0700, 0x078a, 0x0000 },
-  { 0x8700, 0x078d, 0x2000 },
-  { 0x0700, 0x078c, 0x0000 },
-  { 0x0700, 0x078e, 0x0000 },
-  { 0x8700, 0x0793, 0x3000 },
-  { 0x8700, 0x0791, 0x2000 },
-  { 0x0700, 0x0790, 0x0000 },
-  { 0x0700, 0x0792, 0x0000 },
-  { 0x8700, 0x0795, 0x2000 },
-  { 0x0700, 0x0794, 0x0000 },
-  { 0x0700, 0x0796, 0x0000 },
-  { 0x8700, 0x0906, 0x6000 },
-  { 0x8c00, 0x07a7, 0x5000 },
-  { 0x8700, 0x079f, 0x4000 },
-  { 0x8700, 0x079b, 0x3000 },
-  { 0x8700, 0x0799, 0x2000 },
-  { 0x0700, 0x0798, 0x0000 },
-  { 0x0700, 0x079a, 0x0000 },
-  { 0x8700, 0x079d, 0x2000 },
-  { 0x0700, 0x079c, 0x0000 },
-  { 0x0700, 0x079e, 0x0000 },
-  { 0x8700, 0x07a3, 0x3000 },
-  { 0x8700, 0x07a1, 0x2000 },
-  { 0x0700, 0x07a0, 0x0000 },
-  { 0x0700, 0x07a2, 0x0000 },
-  { 0x8700, 0x07a5, 0x2000 },
-  { 0x0700, 0x07a4, 0x0000 },
-  { 0x0c00, 0x07a6, 0x0000 },
-  { 0x8c00, 0x07af, 0x4000 },
-  { 0x8c00, 0x07ab, 0x3000 },
-  { 0x8c00, 0x07a9, 0x2000 },
-  { 0x0c00, 0x07a8, 0x0000 },
-  { 0x0c00, 0x07aa, 0x0000 },
-  { 0x8c00, 0x07ad, 0x2000 },
-  { 0x0c00, 0x07ac, 0x0000 },
-  { 0x0c00, 0x07ae, 0x0000 },
-  { 0x8c00, 0x0902, 0x3000 },
-  { 0x8700, 0x07b1, 0x2000 },
-  { 0x0c00, 0x07b0, 0x0000 },
-  { 0x0c00, 0x0901, 0x0000 },
-  { 0x8700, 0x0904, 0x2000 },
-  { 0x0a00, 0x0903, 0x0000 },
-  { 0x0700, 0x0905, 0x0000 },
-  { 0x8700, 0x0916, 0x5000 },
-  { 0x8700, 0x090e, 0x4000 },
-  { 0x8700, 0x090a, 0x3000 },
-  { 0x8700, 0x0908, 0x2000 },
-  { 0x0700, 0x0907, 0x0000 },
-  { 0x0700, 0x0909, 0x0000 },
-  { 0x8700, 0x090c, 0x2000 },
-  { 0x0700, 0x090b, 0x0000 },
-  { 0x0700, 0x090d, 0x0000 },
-  { 0x8700, 0x0912, 0x3000 },
-  { 0x8700, 0x0910, 0x2000 },
-  { 0x0700, 0x090f, 0x0000 },
-  { 0x0700, 0x0911, 0x0000 },
-  { 0x8700, 0x0914, 0x2000 },
-  { 0x0700, 0x0913, 0x0000 },
-  { 0x0700, 0x0915, 0x0000 },
-  { 0x8700, 0x091e, 0x4000 },
-  { 0x8700, 0x091a, 0x3000 },
-  { 0x8700, 0x0918, 0x2000 },
-  { 0x0700, 0x0917, 0x0000 },
-  { 0x0700, 0x0919, 0x0000 },
-  { 0x8700, 0x091c, 0x2000 },
-  { 0x0700, 0x091b, 0x0000 },
-  { 0x0700, 0x091d, 0x0000 },
-  { 0x8700, 0x0922, 0x3000 },
-  { 0x8700, 0x0920, 0x2000 },
-  { 0x0700, 0x091f, 0x0000 },
-  { 0x0700, 0x0921, 0x0000 },
-  { 0x8700, 0x0924, 0x2000 },
-  { 0x0700, 0x0923, 0x0000 },
-  { 0x0700, 0x0925, 0x0000 },
-  { 0x8c00, 0x09cd, 0x8000 },
-  { 0x8d00, 0x096d, 0x7000 },
-  { 0x8c00, 0x0948, 0x6000 },
-  { 0x8700, 0x0936, 0x5000 },
-  { 0x8700, 0x092e, 0x4000 },
-  { 0x8700, 0x092a, 0x3000 },
-  { 0x8700, 0x0928, 0x2000 },
-  { 0x0700, 0x0927, 0x0000 },
-  { 0x0700, 0x0929, 0x0000 },
-  { 0x8700, 0x092c, 0x2000 },
-  { 0x0700, 0x092b, 0x0000 },
-  { 0x0700, 0x092d, 0x0000 },
-  { 0x8700, 0x0932, 0x3000 },
-  { 0x8700, 0x0930, 0x2000 },
-  { 0x0700, 0x092f, 0x0000 },
-  { 0x0700, 0x0931, 0x0000 },
-  { 0x8700, 0x0934, 0x2000 },
-  { 0x0700, 0x0933, 0x0000 },
-  { 0x0700, 0x0935, 0x0000 },
-  { 0x8a00, 0x0940, 0x4000 },
-  { 0x8c00, 0x093c, 0x3000 },
-  { 0x8700, 0x0938, 0x2000 },
-  { 0x0700, 0x0937, 0x0000 },
-  { 0x0700, 0x0939, 0x0000 },
-  { 0x8a00, 0x093e, 0x2000 },
-  { 0x0700, 0x093d, 0x0000 },
-  { 0x0a00, 0x093f, 0x0000 },
-  { 0x8c00, 0x0944, 0x3000 },
-  { 0x8c00, 0x0942, 0x2000 },
-  { 0x0c00, 0x0941, 0x0000 },
-  { 0x0c00, 0x0943, 0x0000 },
-  { 0x8c00, 0x0946, 0x2000 },
-  { 0x0c00, 0x0945, 0x0000 },
-  { 0x0c00, 0x0947, 0x0000 },
-  { 0x8700, 0x095d, 0x5000 },
-  { 0x8c00, 0x0952, 0x4000 },
-  { 0x8a00, 0x094c, 0x3000 },
-  { 0x8a00, 0x094a, 0x2000 },
-  { 0x0a00, 0x0949, 0x0000 },
-  { 0x0a00, 0x094b, 0x0000 },
-  { 0x8700, 0x0950, 0x2000 },
-  { 0x0c00, 0x094d, 0x0000 },
-  { 0x0c00, 0x0951, 0x0000 },
-  { 0x8700, 0x0959, 0x3000 },
-  { 0x8c00, 0x0954, 0x2000 },
-  { 0x0c00, 0x0953, 0x0000 },
-  { 0x0700, 0x0958, 0x0000 },
-  { 0x8700, 0x095b, 0x2000 },
-  { 0x0700, 0x095a, 0x0000 },
-  { 0x0700, 0x095c, 0x0000 },
-  { 0x9500, 0x0965, 0x4000 },
-  { 0x8700, 0x0961, 0x3000 },
-  { 0x8700, 0x095f, 0x2000 },
-  { 0x0700, 0x095e, 0x0000 },
-  { 0x0700, 0x0960, 0x0000 },
-  { 0x8c00, 0x0963, 0x2000 },
-  { 0x0c00, 0x0962, 0x0000 },
-  { 0x1500, 0x0964, 0x0000 },
-  { 0x8d00, 0x0969, 0x3000 },
-  { 0x8d00, 0x0967, 0x2000 },
-  { 0x0d00, 0x0966, 0x0000 },
-  { 0x0d00, 0x0968, 0x0000 },
-  { 0x8d00, 0x096b, 0x2000 },
-  { 0x0d00, 0x096a, 0x0000 },
-  { 0x0d00, 0x096c, 0x0000 },
-  { 0x8700, 0x09a2, 0x6000 },
-  { 0x8700, 0x0990, 0x5000 },
-  { 0x8700, 0x0986, 0x4000 },
-  { 0x8c00, 0x0981, 0x3000 },
-  { 0x8d00, 0x096f, 0x2000 },
-  { 0x0d00, 0x096e, 0x0000 },
-  { 0x1500, 0x0970, 0x0000 },
-  { 0x8a00, 0x0983, 0x2000 },
-  { 0x0a00, 0x0982, 0x0000 },
-  { 0x0700, 0x0985, 0x0000 },
-  { 0x8700, 0x098a, 0x3000 },
-  { 0x8700, 0x0988, 0x2000 },
-  { 0x0700, 0x0987, 0x0000 },
-  { 0x0700, 0x0989, 0x0000 },
-  { 0x8700, 0x098c, 0x2000 },
-  { 0x0700, 0x098b, 0x0000 },
-  { 0x0700, 0x098f, 0x0000 },
-  { 0x8700, 0x099a, 0x4000 },
-  { 0x8700, 0x0996, 0x3000 },
-  { 0x8700, 0x0994, 0x2000 },
-  { 0x0700, 0x0993, 0x0000 },
-  { 0x0700, 0x0995, 0x0000 },
-  { 0x8700, 0x0998, 0x2000 },
-  { 0x0700, 0x0997, 0x0000 },
-  { 0x0700, 0x0999, 0x0000 },
-  { 0x8700, 0x099e, 0x3000 },
-  { 0x8700, 0x099c, 0x2000 },
-  { 0x0700, 0x099b, 0x0000 },
-  { 0x0700, 0x099d, 0x0000 },
-  { 0x8700, 0x09a0, 0x2000 },
-  { 0x0700, 0x099f, 0x0000 },
-  { 0x0700, 0x09a1, 0x0000 },
-  { 0x8700, 0x09b7, 0x5000 },
-  { 0x8700, 0x09ab, 0x4000 },
-  { 0x8700, 0x09a6, 0x3000 },
-  { 0x8700, 0x09a4, 0x2000 },
-  { 0x0700, 0x09a3, 0x0000 },
-  { 0x0700, 0x09a5, 0x0000 },
-  { 0x8700, 0x09a8, 0x2000 },
-  { 0x0700, 0x09a7, 0x0000 },
-  { 0x0700, 0x09aa, 0x0000 },
-  { 0x8700, 0x09af, 0x3000 },
-  { 0x8700, 0x09ad, 0x2000 },
-  { 0x0700, 0x09ac, 0x0000 },
-  { 0x0700, 0x09ae, 0x0000 },
-  { 0x8700, 0x09b2, 0x2000 },
-  { 0x0700, 0x09b0, 0x0000 },
-  { 0x0700, 0x09b6, 0x0000 },
-  { 0x8c00, 0x09c1, 0x4000 },
-  { 0x8700, 0x09bd, 0x3000 },
-  { 0x8700, 0x09b9, 0x2000 },
-  { 0x0700, 0x09b8, 0x0000 },
-  { 0x0c00, 0x09bc, 0x0000 },
-  { 0x8a00, 0x09bf, 0x2000 },
-  { 0x0a00, 0x09be, 0x0000 },
-  { 0x0a00, 0x09c0, 0x0000 },
-  { 0x8a00, 0x09c7, 0x3000 },
-  { 0x8c00, 0x09c3, 0x2000 },
-  { 0x0c00, 0x09c2, 0x0000 },
-  { 0x0c00, 0x09c4, 0x0000 },
-  { 0x8a00, 0x09cb, 0x2000 },
-  { 0x0a00, 0x09c8, 0x0000 },
-  { 0x0a00, 0x09cc, 0x0000 },
-  { 0x8700, 0x0a2b, 0x7000 },
-  { 0x8a00, 0x0a03, 0x6000 },
-  { 0x8d00, 0x09ed, 0x5000 },
-  { 0x8c00, 0x09e3, 0x4000 },
-  { 0x8700, 0x09df, 0x3000 },
-  { 0x8700, 0x09dc, 0x2000 },
-  { 0x0a00, 0x09d7, 0x0000 },
-  { 0x0700, 0x09dd, 0x0000 },
-  { 0x8700, 0x09e1, 0x2000 },
-  { 0x0700, 0x09e0, 0x0000 },
-  { 0x0c00, 0x09e2, 0x0000 },
-  { 0x8d00, 0x09e9, 0x3000 },
-  { 0x8d00, 0x09e7, 0x2000 },
-  { 0x0d00, 0x09e6, 0x0000 },
-  { 0x0d00, 0x09e8, 0x0000 },
-  { 0x8d00, 0x09eb, 0x2000 },
-  { 0x0d00, 0x09ea, 0x0000 },
-  { 0x0d00, 0x09ec, 0x0000 },
-  { 0x8f00, 0x09f5, 0x4000 },
-  { 0x8700, 0x09f1, 0x3000 },
-  { 0x8d00, 0x09ef, 0x2000 },
-  { 0x0d00, 0x09ee, 0x0000 },
-  { 0x0700, 0x09f0, 0x0000 },
-  { 0x9700, 0x09f3, 0x2000 },
-  { 0x1700, 0x09f2, 0x0000 },
-  { 0x0f00, 0x09f4, 0x0000 },
-  { 0x8f00, 0x09f9, 0x3000 },
-  { 0x8f00, 0x09f7, 0x2000 },
-  { 0x0f00, 0x09f6, 0x0000 },
-  { 0x0f00, 0x09f8, 0x0000 },
-  { 0x8c00, 0x0a01, 0x2000 },
-  { 0x1a00, 0x09fa, 0x0000 },
-  { 0x0c00, 0x0a02, 0x0000 },
-  { 0x8700, 0x0a1a, 0x5000 },
-  { 0x8700, 0x0a10, 0x4000 },
-  { 0x8700, 0x0a08, 0x3000 },
-  { 0x8700, 0x0a06, 0x2000 },
-  { 0x0700, 0x0a05, 0x0000 },
-  { 0x0700, 0x0a07, 0x0000 },
-  { 0x8700, 0x0a0a, 0x2000 },
-  { 0x0700, 0x0a09, 0x0000 },
-  { 0x0700, 0x0a0f, 0x0000 },
-  { 0x8700, 0x0a16, 0x3000 },
-  { 0x8700, 0x0a14, 0x2000 },
-  { 0x0700, 0x0a13, 0x0000 },
-  { 0x0700, 0x0a15, 0x0000 },
-  { 0x8700, 0x0a18, 0x2000 },
-  { 0x0700, 0x0a17, 0x0000 },
-  { 0x0700, 0x0a19, 0x0000 },
-  { 0x8700, 0x0a22, 0x4000 },
-  { 0x8700, 0x0a1e, 0x3000 },
-  { 0x8700, 0x0a1c, 0x2000 },
-  { 0x0700, 0x0a1b, 0x0000 },
-  { 0x0700, 0x0a1d, 0x0000 },
-  { 0x8700, 0x0a20, 0x2000 },
-  { 0x0700, 0x0a1f, 0x0000 },
-  { 0x0700, 0x0a21, 0x0000 },
-  { 0x8700, 0x0a26, 0x3000 },
-  { 0x8700, 0x0a24, 0x2000 },
-  { 0x0700, 0x0a23, 0x0000 },
-  { 0x0700, 0x0a25, 0x0000 },
-  { 0x8700, 0x0a28, 0x2000 },
-  { 0x0700, 0x0a27, 0x0000 },
-  { 0x0700, 0x0a2a, 0x0000 },
-  { 0x8d00, 0x0a6a, 0x6000 },
-  { 0x8c00, 0x0a41, 0x5000 },
-  { 0x8700, 0x0a35, 0x4000 },
-  { 0x8700, 0x0a2f, 0x3000 },
-  { 0x8700, 0x0a2d, 0x2000 },
-  { 0x0700, 0x0a2c, 0x0000 },
-  { 0x0700, 0x0a2e, 0x0000 },
-  { 0x8700, 0x0a32, 0x2000 },
-  { 0x0700, 0x0a30, 0x0000 },
-  { 0x0700, 0x0a33, 0x0000 },
-  { 0x8c00, 0x0a3c, 0x3000 },
-  { 0x8700, 0x0a38, 0x2000 },
-  { 0x0700, 0x0a36, 0x0000 },
-  { 0x0700, 0x0a39, 0x0000 },
-  { 0x8a00, 0x0a3f, 0x2000 },
-  { 0x0a00, 0x0a3e, 0x0000 },
-  { 0x0a00, 0x0a40, 0x0000 },
-  { 0x8700, 0x0a5a, 0x4000 },
-  { 0x8c00, 0x0a4b, 0x3000 },
-  { 0x8c00, 0x0a47, 0x2000 },
-  { 0x0c00, 0x0a42, 0x0000 },
-  { 0x0c00, 0x0a48, 0x0000 },
-  { 0x8c00, 0x0a4d, 0x2000 },
-  { 0x0c00, 0x0a4c, 0x0000 },
-  { 0x0700, 0x0a59, 0x0000 },
-  { 0x8d00, 0x0a66, 0x3000 },
-  { 0x8700, 0x0a5c, 0x2000 },
-  { 0x0700, 0x0a5b, 0x0000 },
-  { 0x0700, 0x0a5e, 0x0000 },
-  { 0x8d00, 0x0a68, 0x2000 },
-  { 0x0d00, 0x0a67, 0x0000 },
-  { 0x0d00, 0x0a69, 0x0000 },
-  { 0x8700, 0x0a87, 0x5000 },
-  { 0x8700, 0x0a72, 0x4000 },
-  { 0x8d00, 0x0a6e, 0x3000 },
-  { 0x8d00, 0x0a6c, 0x2000 },
-  { 0x0d00, 0x0a6b, 0x0000 },
-  { 0x0d00, 0x0a6d, 0x0000 },
-  { 0x8c00, 0x0a70, 0x2000 },
-  { 0x0d00, 0x0a6f, 0x0000 },
-  { 0x0c00, 0x0a71, 0x0000 },
-  { 0x8c00, 0x0a82, 0x3000 },
-  { 0x8700, 0x0a74, 0x2000 },
-  { 0x0700, 0x0a73, 0x0000 },
-  { 0x0c00, 0x0a81, 0x0000 },
-  { 0x8700, 0x0a85, 0x2000 },
-  { 0x0a00, 0x0a83, 0x0000 },
-  { 0x0700, 0x0a86, 0x0000 },
-  { 0x8700, 0x0a90, 0x4000 },
-  { 0x8700, 0x0a8b, 0x3000 },
-  { 0x8700, 0x0a89, 0x2000 },
-  { 0x0700, 0x0a88, 0x0000 },
-  { 0x0700, 0x0a8a, 0x0000 },
-  { 0x8700, 0x0a8d, 0x2000 },
-  { 0x0700, 0x0a8c, 0x0000 },
-  { 0x0700, 0x0a8f, 0x0000 },
-  { 0x8700, 0x0a95, 0x3000 },
-  { 0x8700, 0x0a93, 0x2000 },
-  { 0x0700, 0x0a91, 0x0000 },
-  { 0x0700, 0x0a94, 0x0000 },
-  { 0x8700, 0x0a97, 0x2000 },
-  { 0x0700, 0x0a96, 0x0000 },
-  { 0x0700, 0x0a98, 0x0000 },
-  { 0x8700, 0x10ef, 0xb000 },
-  { 0x8700, 0x0dc6, 0xa000 },
-  { 0x8700, 0x0c31, 0x9000 },
-  { 0x8700, 0x0b5f, 0x8000 },
-  { 0x8a00, 0x0b03, 0x7000 },
-  { 0x8a00, 0x0abe, 0x6000 },
-  { 0x8700, 0x0aaa, 0x5000 },
-  { 0x8700, 0x0aa1, 0x4000 },
-  { 0x8700, 0x0a9d, 0x3000 },
-  { 0x8700, 0x0a9b, 0x2000 },
-  { 0x0700, 0x0a9a, 0x0000 },
-  { 0x0700, 0x0a9c, 0x0000 },
-  { 0x8700, 0x0a9f, 0x2000 },
-  { 0x0700, 0x0a9e, 0x0000 },
-  { 0x0700, 0x0aa0, 0x0000 },
-  { 0x8700, 0x0aa5, 0x3000 },
-  { 0x8700, 0x0aa3, 0x2000 },
-  { 0x0700, 0x0aa2, 0x0000 },
-  { 0x0700, 0x0aa4, 0x0000 },
-  { 0x8700, 0x0aa7, 0x2000 },
-  { 0x0700, 0x0aa6, 0x0000 },
-  { 0x0700, 0x0aa8, 0x0000 },
-  { 0x8700, 0x0ab3, 0x4000 },
-  { 0x8700, 0x0aae, 0x3000 },
-  { 0x8700, 0x0aac, 0x2000 },
-  { 0x0700, 0x0aab, 0x0000 },
-  { 0x0700, 0x0aad, 0x0000 },
-  { 0x8700, 0x0ab0, 0x2000 },
-  { 0x0700, 0x0aaf, 0x0000 },
-  { 0x0700, 0x0ab2, 0x0000 },
-  { 0x8700, 0x0ab8, 0x3000 },
-  { 0x8700, 0x0ab6, 0x2000 },
-  { 0x0700, 0x0ab5, 0x0000 },
-  { 0x0700, 0x0ab7, 0x0000 },
-  { 0x8c00, 0x0abc, 0x2000 },
-  { 0x0700, 0x0ab9, 0x0000 },
-  { 0x0700, 0x0abd, 0x0000 },
-  { 0x8700, 0x0ae1, 0x5000 },
-  { 0x8c00, 0x0ac7, 0x4000 },
-  { 0x8c00, 0x0ac2, 0x3000 },
-  { 0x8a00, 0x0ac0, 0x2000 },
-  { 0x0a00, 0x0abf, 0x0000 },
-  { 0x0c00, 0x0ac1, 0x0000 },
-  { 0x8c00, 0x0ac4, 0x2000 },
-  { 0x0c00, 0x0ac3, 0x0000 },
-  { 0x0c00, 0x0ac5, 0x0000 },
-  { 0x8a00, 0x0acc, 0x3000 },
-  { 0x8a00, 0x0ac9, 0x2000 },
-  { 0x0c00, 0x0ac8, 0x0000 },
-  { 0x0a00, 0x0acb, 0x0000 },
-  { 0x8700, 0x0ad0, 0x2000 },
-  { 0x0c00, 0x0acd, 0x0000 },
-  { 0x0700, 0x0ae0, 0x0000 },
-  { 0x8d00, 0x0aeb, 0x4000 },
-  { 0x8d00, 0x0ae7, 0x3000 },
-  { 0x8c00, 0x0ae3, 0x2000 },
-  { 0x0c00, 0x0ae2, 0x0000 },
-  { 0x0d00, 0x0ae6, 0x0000 },
-  { 0x8d00, 0x0ae9, 0x2000 },
-  { 0x0d00, 0x0ae8, 0x0000 },
-  { 0x0d00, 0x0aea, 0x0000 },
-  { 0x8d00, 0x0aef, 0x3000 },
-  { 0x8d00, 0x0aed, 0x2000 },
-  { 0x0d00, 0x0aec, 0x0000 },
-  { 0x0d00, 0x0aee, 0x0000 },
-  { 0x8c00, 0x0b01, 0x2000 },
-  { 0x1700, 0x0af1, 0x0000 },
-  { 0x0a00, 0x0b02, 0x0000 },
-  { 0x8700, 0x0b28, 0x6000 },
-  { 0x8700, 0x0b18, 0x5000 },
-  { 0x8700, 0x0b0c, 0x4000 },
-  { 0x8700, 0x0b08, 0x3000 },
-  { 0x8700, 0x0b06, 0x2000 },
-  { 0x0700, 0x0b05, 0x0000 },
-  { 0x0700, 0x0b07, 0x0000 },
-  { 0x8700, 0x0b0a, 0x2000 },
-  { 0x0700, 0x0b09, 0x0000 },
-  { 0x0700, 0x0b0b, 0x0000 },
-  { 0x8700, 0x0b14, 0x3000 },
-  { 0x8700, 0x0b10, 0x2000 },
-  { 0x0700, 0x0b0f, 0x0000 },
-  { 0x0700, 0x0b13, 0x0000 },
-  { 0x8700, 0x0b16, 0x2000 },
-  { 0x0700, 0x0b15, 0x0000 },
-  { 0x0700, 0x0b17, 0x0000 },
-  { 0x8700, 0x0b20, 0x4000 },
-  { 0x8700, 0x0b1c, 0x3000 },
-  { 0x8700, 0x0b1a, 0x2000 },
-  { 0x0700, 0x0b19, 0x0000 },
-  { 0x0700, 0x0b1b, 0x0000 },
-  { 0x8700, 0x0b1e, 0x2000 },
-  { 0x0700, 0x0b1d, 0x0000 },
-  { 0x0700, 0x0b1f, 0x0000 },
-  { 0x8700, 0x0b24, 0x3000 },
-  { 0x8700, 0x0b22, 0x2000 },
-  { 0x0700, 0x0b21, 0x0000 },
-  { 0x0700, 0x0b23, 0x0000 },
-  { 0x8700, 0x0b26, 0x2000 },
-  { 0x0700, 0x0b25, 0x0000 },
-  { 0x0700, 0x0b27, 0x0000 },
-  { 0x8700, 0x0b3d, 0x5000 },
-  { 0x8700, 0x0b32, 0x4000 },
-  { 0x8700, 0x0b2d, 0x3000 },
-  { 0x8700, 0x0b2b, 0x2000 },
-  { 0x0700, 0x0b2a, 0x0000 },
-  { 0x0700, 0x0b2c, 0x0000 },
-  { 0x8700, 0x0b2f, 0x2000 },
-  { 0x0700, 0x0b2e, 0x0000 },
-  { 0x0700, 0x0b30, 0x0000 },
-  { 0x8700, 0x0b37, 0x3000 },
-  { 0x8700, 0x0b35, 0x2000 },
-  { 0x0700, 0x0b33, 0x0000 },
-  { 0x0700, 0x0b36, 0x0000 },
-  { 0x8700, 0x0b39, 0x2000 },
-  { 0x0700, 0x0b38, 0x0000 },
-  { 0x0c00, 0x0b3c, 0x0000 },
-  { 0x8a00, 0x0b48, 0x4000 },
-  { 0x8c00, 0x0b41, 0x3000 },
-  { 0x8c00, 0x0b3f, 0x2000 },
-  { 0x0a00, 0x0b3e, 0x0000 },
-  { 0x0a00, 0x0b40, 0x0000 },
-  { 0x8c00, 0x0b43, 0x2000 },
-  { 0x0c00, 0x0b42, 0x0000 },
-  { 0x0a00, 0x0b47, 0x0000 },
-  { 0x8c00, 0x0b56, 0x3000 },
-  { 0x8a00, 0x0b4c, 0x2000 },
-  { 0x0a00, 0x0b4b, 0x0000 },
-  { 0x0c00, 0x0b4d, 0x0000 },
-  { 0x8700, 0x0b5c, 0x2000 },
-  { 0x0a00, 0x0b57, 0x0000 },
-  { 0x0700, 0x0b5d, 0x0000 },
-  { 0x8d00, 0x0be7, 0x7000 },
-  { 0x8700, 0x0b9c, 0x6000 },
-  { 0x8700, 0x0b83, 0x5000 },
-  { 0x8d00, 0x0b6b, 0x4000 },
-  { 0x8d00, 0x0b67, 0x3000 },
-  { 0x8700, 0x0b61, 0x2000 },
-  { 0x0700, 0x0b60, 0x0000 },
-  { 0x0d00, 0x0b66, 0x0000 },
-  { 0x8d00, 0x0b69, 0x2000 },
-  { 0x0d00, 0x0b68, 0x0000 },
-  { 0x0d00, 0x0b6a, 0x0000 },
-  { 0x8d00, 0x0b6f, 0x3000 },
-  { 0x8d00, 0x0b6d, 0x2000 },
-  { 0x0d00, 0x0b6c, 0x0000 },
-  { 0x0d00, 0x0b6e, 0x0000 },
-  { 0x8700, 0x0b71, 0x2000 },
-  { 0x1a00, 0x0b70, 0x0000 },
-  { 0x0c00, 0x0b82, 0x0000 },
-  { 0x8700, 0x0b8f, 0x4000 },
-  { 0x8700, 0x0b88, 0x3000 },
-  { 0x8700, 0x0b86, 0x2000 },
-  { 0x0700, 0x0b85, 0x0000 },
-  { 0x0700, 0x0b87, 0x0000 },
-  { 0x8700, 0x0b8a, 0x2000 },
-  { 0x0700, 0x0b89, 0x0000 },
-  { 0x0700, 0x0b8e, 0x0000 },
-  { 0x8700, 0x0b94, 0x3000 },
-  { 0x8700, 0x0b92, 0x2000 },
-  { 0x0700, 0x0b90, 0x0000 },
-  { 0x0700, 0x0b93, 0x0000 },
-  { 0x8700, 0x0b99, 0x2000 },
-  { 0x0700, 0x0b95, 0x0000 },
-  { 0x0700, 0x0b9a, 0x0000 },
-  { 0x8700, 0x0bb7, 0x5000 },
-  { 0x8700, 0x0bae, 0x4000 },
-  { 0x8700, 0x0ba4, 0x3000 },
-  { 0x8700, 0x0b9f, 0x2000 },
-  { 0x0700, 0x0b9e, 0x0000 },
-  { 0x0700, 0x0ba3, 0x0000 },
-  { 0x8700, 0x0ba9, 0x2000 },
-  { 0x0700, 0x0ba8, 0x0000 },
-  { 0x0700, 0x0baa, 0x0000 },
-  { 0x8700, 0x0bb2, 0x3000 },
-  { 0x8700, 0x0bb0, 0x2000 },
-  { 0x0700, 0x0baf, 0x0000 },
-  { 0x0700, 0x0bb1, 0x0000 },
-  { 0x8700, 0x0bb4, 0x2000 },
-  { 0x0700, 0x0bb3, 0x0000 },
-  { 0x0700, 0x0bb5, 0x0000 },
-  { 0x8a00, 0x0bc6, 0x4000 },
-  { 0x8a00, 0x0bbf, 0x3000 },
-  { 0x8700, 0x0bb9, 0x2000 },
-  { 0x0700, 0x0bb8, 0x0000 },
-  { 0x0a00, 0x0bbe, 0x0000 },
-  { 0x8a00, 0x0bc1, 0x2000 },
-  { 0x0c00, 0x0bc0, 0x0000 },
-  { 0x0a00, 0x0bc2, 0x0000 },
-  { 0x8a00, 0x0bcb, 0x3000 },
-  { 0x8a00, 0x0bc8, 0x2000 },
-  { 0x0a00, 0x0bc7, 0x0000 },
-  { 0x0a00, 0x0bca, 0x0000 },
-  { 0x8c00, 0x0bcd, 0x2000 },
-  { 0x0a00, 0x0bcc, 0x0000 },
-  { 0x0a00, 0x0bd7, 0x0000 },
-  { 0x8700, 0x0c0f, 0x6000 },
-  { 0x9a00, 0x0bf7, 0x5000 },
-  { 0x8d00, 0x0bef, 0x4000 },
-  { 0x8d00, 0x0beb, 0x3000 },
-  { 0x8d00, 0x0be9, 0x2000 },
-  { 0x0d00, 0x0be8, 0x0000 },
-  { 0x0d00, 0x0bea, 0x0000 },
-  { 0x8d00, 0x0bed, 0x2000 },
-  { 0x0d00, 0x0bec, 0x0000 },
-  { 0x0d00, 0x0bee, 0x0000 },
-  { 0x9a00, 0x0bf3, 0x3000 },
-  { 0x8f00, 0x0bf1, 0x2000 },
-  { 0x0f00, 0x0bf0, 0x0000 },
-  { 0x0f00, 0x0bf2, 0x0000 },
-  { 0x9a00, 0x0bf5, 0x2000 },
-  { 0x1a00, 0x0bf4, 0x0000 },
-  { 0x1a00, 0x0bf6, 0x0000 },
-  { 0x8700, 0x0c06, 0x4000 },
-  { 0x8a00, 0x0c01, 0x3000 },
-  { 0x9700, 0x0bf9, 0x2000 },
-  { 0x1a00, 0x0bf8, 0x0000 },
-  { 0x1a00, 0x0bfa, 0x0000 },
-  { 0x8a00, 0x0c03, 0x2000 },
-  { 0x0a00, 0x0c02, 0x0000 },
-  { 0x0700, 0x0c05, 0x0000 },
-  { 0x8700, 0x0c0a, 0x3000 },
-  { 0x8700, 0x0c08, 0x2000 },
-  { 0x0700, 0x0c07, 0x0000 },
-  { 0x0700, 0x0c09, 0x0000 },
-  { 0x8700, 0x0c0c, 0x2000 },
-  { 0x0700, 0x0c0b, 0x0000 },
-  { 0x0700, 0x0c0e, 0x0000 },
-  { 0x8700, 0x0c20, 0x5000 },
-  { 0x8700, 0x0c18, 0x4000 },
-  { 0x8700, 0x0c14, 0x3000 },
-  { 0x8700, 0x0c12, 0x2000 },
-  { 0x0700, 0x0c10, 0x0000 },
-  { 0x0700, 0x0c13, 0x0000 },
-  { 0x8700, 0x0c16, 0x2000 },
-  { 0x0700, 0x0c15, 0x0000 },
-  { 0x0700, 0x0c17, 0x0000 },
-  { 0x8700, 0x0c1c, 0x3000 },
-  { 0x8700, 0x0c1a, 0x2000 },
-  { 0x0700, 0x0c19, 0x0000 },
-  { 0x0700, 0x0c1b, 0x0000 },
-  { 0x8700, 0x0c1e, 0x2000 },
-  { 0x0700, 0x0c1d, 0x0000 },
-  { 0x0700, 0x0c1f, 0x0000 },
-  { 0x8700, 0x0c28, 0x4000 },
-  { 0x8700, 0x0c24, 0x3000 },
-  { 0x8700, 0x0c22, 0x2000 },
-  { 0x0700, 0x0c21, 0x0000 },
-  { 0x0700, 0x0c23, 0x0000 },
-  { 0x8700, 0x0c26, 0x2000 },
-  { 0x0700, 0x0c25, 0x0000 },
-  { 0x0700, 0x0c27, 0x0000 },
-  { 0x8700, 0x0c2d, 0x3000 },
-  { 0x8700, 0x0c2b, 0x2000 },
-  { 0x0700, 0x0c2a, 0x0000 },
-  { 0x0700, 0x0c2c, 0x0000 },
-  { 0x8700, 0x0c2f, 0x2000 },
-  { 0x0700, 0x0c2e, 0x0000 },
-  { 0x0700, 0x0c30, 0x0000 },
-  { 0x8700, 0x0d0e, 0x8000 },
-  { 0x8700, 0x0ca1, 0x7000 },
-  { 0x8d00, 0x0c6c, 0x6000 },
-  { 0x8c00, 0x0c47, 0x5000 },
-  { 0x8c00, 0x0c3e, 0x4000 },
-  { 0x8700, 0x0c36, 0x3000 },
-  { 0x8700, 0x0c33, 0x2000 },
-  { 0x0700, 0x0c32, 0x0000 },
-  { 0x0700, 0x0c35, 0x0000 },
-  { 0x8700, 0x0c38, 0x2000 },
-  { 0x0700, 0x0c37, 0x0000 },
-  { 0x0700, 0x0c39, 0x0000 },
-  { 0x8a00, 0x0c42, 0x3000 },
-  { 0x8c00, 0x0c40, 0x2000 },
-  { 0x0c00, 0x0c3f, 0x0000 },
-  { 0x0a00, 0x0c41, 0x0000 },
-  { 0x8a00, 0x0c44, 0x2000 },
-  { 0x0a00, 0x0c43, 0x0000 },
-  { 0x0c00, 0x0c46, 0x0000 },
-  { 0x8700, 0x0c60, 0x4000 },
-  { 0x8c00, 0x0c4c, 0x3000 },
-  { 0x8c00, 0x0c4a, 0x2000 },
-  { 0x0c00, 0x0c48, 0x0000 },
-  { 0x0c00, 0x0c4b, 0x0000 },
-  { 0x8c00, 0x0c55, 0x2000 },
-  { 0x0c00, 0x0c4d, 0x0000 },
-  { 0x0c00, 0x0c56, 0x0000 },
-  { 0x8d00, 0x0c68, 0x3000 },
-  { 0x8d00, 0x0c66, 0x2000 },
-  { 0x0700, 0x0c61, 0x0000 },
-  { 0x0d00, 0x0c67, 0x0000 },
-  { 0x8d00, 0x0c6a, 0x2000 },
-  { 0x0d00, 0x0c69, 0x0000 },
-  { 0x0d00, 0x0c6b, 0x0000 },
-  { 0x8700, 0x0c90, 0x5000 },
-  { 0x8700, 0x0c87, 0x4000 },
-  { 0x8a00, 0x0c82, 0x3000 },
-  { 0x8d00, 0x0c6e, 0x2000 },
-  { 0x0d00, 0x0c6d, 0x0000 },
-  { 0x0d00, 0x0c6f, 0x0000 },
-  { 0x8700, 0x0c85, 0x2000 },
-  { 0x0a00, 0x0c83, 0x0000 },
-  { 0x0700, 0x0c86, 0x0000 },
-  { 0x8700, 0x0c8b, 0x3000 },
-  { 0x8700, 0x0c89, 0x2000 },
-  { 0x0700, 0x0c88, 0x0000 },
-  { 0x0700, 0x0c8a, 0x0000 },
-  { 0x8700, 0x0c8e, 0x2000 },
-  { 0x0700, 0x0c8c, 0x0000 },
-  { 0x0700, 0x0c8f, 0x0000 },
-  { 0x8700, 0x0c99, 0x4000 },
-  { 0x8700, 0x0c95, 0x3000 },
-  { 0x8700, 0x0c93, 0x2000 },
-  { 0x0700, 0x0c92, 0x0000 },
-  { 0x0700, 0x0c94, 0x0000 },
-  { 0x8700, 0x0c97, 0x2000 },
-  { 0x0700, 0x0c96, 0x0000 },
-  { 0x0700, 0x0c98, 0x0000 },
-  { 0x8700, 0x0c9d, 0x3000 },
-  { 0x8700, 0x0c9b, 0x2000 },
-  { 0x0700, 0x0c9a, 0x0000 },
-  { 0x0700, 0x0c9c, 0x0000 },
-  { 0x8700, 0x0c9f, 0x2000 },
-  { 0x0700, 0x0c9e, 0x0000 },
-  { 0x0700, 0x0ca0, 0x0000 },
-  { 0x8c00, 0x0cc6, 0x6000 },
-  { 0x8700, 0x0cb2, 0x5000 },
-  { 0x8700, 0x0caa, 0x4000 },
-  { 0x8700, 0x0ca5, 0x3000 },
-  { 0x8700, 0x0ca3, 0x2000 },
-  { 0x0700, 0x0ca2, 0x0000 },
-  { 0x0700, 0x0ca4, 0x0000 },
-  { 0x8700, 0x0ca7, 0x2000 },
-  { 0x0700, 0x0ca6, 0x0000 },
-  { 0x0700, 0x0ca8, 0x0000 },
-  { 0x8700, 0x0cae, 0x3000 },
-  { 0x8700, 0x0cac, 0x2000 },
-  { 0x0700, 0x0cab, 0x0000 },
-  { 0x0700, 0x0cad, 0x0000 },
-  { 0x8700, 0x0cb0, 0x2000 },
-  { 0x0700, 0x0caf, 0x0000 },
-  { 0x0700, 0x0cb1, 0x0000 },
-  { 0x8700, 0x0cbd, 0x4000 },
-  { 0x8700, 0x0cb7, 0x3000 },
-  { 0x8700, 0x0cb5, 0x2000 },
-  { 0x0700, 0x0cb3, 0x0000 },
-  { 0x0700, 0x0cb6, 0x0000 },
-  { 0x8700, 0x0cb9, 0x2000 },
-  { 0x0700, 0x0cb8, 0x0000 },
-  { 0x0c00, 0x0cbc, 0x0000 },
-  { 0x8a00, 0x0cc1, 0x3000 },
-  { 0x8c00, 0x0cbf, 0x2000 },
-  { 0x0a00, 0x0cbe, 0x0000 },
-  { 0x0a00, 0x0cc0, 0x0000 },
-  { 0x8a00, 0x0cc3, 0x2000 },
-  { 0x0a00, 0x0cc2, 0x0000 },
-  { 0x0a00, 0x0cc4, 0x0000 },
-  { 0x8d00, 0x0cea, 0x5000 },
-  { 0x8a00, 0x0cd6, 0x4000 },
-  { 0x8a00, 0x0ccb, 0x3000 },
-  { 0x8a00, 0x0cc8, 0x2000 },
-  { 0x0a00, 0x0cc7, 0x0000 },
-  { 0x0a00, 0x0cca, 0x0000 },
-  { 0x8c00, 0x0ccd, 0x2000 },
-  { 0x0c00, 0x0ccc, 0x0000 },
-  { 0x0a00, 0x0cd5, 0x0000 },
-  { 0x8d00, 0x0ce6, 0x3000 },
-  { 0x8700, 0x0ce0, 0x2000 },
-  { 0x0700, 0x0cde, 0x0000 },
-  { 0x0700, 0x0ce1, 0x0000 },
-  { 0x8d00, 0x0ce8, 0x2000 },
-  { 0x0d00, 0x0ce7, 0x0000 },
-  { 0x0d00, 0x0ce9, 0x0000 },
-  { 0x8700, 0x0d05, 0x4000 },
-  { 0x8d00, 0x0cee, 0x3000 },
-  { 0x8d00, 0x0cec, 0x2000 },
-  { 0x0d00, 0x0ceb, 0x0000 },
-  { 0x0d00, 0x0ced, 0x0000 },
-  { 0x8a00, 0x0d02, 0x2000 },
-  { 0x0d00, 0x0cef, 0x0000 },
-  { 0x0a00, 0x0d03, 0x0000 },
-  { 0x8700, 0x0d09, 0x3000 },
-  { 0x8700, 0x0d07, 0x2000 },
-  { 0x0700, 0x0d06, 0x0000 },
-  { 0x0700, 0x0d08, 0x0000 },
-  { 0x8700, 0x0d0b, 0x2000 },
-  { 0x0700, 0x0d0a, 0x0000 },
-  { 0x0700, 0x0d0c, 0x0000 },
-  { 0x8d00, 0x0d6c, 0x7000 },
-  { 0x8700, 0x0d30, 0x6000 },
-  { 0x8700, 0x0d1f, 0x5000 },
-  { 0x8700, 0x0d17, 0x4000 },
-  { 0x8700, 0x0d13, 0x3000 },
-  { 0x8700, 0x0d10, 0x2000 },
-  { 0x0700, 0x0d0f, 0x0000 },
-  { 0x0700, 0x0d12, 0x0000 },
-  { 0x8700, 0x0d15, 0x2000 },
-  { 0x0700, 0x0d14, 0x0000 },
-  { 0x0700, 0x0d16, 0x0000 },
-  { 0x8700, 0x0d1b, 0x3000 },
-  { 0x8700, 0x0d19, 0x2000 },
-  { 0x0700, 0x0d18, 0x0000 },
-  { 0x0700, 0x0d1a, 0x0000 },
-  { 0x8700, 0x0d1d, 0x2000 },
-  { 0x0700, 0x0d1c, 0x0000 },
-  { 0x0700, 0x0d1e, 0x0000 },
-  { 0x8700, 0x0d27, 0x4000 },
-  { 0x8700, 0x0d23, 0x3000 },
-  { 0x8700, 0x0d21, 0x2000 },
-  { 0x0700, 0x0d20, 0x0000 },
-  { 0x0700, 0x0d22, 0x0000 },
-  { 0x8700, 0x0d25, 0x2000 },
-  { 0x0700, 0x0d24, 0x0000 },
-  { 0x0700, 0x0d26, 0x0000 },
-  { 0x8700, 0x0d2c, 0x3000 },
-  { 0x8700, 0x0d2a, 0x2000 },
-  { 0x0700, 0x0d28, 0x0000 },
-  { 0x0700, 0x0d2b, 0x0000 },
-  { 0x8700, 0x0d2e, 0x2000 },
-  { 0x0700, 0x0d2d, 0x0000 },
-  { 0x0700, 0x0d2f, 0x0000 },
-  { 0x8a00, 0x0d46, 0x5000 },
-  { 0x8700, 0x0d38, 0x4000 },
-  { 0x8700, 0x0d34, 0x3000 },
-  { 0x8700, 0x0d32, 0x2000 },
-  { 0x0700, 0x0d31, 0x0000 },
-  { 0x0700, 0x0d33, 0x0000 },
-  { 0x8700, 0x0d36, 0x2000 },
-  { 0x0700, 0x0d35, 0x0000 },
-  { 0x0700, 0x0d37, 0x0000 },
-  { 0x8a00, 0x0d40, 0x3000 },
-  { 0x8a00, 0x0d3e, 0x2000 },
-  { 0x0700, 0x0d39, 0x0000 },
-  { 0x0a00, 0x0d3f, 0x0000 },
-  { 0x8c00, 0x0d42, 0x2000 },
-  { 0x0c00, 0x0d41, 0x0000 },
-  { 0x0c00, 0x0d43, 0x0000 },
-  { 0x8700, 0x0d60, 0x4000 },
-  { 0x8a00, 0x0d4b, 0x3000 },
-  { 0x8a00, 0x0d48, 0x2000 },
-  { 0x0a00, 0x0d47, 0x0000 },
-  { 0x0a00, 0x0d4a, 0x0000 },
-  { 0x8c00, 0x0d4d, 0x2000 },
-  { 0x0a00, 0x0d4c, 0x0000 },
-  { 0x0a00, 0x0d57, 0x0000 },
-  { 0x8d00, 0x0d68, 0x3000 },
-  { 0x8d00, 0x0d66, 0x2000 },
-  { 0x0700, 0x0d61, 0x0000 },
-  { 0x0d00, 0x0d67, 0x0000 },
-  { 0x8d00, 0x0d6a, 0x2000 },
-  { 0x0d00, 0x0d69, 0x0000 },
-  { 0x0d00, 0x0d6b, 0x0000 },
-  { 0x8700, 0x0da2, 0x6000 },
-  { 0x8700, 0x0d8f, 0x5000 },
-  { 0x8700, 0x0d87, 0x4000 },
-  { 0x8a00, 0x0d82, 0x3000 },
-  { 0x8d00, 0x0d6e, 0x2000 },
-  { 0x0d00, 0x0d6d, 0x0000 },
-  { 0x0d00, 0x0d6f, 0x0000 },
-  { 0x8700, 0x0d85, 0x2000 },
-  { 0x0a00, 0x0d83, 0x0000 },
-  { 0x0700, 0x0d86, 0x0000 },
-  { 0x8700, 0x0d8b, 0x3000 },
-  { 0x8700, 0x0d89, 0x2000 },
-  { 0x0700, 0x0d88, 0x0000 },
-  { 0x0700, 0x0d8a, 0x0000 },
-  { 0x8700, 0x0d8d, 0x2000 },
-  { 0x0700, 0x0d8c, 0x0000 },
-  { 0x0700, 0x0d8e, 0x0000 },
-  { 0x8700, 0x0d9a, 0x4000 },
-  { 0x8700, 0x0d93, 0x3000 },
-  { 0x8700, 0x0d91, 0x2000 },
-  { 0x0700, 0x0d90, 0x0000 },
-  { 0x0700, 0x0d92, 0x0000 },
-  { 0x8700, 0x0d95, 0x2000 },
-  { 0x0700, 0x0d94, 0x0000 },
-  { 0x0700, 0x0d96, 0x0000 },
-  { 0x8700, 0x0d9e, 0x3000 },
-  { 0x8700, 0x0d9c, 0x2000 },
-  { 0x0700, 0x0d9b, 0x0000 },
-  { 0x0700, 0x0d9d, 0x0000 },
-  { 0x8700, 0x0da0, 0x2000 },
-  { 0x0700, 0x0d9f, 0x0000 },
-  { 0x0700, 0x0da1, 0x0000 },
-  { 0x8700, 0x0db3, 0x5000 },
-  { 0x8700, 0x0daa, 0x4000 },
-  { 0x8700, 0x0da6, 0x3000 },
-  { 0x8700, 0x0da4, 0x2000 },
-  { 0x0700, 0x0da3, 0x0000 },
-  { 0x0700, 0x0da5, 0x0000 },
-  { 0x8700, 0x0da8, 0x2000 },
-  { 0x0700, 0x0da7, 0x0000 },
-  { 0x0700, 0x0da9, 0x0000 },
-  { 0x8700, 0x0dae, 0x3000 },
-  { 0x8700, 0x0dac, 0x2000 },
-  { 0x0700, 0x0dab, 0x0000 },
-  { 0x0700, 0x0dad, 0x0000 },
-  { 0x8700, 0x0db0, 0x2000 },
-  { 0x0700, 0x0daf, 0x0000 },
-  { 0x0700, 0x0db1, 0x0000 },
-  { 0x8700, 0x0dbb, 0x4000 },
-  { 0x8700, 0x0db7, 0x3000 },
-  { 0x8700, 0x0db5, 0x2000 },
-  { 0x0700, 0x0db4, 0x0000 },
-  { 0x0700, 0x0db6, 0x0000 },
-  { 0x8700, 0x0db9, 0x2000 },
-  { 0x0700, 0x0db8, 0x0000 },
-  { 0x0700, 0x0dba, 0x0000 },
-  { 0x8700, 0x0dc2, 0x3000 },
-  { 0x8700, 0x0dc0, 0x2000 },
-  { 0x0700, 0x0dbd, 0x0000 },
-  { 0x0700, 0x0dc1, 0x0000 },
-  { 0x8700, 0x0dc4, 0x2000 },
-  { 0x0700, 0x0dc3, 0x0000 },
-  { 0x0700, 0x0dc5, 0x0000 },
-  { 0x8700, 0x0f55, 0x9000 },
-  { 0x8700, 0x0ea5, 0x8000 },
-  { 0x8700, 0x0e2d, 0x7000 },
-  { 0x8700, 0x0e0d, 0x6000 },
-  { 0x8a00, 0x0ddf, 0x5000 },
-  { 0x8c00, 0x0dd6, 0x4000 },
-  { 0x8a00, 0x0dd1, 0x3000 },
-  { 0x8a00, 0x0dcf, 0x2000 },
-  { 0x0c00, 0x0dca, 0x0000 },
-  { 0x0a00, 0x0dd0, 0x0000 },
-  { 0x8c00, 0x0dd3, 0x2000 },
-  { 0x0c00, 0x0dd2, 0x0000 },
-  { 0x0c00, 0x0dd4, 0x0000 },
-  { 0x8a00, 0x0ddb, 0x3000 },
-  { 0x8a00, 0x0dd9, 0x2000 },
-  { 0x0a00, 0x0dd8, 0x0000 },
-  { 0x0a00, 0x0dda, 0x0000 },
-  { 0x8a00, 0x0ddd, 0x2000 },
-  { 0x0a00, 0x0ddc, 0x0000 },
-  { 0x0a00, 0x0dde, 0x0000 },
-  { 0x8700, 0x0e05, 0x4000 },
-  { 0x8700, 0x0e01, 0x3000 },
-  { 0x8a00, 0x0df3, 0x2000 },
-  { 0x0a00, 0x0df2, 0x0000 },
-  { 0x1500, 0x0df4, 0x0000 },
-  { 0x8700, 0x0e03, 0x2000 },
-  { 0x0700, 0x0e02, 0x0000 },
-  { 0x0700, 0x0e04, 0x0000 },
-  { 0x8700, 0x0e09, 0x3000 },
-  { 0x8700, 0x0e07, 0x2000 },
-  { 0x0700, 0x0e06, 0x0000 },
-  { 0x0700, 0x0e08, 0x0000 },
-  { 0x8700, 0x0e0b, 0x2000 },
-  { 0x0700, 0x0e0a, 0x0000 },
-  { 0x0700, 0x0e0c, 0x0000 },
-  { 0x8700, 0x0e1d, 0x5000 },
-  { 0x8700, 0x0e15, 0x4000 },
-  { 0x8700, 0x0e11, 0x3000 },
-  { 0x8700, 0x0e0f, 0x2000 },
-  { 0x0700, 0x0e0e, 0x0000 },
-  { 0x0700, 0x0e10, 0x0000 },
-  { 0x8700, 0x0e13, 0x2000 },
-  { 0x0700, 0x0e12, 0x0000 },
-  { 0x0700, 0x0e14, 0x0000 },
-  { 0x8700, 0x0e19, 0x3000 },
-  { 0x8700, 0x0e17, 0x2000 },
-  { 0x0700, 0x0e16, 0x0000 },
-  { 0x0700, 0x0e18, 0x0000 },
-  { 0x8700, 0x0e1b, 0x2000 },
-  { 0x0700, 0x0e1a, 0x0000 },
-  { 0x0700, 0x0e1c, 0x0000 },
-  { 0x8700, 0x0e25, 0x4000 },
-  { 0x8700, 0x0e21, 0x3000 },
-  { 0x8700, 0x0e1f, 0x2000 },
-  { 0x0700, 0x0e1e, 0x0000 },
-  { 0x0700, 0x0e20, 0x0000 },
-  { 0x8700, 0x0e23, 0x2000 },
-  { 0x0700, 0x0e22, 0x0000 },
-  { 0x0700, 0x0e24, 0x0000 },
-  { 0x8700, 0x0e29, 0x3000 },
-  { 0x8700, 0x0e27, 0x2000 },
-  { 0x0700, 0x0e26, 0x0000 },
-  { 0x0700, 0x0e28, 0x0000 },
-  { 0x8700, 0x0e2b, 0x2000 },
-  { 0x0700, 0x0e2a, 0x0000 },
-  { 0x0700, 0x0e2c, 0x0000 },
-  { 0x8d00, 0x0e51, 0x6000 },
-  { 0x8700, 0x0e41, 0x5000 },
-  { 0x8c00, 0x0e35, 0x4000 },
-  { 0x8c00, 0x0e31, 0x3000 },
-  { 0x8700, 0x0e2f, 0x2000 },
-  { 0x0700, 0x0e2e, 0x0000 },
-  { 0x0700, 0x0e30, 0x0000 },
-  { 0x8700, 0x0e33, 0x2000 },
-  { 0x0700, 0x0e32, 0x0000 },
-  { 0x0c00, 0x0e34, 0x0000 },
-  { 0x8c00, 0x0e39, 0x3000 },
-  { 0x8c00, 0x0e37, 0x2000 },
-  { 0x0c00, 0x0e36, 0x0000 },
-  { 0x0c00, 0x0e38, 0x0000 },
-  { 0x9700, 0x0e3f, 0x2000 },
-  { 0x0c00, 0x0e3a, 0x0000 },
-  { 0x0700, 0x0e40, 0x0000 },
-  { 0x8c00, 0x0e49, 0x4000 },
-  { 0x8700, 0x0e45, 0x3000 },
-  { 0x8700, 0x0e43, 0x2000 },
-  { 0x0700, 0x0e42, 0x0000 },
-  { 0x0700, 0x0e44, 0x0000 },
-  { 0x8c00, 0x0e47, 0x2000 },
-  { 0x0600, 0x0e46, 0x0000 },
-  { 0x0c00, 0x0e48, 0x0000 },
-  { 0x8c00, 0x0e4d, 0x3000 },
-  { 0x8c00, 0x0e4b, 0x2000 },
-  { 0x0c00, 0x0e4a, 0x0000 },
-  { 0x0c00, 0x0e4c, 0x0000 },
-  { 0x9500, 0x0e4f, 0x2000 },
-  { 0x0c00, 0x0e4e, 0x0000 },
-  { 0x0d00, 0x0e50, 0x0000 },
-  { 0x8700, 0x0e8a, 0x5000 },
-  { 0x8d00, 0x0e59, 0x4000 },
-  { 0x8d00, 0x0e55, 0x3000 },
-  { 0x8d00, 0x0e53, 0x2000 },
-  { 0x0d00, 0x0e52, 0x0000 },
-  { 0x0d00, 0x0e54, 0x0000 },
-  { 0x8d00, 0x0e57, 0x2000 },
-  { 0x0d00, 0x0e56, 0x0000 },
-  { 0x0d00, 0x0e58, 0x0000 },
-  { 0x8700, 0x0e82, 0x3000 },
-  { 0x9500, 0x0e5b, 0x2000 },
-  { 0x1500, 0x0e5a, 0x0000 },
-  { 0x0700, 0x0e81, 0x0000 },
-  { 0x8700, 0x0e87, 0x2000 },
-  { 0x0700, 0x0e84, 0x0000 },
-  { 0x0700, 0x0e88, 0x0000 },
-  { 0x8700, 0x0e9b, 0x4000 },
-  { 0x8700, 0x0e96, 0x3000 },
-  { 0x8700, 0x0e94, 0x2000 },
-  { 0x0700, 0x0e8d, 0x0000 },
-  { 0x0700, 0x0e95, 0x0000 },
-  { 0x8700, 0x0e99, 0x2000 },
-  { 0x0700, 0x0e97, 0x0000 },
-  { 0x0700, 0x0e9a, 0x0000 },
-  { 0x8700, 0x0e9f, 0x3000 },
-  { 0x8700, 0x0e9d, 0x2000 },
-  { 0x0700, 0x0e9c, 0x0000 },
-  { 0x0700, 0x0e9e, 0x0000 },
-  { 0x8700, 0x0ea2, 0x2000 },
-  { 0x0700, 0x0ea1, 0x0000 },
-  { 0x0700, 0x0ea3, 0x0000 },
-  { 0x9a00, 0x0f14, 0x7000 },
-  { 0x8d00, 0x0ed0, 0x6000 },
-  { 0x8c00, 0x0eb9, 0x5000 },
-  { 0x8c00, 0x0eb1, 0x4000 },
-  { 0x8700, 0x0ead, 0x3000 },
-  { 0x8700, 0x0eaa, 0x2000 },
-  { 0x0700, 0x0ea7, 0x0000 },
-  { 0x0700, 0x0eab, 0x0000 },
-  { 0x8700, 0x0eaf, 0x2000 },
-  { 0x0700, 0x0eae, 0x0000 },
-  { 0x0700, 0x0eb0, 0x0000 },
-  { 0x8c00, 0x0eb5, 0x3000 },
-  { 0x8700, 0x0eb3, 0x2000 },
-  { 0x0700, 0x0eb2, 0x0000 },
-  { 0x0c00, 0x0eb4, 0x0000 },
-  { 0x8c00, 0x0eb7, 0x2000 },
-  { 0x0c00, 0x0eb6, 0x0000 },
-  { 0x0c00, 0x0eb8, 0x0000 },
-  { 0x8700, 0x0ec4, 0x4000 },
-  { 0x8700, 0x0ec0, 0x3000 },
-  { 0x8c00, 0x0ebc, 0x2000 },
-  { 0x0c00, 0x0ebb, 0x0000 },
-  { 0x0700, 0x0ebd, 0x0000 },
-  { 0x8700, 0x0ec2, 0x2000 },
-  { 0x0700, 0x0ec1, 0x0000 },
-  { 0x0700, 0x0ec3, 0x0000 },
-  { 0x8c00, 0x0eca, 0x3000 },
-  { 0x8c00, 0x0ec8, 0x2000 },
-  { 0x0600, 0x0ec6, 0x0000 },
-  { 0x0c00, 0x0ec9, 0x0000 },
-  { 0x8c00, 0x0ecc, 0x2000 },
-  { 0x0c00, 0x0ecb, 0x0000 },
-  { 0x0c00, 0x0ecd, 0x0000 },
-  { 0x9500, 0x0f04, 0x5000 },
-  { 0x8d00, 0x0ed8, 0x4000 },
-  { 0x8d00, 0x0ed4, 0x3000 },
-  { 0x8d00, 0x0ed2, 0x2000 },
-  { 0x0d00, 0x0ed1, 0x0000 },
-  { 0x0d00, 0x0ed3, 0x0000 },
-  { 0x8d00, 0x0ed6, 0x2000 },
-  { 0x0d00, 0x0ed5, 0x0000 },
-  { 0x0d00, 0x0ed7, 0x0000 },
-  { 0x8700, 0x0f00, 0x3000 },
-  { 0x8700, 0x0edc, 0x2000 },
-  { 0x0d00, 0x0ed9, 0x0000 },
-  { 0x0700, 0x0edd, 0x0000 },
-  { 0x9a00, 0x0f02, 0x2000 },
-  { 0x1a00, 0x0f01, 0x0000 },
-  { 0x1a00, 0x0f03, 0x0000 },
-  { 0x9500, 0x0f0c, 0x4000 },
-  { 0x9500, 0x0f08, 0x3000 },
-  { 0x9500, 0x0f06, 0x2000 },
-  { 0x1500, 0x0f05, 0x0000 },
-  { 0x1500, 0x0f07, 0x0000 },
-  { 0x9500, 0x0f0a, 0x2000 },
-  { 0x1500, 0x0f09, 0x0000 },
-  { 0x1500, 0x0f0b, 0x0000 },
-  { 0x9500, 0x0f10, 0x3000 },
-  { 0x9500, 0x0f0e, 0x2000 },
-  { 0x1500, 0x0f0d, 0x0000 },
-  { 0x1500, 0x0f0f, 0x0000 },
-  { 0x9500, 0x0f12, 0x2000 },
-  { 0x1500, 0x0f11, 0x0000 },
-  { 0x1a00, 0x0f13, 0x0000 },
-  { 0x9a00, 0x0f34, 0x6000 },
-  { 0x8d00, 0x0f24, 0x5000 },
-  { 0x9a00, 0x0f1c, 0x4000 },
-  { 0x8c00, 0x0f18, 0x3000 },
-  { 0x9a00, 0x0f16, 0x2000 },
-  { 0x1a00, 0x0f15, 0x0000 },
-  { 0x1a00, 0x0f17, 0x0000 },
-  { 0x9a00, 0x0f1a, 0x2000 },
-  { 0x0c00, 0x0f19, 0x0000 },
-  { 0x1a00, 0x0f1b, 0x0000 },
-  { 0x8d00, 0x0f20, 0x3000 },
-  { 0x9a00, 0x0f1e, 0x2000 },
-  { 0x1a00, 0x0f1d, 0x0000 },
-  { 0x1a00, 0x0f1f, 0x0000 },
-  { 0x8d00, 0x0f22, 0x2000 },
-  { 0x0d00, 0x0f21, 0x0000 },
-  { 0x0d00, 0x0f23, 0x0000 },
-  { 0x8f00, 0x0f2c, 0x4000 },
-  { 0x8d00, 0x0f28, 0x3000 },
-  { 0x8d00, 0x0f26, 0x2000 },
-  { 0x0d00, 0x0f25, 0x0000 },
-  { 0x0d00, 0x0f27, 0x0000 },
-  { 0x8f00, 0x0f2a, 0x2000 },
-  { 0x0d00, 0x0f29, 0x0000 },
-  { 0x0f00, 0x0f2b, 0x0000 },
-  { 0x8f00, 0x0f30, 0x3000 },
-  { 0x8f00, 0x0f2e, 0x2000 },
-  { 0x0f00, 0x0f2d, 0x0000 },
-  { 0x0f00, 0x0f2f, 0x0000 },
-  { 0x8f00, 0x0f32, 0x2000 },
-  { 0x0f00, 0x0f31, 0x0000 },
-  { 0x0f00, 0x0f33, 0x0000 },
-  { 0x8700, 0x0f44, 0x5000 },
-  { 0x9600, 0x0f3c, 0x4000 },
-  { 0x9a00, 0x0f38, 0x3000 },
-  { 0x9a00, 0x0f36, 0x2000 },
-  { 0x0c00, 0x0f35, 0x0000 },
-  { 0x0c00, 0x0f37, 0x0000 },
-  { 0x9600, 0x0f3a, 0x2000 },
-  { 0x0c00, 0x0f39, 0x0000 },
-  { 0x1200, 0x0f3b, 0x0000 },
-  { 0x8700, 0x0f40, 0x3000 },
-  { 0x8a00, 0x0f3e, 0x2000 },
-  { 0x1200, 0x0f3d, 0x0000 },
-  { 0x0a00, 0x0f3f, 0x0000 },
-  { 0x8700, 0x0f42, 0x2000 },
-  { 0x0700, 0x0f41, 0x0000 },
-  { 0x0700, 0x0f43, 0x0000 },
-  { 0x8700, 0x0f4d, 0x4000 },
-  { 0x8700, 0x0f49, 0x3000 },
-  { 0x8700, 0x0f46, 0x2000 },
-  { 0x0700, 0x0f45, 0x0000 },
-  { 0x0700, 0x0f47, 0x0000 },
-  { 0x8700, 0x0f4b, 0x2000 },
-  { 0x0700, 0x0f4a, 0x0000 },
-  { 0x0700, 0x0f4c, 0x0000 },
-  { 0x8700, 0x0f51, 0x3000 },
-  { 0x8700, 0x0f4f, 0x2000 },
-  { 0x0700, 0x0f4e, 0x0000 },
-  { 0x0700, 0x0f50, 0x0000 },
-  { 0x8700, 0x0f53, 0x2000 },
-  { 0x0700, 0x0f52, 0x0000 },
-  { 0x0700, 0x0f54, 0x0000 },
-  { 0x8700, 0x1013, 0x8000 },
-  { 0x8c00, 0x0fa0, 0x7000 },
-  { 0x8c00, 0x0f7b, 0x6000 },
-  { 0x8700, 0x0f65, 0x5000 },
-  { 0x8700, 0x0f5d, 0x4000 },
-  { 0x8700, 0x0f59, 0x3000 },
-  { 0x8700, 0x0f57, 0x2000 },
-  { 0x0700, 0x0f56, 0x0000 },
-  { 0x0700, 0x0f58, 0x0000 },
-  { 0x8700, 0x0f5b, 0x2000 },
-  { 0x0700, 0x0f5a, 0x0000 },
-  { 0x0700, 0x0f5c, 0x0000 },
-  { 0x8700, 0x0f61, 0x3000 },
-  { 0x8700, 0x0f5f, 0x2000 },
-  { 0x0700, 0x0f5e, 0x0000 },
-  { 0x0700, 0x0f60, 0x0000 },
-  { 0x8700, 0x0f63, 0x2000 },
-  { 0x0700, 0x0f62, 0x0000 },
-  { 0x0700, 0x0f64, 0x0000 },
-  { 0x8c00, 0x0f73, 0x4000 },
-  { 0x8700, 0x0f69, 0x3000 },
-  { 0x8700, 0x0f67, 0x2000 },
-  { 0x0700, 0x0f66, 0x0000 },
-  { 0x0700, 0x0f68, 0x0000 },
-  { 0x8c00, 0x0f71, 0x2000 },
-  { 0x0700, 0x0f6a, 0x0000 },
-  { 0x0c00, 0x0f72, 0x0000 },
-  { 0x8c00, 0x0f77, 0x3000 },
-  { 0x8c00, 0x0f75, 0x2000 },
-  { 0x0c00, 0x0f74, 0x0000 },
-  { 0x0c00, 0x0f76, 0x0000 },
-  { 0x8c00, 0x0f79, 0x2000 },
-  { 0x0c00, 0x0f78, 0x0000 },
-  { 0x0c00, 0x0f7a, 0x0000 },
-  { 0x8700, 0x0f8b, 0x5000 },
-  { 0x8c00, 0x0f83, 0x4000 },
-  { 0x8a00, 0x0f7f, 0x3000 },
-  { 0x8c00, 0x0f7d, 0x2000 },
-  { 0x0c00, 0x0f7c, 0x0000 },
-  { 0x0c00, 0x0f7e, 0x0000 },
-  { 0x8c00, 0x0f81, 0x2000 },
-  { 0x0c00, 0x0f80, 0x0000 },
-  { 0x0c00, 0x0f82, 0x0000 },
-  { 0x8c00, 0x0f87, 0x3000 },
-  { 0x9500, 0x0f85, 0x2000 },
-  { 0x0c00, 0x0f84, 0x0000 },
-  { 0x0c00, 0x0f86, 0x0000 },
-  { 0x8700, 0x0f89, 0x2000 },
-  { 0x0700, 0x0f88, 0x0000 },
-  { 0x0700, 0x0f8a, 0x0000 },
-  { 0x8c00, 0x0f97, 0x4000 },
-  { 0x8c00, 0x0f93, 0x3000 },
-  { 0x8c00, 0x0f91, 0x2000 },
-  { 0x0c00, 0x0f90, 0x0000 },
-  { 0x0c00, 0x0f92, 0x0000 },
-  { 0x8c00, 0x0f95, 0x2000 },
-  { 0x0c00, 0x0f94, 0x0000 },
-  { 0x0c00, 0x0f96, 0x0000 },
-  { 0x8c00, 0x0f9c, 0x3000 },
-  { 0x8c00, 0x0f9a, 0x2000 },
-  { 0x0c00, 0x0f99, 0x0000 },
-  { 0x0c00, 0x0f9b, 0x0000 },
-  { 0x8c00, 0x0f9e, 0x2000 },
-  { 0x0c00, 0x0f9d, 0x0000 },
-  { 0x0c00, 0x0f9f, 0x0000 },
-  { 0x9a00, 0x0fc1, 0x6000 },
-  { 0x8c00, 0x0fb0, 0x5000 },
-  { 0x8c00, 0x0fa8, 0x4000 },
-  { 0x8c00, 0x0fa4, 0x3000 },
-  { 0x8c00, 0x0fa2, 0x2000 },
-  { 0x0c00, 0x0fa1, 0x0000 },
-  { 0x0c00, 0x0fa3, 0x0000 },
-  { 0x8c00, 0x0fa6, 0x2000 },
-  { 0x0c00, 0x0fa5, 0x0000 },
-  { 0x0c00, 0x0fa7, 0x0000 },
-  { 0x8c00, 0x0fac, 0x3000 },
-  { 0x8c00, 0x0faa, 0x2000 },
-  { 0x0c00, 0x0fa9, 0x0000 },
-  { 0x0c00, 0x0fab, 0x0000 },
-  { 0x8c00, 0x0fae, 0x2000 },
-  { 0x0c00, 0x0fad, 0x0000 },
-  { 0x0c00, 0x0faf, 0x0000 },
-  { 0x8c00, 0x0fb8, 0x4000 },
-  { 0x8c00, 0x0fb4, 0x3000 },
-  { 0x8c00, 0x0fb2, 0x2000 },
-  { 0x0c00, 0x0fb1, 0x0000 },
-  { 0x0c00, 0x0fb3, 0x0000 },
-  { 0x8c00, 0x0fb6, 0x2000 },
-  { 0x0c00, 0x0fb5, 0x0000 },
-  { 0x0c00, 0x0fb7, 0x0000 },
-  { 0x8c00, 0x0fbc, 0x3000 },
-  { 0x8c00, 0x0fba, 0x2000 },
-  { 0x0c00, 0x0fb9, 0x0000 },
-  { 0x0c00, 0x0fbb, 0x0000 },
-  { 0x9a00, 0x0fbf, 0x2000 },
-  { 0x1a00, 0x0fbe, 0x0000 },
-  { 0x1a00, 0x0fc0, 0x0000 },
-  { 0x8700, 0x1003, 0x5000 },
-  { 0x9a00, 0x0fc9, 0x4000 },
-  { 0x9a00, 0x0fc5, 0x3000 },
-  { 0x9a00, 0x0fc3, 0x2000 },
-  { 0x1a00, 0x0fc2, 0x0000 },
-  { 0x1a00, 0x0fc4, 0x0000 },
-  { 0x9a00, 0x0fc7, 0x2000 },
-  { 0x0c00, 0x0fc6, 0x0000 },
-  { 0x1a00, 0x0fc8, 0x0000 },
-  { 0x9a00, 0x0fcf, 0x3000 },
-  { 0x9a00, 0x0fcb, 0x2000 },
-  { 0x1a00, 0x0fca, 0x0000 },
-  { 0x1a00, 0x0fcc, 0x0000 },
-  { 0x8700, 0x1001, 0x2000 },
-  { 0x0700, 0x1000, 0x0000 },
-  { 0x0700, 0x1002, 0x0000 },
-  { 0x8700, 0x100b, 0x4000 },
-  { 0x8700, 0x1007, 0x3000 },
-  { 0x8700, 0x1005, 0x2000 },
-  { 0x0700, 0x1004, 0x0000 },
-  { 0x0700, 0x1006, 0x0000 },
-  { 0x8700, 0x1009, 0x2000 },
-  { 0x0700, 0x1008, 0x0000 },
-  { 0x0700, 0x100a, 0x0000 },
-  { 0x8700, 0x100f, 0x3000 },
-  { 0x8700, 0x100d, 0x2000 },
-  { 0x0700, 0x100c, 0x0000 },
-  { 0x0700, 0x100e, 0x0000 },
-  { 0x8700, 0x1011, 0x2000 },
-  { 0x0700, 0x1010, 0x0000 },
-  { 0x0700, 0x1012, 0x0000 },
-  { 0x8900, 0x10a5, 0x7000 },
-  { 0x8c00, 0x1039, 0x6000 },
-  { 0x8700, 0x1024, 0x5000 },
-  { 0x8700, 0x101b, 0x4000 },
-  { 0x8700, 0x1017, 0x3000 },
-  { 0x8700, 0x1015, 0x2000 },
-  { 0x0700, 0x1014, 0x0000 },
-  { 0x0700, 0x1016, 0x0000 },
-  { 0x8700, 0x1019, 0x2000 },
-  { 0x0700, 0x1018, 0x0000 },
-  { 0x0700, 0x101a, 0x0000 },
-  { 0x8700, 0x101f, 0x3000 },
-  { 0x8700, 0x101d, 0x2000 },
-  { 0x0700, 0x101c, 0x0000 },
-  { 0x0700, 0x101e, 0x0000 },
-  { 0x8700, 0x1021, 0x2000 },
-  { 0x0700, 0x1020, 0x0000 },
-  { 0x0700, 0x1023, 0x0000 },
-  { 0x8c00, 0x102e, 0x4000 },
-  { 0x8700, 0x1029, 0x3000 },
-  { 0x8700, 0x1026, 0x2000 },
-  { 0x0700, 0x1025, 0x0000 },
-  { 0x0700, 0x1027, 0x0000 },
-  { 0x8a00, 0x102c, 0x2000 },
-  { 0x0700, 0x102a, 0x0000 },
-  { 0x0c00, 0x102d, 0x0000 },
-  { 0x8c00, 0x1032, 0x3000 },
-  { 0x8c00, 0x1030, 0x2000 },
-  { 0x0c00, 0x102f, 0x0000 },
-  { 0x0a00, 0x1031, 0x0000 },
-  { 0x8c00, 0x1037, 0x2000 },
-  { 0x0c00, 0x1036, 0x0000 },
-  { 0x0a00, 0x1038, 0x0000 },
-  { 0x9500, 0x104f, 0x5000 },
-  { 0x8d00, 0x1047, 0x4000 },
-  { 0x8d00, 0x1043, 0x3000 },
-  { 0x8d00, 0x1041, 0x2000 },
-  { 0x0d00, 0x1040, 0x0000 },
-  { 0x0d00, 0x1042, 0x0000 },
-  { 0x8d00, 0x1045, 0x2000 },
-  { 0x0d00, 0x1044, 0x0000 },
-  { 0x0d00, 0x1046, 0x0000 },
-  { 0x9500, 0x104b, 0x3000 },
-  { 0x8d00, 0x1049, 0x2000 },
-  { 0x0d00, 0x1048, 0x0000 },
-  { 0x1500, 0x104a, 0x0000 },
-  { 0x9500, 0x104d, 0x2000 },
-  { 0x1500, 0x104c, 0x0000 },
-  { 0x1500, 0x104e, 0x0000 },
-  { 0x8a00, 0x1057, 0x4000 },
-  { 0x8700, 0x1053, 0x3000 },
-  { 0x8700, 0x1051, 0x2000 },
-  { 0x0700, 0x1050, 0x0000 },
-  { 0x0700, 0x1052, 0x0000 },
-  { 0x8700, 0x1055, 0x2000 },
-  { 0x0700, 0x1054, 0x0000 },
-  { 0x0a00, 0x1056, 0x0000 },
-  { 0x8900, 0x10a1, 0x3000 },
-  { 0x8c00, 0x1059, 0x2000 },
-  { 0x0c00, 0x1058, 0x0000 },
-  { 0x0900, 0x10a0, 0x0000 },
-  { 0x8900, 0x10a3, 0x2000 },
-  { 0x0900, 0x10a2, 0x0000 },
-  { 0x0900, 0x10a4, 0x0000 },
-  { 0x8900, 0x10c5, 0x6000 },
-  { 0x8900, 0x10b5, 0x5000 },
-  { 0x8900, 0x10ad, 0x4000 },
-  { 0x8900, 0x10a9, 0x3000 },
-  { 0x8900, 0x10a7, 0x2000 },
-  { 0x0900, 0x10a6, 0x0000 },
-  { 0x0900, 0x10a8, 0x0000 },
-  { 0x8900, 0x10ab, 0x2000 },
-  { 0x0900, 0x10aa, 0x0000 },
-  { 0x0900, 0x10ac, 0x0000 },
-  { 0x8900, 0x10b1, 0x3000 },
-  { 0x8900, 0x10af, 0x2000 },
-  { 0x0900, 0x10ae, 0x0000 },
-  { 0x0900, 0x10b0, 0x0000 },
-  { 0x8900, 0x10b3, 0x2000 },
-  { 0x0900, 0x10b2, 0x0000 },
-  { 0x0900, 0x10b4, 0x0000 },
-  { 0x8900, 0x10bd, 0x4000 },
-  { 0x8900, 0x10b9, 0x3000 },
-  { 0x8900, 0x10b7, 0x2000 },
-  { 0x0900, 0x10b6, 0x0000 },
-  { 0x0900, 0x10b8, 0x0000 },
-  { 0x8900, 0x10bb, 0x2000 },
-  { 0x0900, 0x10ba, 0x0000 },
-  { 0x0900, 0x10bc, 0x0000 },
-  { 0x8900, 0x10c1, 0x3000 },
-  { 0x8900, 0x10bf, 0x2000 },
-  { 0x0900, 0x10be, 0x0000 },
-  { 0x0900, 0x10c0, 0x0000 },
-  { 0x8900, 0x10c3, 0x2000 },
-  { 0x0900, 0x10c2, 0x0000 },
-  { 0x0900, 0x10c4, 0x0000 },
-  { 0x8700, 0x10df, 0x5000 },
-  { 0x8700, 0x10d7, 0x4000 },
-  { 0x8700, 0x10d3, 0x3000 },
-  { 0x8700, 0x10d1, 0x2000 },
-  { 0x0700, 0x10d0, 0x0000 },
-  { 0x0700, 0x10d2, 0x0000 },
-  { 0x8700, 0x10d5, 0x2000 },
-  { 0x0700, 0x10d4, 0x0000 },
-  { 0x0700, 0x10d6, 0x0000 },
-  { 0x8700, 0x10db, 0x3000 },
-  { 0x8700, 0x10d9, 0x2000 },
-  { 0x0700, 0x10d8, 0x0000 },
-  { 0x0700, 0x10da, 0x0000 },
-  { 0x8700, 0x10dd, 0x2000 },
-  { 0x0700, 0x10dc, 0x0000 },
-  { 0x0700, 0x10de, 0x0000 },
-  { 0x8700, 0x10e7, 0x4000 },
-  { 0x8700, 0x10e3, 0x3000 },
-  { 0x8700, 0x10e1, 0x2000 },
-  { 0x0700, 0x10e0, 0x0000 },
-  { 0x0700, 0x10e2, 0x0000 },
-  { 0x8700, 0x10e5, 0x2000 },
-  { 0x0700, 0x10e4, 0x0000 },
-  { 0x0700, 0x10e6, 0x0000 },
-  { 0x8700, 0x10eb, 0x3000 },
-  { 0x8700, 0x10e9, 0x2000 },
-  { 0x0700, 0x10e8, 0x0000 },
-  { 0x0700, 0x10ea, 0x0000 },
-  { 0x8700, 0x10ed, 0x2000 },
-  { 0x0700, 0x10ec, 0x0000 },
-  { 0x0700, 0x10ee, 0x0000 },
-  { 0x8700, 0x1322, 0xa000 },
-  { 0x8700, 0x1205, 0x9000 },
-  { 0x8700, 0x117a, 0x8000 },
-  { 0x8700, 0x1135, 0x7000 },
-  { 0x8700, 0x1115, 0x6000 },
-  { 0x8700, 0x1105, 0x5000 },
-  { 0x8700, 0x10f7, 0x4000 },
-  { 0x8700, 0x10f3, 0x3000 },
-  { 0x8700, 0x10f1, 0x2000 },
-  { 0x0700, 0x10f0, 0x0000 },
-  { 0x0700, 0x10f2, 0x0000 },
-  { 0x8700, 0x10f5, 0x2000 },
-  { 0x0700, 0x10f4, 0x0000 },
-  { 0x0700, 0x10f6, 0x0000 },
-  { 0x8700, 0x1101, 0x3000 },
-  { 0x9500, 0x10fb, 0x2000 },
-  { 0x0700, 0x10f8, 0x0000 },
-  { 0x0700, 0x1100, 0x0000 },
-  { 0x8700, 0x1103, 0x2000 },
-  { 0x0700, 0x1102, 0x0000 },
-  { 0x0700, 0x1104, 0x0000 },
-  { 0x8700, 0x110d, 0x4000 },
-  { 0x8700, 0x1109, 0x3000 },
-  { 0x8700, 0x1107, 0x2000 },
-  { 0x0700, 0x1106, 0x0000 },
-  { 0x0700, 0x1108, 0x0000 },
-  { 0x8700, 0x110b, 0x2000 },
-  { 0x0700, 0x110a, 0x0000 },
-  { 0x0700, 0x110c, 0x0000 },
-  { 0x8700, 0x1111, 0x3000 },
-  { 0x8700, 0x110f, 0x2000 },
-  { 0x0700, 0x110e, 0x0000 },
-  { 0x0700, 0x1110, 0x0000 },
-  { 0x8700, 0x1113, 0x2000 },
-  { 0x0700, 0x1112, 0x0000 },
-  { 0x0700, 0x1114, 0x0000 },
-  { 0x8700, 0x1125, 0x5000 },
-  { 0x8700, 0x111d, 0x4000 },
-  { 0x8700, 0x1119, 0x3000 },
-  { 0x8700, 0x1117, 0x2000 },
-  { 0x0700, 0x1116, 0x0000 },
-  { 0x0700, 0x1118, 0x0000 },
-  { 0x8700, 0x111b, 0x2000 },
-  { 0x0700, 0x111a, 0x0000 },
-  { 0x0700, 0x111c, 0x0000 },
-  { 0x8700, 0x1121, 0x3000 },
-  { 0x8700, 0x111f, 0x2000 },
-  { 0x0700, 0x111e, 0x0000 },
-  { 0x0700, 0x1120, 0x0000 },
-  { 0x8700, 0x1123, 0x2000 },
-  { 0x0700, 0x1122, 0x0000 },
-  { 0x0700, 0x1124, 0x0000 },
-  { 0x8700, 0x112d, 0x4000 },
-  { 0x8700, 0x1129, 0x3000 },
-  { 0x8700, 0x1127, 0x2000 },
-  { 0x0700, 0x1126, 0x0000 },
-  { 0x0700, 0x1128, 0x0000 },
-  { 0x8700, 0x112b, 0x2000 },
-  { 0x0700, 0x112a, 0x0000 },
-  { 0x0700, 0x112c, 0x0000 },
-  { 0x8700, 0x1131, 0x3000 },
-  { 0x8700, 0x112f, 0x2000 },
-  { 0x0700, 0x112e, 0x0000 },
-  { 0x0700, 0x1130, 0x0000 },
-  { 0x8700, 0x1133, 0x2000 },
-  { 0x0700, 0x1132, 0x0000 },
-  { 0x0700, 0x1134, 0x0000 },
-  { 0x8700, 0x1155, 0x6000 },
-  { 0x8700, 0x1145, 0x5000 },
-  { 0x8700, 0x113d, 0x4000 },
-  { 0x8700, 0x1139, 0x3000 },
-  { 0x8700, 0x1137, 0x2000 },
-  { 0x0700, 0x1136, 0x0000 },
-  { 0x0700, 0x1138, 0x0000 },
-  { 0x8700, 0x113b, 0x2000 },
-  { 0x0700, 0x113a, 0x0000 },
-  { 0x0700, 0x113c, 0x0000 },
-  { 0x8700, 0x1141, 0x3000 },
-  { 0x8700, 0x113f, 0x2000 },
-  { 0x0700, 0x113e, 0x0000 },
-  { 0x0700, 0x1140, 0x0000 },
-  { 0x8700, 0x1143, 0x2000 },
-  { 0x0700, 0x1142, 0x0000 },
-  { 0x0700, 0x1144, 0x0000 },
-  { 0x8700, 0x114d, 0x4000 },
-  { 0x8700, 0x1149, 0x3000 },
-  { 0x8700, 0x1147, 0x2000 },
-  { 0x0700, 0x1146, 0x0000 },
-  { 0x0700, 0x1148, 0x0000 },
-  { 0x8700, 0x114b, 0x2000 },
-  { 0x0700, 0x114a, 0x0000 },
-  { 0x0700, 0x114c, 0x0000 },
-  { 0x8700, 0x1151, 0x3000 },
-  { 0x8700, 0x114f, 0x2000 },
-  { 0x0700, 0x114e, 0x0000 },
-  { 0x0700, 0x1150, 0x0000 },
-  { 0x8700, 0x1153, 0x2000 },
-  { 0x0700, 0x1152, 0x0000 },
-  { 0x0700, 0x1154, 0x0000 },
-  { 0x8700, 0x116a, 0x5000 },
-  { 0x8700, 0x1162, 0x4000 },
-  { 0x8700, 0x1159, 0x3000 },
-  { 0x8700, 0x1157, 0x2000 },
-  { 0x0700, 0x1156, 0x0000 },
-  { 0x0700, 0x1158, 0x0000 },
-  { 0x8700, 0x1160, 0x2000 },
-  { 0x0700, 0x115f, 0x0000 },
-  { 0x0700, 0x1161, 0x0000 },
-  { 0x8700, 0x1166, 0x3000 },
-  { 0x8700, 0x1164, 0x2000 },
-  { 0x0700, 0x1163, 0x0000 },
-  { 0x0700, 0x1165, 0x0000 },
-  { 0x8700, 0x1168, 0x2000 },
-  { 0x0700, 0x1167, 0x0000 },
-  { 0x0700, 0x1169, 0x0000 },
-  { 0x8700, 0x1172, 0x4000 },
-  { 0x8700, 0x116e, 0x3000 },
-  { 0x8700, 0x116c, 0x2000 },
-  { 0x0700, 0x116b, 0x0000 },
-  { 0x0700, 0x116d, 0x0000 },
-  { 0x8700, 0x1170, 0x2000 },
-  { 0x0700, 0x116f, 0x0000 },
-  { 0x0700, 0x1171, 0x0000 },
-  { 0x8700, 0x1176, 0x3000 },
-  { 0x8700, 0x1174, 0x2000 },
-  { 0x0700, 0x1173, 0x0000 },
-  { 0x0700, 0x1175, 0x0000 },
-  { 0x8700, 0x1178, 0x2000 },
-  { 0x0700, 0x1177, 0x0000 },
-  { 0x0700, 0x1179, 0x0000 },
-  { 0x8700, 0x11bf, 0x7000 },
-  { 0x8700, 0x119a, 0x6000 },
-  { 0x8700, 0x118a, 0x5000 },
-  { 0x8700, 0x1182, 0x4000 },
-  { 0x8700, 0x117e, 0x3000 },
-  { 0x8700, 0x117c, 0x2000 },
-  { 0x0700, 0x117b, 0x0000 },
-  { 0x0700, 0x117d, 0x0000 },
-  { 0x8700, 0x1180, 0x2000 },
-  { 0x0700, 0x117f, 0x0000 },
-  { 0x0700, 0x1181, 0x0000 },
-  { 0x8700, 0x1186, 0x3000 },
-  { 0x8700, 0x1184, 0x2000 },
-  { 0x0700, 0x1183, 0x0000 },
-  { 0x0700, 0x1185, 0x0000 },
-  { 0x8700, 0x1188, 0x2000 },
-  { 0x0700, 0x1187, 0x0000 },
-  { 0x0700, 0x1189, 0x0000 },
-  { 0x8700, 0x1192, 0x4000 },
-  { 0x8700, 0x118e, 0x3000 },
-  { 0x8700, 0x118c, 0x2000 },
-  { 0x0700, 0x118b, 0x0000 },
-  { 0x0700, 0x118d, 0x0000 },
-  { 0x8700, 0x1190, 0x2000 },
-  { 0x0700, 0x118f, 0x0000 },
-  { 0x0700, 0x1191, 0x0000 },
-  { 0x8700, 0x1196, 0x3000 },
-  { 0x8700, 0x1194, 0x2000 },
-  { 0x0700, 0x1193, 0x0000 },
-  { 0x0700, 0x1195, 0x0000 },
-  { 0x8700, 0x1198, 0x2000 },
-  { 0x0700, 0x1197, 0x0000 },
-  { 0x0700, 0x1199, 0x0000 },
-  { 0x8700, 0x11af, 0x5000 },
-  { 0x8700, 0x11a2, 0x4000 },
-  { 0x8700, 0x119e, 0x3000 },
-  { 0x8700, 0x119c, 0x2000 },
-  { 0x0700, 0x119b, 0x0000 },
-  { 0x0700, 0x119d, 0x0000 },
-  { 0x8700, 0x11a0, 0x2000 },
-  { 0x0700, 0x119f, 0x0000 },
-  { 0x0700, 0x11a1, 0x0000 },
-  { 0x8700, 0x11ab, 0x3000 },
-  { 0x8700, 0x11a9, 0x2000 },
-  { 0x0700, 0x11a8, 0x0000 },
-  { 0x0700, 0x11aa, 0x0000 },
-  { 0x8700, 0x11ad, 0x2000 },
-  { 0x0700, 0x11ac, 0x0000 },
-  { 0x0700, 0x11ae, 0x0000 },
-  { 0x8700, 0x11b7, 0x4000 },
-  { 0x8700, 0x11b3, 0x3000 },
-  { 0x8700, 0x11b1, 0x2000 },
-  { 0x0700, 0x11b0, 0x0000 },
-  { 0x0700, 0x11b2, 0x0000 },
-  { 0x8700, 0x11b5, 0x2000 },
-  { 0x0700, 0x11b4, 0x0000 },
-  { 0x0700, 0x11b6, 0x0000 },
-  { 0x8700, 0x11bb, 0x3000 },
-  { 0x8700, 0x11b9, 0x2000 },
-  { 0x0700, 0x11b8, 0x0000 },
-  { 0x0700, 0x11ba, 0x0000 },
-  { 0x8700, 0x11bd, 0x2000 },
-  { 0x0700, 0x11bc, 0x0000 },
-  { 0x0700, 0x11be, 0x0000 },
-  { 0x8700, 0x11df, 0x6000 },
-  { 0x8700, 0x11cf, 0x5000 },
-  { 0x8700, 0x11c7, 0x4000 },
-  { 0x8700, 0x11c3, 0x3000 },
-  { 0x8700, 0x11c1, 0x2000 },
-  { 0x0700, 0x11c0, 0x0000 },
-  { 0x0700, 0x11c2, 0x0000 },
-  { 0x8700, 0x11c5, 0x2000 },
-  { 0x0700, 0x11c4, 0x0000 },
-  { 0x0700, 0x11c6, 0x0000 },
-  { 0x8700, 0x11cb, 0x3000 },
-  { 0x8700, 0x11c9, 0x2000 },
-  { 0x0700, 0x11c8, 0x0000 },
-  { 0x0700, 0x11ca, 0x0000 },
-  { 0x8700, 0x11cd, 0x2000 },
-  { 0x0700, 0x11cc, 0x0000 },
-  { 0x0700, 0x11ce, 0x0000 },
-  { 0x8700, 0x11d7, 0x4000 },
-  { 0x8700, 0x11d3, 0x3000 },
-  { 0x8700, 0x11d1, 0x2000 },
-  { 0x0700, 0x11d0, 0x0000 },
-  { 0x0700, 0x11d2, 0x0000 },
-  { 0x8700, 0x11d5, 0x2000 },
-  { 0x0700, 0x11d4, 0x0000 },
-  { 0x0700, 0x11d6, 0x0000 },
-  { 0x8700, 0x11db, 0x3000 },
-  { 0x8700, 0x11d9, 0x2000 },
-  { 0x0700, 0x11d8, 0x0000 },
-  { 0x0700, 0x11da, 0x0000 },
-  { 0x8700, 0x11dd, 0x2000 },
-  { 0x0700, 0x11dc, 0x0000 },
-  { 0x0700, 0x11de, 0x0000 },
-  { 0x8700, 0x11ef, 0x5000 },
-  { 0x8700, 0x11e7, 0x4000 },
-  { 0x8700, 0x11e3, 0x3000 },
-  { 0x8700, 0x11e1, 0x2000 },
-  { 0x0700, 0x11e0, 0x0000 },
-  { 0x0700, 0x11e2, 0x0000 },
-  { 0x8700, 0x11e5, 0x2000 },
-  { 0x0700, 0x11e4, 0x0000 },
-  { 0x0700, 0x11e6, 0x0000 },
-  { 0x8700, 0x11eb, 0x3000 },
-  { 0x8700, 0x11e9, 0x2000 },
-  { 0x0700, 0x11e8, 0x0000 },
-  { 0x0700, 0x11ea, 0x0000 },
-  { 0x8700, 0x11ed, 0x2000 },
-  { 0x0700, 0x11ec, 0x0000 },
-  { 0x0700, 0x11ee, 0x0000 },
-  { 0x8700, 0x11f7, 0x4000 },
-  { 0x8700, 0x11f3, 0x3000 },
-  { 0x8700, 0x11f1, 0x2000 },
-  { 0x0700, 0x11f0, 0x0000 },
-  { 0x0700, 0x11f2, 0x0000 },
-  { 0x8700, 0x11f5, 0x2000 },
-  { 0x0700, 0x11f4, 0x0000 },
-  { 0x0700, 0x11f6, 0x0000 },
-  { 0x8700, 0x1201, 0x3000 },
-  { 0x8700, 0x11f9, 0x2000 },
-  { 0x0700, 0x11f8, 0x0000 },
-  { 0x0700, 0x1200, 0x0000 },
-  { 0x8700, 0x1203, 0x2000 },
-  { 0x0700, 0x1202, 0x0000 },
-  { 0x0700, 0x1204, 0x0000 },
-  { 0x8700, 0x1292, 0x8000 },
-  { 0x8700, 0x1246, 0x7000 },
-  { 0x8700, 0x1226, 0x6000 },
-  { 0x8700, 0x1216, 0x5000 },
-  { 0x8700, 0x120e, 0x4000 },
-  { 0x8700, 0x120a, 0x3000 },
-  { 0x8700, 0x1208, 0x2000 },
-  { 0x0700, 0x1206, 0x0000 },
-  { 0x0700, 0x1209, 0x0000 },
-  { 0x8700, 0x120c, 0x2000 },
-  { 0x0700, 0x120b, 0x0000 },
-  { 0x0700, 0x120d, 0x0000 },
-  { 0x8700, 0x1212, 0x3000 },
-  { 0x8700, 0x1210, 0x2000 },
-  { 0x0700, 0x120f, 0x0000 },
-  { 0x0700, 0x1211, 0x0000 },
-  { 0x8700, 0x1214, 0x2000 },
-  { 0x0700, 0x1213, 0x0000 },
-  { 0x0700, 0x1215, 0x0000 },
-  { 0x8700, 0x121e, 0x4000 },
-  { 0x8700, 0x121a, 0x3000 },
-  { 0x8700, 0x1218, 0x2000 },
-  { 0x0700, 0x1217, 0x0000 },
-  { 0x0700, 0x1219, 0x0000 },
-  { 0x8700, 0x121c, 0x2000 },
-  { 0x0700, 0x121b, 0x0000 },
-  { 0x0700, 0x121d, 0x0000 },
-  { 0x8700, 0x1222, 0x3000 },
-  { 0x8700, 0x1220, 0x2000 },
-  { 0x0700, 0x121f, 0x0000 },
-  { 0x0700, 0x1221, 0x0000 },
-  { 0x8700, 0x1224, 0x2000 },
-  { 0x0700, 0x1223, 0x0000 },
-  { 0x0700, 0x1225, 0x0000 },
-  { 0x8700, 0x1236, 0x5000 },
-  { 0x8700, 0x122e, 0x4000 },
-  { 0x8700, 0x122a, 0x3000 },
-  { 0x8700, 0x1228, 0x2000 },
-  { 0x0700, 0x1227, 0x0000 },
-  { 0x0700, 0x1229, 0x0000 },
-  { 0x8700, 0x122c, 0x2000 },
-  { 0x0700, 0x122b, 0x0000 },
-  { 0x0700, 0x122d, 0x0000 },
-  { 0x8700, 0x1232, 0x3000 },
-  { 0x8700, 0x1230, 0x2000 },
-  { 0x0700, 0x122f, 0x0000 },
-  { 0x0700, 0x1231, 0x0000 },
-  { 0x8700, 0x1234, 0x2000 },
-  { 0x0700, 0x1233, 0x0000 },
-  { 0x0700, 0x1235, 0x0000 },
-  { 0x8700, 0x123e, 0x4000 },
-  { 0x8700, 0x123a, 0x3000 },
-  { 0x8700, 0x1238, 0x2000 },
-  { 0x0700, 0x1237, 0x0000 },
-  { 0x0700, 0x1239, 0x0000 },
-  { 0x8700, 0x123c, 0x2000 },
-  { 0x0700, 0x123b, 0x0000 },
-  { 0x0700, 0x123d, 0x0000 },
-  { 0x8700, 0x1242, 0x3000 },
-  { 0x8700, 0x1240, 0x2000 },
-  { 0x0700, 0x123f, 0x0000 },
-  { 0x0700, 0x1241, 0x0000 },
-  { 0x8700, 0x1244, 0x2000 },
-  { 0x0700, 0x1243, 0x0000 },
-  { 0x0700, 0x1245, 0x0000 },
-  { 0x8700, 0x126e, 0x6000 },
-  { 0x8700, 0x125c, 0x5000 },
-  { 0x8700, 0x1252, 0x4000 },
-  { 0x8700, 0x124c, 0x3000 },
-  { 0x8700, 0x124a, 0x2000 },
-  { 0x0700, 0x1248, 0x0000 },
-  { 0x0700, 0x124b, 0x0000 },
-  { 0x8700, 0x1250, 0x2000 },
-  { 0x0700, 0x124d, 0x0000 },
-  { 0x0700, 0x1251, 0x0000 },
-  { 0x8700, 0x1256, 0x3000 },
-  { 0x8700, 0x1254, 0x2000 },
-  { 0x0700, 0x1253, 0x0000 },
-  { 0x0700, 0x1255, 0x0000 },
-  { 0x8700, 0x125a, 0x2000 },
-  { 0x0700, 0x1258, 0x0000 },
-  { 0x0700, 0x125b, 0x0000 },
-  { 0x8700, 0x1266, 0x4000 },
-  { 0x8700, 0x1262, 0x3000 },
-  { 0x8700, 0x1260, 0x2000 },
-  { 0x0700, 0x125d, 0x0000 },
-  { 0x0700, 0x1261, 0x0000 },
-  { 0x8700, 0x1264, 0x2000 },
-  { 0x0700, 0x1263, 0x0000 },
-  { 0x0700, 0x1265, 0x0000 },
-  { 0x8700, 0x126a, 0x3000 },
-  { 0x8700, 0x1268, 0x2000 },
-  { 0x0700, 0x1267, 0x0000 },
-  { 0x0700, 0x1269, 0x0000 },
-  { 0x8700, 0x126c, 0x2000 },
-  { 0x0700, 0x126b, 0x0000 },
-  { 0x0700, 0x126d, 0x0000 },
-  { 0x8700, 0x127e, 0x5000 },
-  { 0x8700, 0x1276, 0x4000 },
-  { 0x8700, 0x1272, 0x3000 },
-  { 0x8700, 0x1270, 0x2000 },
-  { 0x0700, 0x126f, 0x0000 },
-  { 0x0700, 0x1271, 0x0000 },
-  { 0x8700, 0x1274, 0x2000 },
-  { 0x0700, 0x1273, 0x0000 },
-  { 0x0700, 0x1275, 0x0000 },
-  { 0x8700, 0x127a, 0x3000 },
-  { 0x8700, 0x1278, 0x2000 },
-  { 0x0700, 0x1277, 0x0000 },
-  { 0x0700, 0x1279, 0x0000 },
-  { 0x8700, 0x127c, 0x2000 },
-  { 0x0700, 0x127b, 0x0000 },
-  { 0x0700, 0x127d, 0x0000 },
-  { 0x8700, 0x1286, 0x4000 },
-  { 0x8700, 0x1282, 0x3000 },
-  { 0x8700, 0x1280, 0x2000 },
-  { 0x0700, 0x127f, 0x0000 },
-  { 0x0700, 0x1281, 0x0000 },
-  { 0x8700, 0x1284, 0x2000 },
-  { 0x0700, 0x1283, 0x0000 },
-  { 0x0700, 0x1285, 0x0000 },
-  { 0x8700, 0x128c, 0x3000 },
-  { 0x8700, 0x128a, 0x2000 },
-  { 0x0700, 0x1288, 0x0000 },
-  { 0x0700, 0x128b, 0x0000 },
-  { 0x8700, 0x1290, 0x2000 },
-  { 0x0700, 0x128d, 0x0000 },
-  { 0x0700, 0x1291, 0x0000 },
-  { 0x8700, 0x12dc, 0x7000 },
-  { 0x8700, 0x12b4, 0x6000 },
-  { 0x8700, 0x12a2, 0x5000 },
-  { 0x8700, 0x129a, 0x4000 },
-  { 0x8700, 0x1296, 0x3000 },
-  { 0x8700, 0x1294, 0x2000 },
-  { 0x0700, 0x1293, 0x0000 },
-  { 0x0700, 0x1295, 0x0000 },
-  { 0x8700, 0x1298, 0x2000 },
-  { 0x0700, 0x1297, 0x0000 },
-  { 0x0700, 0x1299, 0x0000 },
-  { 0x8700, 0x129e, 0x3000 },
-  { 0x8700, 0x129c, 0x2000 },
-  { 0x0700, 0x129b, 0x0000 },
-  { 0x0700, 0x129d, 0x0000 },
-  { 0x8700, 0x12a0, 0x2000 },
-  { 0x0700, 0x129f, 0x0000 },
-  { 0x0700, 0x12a1, 0x0000 },
-  { 0x8700, 0x12aa, 0x4000 },
-  { 0x8700, 0x12a6, 0x3000 },
-  { 0x8700, 0x12a4, 0x2000 },
-  { 0x0700, 0x12a3, 0x0000 },
-  { 0x0700, 0x12a5, 0x0000 },
-  { 0x8700, 0x12a8, 0x2000 },
-  { 0x0700, 0x12a7, 0x0000 },
-  { 0x0700, 0x12a9, 0x0000 },
-  { 0x8700, 0x12ae, 0x3000 },
-  { 0x8700, 0x12ac, 0x2000 },
-  { 0x0700, 0x12ab, 0x0000 },
-  { 0x0700, 0x12ad, 0x0000 },
-  { 0x8700, 0x12b2, 0x2000 },
-  { 0x0700, 0x12b0, 0x0000 },
-  { 0x0700, 0x12b3, 0x0000 },
-  { 0x8700, 0x12ca, 0x5000 },
-  { 0x8700, 0x12be, 0x4000 },
-  { 0x8700, 0x12ba, 0x3000 },
-  { 0x8700, 0x12b8, 0x2000 },
-  { 0x0700, 0x12b5, 0x0000 },
-  { 0x0700, 0x12b9, 0x0000 },
-  { 0x8700, 0x12bc, 0x2000 },
-  { 0x0700, 0x12bb, 0x0000 },
-  { 0x0700, 0x12bd, 0x0000 },
-  { 0x8700, 0x12c4, 0x3000 },
-  { 0x8700, 0x12c2, 0x2000 },
-  { 0x0700, 0x12c0, 0x0000 },
-  { 0x0700, 0x12c3, 0x0000 },
-  { 0x8700, 0x12c8, 0x2000 },
-  { 0x0700, 0x12c5, 0x0000 },
-  { 0x0700, 0x12c9, 0x0000 },
-  { 0x8700, 0x12d3, 0x4000 },
-  { 0x8700, 0x12ce, 0x3000 },
-  { 0x8700, 0x12cc, 0x2000 },
-  { 0x0700, 0x12cb, 0x0000 },
-  { 0x0700, 0x12cd, 0x0000 },
-  { 0x8700, 0x12d1, 0x2000 },
-  { 0x0700, 0x12d0, 0x0000 },
-  { 0x0700, 0x12d2, 0x0000 },
-  { 0x8700, 0x12d8, 0x3000 },
-  { 0x8700, 0x12d5, 0x2000 },
-  { 0x0700, 0x12d4, 0x0000 },
-  { 0x0700, 0x12d6, 0x0000 },
-  { 0x8700, 0x12da, 0x2000 },
-  { 0x0700, 0x12d9, 0x0000 },
-  { 0x0700, 0x12db, 0x0000 },
-  { 0x8700, 0x12fd, 0x6000 },
-  { 0x8700, 0x12ec, 0x5000 },
-  { 0x8700, 0x12e4, 0x4000 },
-  { 0x8700, 0x12e0, 0x3000 },
-  { 0x8700, 0x12de, 0x2000 },
-  { 0x0700, 0x12dd, 0x0000 },
-  { 0x0700, 0x12df, 0x0000 },
-  { 0x8700, 0x12e2, 0x2000 },
-  { 0x0700, 0x12e1, 0x0000 },
-  { 0x0700, 0x12e3, 0x0000 },
-  { 0x8700, 0x12e8, 0x3000 },
-  { 0x8700, 0x12e6, 0x2000 },
-  { 0x0700, 0x12e5, 0x0000 },
-  { 0x0700, 0x12e7, 0x0000 },
-  { 0x8700, 0x12ea, 0x2000 },
-  { 0x0700, 0x12e9, 0x0000 },
-  { 0x0700, 0x12eb, 0x0000 },
-  { 0x8700, 0x12f5, 0x4000 },
-  { 0x8700, 0x12f1, 0x3000 },
-  { 0x8700, 0x12ee, 0x2000 },
-  { 0x0700, 0x12ed, 0x0000 },
-  { 0x0700, 0x12f0, 0x0000 },
-  { 0x8700, 0x12f3, 0x2000 },
-  { 0x0700, 0x12f2, 0x0000 },
-  { 0x0700, 0x12f4, 0x0000 },
-  { 0x8700, 0x12f9, 0x3000 },
-  { 0x8700, 0x12f7, 0x2000 },
-  { 0x0700, 0x12f6, 0x0000 },
-  { 0x0700, 0x12f8, 0x0000 },
-  { 0x8700, 0x12fb, 0x2000 },
-  { 0x0700, 0x12fa, 0x0000 },
-  { 0x0700, 0x12fc, 0x0000 },
-  { 0x8700, 0x130d, 0x5000 },
-  { 0x8700, 0x1305, 0x4000 },
-  { 0x8700, 0x1301, 0x3000 },
-  { 0x8700, 0x12ff, 0x2000 },
-  { 0x0700, 0x12fe, 0x0000 },
-  { 0x0700, 0x1300, 0x0000 },
-  { 0x8700, 0x1303, 0x2000 },
-  { 0x0700, 0x1302, 0x0000 },
-  { 0x0700, 0x1304, 0x0000 },
-  { 0x8700, 0x1309, 0x3000 },
-  { 0x8700, 0x1307, 0x2000 },
-  { 0x0700, 0x1306, 0x0000 },
-  { 0x0700, 0x1308, 0x0000 },
-  { 0x8700, 0x130b, 0x2000 },
-  { 0x0700, 0x130a, 0x0000 },
-  { 0x0700, 0x130c, 0x0000 },
-  { 0x8700, 0x1319, 0x4000 },
-  { 0x8700, 0x1313, 0x3000 },
-  { 0x8700, 0x1310, 0x2000 },
-  { 0x0700, 0x130e, 0x0000 },
-  { 0x0700, 0x1312, 0x0000 },
-  { 0x8700, 0x1315, 0x2000 },
-  { 0x0700, 0x1314, 0x0000 },
-  { 0x0700, 0x1318, 0x0000 },
-  { 0x8700, 0x131d, 0x3000 },
-  { 0x8700, 0x131b, 0x2000 },
-  { 0x0700, 0x131a, 0x0000 },
-  { 0x0700, 0x131c, 0x0000 },
-  { 0x8700, 0x1320, 0x2000 },
-  { 0x0700, 0x131e, 0x0000 },
-  { 0x0700, 0x1321, 0x0000 },
-  { 0x8700, 0x1458, 0x9000 },
-  { 0x8700, 0x13cc, 0x8000 },
-  { 0x8d00, 0x1369, 0x7000 },
-  { 0x8700, 0x1342, 0x6000 },
-  { 0x8700, 0x1332, 0x5000 },
-  { 0x8700, 0x132a, 0x4000 },
-  { 0x8700, 0x1326, 0x3000 },
-  { 0x8700, 0x1324, 0x2000 },
-  { 0x0700, 0x1323, 0x0000 },
-  { 0x0700, 0x1325, 0x0000 },
-  { 0x8700, 0x1328, 0x2000 },
-  { 0x0700, 0x1327, 0x0000 },
-  { 0x0700, 0x1329, 0x0000 },
-  { 0x8700, 0x132e, 0x3000 },
-  { 0x8700, 0x132c, 0x2000 },
-  { 0x0700, 0x132b, 0x0000 },
-  { 0x0700, 0x132d, 0x0000 },
-  { 0x8700, 0x1330, 0x2000 },
-  { 0x0700, 0x132f, 0x0000 },
-  { 0x0700, 0x1331, 0x0000 },
-  { 0x8700, 0x133a, 0x4000 },
-  { 0x8700, 0x1336, 0x3000 },
-  { 0x8700, 0x1334, 0x2000 },
-  { 0x0700, 0x1333, 0x0000 },
-  { 0x0700, 0x1335, 0x0000 },
-  { 0x8700, 0x1338, 0x2000 },
-  { 0x0700, 0x1337, 0x0000 },
-  { 0x0700, 0x1339, 0x0000 },
-  { 0x8700, 0x133e, 0x3000 },
-  { 0x8700, 0x133c, 0x2000 },
-  { 0x0700, 0x133b, 0x0000 },
-  { 0x0700, 0x133d, 0x0000 },
-  { 0x8700, 0x1340, 0x2000 },
-  { 0x0700, 0x133f, 0x0000 },
-  { 0x0700, 0x1341, 0x0000 },
-  { 0x8700, 0x1353, 0x5000 },
-  { 0x8700, 0x134b, 0x4000 },
-  { 0x8700, 0x1346, 0x3000 },
-  { 0x8700, 0x1344, 0x2000 },
-  { 0x0700, 0x1343, 0x0000 },
-  { 0x0700, 0x1345, 0x0000 },
-  { 0x8700, 0x1349, 0x2000 },
-  { 0x0700, 0x1348, 0x0000 },
-  { 0x0700, 0x134a, 0x0000 },
-  { 0x8700, 0x134f, 0x3000 },
-  { 0x8700, 0x134d, 0x2000 },
-  { 0x0700, 0x134c, 0x0000 },
-  { 0x0700, 0x134e, 0x0000 },
-  { 0x8700, 0x1351, 0x2000 },
-  { 0x0700, 0x1350, 0x0000 },
-  { 0x0700, 0x1352, 0x0000 },
-  { 0x9500, 0x1361, 0x4000 },
-  { 0x8700, 0x1357, 0x3000 },
-  { 0x8700, 0x1355, 0x2000 },
-  { 0x0700, 0x1354, 0x0000 },
-  { 0x0700, 0x1356, 0x0000 },
-  { 0x8700, 0x1359, 0x2000 },
-  { 0x0700, 0x1358, 0x0000 },
-  { 0x0700, 0x135a, 0x0000 },
-  { 0x9500, 0x1365, 0x3000 },
-  { 0x9500, 0x1363, 0x2000 },
-  { 0x1500, 0x1362, 0x0000 },
-  { 0x1500, 0x1364, 0x0000 },
-  { 0x9500, 0x1367, 0x2000 },
-  { 0x1500, 0x1366, 0x0000 },
-  { 0x1500, 0x1368, 0x0000 },
-  { 0x8700, 0x13ac, 0x6000 },
-  { 0x8f00, 0x1379, 0x5000 },
-  { 0x8d00, 0x1371, 0x4000 },
-  { 0x8d00, 0x136d, 0x3000 },
-  { 0x8d00, 0x136b, 0x2000 },
-  { 0x0d00, 0x136a, 0x0000 },
-  { 0x0d00, 0x136c, 0x0000 },
-  { 0x8d00, 0x136f, 0x2000 },
-  { 0x0d00, 0x136e, 0x0000 },
-  { 0x0d00, 0x1370, 0x0000 },
-  { 0x8f00, 0x1375, 0x3000 },
-  { 0x8f00, 0x1373, 0x2000 },
-  { 0x0f00, 0x1372, 0x0000 },
-  { 0x0f00, 0x1374, 0x0000 },
-  { 0x8f00, 0x1377, 0x2000 },
-  { 0x0f00, 0x1376, 0x0000 },
-  { 0x0f00, 0x1378, 0x0000 },
-  { 0x8700, 0x13a4, 0x4000 },
-  { 0x8700, 0x13a0, 0x3000 },
-  { 0x8f00, 0x137b, 0x2000 },
-  { 0x0f00, 0x137a, 0x0000 },
-  { 0x0f00, 0x137c, 0x0000 },
-  { 0x8700, 0x13a2, 0x2000 },
-  { 0x0700, 0x13a1, 0x0000 },
-  { 0x0700, 0x13a3, 0x0000 },
-  { 0x8700, 0x13a8, 0x3000 },
-  { 0x8700, 0x13a6, 0x2000 },
-  { 0x0700, 0x13a5, 0x0000 },
-  { 0x0700, 0x13a7, 0x0000 },
-  { 0x8700, 0x13aa, 0x2000 },
-  { 0x0700, 0x13a9, 0x0000 },
-  { 0x0700, 0x13ab, 0x0000 },
-  { 0x8700, 0x13bc, 0x5000 },
-  { 0x8700, 0x13b4, 0x4000 },
-  { 0x8700, 0x13b0, 0x3000 },
-  { 0x8700, 0x13ae, 0x2000 },
-  { 0x0700, 0x13ad, 0x0000 },
-  { 0x0700, 0x13af, 0x0000 },
-  { 0x8700, 0x13b2, 0x2000 },
-  { 0x0700, 0x13b1, 0x0000 },
-  { 0x0700, 0x13b3, 0x0000 },
-  { 0x8700, 0x13b8, 0x3000 },
-  { 0x8700, 0x13b6, 0x2000 },
-  { 0x0700, 0x13b5, 0x0000 },
-  { 0x0700, 0x13b7, 0x0000 },
-  { 0x8700, 0x13ba, 0x2000 },
-  { 0x0700, 0x13b9, 0x0000 },
-  { 0x0700, 0x13bb, 0x0000 },
-  { 0x8700, 0x13c4, 0x4000 },
-  { 0x8700, 0x13c0, 0x3000 },
-  { 0x8700, 0x13be, 0x2000 },
-  { 0x0700, 0x13bd, 0x0000 },
-  { 0x0700, 0x13bf, 0x0000 },
-  { 0x8700, 0x13c2, 0x2000 },
-  { 0x0700, 0x13c1, 0x0000 },
-  { 0x0700, 0x13c3, 0x0000 },
-  { 0x8700, 0x13c8, 0x3000 },
-  { 0x8700, 0x13c6, 0x2000 },
-  { 0x0700, 0x13c5, 0x0000 },
-  { 0x0700, 0x13c7, 0x0000 },
-  { 0x8700, 0x13ca, 0x2000 },
-  { 0x0700, 0x13c9, 0x0000 },
-  { 0x0700, 0x13cb, 0x0000 },
-  { 0x8700, 0x1418, 0x7000 },
-  { 0x8700, 0x13ec, 0x6000 },
-  { 0x8700, 0x13dc, 0x5000 },
-  { 0x8700, 0x13d4, 0x4000 },
-  { 0x8700, 0x13d0, 0x3000 },
-  { 0x8700, 0x13ce, 0x2000 },
-  { 0x0700, 0x13cd, 0x0000 },
-  { 0x0700, 0x13cf, 0x0000 },
-  { 0x8700, 0x13d2, 0x2000 },
-  { 0x0700, 0x13d1, 0x0000 },
-  { 0x0700, 0x13d3, 0x0000 },
-  { 0x8700, 0x13d8, 0x3000 },
-  { 0x8700, 0x13d6, 0x2000 },
-  { 0x0700, 0x13d5, 0x0000 },
-  { 0x0700, 0x13d7, 0x0000 },
-  { 0x8700, 0x13da, 0x2000 },
-  { 0x0700, 0x13d9, 0x0000 },
-  { 0x0700, 0x13db, 0x0000 },
-  { 0x8700, 0x13e4, 0x4000 },
-  { 0x8700, 0x13e0, 0x3000 },
-  { 0x8700, 0x13de, 0x2000 },
-  { 0x0700, 0x13dd, 0x0000 },
-  { 0x0700, 0x13df, 0x0000 },
-  { 0x8700, 0x13e2, 0x2000 },
-  { 0x0700, 0x13e1, 0x0000 },
-  { 0x0700, 0x13e3, 0x0000 },
-  { 0x8700, 0x13e8, 0x3000 },
-  { 0x8700, 0x13e6, 0x2000 },
-  { 0x0700, 0x13e5, 0x0000 },
-  { 0x0700, 0x13e7, 0x0000 },
-  { 0x8700, 0x13ea, 0x2000 },
-  { 0x0700, 0x13e9, 0x0000 },
-  { 0x0700, 0x13eb, 0x0000 },
-  { 0x8700, 0x1408, 0x5000 },
-  { 0x8700, 0x13f4, 0x4000 },
-  { 0x8700, 0x13f0, 0x3000 },
-  { 0x8700, 0x13ee, 0x2000 },
-  { 0x0700, 0x13ed, 0x0000 },
-  { 0x0700, 0x13ef, 0x0000 },
-  { 0x8700, 0x13f2, 0x2000 },
-  { 0x0700, 0x13f1, 0x0000 },
-  { 0x0700, 0x13f3, 0x0000 },
-  { 0x8700, 0x1404, 0x3000 },
-  { 0x8700, 0x1402, 0x2000 },
-  { 0x0700, 0x1401, 0x0000 },
-  { 0x0700, 0x1403, 0x0000 },
-  { 0x8700, 0x1406, 0x2000 },
-  { 0x0700, 0x1405, 0x0000 },
-  { 0x0700, 0x1407, 0x0000 },
-  { 0x8700, 0x1410, 0x4000 },
-  { 0x8700, 0x140c, 0x3000 },
-  { 0x8700, 0x140a, 0x2000 },
-  { 0x0700, 0x1409, 0x0000 },
-  { 0x0700, 0x140b, 0x0000 },
-  { 0x8700, 0x140e, 0x2000 },
-  { 0x0700, 0x140d, 0x0000 },
-  { 0x0700, 0x140f, 0x0000 },
-  { 0x8700, 0x1414, 0x3000 },
-  { 0x8700, 0x1412, 0x2000 },
-  { 0x0700, 0x1411, 0x0000 },
-  { 0x0700, 0x1413, 0x0000 },
-  { 0x8700, 0x1416, 0x2000 },
-  { 0x0700, 0x1415, 0x0000 },
-  { 0x0700, 0x1417, 0x0000 },
-  { 0x8700, 0x1438, 0x6000 },
-  { 0x8700, 0x1428, 0x5000 },
-  { 0x8700, 0x1420, 0x4000 },
-  { 0x8700, 0x141c, 0x3000 },
-  { 0x8700, 0x141a, 0x2000 },
-  { 0x0700, 0x1419, 0x0000 },
-  { 0x0700, 0x141b, 0x0000 },
-  { 0x8700, 0x141e, 0x2000 },
-  { 0x0700, 0x141d, 0x0000 },
-  { 0x0700, 0x141f, 0x0000 },
-  { 0x8700, 0x1424, 0x3000 },
-  { 0x8700, 0x1422, 0x2000 },
-  { 0x0700, 0x1421, 0x0000 },
-  { 0x0700, 0x1423, 0x0000 },
-  { 0x8700, 0x1426, 0x2000 },
-  { 0x0700, 0x1425, 0x0000 },
-  { 0x0700, 0x1427, 0x0000 },
-  { 0x8700, 0x1430, 0x4000 },
-  { 0x8700, 0x142c, 0x3000 },
-  { 0x8700, 0x142a, 0x2000 },
-  { 0x0700, 0x1429, 0x0000 },
-  { 0x0700, 0x142b, 0x0000 },
-  { 0x8700, 0x142e, 0x2000 },
-  { 0x0700, 0x142d, 0x0000 },
-  { 0x0700, 0x142f, 0x0000 },
-  { 0x8700, 0x1434, 0x3000 },
-  { 0x8700, 0x1432, 0x2000 },
-  { 0x0700, 0x1431, 0x0000 },
-  { 0x0700, 0x1433, 0x0000 },
-  { 0x8700, 0x1436, 0x2000 },
-  { 0x0700, 0x1435, 0x0000 },
-  { 0x0700, 0x1437, 0x0000 },
-  { 0x8700, 0x1448, 0x5000 },
-  { 0x8700, 0x1440, 0x4000 },
-  { 0x8700, 0x143c, 0x3000 },
-  { 0x8700, 0x143a, 0x2000 },
-  { 0x0700, 0x1439, 0x0000 },
-  { 0x0700, 0x143b, 0x0000 },
-  { 0x8700, 0x143e, 0x2000 },
-  { 0x0700, 0x143d, 0x0000 },
-  { 0x0700, 0x143f, 0x0000 },
-  { 0x8700, 0x1444, 0x3000 },
-  { 0x8700, 0x1442, 0x2000 },
-  { 0x0700, 0x1441, 0x0000 },
-  { 0x0700, 0x1443, 0x0000 },
-  { 0x8700, 0x1446, 0x2000 },
-  { 0x0700, 0x1445, 0x0000 },
-  { 0x0700, 0x1447, 0x0000 },
-  { 0x8700, 0x1450, 0x4000 },
-  { 0x8700, 0x144c, 0x3000 },
-  { 0x8700, 0x144a, 0x2000 },
-  { 0x0700, 0x1449, 0x0000 },
-  { 0x0700, 0x144b, 0x0000 },
-  { 0x8700, 0x144e, 0x2000 },
-  { 0x0700, 0x144d, 0x0000 },
-  { 0x0700, 0x144f, 0x0000 },
-  { 0x8700, 0x1454, 0x3000 },
-  { 0x8700, 0x1452, 0x2000 },
-  { 0x0700, 0x1451, 0x0000 },
-  { 0x0700, 0x1453, 0x0000 },
-  { 0x8700, 0x1456, 0x2000 },
-  { 0x0700, 0x1455, 0x0000 },
-  { 0x0700, 0x1457, 0x0000 },
-  { 0x8700, 0x14d8, 0x8000 },
-  { 0x8700, 0x1498, 0x7000 },
-  { 0x8700, 0x1478, 0x6000 },
-  { 0x8700, 0x1468, 0x5000 },
-  { 0x8700, 0x1460, 0x4000 },
-  { 0x8700, 0x145c, 0x3000 },
-  { 0x8700, 0x145a, 0x2000 },
-  { 0x0700, 0x1459, 0x0000 },
-  { 0x0700, 0x145b, 0x0000 },
-  { 0x8700, 0x145e, 0x2000 },
-  { 0x0700, 0x145d, 0x0000 },
-  { 0x0700, 0x145f, 0x0000 },
-  { 0x8700, 0x1464, 0x3000 },
-  { 0x8700, 0x1462, 0x2000 },
-  { 0x0700, 0x1461, 0x0000 },
-  { 0x0700, 0x1463, 0x0000 },
-  { 0x8700, 0x1466, 0x2000 },
-  { 0x0700, 0x1465, 0x0000 },
-  { 0x0700, 0x1467, 0x0000 },
-  { 0x8700, 0x1470, 0x4000 },
-  { 0x8700, 0x146c, 0x3000 },
-  { 0x8700, 0x146a, 0x2000 },
-  { 0x0700, 0x1469, 0x0000 },
-  { 0x0700, 0x146b, 0x0000 },
-  { 0x8700, 0x146e, 0x2000 },
-  { 0x0700, 0x146d, 0x0000 },
-  { 0x0700, 0x146f, 0x0000 },
-  { 0x8700, 0x1474, 0x3000 },
-  { 0x8700, 0x1472, 0x2000 },
-  { 0x0700, 0x1471, 0x0000 },
-  { 0x0700, 0x1473, 0x0000 },
-  { 0x8700, 0x1476, 0x2000 },
-  { 0x0700, 0x1475, 0x0000 },
-  { 0x0700, 0x1477, 0x0000 },
-  { 0x8700, 0x1488, 0x5000 },
-  { 0x8700, 0x1480, 0x4000 },
-  { 0x8700, 0x147c, 0x3000 },
-  { 0x8700, 0x147a, 0x2000 },
-  { 0x0700, 0x1479, 0x0000 },
-  { 0x0700, 0x147b, 0x0000 },
-  { 0x8700, 0x147e, 0x2000 },
-  { 0x0700, 0x147d, 0x0000 },
-  { 0x0700, 0x147f, 0x0000 },
-  { 0x8700, 0x1484, 0x3000 },
-  { 0x8700, 0x1482, 0x2000 },
-  { 0x0700, 0x1481, 0x0000 },
-  { 0x0700, 0x1483, 0x0000 },
-  { 0x8700, 0x1486, 0x2000 },
-  { 0x0700, 0x1485, 0x0000 },
-  { 0x0700, 0x1487, 0x0000 },
-  { 0x8700, 0x1490, 0x4000 },
-  { 0x8700, 0x148c, 0x3000 },
-  { 0x8700, 0x148a, 0x2000 },
-  { 0x0700, 0x1489, 0x0000 },
-  { 0x0700, 0x148b, 0x0000 },
-  { 0x8700, 0x148e, 0x2000 },
-  { 0x0700, 0x148d, 0x0000 },
-  { 0x0700, 0x148f, 0x0000 },
-  { 0x8700, 0x1494, 0x3000 },
-  { 0x8700, 0x1492, 0x2000 },
-  { 0x0700, 0x1491, 0x0000 },
-  { 0x0700, 0x1493, 0x0000 },
-  { 0x8700, 0x1496, 0x2000 },
-  { 0x0700, 0x1495, 0x0000 },
-  { 0x0700, 0x1497, 0x0000 },
-  { 0x8700, 0x14b8, 0x6000 },
-  { 0x8700, 0x14a8, 0x5000 },
-  { 0x8700, 0x14a0, 0x4000 },
-  { 0x8700, 0x149c, 0x3000 },
-  { 0x8700, 0x149a, 0x2000 },
-  { 0x0700, 0x1499, 0x0000 },
-  { 0x0700, 0x149b, 0x0000 },
-  { 0x8700, 0x149e, 0x2000 },
-  { 0x0700, 0x149d, 0x0000 },
-  { 0x0700, 0x149f, 0x0000 },
-  { 0x8700, 0x14a4, 0x3000 },
-  { 0x8700, 0x14a2, 0x2000 },
-  { 0x0700, 0x14a1, 0x0000 },
-  { 0x0700, 0x14a3, 0x0000 },
-  { 0x8700, 0x14a6, 0x2000 },
-  { 0x0700, 0x14a5, 0x0000 },
-  { 0x0700, 0x14a7, 0x0000 },
-  { 0x8700, 0x14b0, 0x4000 },
-  { 0x8700, 0x14ac, 0x3000 },
-  { 0x8700, 0x14aa, 0x2000 },
-  { 0x0700, 0x14a9, 0x0000 },
-  { 0x0700, 0x14ab, 0x0000 },
-  { 0x8700, 0x14ae, 0x2000 },
-  { 0x0700, 0x14ad, 0x0000 },
-  { 0x0700, 0x14af, 0x0000 },
-  { 0x8700, 0x14b4, 0x3000 },
-  { 0x8700, 0x14b2, 0x2000 },
-  { 0x0700, 0x14b1, 0x0000 },
-  { 0x0700, 0x14b3, 0x0000 },
-  { 0x8700, 0x14b6, 0x2000 },
-  { 0x0700, 0x14b5, 0x0000 },
-  { 0x0700, 0x14b7, 0x0000 },
-  { 0x8700, 0x14c8, 0x5000 },
-  { 0x8700, 0x14c0, 0x4000 },
-  { 0x8700, 0x14bc, 0x3000 },
-  { 0x8700, 0x14ba, 0x2000 },
-  { 0x0700, 0x14b9, 0x0000 },
-  { 0x0700, 0x14bb, 0x0000 },
-  { 0x8700, 0x14be, 0x2000 },
-  { 0x0700, 0x14bd, 0x0000 },
-  { 0x0700, 0x14bf, 0x0000 },
-  { 0x8700, 0x14c4, 0x3000 },
-  { 0x8700, 0x14c2, 0x2000 },
-  { 0x0700, 0x14c1, 0x0000 },
-  { 0x0700, 0x14c3, 0x0000 },
-  { 0x8700, 0x14c6, 0x2000 },
-  { 0x0700, 0x14c5, 0x0000 },
-  { 0x0700, 0x14c7, 0x0000 },
-  { 0x8700, 0x14d0, 0x4000 },
-  { 0x8700, 0x14cc, 0x3000 },
-  { 0x8700, 0x14ca, 0x2000 },
-  { 0x0700, 0x14c9, 0x0000 },
-  { 0x0700, 0x14cb, 0x0000 },
-  { 0x8700, 0x14ce, 0x2000 },
-  { 0x0700, 0x14cd, 0x0000 },
-  { 0x0700, 0x14cf, 0x0000 },
-  { 0x8700, 0x14d4, 0x3000 },
-  { 0x8700, 0x14d2, 0x2000 },
-  { 0x0700, 0x14d1, 0x0000 },
-  { 0x0700, 0x14d3, 0x0000 },
-  { 0x8700, 0x14d6, 0x2000 },
-  { 0x0700, 0x14d5, 0x0000 },
-  { 0x0700, 0x14d7, 0x0000 },
-  { 0x8700, 0x1518, 0x7000 },
-  { 0x8700, 0x14f8, 0x6000 },
-  { 0x8700, 0x14e8, 0x5000 },
-  { 0x8700, 0x14e0, 0x4000 },
-  { 0x8700, 0x14dc, 0x3000 },
-  { 0x8700, 0x14da, 0x2000 },
-  { 0x0700, 0x14d9, 0x0000 },
-  { 0x0700, 0x14db, 0x0000 },
-  { 0x8700, 0x14de, 0x2000 },
-  { 0x0700, 0x14dd, 0x0000 },
-  { 0x0700, 0x14df, 0x0000 },
-  { 0x8700, 0x14e4, 0x3000 },
-  { 0x8700, 0x14e2, 0x2000 },
-  { 0x0700, 0x14e1, 0x0000 },
-  { 0x0700, 0x14e3, 0x0000 },
-  { 0x8700, 0x14e6, 0x2000 },
-  { 0x0700, 0x14e5, 0x0000 },
-  { 0x0700, 0x14e7, 0x0000 },
-  { 0x8700, 0x14f0, 0x4000 },
-  { 0x8700, 0x14ec, 0x3000 },
-  { 0x8700, 0x14ea, 0x2000 },
-  { 0x0700, 0x14e9, 0x0000 },
-  { 0x0700, 0x14eb, 0x0000 },
-  { 0x8700, 0x14ee, 0x2000 },
-  { 0x0700, 0x14ed, 0x0000 },
-  { 0x0700, 0x14ef, 0x0000 },
-  { 0x8700, 0x14f4, 0x3000 },
-  { 0x8700, 0x14f2, 0x2000 },
-  { 0x0700, 0x14f1, 0x0000 },
-  { 0x0700, 0x14f3, 0x0000 },
-  { 0x8700, 0x14f6, 0x2000 },
-  { 0x0700, 0x14f5, 0x0000 },
-  { 0x0700, 0x14f7, 0x0000 },
-  { 0x8700, 0x1508, 0x5000 },
-  { 0x8700, 0x1500, 0x4000 },
-  { 0x8700, 0x14fc, 0x3000 },
-  { 0x8700, 0x14fa, 0x2000 },
-  { 0x0700, 0x14f9, 0x0000 },
-  { 0x0700, 0x14fb, 0x0000 },
-  { 0x8700, 0x14fe, 0x2000 },
-  { 0x0700, 0x14fd, 0x0000 },
-  { 0x0700, 0x14ff, 0x0000 },
-  { 0x8700, 0x1504, 0x3000 },
-  { 0x8700, 0x1502, 0x2000 },
-  { 0x0700, 0x1501, 0x0000 },
-  { 0x0700, 0x1503, 0x0000 },
-  { 0x8700, 0x1506, 0x2000 },
-  { 0x0700, 0x1505, 0x0000 },
-  { 0x0700, 0x1507, 0x0000 },
-  { 0x8700, 0x1510, 0x4000 },
-  { 0x8700, 0x150c, 0x3000 },
-  { 0x8700, 0x150a, 0x2000 },
-  { 0x0700, 0x1509, 0x0000 },
-  { 0x0700, 0x150b, 0x0000 },
-  { 0x8700, 0x150e, 0x2000 },
-  { 0x0700, 0x150d, 0x0000 },
-  { 0x0700, 0x150f, 0x0000 },
-  { 0x8700, 0x1514, 0x3000 },
-  { 0x8700, 0x1512, 0x2000 },
-  { 0x0700, 0x1511, 0x0000 },
-  { 0x0700, 0x1513, 0x0000 },
-  { 0x8700, 0x1516, 0x2000 },
-  { 0x0700, 0x1515, 0x0000 },
-  { 0x0700, 0x1517, 0x0000 },
-  { 0x8700, 0x1538, 0x6000 },
-  { 0x8700, 0x1528, 0x5000 },
-  { 0x8700, 0x1520, 0x4000 },
-  { 0x8700, 0x151c, 0x3000 },
-  { 0x8700, 0x151a, 0x2000 },
-  { 0x0700, 0x1519, 0x0000 },
-  { 0x0700, 0x151b, 0x0000 },
-  { 0x8700, 0x151e, 0x2000 },
-  { 0x0700, 0x151d, 0x0000 },
-  { 0x0700, 0x151f, 0x0000 },
-  { 0x8700, 0x1524, 0x3000 },
-  { 0x8700, 0x1522, 0x2000 },
-  { 0x0700, 0x1521, 0x0000 },
-  { 0x0700, 0x1523, 0x0000 },
-  { 0x8700, 0x1526, 0x2000 },
-  { 0x0700, 0x1525, 0x0000 },
-  { 0x0700, 0x1527, 0x0000 },
-  { 0x8700, 0x1530, 0x4000 },
-  { 0x8700, 0x152c, 0x3000 },
-  { 0x8700, 0x152a, 0x2000 },
-  { 0x0700, 0x1529, 0x0000 },
-  { 0x0700, 0x152b, 0x0000 },
-  { 0x8700, 0x152e, 0x2000 },
-  { 0x0700, 0x152d, 0x0000 },
-  { 0x0700, 0x152f, 0x0000 },
-  { 0x8700, 0x1534, 0x3000 },
-  { 0x8700, 0x1532, 0x2000 },
-  { 0x0700, 0x1531, 0x0000 },
-  { 0x0700, 0x1533, 0x0000 },
-  { 0x8700, 0x1536, 0x2000 },
-  { 0x0700, 0x1535, 0x0000 },
-  { 0x0700, 0x1537, 0x0000 },
-  { 0x8700, 0x1548, 0x5000 },
-  { 0x8700, 0x1540, 0x4000 },
-  { 0x8700, 0x153c, 0x3000 },
-  { 0x8700, 0x153a, 0x2000 },
-  { 0x0700, 0x1539, 0x0000 },
-  { 0x0700, 0x153b, 0x0000 },
-  { 0x8700, 0x153e, 0x2000 },
-  { 0x0700, 0x153d, 0x0000 },
-  { 0x0700, 0x153f, 0x0000 },
-  { 0x8700, 0x1544, 0x3000 },
-  { 0x8700, 0x1542, 0x2000 },
-  { 0x0700, 0x1541, 0x0000 },
-  { 0x0700, 0x1543, 0x0000 },
-  { 0x8700, 0x1546, 0x2000 },
-  { 0x0700, 0x1545, 0x0000 },
-  { 0x0700, 0x1547, 0x0000 },
-  { 0x8700, 0x1550, 0x4000 },
-  { 0x8700, 0x154c, 0x3000 },
-  { 0x8700, 0x154a, 0x2000 },
-  { 0x0700, 0x1549, 0x0000 },
-  { 0x0700, 0x154b, 0x0000 },
-  { 0x8700, 0x154e, 0x2000 },
-  { 0x0700, 0x154d, 0x0000 },
-  { 0x0700, 0x154f, 0x0000 },
-  { 0x8700, 0x1554, 0x3000 },
-  { 0x8700, 0x1552, 0x2000 },
-  { 0x0700, 0x1551, 0x0000 },
-  { 0x0700, 0x1553, 0x0000 },
-  { 0x8700, 0x1556, 0x2000 },
-  { 0x0700, 0x1555, 0x0000 },
-  { 0x0700, 0x1557, 0x0000 },
-  { 0x9900, 0x22ae, 0xc000 },
-  { 0x8900, 0x1e24, 0xb001 },
-  { 0x8700, 0x17a2, 0xa000 },
-  { 0x8700, 0x1658, 0x9000 },
-  { 0x8700, 0x15d8, 0x8000 },
-  { 0x8700, 0x1598, 0x7000 },
-  { 0x8700, 0x1578, 0x6000 },
-  { 0x8700, 0x1568, 0x5000 },
-  { 0x8700, 0x1560, 0x4000 },
-  { 0x8700, 0x155c, 0x3000 },
-  { 0x8700, 0x155a, 0x2000 },
-  { 0x0700, 0x1559, 0x0000 },
-  { 0x0700, 0x155b, 0x0000 },
-  { 0x8700, 0x155e, 0x2000 },
-  { 0x0700, 0x155d, 0x0000 },
-  { 0x0700, 0x155f, 0x0000 },
-  { 0x8700, 0x1564, 0x3000 },
-  { 0x8700, 0x1562, 0x2000 },
-  { 0x0700, 0x1561, 0x0000 },
-  { 0x0700, 0x1563, 0x0000 },
-  { 0x8700, 0x1566, 0x2000 },
-  { 0x0700, 0x1565, 0x0000 },
-  { 0x0700, 0x1567, 0x0000 },
-  { 0x8700, 0x1570, 0x4000 },
-  { 0x8700, 0x156c, 0x3000 },
-  { 0x8700, 0x156a, 0x2000 },
-  { 0x0700, 0x1569, 0x0000 },
-  { 0x0700, 0x156b, 0x0000 },
-  { 0x8700, 0x156e, 0x2000 },
-  { 0x0700, 0x156d, 0x0000 },
-  { 0x0700, 0x156f, 0x0000 },
-  { 0x8700, 0x1574, 0x3000 },
-  { 0x8700, 0x1572, 0x2000 },
-  { 0x0700, 0x1571, 0x0000 },
-  { 0x0700, 0x1573, 0x0000 },
-  { 0x8700, 0x1576, 0x2000 },
-  { 0x0700, 0x1575, 0x0000 },
-  { 0x0700, 0x1577, 0x0000 },
-  { 0x8700, 0x1588, 0x5000 },
-  { 0x8700, 0x1580, 0x4000 },
-  { 0x8700, 0x157c, 0x3000 },
-  { 0x8700, 0x157a, 0x2000 },
-  { 0x0700, 0x1579, 0x0000 },
-  { 0x0700, 0x157b, 0x0000 },
-  { 0x8700, 0x157e, 0x2000 },
-  { 0x0700, 0x157d, 0x0000 },
-  { 0x0700, 0x157f, 0x0000 },
-  { 0x8700, 0x1584, 0x3000 },
-  { 0x8700, 0x1582, 0x2000 },
-  { 0x0700, 0x1581, 0x0000 },
-  { 0x0700, 0x1583, 0x0000 },
-  { 0x8700, 0x1586, 0x2000 },
-  { 0x0700, 0x1585, 0x0000 },
-  { 0x0700, 0x1587, 0x0000 },
-  { 0x8700, 0x1590, 0x4000 },
-  { 0x8700, 0x158c, 0x3000 },
-  { 0x8700, 0x158a, 0x2000 },
-  { 0x0700, 0x1589, 0x0000 },
-  { 0x0700, 0x158b, 0x0000 },
-  { 0x8700, 0x158e, 0x2000 },
-  { 0x0700, 0x158d, 0x0000 },
-  { 0x0700, 0x158f, 0x0000 },
-  { 0x8700, 0x1594, 0x3000 },
-  { 0x8700, 0x1592, 0x2000 },
-  { 0x0700, 0x1591, 0x0000 },
-  { 0x0700, 0x1593, 0x0000 },
-  { 0x8700, 0x1596, 0x2000 },
-  { 0x0700, 0x1595, 0x0000 },
-  { 0x0700, 0x1597, 0x0000 },
-  { 0x8700, 0x15b8, 0x6000 },
-  { 0x8700, 0x15a8, 0x5000 },
-  { 0x8700, 0x15a0, 0x4000 },
-  { 0x8700, 0x159c, 0x3000 },
-  { 0x8700, 0x159a, 0x2000 },
-  { 0x0700, 0x1599, 0x0000 },
-  { 0x0700, 0x159b, 0x0000 },
-  { 0x8700, 0x159e, 0x2000 },
-  { 0x0700, 0x159d, 0x0000 },
-  { 0x0700, 0x159f, 0x0000 },
-  { 0x8700, 0x15a4, 0x3000 },
-  { 0x8700, 0x15a2, 0x2000 },
-  { 0x0700, 0x15a1, 0x0000 },
-  { 0x0700, 0x15a3, 0x0000 },
-  { 0x8700, 0x15a6, 0x2000 },
-  { 0x0700, 0x15a5, 0x0000 },
-  { 0x0700, 0x15a7, 0x0000 },
-  { 0x8700, 0x15b0, 0x4000 },
-  { 0x8700, 0x15ac, 0x3000 },
-  { 0x8700, 0x15aa, 0x2000 },
-  { 0x0700, 0x15a9, 0x0000 },
-  { 0x0700, 0x15ab, 0x0000 },
-  { 0x8700, 0x15ae, 0x2000 },
-  { 0x0700, 0x15ad, 0x0000 },
-  { 0x0700, 0x15af, 0x0000 },
-  { 0x8700, 0x15b4, 0x3000 },
-  { 0x8700, 0x15b2, 0x2000 },
-  { 0x0700, 0x15b1, 0x0000 },
-  { 0x0700, 0x15b3, 0x0000 },
-  { 0x8700, 0x15b6, 0x2000 },
-  { 0x0700, 0x15b5, 0x0000 },
-  { 0x0700, 0x15b7, 0x0000 },
-  { 0x8700, 0x15c8, 0x5000 },
-  { 0x8700, 0x15c0, 0x4000 },
-  { 0x8700, 0x15bc, 0x3000 },
-  { 0x8700, 0x15ba, 0x2000 },
-  { 0x0700, 0x15b9, 0x0000 },
-  { 0x0700, 0x15bb, 0x0000 },
-  { 0x8700, 0x15be, 0x2000 },
-  { 0x0700, 0x15bd, 0x0000 },
-  { 0x0700, 0x15bf, 0x0000 },
-  { 0x8700, 0x15c4, 0x3000 },
-  { 0x8700, 0x15c2, 0x2000 },
-  { 0x0700, 0x15c1, 0x0000 },
-  { 0x0700, 0x15c3, 0x0000 },
-  { 0x8700, 0x15c6, 0x2000 },
-  { 0x0700, 0x15c5, 0x0000 },
-  { 0x0700, 0x15c7, 0x0000 },
-  { 0x8700, 0x15d0, 0x4000 },
-  { 0x8700, 0x15cc, 0x3000 },
-  { 0x8700, 0x15ca, 0x2000 },
-  { 0x0700, 0x15c9, 0x0000 },
-  { 0x0700, 0x15cb, 0x0000 },
-  { 0x8700, 0x15ce, 0x2000 },
-  { 0x0700, 0x15cd, 0x0000 },
-  { 0x0700, 0x15cf, 0x0000 },
-  { 0x8700, 0x15d4, 0x3000 },
-  { 0x8700, 0x15d2, 0x2000 },
-  { 0x0700, 0x15d1, 0x0000 },
-  { 0x0700, 0x15d3, 0x0000 },
-  { 0x8700, 0x15d6, 0x2000 },
-  { 0x0700, 0x15d5, 0x0000 },
-  { 0x0700, 0x15d7, 0x0000 },
-  { 0x8700, 0x1618, 0x7000 },
-  { 0x8700, 0x15f8, 0x6000 },
-  { 0x8700, 0x15e8, 0x5000 },
-  { 0x8700, 0x15e0, 0x4000 },
-  { 0x8700, 0x15dc, 0x3000 },
-  { 0x8700, 0x15da, 0x2000 },
-  { 0x0700, 0x15d9, 0x0000 },
-  { 0x0700, 0x15db, 0x0000 },
-  { 0x8700, 0x15de, 0x2000 },
-  { 0x0700, 0x15dd, 0x0000 },
-  { 0x0700, 0x15df, 0x0000 },
-  { 0x8700, 0x15e4, 0x3000 },
-  { 0x8700, 0x15e2, 0x2000 },
-  { 0x0700, 0x15e1, 0x0000 },
-  { 0x0700, 0x15e3, 0x0000 },
-  { 0x8700, 0x15e6, 0x2000 },
-  { 0x0700, 0x15e5, 0x0000 },
-  { 0x0700, 0x15e7, 0x0000 },
-  { 0x8700, 0x15f0, 0x4000 },
-  { 0x8700, 0x15ec, 0x3000 },
-  { 0x8700, 0x15ea, 0x2000 },
-  { 0x0700, 0x15e9, 0x0000 },
-  { 0x0700, 0x15eb, 0x0000 },
-  { 0x8700, 0x15ee, 0x2000 },
-  { 0x0700, 0x15ed, 0x0000 },
-  { 0x0700, 0x15ef, 0x0000 },
-  { 0x8700, 0x15f4, 0x3000 },
-  { 0x8700, 0x15f2, 0x2000 },
-  { 0x0700, 0x15f1, 0x0000 },
-  { 0x0700, 0x15f3, 0x0000 },
-  { 0x8700, 0x15f6, 0x2000 },
-  { 0x0700, 0x15f5, 0x0000 },
-  { 0x0700, 0x15f7, 0x0000 },
-  { 0x8700, 0x1608, 0x5000 },
-  { 0x8700, 0x1600, 0x4000 },
-  { 0x8700, 0x15fc, 0x3000 },
-  { 0x8700, 0x15fa, 0x2000 },
-  { 0x0700, 0x15f9, 0x0000 },
-  { 0x0700, 0x15fb, 0x0000 },
-  { 0x8700, 0x15fe, 0x2000 },
-  { 0x0700, 0x15fd, 0x0000 },
-  { 0x0700, 0x15ff, 0x0000 },
-  { 0x8700, 0x1604, 0x3000 },
-  { 0x8700, 0x1602, 0x2000 },
-  { 0x0700, 0x1601, 0x0000 },
-  { 0x0700, 0x1603, 0x0000 },
-  { 0x8700, 0x1606, 0x2000 },
-  { 0x0700, 0x1605, 0x0000 },
-  { 0x0700, 0x1607, 0x0000 },
-  { 0x8700, 0x1610, 0x4000 },
-  { 0x8700, 0x160c, 0x3000 },
-  { 0x8700, 0x160a, 0x2000 },
-  { 0x0700, 0x1609, 0x0000 },
-  { 0x0700, 0x160b, 0x0000 },
-  { 0x8700, 0x160e, 0x2000 },
-  { 0x0700, 0x160d, 0x0000 },
-  { 0x0700, 0x160f, 0x0000 },
-  { 0x8700, 0x1614, 0x3000 },
-  { 0x8700, 0x1612, 0x2000 },
-  { 0x0700, 0x1611, 0x0000 },
-  { 0x0700, 0x1613, 0x0000 },
-  { 0x8700, 0x1616, 0x2000 },
-  { 0x0700, 0x1615, 0x0000 },
-  { 0x0700, 0x1617, 0x0000 },
-  { 0x8700, 0x1638, 0x6000 },
-  { 0x8700, 0x1628, 0x5000 },
-  { 0x8700, 0x1620, 0x4000 },
-  { 0x8700, 0x161c, 0x3000 },
-  { 0x8700, 0x161a, 0x2000 },
-  { 0x0700, 0x1619, 0x0000 },
-  { 0x0700, 0x161b, 0x0000 },
-  { 0x8700, 0x161e, 0x2000 },
-  { 0x0700, 0x161d, 0x0000 },
-  { 0x0700, 0x161f, 0x0000 },
-  { 0x8700, 0x1624, 0x3000 },
-  { 0x8700, 0x1622, 0x2000 },
-  { 0x0700, 0x1621, 0x0000 },
-  { 0x0700, 0x1623, 0x0000 },
-  { 0x8700, 0x1626, 0x2000 },
-  { 0x0700, 0x1625, 0x0000 },
-  { 0x0700, 0x1627, 0x0000 },
-  { 0x8700, 0x1630, 0x4000 },
-  { 0x8700, 0x162c, 0x3000 },
-  { 0x8700, 0x162a, 0x2000 },
-  { 0x0700, 0x1629, 0x0000 },
-  { 0x0700, 0x162b, 0x0000 },
-  { 0x8700, 0x162e, 0x2000 },
-  { 0x0700, 0x162d, 0x0000 },
-  { 0x0700, 0x162f, 0x0000 },
-  { 0x8700, 0x1634, 0x3000 },
-  { 0x8700, 0x1632, 0x2000 },
-  { 0x0700, 0x1631, 0x0000 },
-  { 0x0700, 0x1633, 0x0000 },
-  { 0x8700, 0x1636, 0x2000 },
-  { 0x0700, 0x1635, 0x0000 },
-  { 0x0700, 0x1637, 0x0000 },
-  { 0x8700, 0x1648, 0x5000 },
-  { 0x8700, 0x1640, 0x4000 },
-  { 0x8700, 0x163c, 0x3000 },
-  { 0x8700, 0x163a, 0x2000 },
-  { 0x0700, 0x1639, 0x0000 },
-  { 0x0700, 0x163b, 0x0000 },
-  { 0x8700, 0x163e, 0x2000 },
-  { 0x0700, 0x163d, 0x0000 },
-  { 0x0700, 0x163f, 0x0000 },
-  { 0x8700, 0x1644, 0x3000 },
-  { 0x8700, 0x1642, 0x2000 },
-  { 0x0700, 0x1641, 0x0000 },
-  { 0x0700, 0x1643, 0x0000 },
-  { 0x8700, 0x1646, 0x2000 },
-  { 0x0700, 0x1645, 0x0000 },
-  { 0x0700, 0x1647, 0x0000 },
-  { 0x8700, 0x1650, 0x4000 },
-  { 0x8700, 0x164c, 0x3000 },
-  { 0x8700, 0x164a, 0x2000 },
-  { 0x0700, 0x1649, 0x0000 },
-  { 0x0700, 0x164b, 0x0000 },
-  { 0x8700, 0x164e, 0x2000 },
-  { 0x0700, 0x164d, 0x0000 },
-  { 0x0700, 0x164f, 0x0000 },
-  { 0x8700, 0x1654, 0x3000 },
-  { 0x8700, 0x1652, 0x2000 },
-  { 0x0700, 0x1651, 0x0000 },
-  { 0x0700, 0x1653, 0x0000 },
-  { 0x8700, 0x1656, 0x2000 },
-  { 0x0700, 0x1655, 0x0000 },
-  { 0x0700, 0x1657, 0x0000 },
-  { 0x8700, 0x16e4, 0x8000 },
-  { 0x8700, 0x16a4, 0x7000 },
-  { 0x8700, 0x1681, 0x6000 },
-  { 0x8700, 0x1668, 0x5000 },
-  { 0x8700, 0x1660, 0x4000 },
-  { 0x8700, 0x165c, 0x3000 },
-  { 0x8700, 0x165a, 0x2000 },
-  { 0x0700, 0x1659, 0x0000 },
-  { 0x0700, 0x165b, 0x0000 },
-  { 0x8700, 0x165e, 0x2000 },
-  { 0x0700, 0x165d, 0x0000 },
-  { 0x0700, 0x165f, 0x0000 },
-  { 0x8700, 0x1664, 0x3000 },
-  { 0x8700, 0x1662, 0x2000 },
-  { 0x0700, 0x1661, 0x0000 },
-  { 0x0700, 0x1663, 0x0000 },
-  { 0x8700, 0x1666, 0x2000 },
-  { 0x0700, 0x1665, 0x0000 },
-  { 0x0700, 0x1667, 0x0000 },
-  { 0x8700, 0x1670, 0x4000 },
-  { 0x8700, 0x166c, 0x3000 },
-  { 0x8700, 0x166a, 0x2000 },
-  { 0x0700, 0x1669, 0x0000 },
-  { 0x0700, 0x166b, 0x0000 },
-  { 0x9500, 0x166e, 0x2000 },
-  { 0x1500, 0x166d, 0x0000 },
-  { 0x0700, 0x166f, 0x0000 },
-  { 0x8700, 0x1674, 0x3000 },
-  { 0x8700, 0x1672, 0x2000 },
-  { 0x0700, 0x1671, 0x0000 },
-  { 0x0700, 0x1673, 0x0000 },
-  { 0x8700, 0x1676, 0x2000 },
-  { 0x0700, 0x1675, 0x0000 },
-  { 0x1d00, 0x1680, 0x0000 },
-  { 0x8700, 0x1691, 0x5000 },
-  { 0x8700, 0x1689, 0x4000 },
-  { 0x8700, 0x1685, 0x3000 },
-  { 0x8700, 0x1683, 0x2000 },
-  { 0x0700, 0x1682, 0x0000 },
-  { 0x0700, 0x1684, 0x0000 },
-  { 0x8700, 0x1687, 0x2000 },
-  { 0x0700, 0x1686, 0x0000 },
-  { 0x0700, 0x1688, 0x0000 },
-  { 0x8700, 0x168d, 0x3000 },
-  { 0x8700, 0x168b, 0x2000 },
-  { 0x0700, 0x168a, 0x0000 },
-  { 0x0700, 0x168c, 0x0000 },
-  { 0x8700, 0x168f, 0x2000 },
-  { 0x0700, 0x168e, 0x0000 },
-  { 0x0700, 0x1690, 0x0000 },
-  { 0x8700, 0x1699, 0x4000 },
-  { 0x8700, 0x1695, 0x3000 },
-  { 0x8700, 0x1693, 0x2000 },
-  { 0x0700, 0x1692, 0x0000 },
-  { 0x0700, 0x1694, 0x0000 },
-  { 0x8700, 0x1697, 0x2000 },
-  { 0x0700, 0x1696, 0x0000 },
-  { 0x0700, 0x1698, 0x0000 },
-  { 0x8700, 0x16a0, 0x3000 },
-  { 0x9600, 0x169b, 0x2000 },
-  { 0x0700, 0x169a, 0x0000 },
-  { 0x1200, 0x169c, 0x0000 },
-  { 0x8700, 0x16a2, 0x2000 },
-  { 0x0700, 0x16a1, 0x0000 },
-  { 0x0700, 0x16a3, 0x0000 },
-  { 0x8700, 0x16c4, 0x6000 },
-  { 0x8700, 0x16b4, 0x5000 },
-  { 0x8700, 0x16ac, 0x4000 },
-  { 0x8700, 0x16a8, 0x3000 },
-  { 0x8700, 0x16a6, 0x2000 },
-  { 0x0700, 0x16a5, 0x0000 },
-  { 0x0700, 0x16a7, 0x0000 },
-  { 0x8700, 0x16aa, 0x2000 },
-  { 0x0700, 0x16a9, 0x0000 },
-  { 0x0700, 0x16ab, 0x0000 },
-  { 0x8700, 0x16b0, 0x3000 },
-  { 0x8700, 0x16ae, 0x2000 },
-  { 0x0700, 0x16ad, 0x0000 },
-  { 0x0700, 0x16af, 0x0000 },
-  { 0x8700, 0x16b2, 0x2000 },
-  { 0x0700, 0x16b1, 0x0000 },
-  { 0x0700, 0x16b3, 0x0000 },
-  { 0x8700, 0x16bc, 0x4000 },
-  { 0x8700, 0x16b8, 0x3000 },
-  { 0x8700, 0x16b6, 0x2000 },
-  { 0x0700, 0x16b5, 0x0000 },
-  { 0x0700, 0x16b7, 0x0000 },
-  { 0x8700, 0x16ba, 0x2000 },
-  { 0x0700, 0x16b9, 0x0000 },
-  { 0x0700, 0x16bb, 0x0000 },
-  { 0x8700, 0x16c0, 0x3000 },
-  { 0x8700, 0x16be, 0x2000 },
-  { 0x0700, 0x16bd, 0x0000 },
-  { 0x0700, 0x16bf, 0x0000 },
-  { 0x8700, 0x16c2, 0x2000 },
-  { 0x0700, 0x16c1, 0x0000 },
-  { 0x0700, 0x16c3, 0x0000 },
-  { 0x8700, 0x16d4, 0x5000 },
-  { 0x8700, 0x16cc, 0x4000 },
-  { 0x8700, 0x16c8, 0x3000 },
-  { 0x8700, 0x16c6, 0x2000 },
-  { 0x0700, 0x16c5, 0x0000 },
-  { 0x0700, 0x16c7, 0x0000 },
-  { 0x8700, 0x16ca, 0x2000 },
-  { 0x0700, 0x16c9, 0x0000 },
-  { 0x0700, 0x16cb, 0x0000 },
-  { 0x8700, 0x16d0, 0x3000 },
-  { 0x8700, 0x16ce, 0x2000 },
-  { 0x0700, 0x16cd, 0x0000 },
-  { 0x0700, 0x16cf, 0x0000 },
-  { 0x8700, 0x16d2, 0x2000 },
-  { 0x0700, 0x16d1, 0x0000 },
-  { 0x0700, 0x16d3, 0x0000 },
-  { 0x8700, 0x16dc, 0x4000 },
-  { 0x8700, 0x16d8, 0x3000 },
-  { 0x8700, 0x16d6, 0x2000 },
-  { 0x0700, 0x16d5, 0x0000 },
-  { 0x0700, 0x16d7, 0x0000 },
-  { 0x8700, 0x16da, 0x2000 },
-  { 0x0700, 0x16d9, 0x0000 },
-  { 0x0700, 0x16db, 0x0000 },
-  { 0x8700, 0x16e0, 0x3000 },
-  { 0x8700, 0x16de, 0x2000 },
-  { 0x0700, 0x16dd, 0x0000 },
-  { 0x0700, 0x16df, 0x0000 },
-  { 0x8700, 0x16e2, 0x2000 },
-  { 0x0700, 0x16e1, 0x0000 },
-  { 0x0700, 0x16e3, 0x0000 },
-  { 0x8700, 0x1748, 0x7000 },
-  { 0x8c00, 0x1714, 0x6000 },
-  { 0x8700, 0x1703, 0x5000 },
-  { 0x9500, 0x16ec, 0x4000 },
-  { 0x8700, 0x16e8, 0x3000 },
-  { 0x8700, 0x16e6, 0x2000 },
-  { 0x0700, 0x16e5, 0x0000 },
-  { 0x0700, 0x16e7, 0x0000 },
-  { 0x8700, 0x16ea, 0x2000 },
-  { 0x0700, 0x16e9, 0x0000 },
-  { 0x1500, 0x16eb, 0x0000 },
-  { 0x8e00, 0x16f0, 0x3000 },
-  { 0x8e00, 0x16ee, 0x2000 },
-  { 0x1500, 0x16ed, 0x0000 },
-  { 0x0e00, 0x16ef, 0x0000 },
-  { 0x8700, 0x1701, 0x2000 },
-  { 0x0700, 0x1700, 0x0000 },
-  { 0x0700, 0x1702, 0x0000 },
-  { 0x8700, 0x170b, 0x4000 },
-  { 0x8700, 0x1707, 0x3000 },
-  { 0x8700, 0x1705, 0x2000 },
-  { 0x0700, 0x1704, 0x0000 },
-  { 0x0700, 0x1706, 0x0000 },
-  { 0x8700, 0x1709, 0x2000 },
-  { 0x0700, 0x1708, 0x0000 },
-  { 0x0700, 0x170a, 0x0000 },
-  { 0x8700, 0x1710, 0x3000 },
-  { 0x8700, 0x170e, 0x2000 },
-  { 0x0700, 0x170c, 0x0000 },
-  { 0x0700, 0x170f, 0x0000 },
-  { 0x8c00, 0x1712, 0x2000 },
-  { 0x0700, 0x1711, 0x0000 },
-  { 0x0c00, 0x1713, 0x0000 },
-  { 0x8700, 0x172f, 0x5000 },
-  { 0x8700, 0x1727, 0x4000 },
-  { 0x8700, 0x1723, 0x3000 },
-  { 0x8700, 0x1721, 0x2000 },
-  { 0x0700, 0x1720, 0x0000 },
-  { 0x0700, 0x1722, 0x0000 },
-  { 0x8700, 0x1725, 0x2000 },
-  { 0x0700, 0x1724, 0x0000 },
-  { 0x0700, 0x1726, 0x0000 },
-  { 0x8700, 0x172b, 0x3000 },
-  { 0x8700, 0x1729, 0x2000 },
-  { 0x0700, 0x1728, 0x0000 },
-  { 0x0700, 0x172a, 0x0000 },
-  { 0x8700, 0x172d, 0x2000 },
-  { 0x0700, 0x172c, 0x0000 },
-  { 0x0700, 0x172e, 0x0000 },
-  { 0x8700, 0x1740, 0x4000 },
-  { 0x8c00, 0x1733, 0x3000 },
-  { 0x8700, 0x1731, 0x2000 },
-  { 0x0700, 0x1730, 0x0000 },
-  { 0x0c00, 0x1732, 0x0000 },
-  { 0x9500, 0x1735, 0x2000 },
-  { 0x0c00, 0x1734, 0x0000 },
-  { 0x1500, 0x1736, 0x0000 },
-  { 0x8700, 0x1744, 0x3000 },
-  { 0x8700, 0x1742, 0x2000 },
-  { 0x0700, 0x1741, 0x0000 },
-  { 0x0700, 0x1743, 0x0000 },
-  { 0x8700, 0x1746, 0x2000 },
-  { 0x0700, 0x1745, 0x0000 },
-  { 0x0700, 0x1747, 0x0000 },
-  { 0x8700, 0x1782, 0x6000 },
-  { 0x8700, 0x1764, 0x5000 },
-  { 0x8700, 0x1750, 0x4000 },
-  { 0x8700, 0x174c, 0x3000 },
-  { 0x8700, 0x174a, 0x2000 },
-  { 0x0700, 0x1749, 0x0000 },
-  { 0x0700, 0x174b, 0x0000 },
-  { 0x8700, 0x174e, 0x2000 },
-  { 0x0700, 0x174d, 0x0000 },
-  { 0x0700, 0x174f, 0x0000 },
-  { 0x8700, 0x1760, 0x3000 },
-  { 0x8c00, 0x1752, 0x2000 },
-  { 0x0700, 0x1751, 0x0000 },
-  { 0x0c00, 0x1753, 0x0000 },
-  { 0x8700, 0x1762, 0x2000 },
-  { 0x0700, 0x1761, 0x0000 },
-  { 0x0700, 0x1763, 0x0000 },
-  { 0x8700, 0x176c, 0x4000 },
-  { 0x8700, 0x1768, 0x3000 },
-  { 0x8700, 0x1766, 0x2000 },
-  { 0x0700, 0x1765, 0x0000 },
-  { 0x0700, 0x1767, 0x0000 },
-  { 0x8700, 0x176a, 0x2000 },
-  { 0x0700, 0x1769, 0x0000 },
-  { 0x0700, 0x176b, 0x0000 },
-  { 0x8c00, 0x1772, 0x3000 },
-  { 0x8700, 0x176f, 0x2000 },
-  { 0x0700, 0x176e, 0x0000 },
-  { 0x0700, 0x1770, 0x0000 },
-  { 0x8700, 0x1780, 0x2000 },
-  { 0x0c00, 0x1773, 0x0000 },
-  { 0x0700, 0x1781, 0x0000 },
-  { 0x8700, 0x1792, 0x5000 },
-  { 0x8700, 0x178a, 0x4000 },
-  { 0x8700, 0x1786, 0x3000 },
-  { 0x8700, 0x1784, 0x2000 },
-  { 0x0700, 0x1783, 0x0000 },
-  { 0x0700, 0x1785, 0x0000 },
-  { 0x8700, 0x1788, 0x2000 },
-  { 0x0700, 0x1787, 0x0000 },
-  { 0x0700, 0x1789, 0x0000 },
-  { 0x8700, 0x178e, 0x3000 },
-  { 0x8700, 0x178c, 0x2000 },
-  { 0x0700, 0x178b, 0x0000 },
-  { 0x0700, 0x178d, 0x0000 },
-  { 0x8700, 0x1790, 0x2000 },
-  { 0x0700, 0x178f, 0x0000 },
-  { 0x0700, 0x1791, 0x0000 },
-  { 0x8700, 0x179a, 0x4000 },
-  { 0x8700, 0x1796, 0x3000 },
-  { 0x8700, 0x1794, 0x2000 },
-  { 0x0700, 0x1793, 0x0000 },
-  { 0x0700, 0x1795, 0x0000 },
-  { 0x8700, 0x1798, 0x2000 },
-  { 0x0700, 0x1797, 0x0000 },
-  { 0x0700, 0x1799, 0x0000 },
-  { 0x8700, 0x179e, 0x3000 },
-  { 0x8700, 0x179c, 0x2000 },
-  { 0x0700, 0x179b, 0x0000 },
-  { 0x0700, 0x179d, 0x0000 },
-  { 0x8700, 0x17a0, 0x2000 },
-  { 0x0700, 0x179f, 0x0000 },
-  { 0x0700, 0x17a1, 0x0000 },
-  { 0x8700, 0x1915, 0x9000 },
-  { 0x8700, 0x1837, 0x8000 },
-  { 0x8d00, 0x17e4, 0x7000 },
-  { 0x8a00, 0x17c2, 0x6000 },
-  { 0x8700, 0x17b2, 0x5000 },
-  { 0x8700, 0x17aa, 0x4000 },
-  { 0x8700, 0x17a6, 0x3000 },
-  { 0x8700, 0x17a4, 0x2000 },
-  { 0x0700, 0x17a3, 0x0000 },
-  { 0x0700, 0x17a5, 0x0000 },
-  { 0x8700, 0x17a8, 0x2000 },
-  { 0x0700, 0x17a7, 0x0000 },
-  { 0x0700, 0x17a9, 0x0000 },
-  { 0x8700, 0x17ae, 0x3000 },
-  { 0x8700, 0x17ac, 0x2000 },
-  { 0x0700, 0x17ab, 0x0000 },
-  { 0x0700, 0x17ad, 0x0000 },
-  { 0x8700, 0x17b0, 0x2000 },
-  { 0x0700, 0x17af, 0x0000 },
-  { 0x0700, 0x17b1, 0x0000 },
-  { 0x8c00, 0x17ba, 0x4000 },
-  { 0x8a00, 0x17b6, 0x3000 },
-  { 0x8100, 0x17b4, 0x2000 },
-  { 0x0700, 0x17b3, 0x0000 },
-  { 0x0100, 0x17b5, 0x0000 },
-  { 0x8c00, 0x17b8, 0x2000 },
-  { 0x0c00, 0x17b7, 0x0000 },
-  { 0x0c00, 0x17b9, 0x0000 },
-  { 0x8a00, 0x17be, 0x3000 },
-  { 0x8c00, 0x17bc, 0x2000 },
-  { 0x0c00, 0x17bb, 0x0000 },
-  { 0x0c00, 0x17bd, 0x0000 },
-  { 0x8a00, 0x17c0, 0x2000 },
-  { 0x0a00, 0x17bf, 0x0000 },
-  { 0x0a00, 0x17c1, 0x0000 },
-  { 0x8c00, 0x17d2, 0x5000 },
-  { 0x8c00, 0x17ca, 0x4000 },
-  { 0x8c00, 0x17c6, 0x3000 },
-  { 0x8a00, 0x17c4, 0x2000 },
-  { 0x0a00, 0x17c3, 0x0000 },
-  { 0x0a00, 0x17c5, 0x0000 },
-  { 0x8a00, 0x17c8, 0x2000 },
-  { 0x0a00, 0x17c7, 0x0000 },
-  { 0x0c00, 0x17c9, 0x0000 },
-  { 0x8c00, 0x17ce, 0x3000 },
-  { 0x8c00, 0x17cc, 0x2000 },
-  { 0x0c00, 0x17cb, 0x0000 },
-  { 0x0c00, 0x17cd, 0x0000 },
-  { 0x8c00, 0x17d0, 0x2000 },
-  { 0x0c00, 0x17cf, 0x0000 },
-  { 0x0c00, 0x17d1, 0x0000 },
-  { 0x9500, 0x17da, 0x4000 },
-  { 0x9500, 0x17d6, 0x3000 },
-  { 0x9500, 0x17d4, 0x2000 },
-  { 0x0c00, 0x17d3, 0x0000 },
-  { 0x1500, 0x17d5, 0x0000 },
-  { 0x9500, 0x17d8, 0x2000 },
-  { 0x0600, 0x17d7, 0x0000 },
-  { 0x1500, 0x17d9, 0x0000 },
-  { 0x8d00, 0x17e0, 0x3000 },
-  { 0x8700, 0x17dc, 0x2000 },
-  { 0x1700, 0x17db, 0x0000 },
-  { 0x0c00, 0x17dd, 0x0000 },
-  { 0x8d00, 0x17e2, 0x2000 },
-  { 0x0d00, 0x17e1, 0x0000 },
-  { 0x0d00, 0x17e3, 0x0000 },
-  { 0x8d00, 0x1811, 0x6000 },
-  { 0x9500, 0x1800, 0x5000 },
-  { 0x8f00, 0x17f2, 0x4000 },
-  { 0x8d00, 0x17e8, 0x3000 },
-  { 0x8d00, 0x17e6, 0x2000 },
-  { 0x0d00, 0x17e5, 0x0000 },
-  { 0x0d00, 0x17e7, 0x0000 },
-  { 0x8f00, 0x17f0, 0x2000 },
-  { 0x0d00, 0x17e9, 0x0000 },
-  { 0x0f00, 0x17f1, 0x0000 },
-  { 0x8f00, 0x17f6, 0x3000 },
-  { 0x8f00, 0x17f4, 0x2000 },
-  { 0x0f00, 0x17f3, 0x0000 },
-  { 0x0f00, 0x17f5, 0x0000 },
-  { 0x8f00, 0x17f8, 0x2000 },
-  { 0x0f00, 0x17f7, 0x0000 },
-  { 0x0f00, 0x17f9, 0x0000 },
-  { 0x9500, 0x1808, 0x4000 },
-  { 0x9500, 0x1804, 0x3000 },
-  { 0x9500, 0x1802, 0x2000 },
-  { 0x1500, 0x1801, 0x0000 },
-  { 0x1500, 0x1803, 0x0000 },
-  { 0x9100, 0x1806, 0x2000 },
-  { 0x1500, 0x1805, 0x0000 },
-  { 0x1500, 0x1807, 0x0000 },
-  { 0x8c00, 0x180c, 0x3000 },
-  { 0x9500, 0x180a, 0x2000 },
-  { 0x1500, 0x1809, 0x0000 },
-  { 0x0c00, 0x180b, 0x0000 },
-  { 0x9d00, 0x180e, 0x2000 },
-  { 0x0c00, 0x180d, 0x0000 },
-  { 0x0d00, 0x1810, 0x0000 },
-  { 0x8700, 0x1827, 0x5000 },
-  { 0x8d00, 0x1819, 0x4000 },
-  { 0x8d00, 0x1815, 0x3000 },
-  { 0x8d00, 0x1813, 0x2000 },
-  { 0x0d00, 0x1812, 0x0000 },
-  { 0x0d00, 0x1814, 0x0000 },
-  { 0x8d00, 0x1817, 0x2000 },
-  { 0x0d00, 0x1816, 0x0000 },
-  { 0x0d00, 0x1818, 0x0000 },
-  { 0x8700, 0x1823, 0x3000 },
-  { 0x8700, 0x1821, 0x2000 },
-  { 0x0700, 0x1820, 0x0000 },
-  { 0x0700, 0x1822, 0x0000 },
-  { 0x8700, 0x1825, 0x2000 },
-  { 0x0700, 0x1824, 0x0000 },
-  { 0x0700, 0x1826, 0x0000 },
-  { 0x8700, 0x182f, 0x4000 },
-  { 0x8700, 0x182b, 0x3000 },
-  { 0x8700, 0x1829, 0x2000 },
-  { 0x0700, 0x1828, 0x0000 },
-  { 0x0700, 0x182a, 0x0000 },
-  { 0x8700, 0x182d, 0x2000 },
-  { 0x0700, 0x182c, 0x0000 },
-  { 0x0700, 0x182e, 0x0000 },
-  { 0x8700, 0x1833, 0x3000 },
-  { 0x8700, 0x1831, 0x2000 },
-  { 0x0700, 0x1830, 0x0000 },
-  { 0x0700, 0x1832, 0x0000 },
-  { 0x8700, 0x1835, 0x2000 },
-  { 0x0700, 0x1834, 0x0000 },
-  { 0x0700, 0x1836, 0x0000 },
-  { 0x8700, 0x1877, 0x7000 },
-  { 0x8700, 0x1857, 0x6000 },
-  { 0x8700, 0x1847, 0x5000 },
-  { 0x8700, 0x183f, 0x4000 },
-  { 0x8700, 0x183b, 0x3000 },
-  { 0x8700, 0x1839, 0x2000 },
-  { 0x0700, 0x1838, 0x0000 },
-  { 0x0700, 0x183a, 0x0000 },
-  { 0x8700, 0x183d, 0x2000 },
-  { 0x0700, 0x183c, 0x0000 },
-  { 0x0700, 0x183e, 0x0000 },
-  { 0x8600, 0x1843, 0x3000 },
-  { 0x8700, 0x1841, 0x2000 },
-  { 0x0700, 0x1840, 0x0000 },
-  { 0x0700, 0x1842, 0x0000 },
-  { 0x8700, 0x1845, 0x2000 },
-  { 0x0700, 0x1844, 0x0000 },
-  { 0x0700, 0x1846, 0x0000 },
-  { 0x8700, 0x184f, 0x4000 },
-  { 0x8700, 0x184b, 0x3000 },
-  { 0x8700, 0x1849, 0x2000 },
-  { 0x0700, 0x1848, 0x0000 },
-  { 0x0700, 0x184a, 0x0000 },
-  { 0x8700, 0x184d, 0x2000 },
-  { 0x0700, 0x184c, 0x0000 },
-  { 0x0700, 0x184e, 0x0000 },
-  { 0x8700, 0x1853, 0x3000 },
-  { 0x8700, 0x1851, 0x2000 },
-  { 0x0700, 0x1850, 0x0000 },
-  { 0x0700, 0x1852, 0x0000 },
-  { 0x8700, 0x1855, 0x2000 },
-  { 0x0700, 0x1854, 0x0000 },
-  { 0x0700, 0x1856, 0x0000 },
-  { 0x8700, 0x1867, 0x5000 },
-  { 0x8700, 0x185f, 0x4000 },
-  { 0x8700, 0x185b, 0x3000 },
-  { 0x8700, 0x1859, 0x2000 },
-  { 0x0700, 0x1858, 0x0000 },
-  { 0x0700, 0x185a, 0x0000 },
-  { 0x8700, 0x185d, 0x2000 },
-  { 0x0700, 0x185c, 0x0000 },
-  { 0x0700, 0x185e, 0x0000 },
-  { 0x8700, 0x1863, 0x3000 },
-  { 0x8700, 0x1861, 0x2000 },
-  { 0x0700, 0x1860, 0x0000 },
-  { 0x0700, 0x1862, 0x0000 },
-  { 0x8700, 0x1865, 0x2000 },
-  { 0x0700, 0x1864, 0x0000 },
-  { 0x0700, 0x1866, 0x0000 },
-  { 0x8700, 0x186f, 0x4000 },
-  { 0x8700, 0x186b, 0x3000 },
-  { 0x8700, 0x1869, 0x2000 },
-  { 0x0700, 0x1868, 0x0000 },
-  { 0x0700, 0x186a, 0x0000 },
-  { 0x8700, 0x186d, 0x2000 },
-  { 0x0700, 0x186c, 0x0000 },
-  { 0x0700, 0x186e, 0x0000 },
-  { 0x8700, 0x1873, 0x3000 },
-  { 0x8700, 0x1871, 0x2000 },
-  { 0x0700, 0x1870, 0x0000 },
-  { 0x0700, 0x1872, 0x0000 },
-  { 0x8700, 0x1875, 0x2000 },
-  { 0x0700, 0x1874, 0x0000 },
-  { 0x0700, 0x1876, 0x0000 },
-  { 0x8700, 0x189f, 0x6000 },
-  { 0x8700, 0x188f, 0x5000 },
-  { 0x8700, 0x1887, 0x4000 },
-  { 0x8700, 0x1883, 0x3000 },
-  { 0x8700, 0x1881, 0x2000 },
-  { 0x0700, 0x1880, 0x0000 },
-  { 0x0700, 0x1882, 0x0000 },
-  { 0x8700, 0x1885, 0x2000 },
-  { 0x0700, 0x1884, 0x0000 },
-  { 0x0700, 0x1886, 0x0000 },
-  { 0x8700, 0x188b, 0x3000 },
-  { 0x8700, 0x1889, 0x2000 },
-  { 0x0700, 0x1888, 0x0000 },
-  { 0x0700, 0x188a, 0x0000 },
-  { 0x8700, 0x188d, 0x2000 },
-  { 0x0700, 0x188c, 0x0000 },
-  { 0x0700, 0x188e, 0x0000 },
-  { 0x8700, 0x1897, 0x4000 },
-  { 0x8700, 0x1893, 0x3000 },
-  { 0x8700, 0x1891, 0x2000 },
-  { 0x0700, 0x1890, 0x0000 },
-  { 0x0700, 0x1892, 0x0000 },
-  { 0x8700, 0x1895, 0x2000 },
-  { 0x0700, 0x1894, 0x0000 },
-  { 0x0700, 0x1896, 0x0000 },
-  { 0x8700, 0x189b, 0x3000 },
-  { 0x8700, 0x1899, 0x2000 },
-  { 0x0700, 0x1898, 0x0000 },
-  { 0x0700, 0x189a, 0x0000 },
-  { 0x8700, 0x189d, 0x2000 },
-  { 0x0700, 0x189c, 0x0000 },
-  { 0x0700, 0x189e, 0x0000 },
-  { 0x8700, 0x1905, 0x5000 },
-  { 0x8700, 0x18a7, 0x4000 },
-  { 0x8700, 0x18a3, 0x3000 },
-  { 0x8700, 0x18a1, 0x2000 },
-  { 0x0700, 0x18a0, 0x0000 },
-  { 0x0700, 0x18a2, 0x0000 },
-  { 0x8700, 0x18a5, 0x2000 },
-  { 0x0700, 0x18a4, 0x0000 },
-  { 0x0700, 0x18a6, 0x0000 },
-  { 0x8700, 0x1901, 0x3000 },
-  { 0x8c00, 0x18a9, 0x2000 },
-  { 0x0700, 0x18a8, 0x0000 },
-  { 0x0700, 0x1900, 0x0000 },
-  { 0x8700, 0x1903, 0x2000 },
-  { 0x0700, 0x1902, 0x0000 },
-  { 0x0700, 0x1904, 0x0000 },
-  { 0x8700, 0x190d, 0x4000 },
-  { 0x8700, 0x1909, 0x3000 },
-  { 0x8700, 0x1907, 0x2000 },
-  { 0x0700, 0x1906, 0x0000 },
-  { 0x0700, 0x1908, 0x0000 },
-  { 0x8700, 0x190b, 0x2000 },
-  { 0x0700, 0x190a, 0x0000 },
-  { 0x0700, 0x190c, 0x0000 },
-  { 0x8700, 0x1911, 0x3000 },
-  { 0x8700, 0x190f, 0x2000 },
-  { 0x0700, 0x190e, 0x0000 },
-  { 0x0700, 0x1910, 0x0000 },
-  { 0x8700, 0x1913, 0x2000 },
-  { 0x0700, 0x1912, 0x0000 },
-  { 0x0700, 0x1914, 0x0000 },
-  { 0x8500, 0x1d10, 0x8000 },
-  { 0x8700, 0x1963, 0x7000 },
-  { 0x9a00, 0x1940, 0x6000 },
-  { 0x8c00, 0x1928, 0x5000 },
-  { 0x8c00, 0x1920, 0x4000 },
-  { 0x8700, 0x1919, 0x3000 },
-  { 0x8700, 0x1917, 0x2000 },
-  { 0x0700, 0x1916, 0x0000 },
-  { 0x0700, 0x1918, 0x0000 },
-  { 0x8700, 0x191b, 0x2000 },
-  { 0x0700, 0x191a, 0x0000 },
-  { 0x0700, 0x191c, 0x0000 },
-  { 0x8a00, 0x1924, 0x3000 },
-  { 0x8c00, 0x1922, 0x2000 },
-  { 0x0c00, 0x1921, 0x0000 },
-  { 0x0a00, 0x1923, 0x0000 },
-  { 0x8a00, 0x1926, 0x2000 },
-  { 0x0a00, 0x1925, 0x0000 },
-  { 0x0c00, 0x1927, 0x0000 },
-  { 0x8a00, 0x1934, 0x4000 },
-  { 0x8a00, 0x1930, 0x3000 },
-  { 0x8a00, 0x192a, 0x2000 },
-  { 0x0a00, 0x1929, 0x0000 },
-  { 0x0a00, 0x192b, 0x0000 },
-  { 0x8c00, 0x1932, 0x2000 },
-  { 0x0a00, 0x1931, 0x0000 },
-  { 0x0a00, 0x1933, 0x0000 },
-  { 0x8a00, 0x1938, 0x3000 },
-  { 0x8a00, 0x1936, 0x2000 },
-  { 0x0a00, 0x1935, 0x0000 },
-  { 0x0a00, 0x1937, 0x0000 },
-  { 0x8c00, 0x193a, 0x2000 },
-  { 0x0c00, 0x1939, 0x0000 },
-  { 0x0c00, 0x193b, 0x0000 },
-  { 0x8700, 0x1953, 0x5000 },
-  { 0x8d00, 0x194b, 0x4000 },
-  { 0x8d00, 0x1947, 0x3000 },
-  { 0x9500, 0x1945, 0x2000 },
-  { 0x1500, 0x1944, 0x0000 },
-  { 0x0d00, 0x1946, 0x0000 },
-  { 0x8d00, 0x1949, 0x2000 },
-  { 0x0d00, 0x1948, 0x0000 },
-  { 0x0d00, 0x194a, 0x0000 },
-  { 0x8d00, 0x194f, 0x3000 },
-  { 0x8d00, 0x194d, 0x2000 },
-  { 0x0d00, 0x194c, 0x0000 },
-  { 0x0d00, 0x194e, 0x0000 },
-  { 0x8700, 0x1951, 0x2000 },
-  { 0x0700, 0x1950, 0x0000 },
-  { 0x0700, 0x1952, 0x0000 },
-  { 0x8700, 0x195b, 0x4000 },
-  { 0x8700, 0x1957, 0x3000 },
-  { 0x8700, 0x1955, 0x2000 },
-  { 0x0700, 0x1954, 0x0000 },
-  { 0x0700, 0x1956, 0x0000 },
-  { 0x8700, 0x1959, 0x2000 },
-  { 0x0700, 0x1958, 0x0000 },
-  { 0x0700, 0x195a, 0x0000 },
-  { 0x8700, 0x195f, 0x3000 },
-  { 0x8700, 0x195d, 0x2000 },
-  { 0x0700, 0x195c, 0x0000 },
-  { 0x0700, 0x195e, 0x0000 },
-  { 0x8700, 0x1961, 0x2000 },
-  { 0x0700, 0x1960, 0x0000 },
-  { 0x0700, 0x1962, 0x0000 },
-  { 0x9a00, 0x19f0, 0x6000 },
-  { 0x9a00, 0x19e0, 0x5000 },
-  { 0x8700, 0x196b, 0x4000 },
-  { 0x8700, 0x1967, 0x3000 },
-  { 0x8700, 0x1965, 0x2000 },
-  { 0x0700, 0x1964, 0x0000 },
-  { 0x0700, 0x1966, 0x0000 },
-  { 0x8700, 0x1969, 0x2000 },
-  { 0x0700, 0x1968, 0x0000 },
-  { 0x0700, 0x196a, 0x0000 },
-  { 0x8700, 0x1971, 0x3000 },
-  { 0x8700, 0x196d, 0x2000 },
-  { 0x0700, 0x196c, 0x0000 },
-  { 0x0700, 0x1970, 0x0000 },
-  { 0x8700, 0x1973, 0x2000 },
-  { 0x0700, 0x1972, 0x0000 },
-  { 0x0700, 0x1974, 0x0000 },
-  { 0x9a00, 0x19e8, 0x4000 },
-  { 0x9a00, 0x19e4, 0x3000 },
-  { 0x9a00, 0x19e2, 0x2000 },
-  { 0x1a00, 0x19e1, 0x0000 },
-  { 0x1a00, 0x19e3, 0x0000 },
-  { 0x9a00, 0x19e6, 0x2000 },
-  { 0x1a00, 0x19e5, 0x0000 },
-  { 0x1a00, 0x19e7, 0x0000 },
-  { 0x9a00, 0x19ec, 0x3000 },
-  { 0x9a00, 0x19ea, 0x2000 },
-  { 0x1a00, 0x19e9, 0x0000 },
-  { 0x1a00, 0x19eb, 0x0000 },
-  { 0x9a00, 0x19ee, 0x2000 },
-  { 0x1a00, 0x19ed, 0x0000 },
-  { 0x1a00, 0x19ef, 0x0000 },
-  { 0x8500, 0x1d00, 0x5000 },
-  { 0x9a00, 0x19f8, 0x4000 },
-  { 0x9a00, 0x19f4, 0x3000 },
-  { 0x9a00, 0x19f2, 0x2000 },
-  { 0x1a00, 0x19f1, 0x0000 },
-  { 0x1a00, 0x19f3, 0x0000 },
-  { 0x9a00, 0x19f6, 0x2000 },
-  { 0x1a00, 0x19f5, 0x0000 },
-  { 0x1a00, 0x19f7, 0x0000 },
-  { 0x9a00, 0x19fc, 0x3000 },
-  { 0x9a00, 0x19fa, 0x2000 },
-  { 0x1a00, 0x19f9, 0x0000 },
-  { 0x1a00, 0x19fb, 0x0000 },
-  { 0x9a00, 0x19fe, 0x2000 },
-  { 0x1a00, 0x19fd, 0x0000 },
-  { 0x1a00, 0x19ff, 0x0000 },
-  { 0x8500, 0x1d08, 0x4000 },
-  { 0x8500, 0x1d04, 0x3000 },
-  { 0x8500, 0x1d02, 0x2000 },
-  { 0x0500, 0x1d01, 0x0000 },
-  { 0x0500, 0x1d03, 0x0000 },
-  { 0x8500, 0x1d06, 0x2000 },
-  { 0x0500, 0x1d05, 0x0000 },
-  { 0x0500, 0x1d07, 0x0000 },
-  { 0x8500, 0x1d0c, 0x3000 },
-  { 0x8500, 0x1d0a, 0x2000 },
-  { 0x0500, 0x1d09, 0x0000 },
-  { 0x0500, 0x1d0b, 0x0000 },
-  { 0x8500, 0x1d0e, 0x2000 },
-  { 0x0500, 0x1d0d, 0x0000 },
-  { 0x0500, 0x1d0f, 0x0000 },
-  { 0x8600, 0x1d50, 0x7000 },
-  { 0x8600, 0x1d30, 0x6000 },
-  { 0x8500, 0x1d20, 0x5000 },
-  { 0x8500, 0x1d18, 0x4000 },
-  { 0x8500, 0x1d14, 0x3000 },
-  { 0x8500, 0x1d12, 0x2000 },
-  { 0x0500, 0x1d11, 0x0000 },
-  { 0x0500, 0x1d13, 0x0000 },
-  { 0x8500, 0x1d16, 0x2000 },
-  { 0x0500, 0x1d15, 0x0000 },
-  { 0x0500, 0x1d17, 0x0000 },
-  { 0x8500, 0x1d1c, 0x3000 },
-  { 0x8500, 0x1d1a, 0x2000 },
-  { 0x0500, 0x1d19, 0x0000 },
-  { 0x0500, 0x1d1b, 0x0000 },
-  { 0x8500, 0x1d1e, 0x2000 },
-  { 0x0500, 0x1d1d, 0x0000 },
-  { 0x0500, 0x1d1f, 0x0000 },
-  { 0x8500, 0x1d28, 0x4000 },
-  { 0x8500, 0x1d24, 0x3000 },
-  { 0x8500, 0x1d22, 0x2000 },
-  { 0x0500, 0x1d21, 0x0000 },
-  { 0x0500, 0x1d23, 0x0000 },
-  { 0x8500, 0x1d26, 0x2000 },
-  { 0x0500, 0x1d25, 0x0000 },
-  { 0x0500, 0x1d27, 0x0000 },
-  { 0x8600, 0x1d2c, 0x3000 },
-  { 0x8500, 0x1d2a, 0x2000 },
-  { 0x0500, 0x1d29, 0x0000 },
-  { 0x0500, 0x1d2b, 0x0000 },
-  { 0x8600, 0x1d2e, 0x2000 },
-  { 0x0600, 0x1d2d, 0x0000 },
-  { 0x0600, 0x1d2f, 0x0000 },
-  { 0x8600, 0x1d40, 0x5000 },
-  { 0x8600, 0x1d38, 0x4000 },
-  { 0x8600, 0x1d34, 0x3000 },
-  { 0x8600, 0x1d32, 0x2000 },
-  { 0x0600, 0x1d31, 0x0000 },
-  { 0x0600, 0x1d33, 0x0000 },
-  { 0x8600, 0x1d36, 0x2000 },
-  { 0x0600, 0x1d35, 0x0000 },
-  { 0x0600, 0x1d37, 0x0000 },
-  { 0x8600, 0x1d3c, 0x3000 },
-  { 0x8600, 0x1d3a, 0x2000 },
-  { 0x0600, 0x1d39, 0x0000 },
-  { 0x0600, 0x1d3b, 0x0000 },
-  { 0x8600, 0x1d3e, 0x2000 },
-  { 0x0600, 0x1d3d, 0x0000 },
-  { 0x0600, 0x1d3f, 0x0000 },
-  { 0x8600, 0x1d48, 0x4000 },
-  { 0x8600, 0x1d44, 0x3000 },
-  { 0x8600, 0x1d42, 0x2000 },
-  { 0x0600, 0x1d41, 0x0000 },
-  { 0x0600, 0x1d43, 0x0000 },
-  { 0x8600, 0x1d46, 0x2000 },
-  { 0x0600, 0x1d45, 0x0000 },
-  { 0x0600, 0x1d47, 0x0000 },
-  { 0x8600, 0x1d4c, 0x3000 },
-  { 0x8600, 0x1d4a, 0x2000 },
-  { 0x0600, 0x1d49, 0x0000 },
-  { 0x0600, 0x1d4b, 0x0000 },
-  { 0x8600, 0x1d4e, 0x2000 },
-  { 0x0600, 0x1d4d, 0x0000 },
-  { 0x0600, 0x1d4f, 0x0000 },
-  { 0x8900, 0x1e04, 0x6001 },
-  { 0x8600, 0x1d60, 0x5000 },
-  { 0x8600, 0x1d58, 0x4000 },
-  { 0x8600, 0x1d54, 0x3000 },
-  { 0x8600, 0x1d52, 0x2000 },
-  { 0x0600, 0x1d51, 0x0000 },
-  { 0x0600, 0x1d53, 0x0000 },
-  { 0x8600, 0x1d56, 0x2000 },
-  { 0x0600, 0x1d55, 0x0000 },
-  { 0x0600, 0x1d57, 0x0000 },
-  { 0x8600, 0x1d5c, 0x3000 },
-  { 0x8600, 0x1d5a, 0x2000 },
-  { 0x0600, 0x1d59, 0x0000 },
-  { 0x0600, 0x1d5b, 0x0000 },
-  { 0x8600, 0x1d5e, 0x2000 },
-  { 0x0600, 0x1d5d, 0x0000 },
-  { 0x0600, 0x1d5f, 0x0000 },
-  { 0x8500, 0x1d68, 0x4000 },
-  { 0x8500, 0x1d64, 0x3000 },
-  { 0x8500, 0x1d62, 0x2000 },
-  { 0x0600, 0x1d61, 0x0000 },
-  { 0x0500, 0x1d63, 0x0000 },
-  { 0x8500, 0x1d66, 0x2000 },
-  { 0x0500, 0x1d65, 0x0000 },
-  { 0x0500, 0x1d67, 0x0000 },
-  { 0x8900, 0x1e00, 0x3001 },
-  { 0x8500, 0x1d6a, 0x2000 },
-  { 0x0500, 0x1d69, 0x0000 },
-  { 0x0500, 0x1d6b, 0x0000 },
-  { 0x8900, 0x1e02, 0x2001 },
-  { 0x0500, 0x1e01, 0x0fff },
-  { 0x0500, 0x1e03, 0x0fff },
-  { 0x8900, 0x1e14, 0x5001 },
-  { 0x8900, 0x1e0c, 0x4001 },
-  { 0x8900, 0x1e08, 0x3001 },
-  { 0x8900, 0x1e06, 0x2001 },
-  { 0x0500, 0x1e05, 0x0fff },
-  { 0x0500, 0x1e07, 0x0fff },
-  { 0x8900, 0x1e0a, 0x2001 },
-  { 0x0500, 0x1e09, 0x0fff },
-  { 0x0500, 0x1e0b, 0x0fff },
-  { 0x8900, 0x1e10, 0x3001 },
-  { 0x8900, 0x1e0e, 0x2001 },
-  { 0x0500, 0x1e0d, 0x0fff },
-  { 0x0500, 0x1e0f, 0x0fff },
-  { 0x8900, 0x1e12, 0x2001 },
-  { 0x0500, 0x1e11, 0x0fff },
-  { 0x0500, 0x1e13, 0x0fff },
-  { 0x8900, 0x1e1c, 0x4001 },
-  { 0x8900, 0x1e18, 0x3001 },
-  { 0x8900, 0x1e16, 0x2001 },
-  { 0x0500, 0x1e15, 0x0fff },
-  { 0x0500, 0x1e17, 0x0fff },
-  { 0x8900, 0x1e1a, 0x2001 },
-  { 0x0500, 0x1e19, 0x0fff },
-  { 0x0500, 0x1e1b, 0x0fff },
-  { 0x8900, 0x1e20, 0x3001 },
-  { 0x8900, 0x1e1e, 0x2001 },
-  { 0x0500, 0x1e1d, 0x0fff },
-  { 0x0500, 0x1e1f, 0x0fff },
-  { 0x8900, 0x1e22, 0x2001 },
-  { 0x0500, 0x1e21, 0x0fff },
-  { 0x0500, 0x1e23, 0x0fff },
-  { 0x9600, 0x2045, 0xa000 },
-  { 0x8500, 0x1f32, 0x9008 },
-  { 0x8900, 0x1ea8, 0x8001 },
-  { 0x8900, 0x1e64, 0x7001 },
-  { 0x8900, 0x1e44, 0x6001 },
-  { 0x8900, 0x1e34, 0x5001 },
-  { 0x8900, 0x1e2c, 0x4001 },
-  { 0x8900, 0x1e28, 0x3001 },
-  { 0x8900, 0x1e26, 0x2001 },
-  { 0x0500, 0x1e25, 0x0fff },
-  { 0x0500, 0x1e27, 0x0fff },
-  { 0x8900, 0x1e2a, 0x2001 },
-  { 0x0500, 0x1e29, 0x0fff },
-  { 0x0500, 0x1e2b, 0x0fff },
-  { 0x8900, 0x1e30, 0x3001 },
-  { 0x8900, 0x1e2e, 0x2001 },
-  { 0x0500, 0x1e2d, 0x0fff },
-  { 0x0500, 0x1e2f, 0x0fff },
-  { 0x8900, 0x1e32, 0x2001 },
-  { 0x0500, 0x1e31, 0x0fff },
-  { 0x0500, 0x1e33, 0x0fff },
-  { 0x8900, 0x1e3c, 0x4001 },
-  { 0x8900, 0x1e38, 0x3001 },
-  { 0x8900, 0x1e36, 0x2001 },
-  { 0x0500, 0x1e35, 0x0fff },
-  { 0x0500, 0x1e37, 0x0fff },
-  { 0x8900, 0x1e3a, 0x2001 },
-  { 0x0500, 0x1e39, 0x0fff },
-  { 0x0500, 0x1e3b, 0x0fff },
-  { 0x8900, 0x1e40, 0x3001 },
-  { 0x8900, 0x1e3e, 0x2001 },
-  { 0x0500, 0x1e3d, 0x0fff },
-  { 0x0500, 0x1e3f, 0x0fff },
-  { 0x8900, 0x1e42, 0x2001 },
-  { 0x0500, 0x1e41, 0x0fff },
-  { 0x0500, 0x1e43, 0x0fff },
-  { 0x8900, 0x1e54, 0x5001 },
-  { 0x8900, 0x1e4c, 0x4001 },
-  { 0x8900, 0x1e48, 0x3001 },
-  { 0x8900, 0x1e46, 0x2001 },
-  { 0x0500, 0x1e45, 0x0fff },
-  { 0x0500, 0x1e47, 0x0fff },
-  { 0x8900, 0x1e4a, 0x2001 },
-  { 0x0500, 0x1e49, 0x0fff },
-  { 0x0500, 0x1e4b, 0x0fff },
-  { 0x8900, 0x1e50, 0x3001 },
-  { 0x8900, 0x1e4e, 0x2001 },
-  { 0x0500, 0x1e4d, 0x0fff },
-  { 0x0500, 0x1e4f, 0x0fff },
-  { 0x8900, 0x1e52, 0x2001 },
-  { 0x0500, 0x1e51, 0x0fff },
-  { 0x0500, 0x1e53, 0x0fff },
-  { 0x8900, 0x1e5c, 0x4001 },
-  { 0x8900, 0x1e58, 0x3001 },
-  { 0x8900, 0x1e56, 0x2001 },
-  { 0x0500, 0x1e55, 0x0fff },
-  { 0x0500, 0x1e57, 0x0fff },
-  { 0x8900, 0x1e5a, 0x2001 },
-  { 0x0500, 0x1e59, 0x0fff },
-  { 0x0500, 0x1e5b, 0x0fff },
-  { 0x8900, 0x1e60, 0x3001 },
-  { 0x8900, 0x1e5e, 0x2001 },
-  { 0x0500, 0x1e5d, 0x0fff },
-  { 0x0500, 0x1e5f, 0x0fff },
-  { 0x8900, 0x1e62, 0x2001 },
-  { 0x0500, 0x1e61, 0x0fff },
-  { 0x0500, 0x1e63, 0x0fff },
-  { 0x8900, 0x1e84, 0x6001 },
-  { 0x8900, 0x1e74, 0x5001 },
-  { 0x8900, 0x1e6c, 0x4001 },
-  { 0x8900, 0x1e68, 0x3001 },
-  { 0x8900, 0x1e66, 0x2001 },
-  { 0x0500, 0x1e65, 0x0fff },
-  { 0x0500, 0x1e67, 0x0fff },
-  { 0x8900, 0x1e6a, 0x2001 },
-  { 0x0500, 0x1e69, 0x0fff },
-  { 0x0500, 0x1e6b, 0x0fff },
-  { 0x8900, 0x1e70, 0x3001 },
-  { 0x8900, 0x1e6e, 0x2001 },
-  { 0x0500, 0x1e6d, 0x0fff },
-  { 0x0500, 0x1e6f, 0x0fff },
-  { 0x8900, 0x1e72, 0x2001 },
-  { 0x0500, 0x1e71, 0x0fff },
-  { 0x0500, 0x1e73, 0x0fff },
-  { 0x8900, 0x1e7c, 0x4001 },
-  { 0x8900, 0x1e78, 0x3001 },
-  { 0x8900, 0x1e76, 0x2001 },
-  { 0x0500, 0x1e75, 0x0fff },
-  { 0x0500, 0x1e77, 0x0fff },
-  { 0x8900, 0x1e7a, 0x2001 },
-  { 0x0500, 0x1e79, 0x0fff },
-  { 0x0500, 0x1e7b, 0x0fff },
-  { 0x8900, 0x1e80, 0x3001 },
-  { 0x8900, 0x1e7e, 0x2001 },
-  { 0x0500, 0x1e7d, 0x0fff },
-  { 0x0500, 0x1e7f, 0x0fff },
-  { 0x8900, 0x1e82, 0x2001 },
-  { 0x0500, 0x1e81, 0x0fff },
-  { 0x0500, 0x1e83, 0x0fff },
-  { 0x8900, 0x1e94, 0x5001 },
-  { 0x8900, 0x1e8c, 0x4001 },
-  { 0x8900, 0x1e88, 0x3001 },
-  { 0x8900, 0x1e86, 0x2001 },
-  { 0x0500, 0x1e85, 0x0fff },
-  { 0x0500, 0x1e87, 0x0fff },
-  { 0x8900, 0x1e8a, 0x2001 },
-  { 0x0500, 0x1e89, 0x0fff },
-  { 0x0500, 0x1e8b, 0x0fff },
-  { 0x8900, 0x1e90, 0x3001 },
-  { 0x8900, 0x1e8e, 0x2001 },
-  { 0x0500, 0x1e8d, 0x0fff },
-  { 0x0500, 0x1e8f, 0x0fff },
-  { 0x8900, 0x1e92, 0x2001 },
-  { 0x0500, 0x1e91, 0x0fff },
-  { 0x0500, 0x1e93, 0x0fff },
-  { 0x8900, 0x1ea0, 0x4001 },
-  { 0x8500, 0x1e98, 0x3000 },
-  { 0x8500, 0x1e96, 0x2000 },
-  { 0x0500, 0x1e95, 0x0fff },
-  { 0x0500, 0x1e97, 0x0000 },
-  { 0x8500, 0x1e9a, 0x2000 },
-  { 0x0500, 0x1e99, 0x0000 },
-  { 0x0500, 0x1e9b, 0x0fc5 },
-  { 0x8900, 0x1ea4, 0x3001 },
-  { 0x8900, 0x1ea2, 0x2001 },
-  { 0x0500, 0x1ea1, 0x0fff },
-  { 0x0500, 0x1ea3, 0x0fff },
-  { 0x8900, 0x1ea6, 0x2001 },
-  { 0x0500, 0x1ea5, 0x0fff },
-  { 0x0500, 0x1ea7, 0x0fff },
-  { 0x8900, 0x1ee8, 0x7001 },
-  { 0x8900, 0x1ec8, 0x6001 },
-  { 0x8900, 0x1eb8, 0x5001 },
-  { 0x8900, 0x1eb0, 0x4001 },
-  { 0x8900, 0x1eac, 0x3001 },
-  { 0x8900, 0x1eaa, 0x2001 },
-  { 0x0500, 0x1ea9, 0x0fff },
-  { 0x0500, 0x1eab, 0x0fff },
-  { 0x8900, 0x1eae, 0x2001 },
-  { 0x0500, 0x1ead, 0x0fff },
-  { 0x0500, 0x1eaf, 0x0fff },
-  { 0x8900, 0x1eb4, 0x3001 },
-  { 0x8900, 0x1eb2, 0x2001 },
-  { 0x0500, 0x1eb1, 0x0fff },
-  { 0x0500, 0x1eb3, 0x0fff },
-  { 0x8900, 0x1eb6, 0x2001 },
-  { 0x0500, 0x1eb5, 0x0fff },
-  { 0x0500, 0x1eb7, 0x0fff },
-  { 0x8900, 0x1ec0, 0x4001 },
-  { 0x8900, 0x1ebc, 0x3001 },
-  { 0x8900, 0x1eba, 0x2001 },
-  { 0x0500, 0x1eb9, 0x0fff },
-  { 0x0500, 0x1ebb, 0x0fff },
-  { 0x8900, 0x1ebe, 0x2001 },
-  { 0x0500, 0x1ebd, 0x0fff },
-  { 0x0500, 0x1ebf, 0x0fff },
-  { 0x8900, 0x1ec4, 0x3001 },
-  { 0x8900, 0x1ec2, 0x2001 },
-  { 0x0500, 0x1ec1, 0x0fff },
-  { 0x0500, 0x1ec3, 0x0fff },
-  { 0x8900, 0x1ec6, 0x2001 },
-  { 0x0500, 0x1ec5, 0x0fff },
-  { 0x0500, 0x1ec7, 0x0fff },
-  { 0x8900, 0x1ed8, 0x5001 },
-  { 0x8900, 0x1ed0, 0x4001 },
-  { 0x8900, 0x1ecc, 0x3001 },
-  { 0x8900, 0x1eca, 0x2001 },
-  { 0x0500, 0x1ec9, 0x0fff },
-  { 0x0500, 0x1ecb, 0x0fff },
-  { 0x8900, 0x1ece, 0x2001 },
-  { 0x0500, 0x1ecd, 0x0fff },
-  { 0x0500, 0x1ecf, 0x0fff },
-  { 0x8900, 0x1ed4, 0x3001 },
-  { 0x8900, 0x1ed2, 0x2001 },
-  { 0x0500, 0x1ed1, 0x0fff },
-  { 0x0500, 0x1ed3, 0x0fff },
-  { 0x8900, 0x1ed6, 0x2001 },
-  { 0x0500, 0x1ed5, 0x0fff },
-  { 0x0500, 0x1ed7, 0x0fff },
-  { 0x8900, 0x1ee0, 0x4001 },
-  { 0x8900, 0x1edc, 0x3001 },
-  { 0x8900, 0x1eda, 0x2001 },
-  { 0x0500, 0x1ed9, 0x0fff },
-  { 0x0500, 0x1edb, 0x0fff },
-  { 0x8900, 0x1ede, 0x2001 },
-  { 0x0500, 0x1edd, 0x0fff },
-  { 0x0500, 0x1edf, 0x0fff },
-  { 0x8900, 0x1ee4, 0x3001 },
-  { 0x8900, 0x1ee2, 0x2001 },
-  { 0x0500, 0x1ee1, 0x0fff },
-  { 0x0500, 0x1ee3, 0x0fff },
-  { 0x8900, 0x1ee6, 0x2001 },
-  { 0x0500, 0x1ee5, 0x0fff },
-  { 0x0500, 0x1ee7, 0x0fff },
-  { 0x8900, 0x1f0e, 0x6ff8 },
-  { 0x8900, 0x1ef8, 0x5001 },
-  { 0x8900, 0x1ef0, 0x4001 },
-  { 0x8900, 0x1eec, 0x3001 },
-  { 0x8900, 0x1eea, 0x2001 },
-  { 0x0500, 0x1ee9, 0x0fff },
-  { 0x0500, 0x1eeb, 0x0fff },
-  { 0x8900, 0x1eee, 0x2001 },
-  { 0x0500, 0x1eed, 0x0fff },
-  { 0x0500, 0x1eef, 0x0fff },
-  { 0x8900, 0x1ef4, 0x3001 },
-  { 0x8900, 0x1ef2, 0x2001 },
-  { 0x0500, 0x1ef1, 0x0fff },
-  { 0x0500, 0x1ef3, 0x0fff },
-  { 0x8900, 0x1ef6, 0x2001 },
-  { 0x0500, 0x1ef5, 0x0fff },
-  { 0x0500, 0x1ef7, 0x0fff },
-  { 0x8500, 0x1f06, 0x4008 },
-  { 0x8500, 0x1f02, 0x3008 },
-  { 0x8500, 0x1f00, 0x2008 },
-  { 0x0500, 0x1ef9, 0x0fff },
-  { 0x0500, 0x1f01, 0x0008 },
-  { 0x8500, 0x1f04, 0x2008 },
-  { 0x0500, 0x1f03, 0x0008 },
-  { 0x0500, 0x1f05, 0x0008 },
-  { 0x8900, 0x1f0a, 0x3ff8 },
-  { 0x8900, 0x1f08, 0x2ff8 },
-  { 0x0500, 0x1f07, 0x0008 },
-  { 0x0900, 0x1f09, 0x0ff8 },
-  { 0x8900, 0x1f0c, 0x2ff8 },
-  { 0x0900, 0x1f0b, 0x0ff8 },
-  { 0x0900, 0x1f0d, 0x0ff8 },
-  { 0x8500, 0x1f22, 0x5008 },
-  { 0x8900, 0x1f18, 0x4ff8 },
-  { 0x8500, 0x1f12, 0x3008 },
-  { 0x8500, 0x1f10, 0x2008 },
-  { 0x0900, 0x1f0f, 0x0ff8 },
-  { 0x0500, 0x1f11, 0x0008 },
-  { 0x8500, 0x1f14, 0x2008 },
-  { 0x0500, 0x1f13, 0x0008 },
-  { 0x0500, 0x1f15, 0x0008 },
-  { 0x8900, 0x1f1c, 0x3ff8 },
-  { 0x8900, 0x1f1a, 0x2ff8 },
-  { 0x0900, 0x1f19, 0x0ff8 },
-  { 0x0900, 0x1f1b, 0x0ff8 },
-  { 0x8500, 0x1f20, 0x2008 },
-  { 0x0900, 0x1f1d, 0x0ff8 },
-  { 0x0500, 0x1f21, 0x0008 },
-  { 0x8900, 0x1f2a, 0x4ff8 },
-  { 0x8500, 0x1f26, 0x3008 },
-  { 0x8500, 0x1f24, 0x2008 },
-  { 0x0500, 0x1f23, 0x0008 },
-  { 0x0500, 0x1f25, 0x0008 },
-  { 0x8900, 0x1f28, 0x2ff8 },
-  { 0x0500, 0x1f27, 0x0008 },
-  { 0x0900, 0x1f29, 0x0ff8 },
-  { 0x8900, 0x1f2e, 0x3ff8 },
-  { 0x8900, 0x1f2c, 0x2ff8 },
-  { 0x0900, 0x1f2b, 0x0ff8 },
-  { 0x0900, 0x1f2d, 0x0ff8 },
-  { 0x8500, 0x1f30, 0x2008 },
-  { 0x0900, 0x1f2f, 0x0ff8 },
-  { 0x0500, 0x1f31, 0x0008 },
-  { 0x9800, 0x1fbd, 0x8000 },
-  { 0x8500, 0x1f7a, 0x7070 },
-  { 0x8500, 0x1f56, 0x6000 },
-  { 0x8500, 0x1f42, 0x5008 },
-  { 0x8900, 0x1f3a, 0x4ff8 },
-  { 0x8500, 0x1f36, 0x3008 },
-  { 0x8500, 0x1f34, 0x2008 },
-  { 0x0500, 0x1f33, 0x0008 },
-  { 0x0500, 0x1f35, 0x0008 },
-  { 0x8900, 0x1f38, 0x2ff8 },
-  { 0x0500, 0x1f37, 0x0008 },
-  { 0x0900, 0x1f39, 0x0ff8 },
-  { 0x8900, 0x1f3e, 0x3ff8 },
-  { 0x8900, 0x1f3c, 0x2ff8 },
-  { 0x0900, 0x1f3b, 0x0ff8 },
-  { 0x0900, 0x1f3d, 0x0ff8 },
-  { 0x8500, 0x1f40, 0x2008 },
-  { 0x0900, 0x1f3f, 0x0ff8 },
-  { 0x0500, 0x1f41, 0x0008 },
-  { 0x8900, 0x1f4c, 0x4ff8 },
-  { 0x8900, 0x1f48, 0x3ff8 },
-  { 0x8500, 0x1f44, 0x2008 },
-  { 0x0500, 0x1f43, 0x0008 },
-  { 0x0500, 0x1f45, 0x0008 },
-  { 0x8900, 0x1f4a, 0x2ff8 },
-  { 0x0900, 0x1f49, 0x0ff8 },
-  { 0x0900, 0x1f4b, 0x0ff8 },
-  { 0x8500, 0x1f52, 0x3000 },
-  { 0x8500, 0x1f50, 0x2000 },
-  { 0x0900, 0x1f4d, 0x0ff8 },
-  { 0x0500, 0x1f51, 0x0008 },
-  { 0x8500, 0x1f54, 0x2000 },
-  { 0x0500, 0x1f53, 0x0008 },
-  { 0x0500, 0x1f55, 0x0008 },
-  { 0x8900, 0x1f6a, 0x5ff8 },
-  { 0x8500, 0x1f62, 0x4008 },
-  { 0x8900, 0x1f5d, 0x3ff8 },
-  { 0x8900, 0x1f59, 0x2ff8 },
-  { 0x0500, 0x1f57, 0x0008 },
-  { 0x0900, 0x1f5b, 0x0ff8 },
-  { 0x8500, 0x1f60, 0x2008 },
-  { 0x0900, 0x1f5f, 0x0ff8 },
-  { 0x0500, 0x1f61, 0x0008 },
-  { 0x8500, 0x1f66, 0x3008 },
-  { 0x8500, 0x1f64, 0x2008 },
-  { 0x0500, 0x1f63, 0x0008 },
-  { 0x0500, 0x1f65, 0x0008 },
-  { 0x8900, 0x1f68, 0x2ff8 },
-  { 0x0500, 0x1f67, 0x0008 },
-  { 0x0900, 0x1f69, 0x0ff8 },
-  { 0x8500, 0x1f72, 0x4056 },
-  { 0x8900, 0x1f6e, 0x3ff8 },
-  { 0x8900, 0x1f6c, 0x2ff8 },
-  { 0x0900, 0x1f6b, 0x0ff8 },
-  { 0x0900, 0x1f6d, 0x0ff8 },
-  { 0x8500, 0x1f70, 0x204a },
-  { 0x0900, 0x1f6f, 0x0ff8 },
-  { 0x0500, 0x1f71, 0x004a },
-  { 0x8500, 0x1f76, 0x3064 },
-  { 0x8500, 0x1f74, 0x2056 },
-  { 0x0500, 0x1f73, 0x0056 },
-  { 0x0500, 0x1f75, 0x0056 },
-  { 0x8500, 0x1f78, 0x2080 },
-  { 0x0500, 0x1f77, 0x0064 },
-  { 0x0500, 0x1f79, 0x0080 },
-  { 0x8800, 0x1f9c, 0x6000 },
-  { 0x8800, 0x1f8c, 0x5000 },
-  { 0x8500, 0x1f84, 0x4008 },
-  { 0x8500, 0x1f80, 0x3008 },
-  { 0x8500, 0x1f7c, 0x207e },
-  { 0x0500, 0x1f7b, 0x0070 },
-  { 0x0500, 0x1f7d, 0x007e },
-  { 0x8500, 0x1f82, 0x2008 },
-  { 0x0500, 0x1f81, 0x0008 },
-  { 0x0500, 0x1f83, 0x0008 },
-  { 0x8800, 0x1f88, 0x3000 },
-  { 0x8500, 0x1f86, 0x2008 },
-  { 0x0500, 0x1f85, 0x0008 },
-  { 0x0500, 0x1f87, 0x0008 },
-  { 0x8800, 0x1f8a, 0x2000 },
-  { 0x0800, 0x1f89, 0x0000 },
-  { 0x0800, 0x1f8b, 0x0000 },
-  { 0x8500, 0x1f94, 0x4008 },
-  { 0x8500, 0x1f90, 0x3008 },
-  { 0x8800, 0x1f8e, 0x2000 },
-  { 0x0800, 0x1f8d, 0x0000 },
-  { 0x0800, 0x1f8f, 0x0000 },
-  { 0x8500, 0x1f92, 0x2008 },
-  { 0x0500, 0x1f91, 0x0008 },
-  { 0x0500, 0x1f93, 0x0008 },
-  { 0x8800, 0x1f98, 0x3000 },
-  { 0x8500, 0x1f96, 0x2008 },
-  { 0x0500, 0x1f95, 0x0008 },
-  { 0x0500, 0x1f97, 0x0008 },
-  { 0x8800, 0x1f9a, 0x2000 },
-  { 0x0800, 0x1f99, 0x0000 },
-  { 0x0800, 0x1f9b, 0x0000 },
-  { 0x8800, 0x1fac, 0x5000 },
-  { 0x8500, 0x1fa4, 0x4008 },
-  { 0x8500, 0x1fa0, 0x3008 },
-  { 0x8800, 0x1f9e, 0x2000 },
-  { 0x0800, 0x1f9d, 0x0000 },
-  { 0x0800, 0x1f9f, 0x0000 },
-  { 0x8500, 0x1fa2, 0x2008 },
-  { 0x0500, 0x1fa1, 0x0008 },
-  { 0x0500, 0x1fa3, 0x0008 },
-  { 0x8800, 0x1fa8, 0x3000 },
-  { 0x8500, 0x1fa6, 0x2008 },
-  { 0x0500, 0x1fa5, 0x0008 },
-  { 0x0500, 0x1fa7, 0x0008 },
-  { 0x8800, 0x1faa, 0x2000 },
-  { 0x0800, 0x1fa9, 0x0000 },
-  { 0x0800, 0x1fab, 0x0000 },
-  { 0x8500, 0x1fb4, 0x4000 },
-  { 0x8500, 0x1fb0, 0x3008 },
-  { 0x8800, 0x1fae, 0x2000 },
-  { 0x0800, 0x1fad, 0x0000 },
-  { 0x0800, 0x1faf, 0x0000 },
-  { 0x8500, 0x1fb2, 0x2000 },
-  { 0x0500, 0x1fb1, 0x0008 },
-  { 0x0500, 0x1fb3, 0x0009 },
-  { 0x8900, 0x1fb9, 0x3ff8 },
-  { 0x8500, 0x1fb7, 0x2000 },
-  { 0x0500, 0x1fb6, 0x0000 },
-  { 0x0900, 0x1fb8, 0x0ff8 },
-  { 0x8900, 0x1fbb, 0x2fb6 },
-  { 0x0900, 0x1fba, 0x0fb6 },
-  { 0x0800, 0x1fbc, 0x0000 },
-  { 0x9d00, 0x2005, 0x7000 },
-  { 0x8500, 0x1fe1, 0x6008 },
-  { 0x9800, 0x1fce, 0x5000 },
-  { 0x8500, 0x1fc6, 0x4000 },
-  { 0x9800, 0x1fc1, 0x3000 },
-  { 0x9800, 0x1fbf, 0x2000 },
-  { 0x0500, 0x1fbe, 0x0000 },
-  { 0x1800, 0x1fc0, 0x0000 },
-  { 0x8500, 0x1fc3, 0x2009 },
-  { 0x0500, 0x1fc2, 0x0000 },
-  { 0x0500, 0x1fc4, 0x0000 },
-  { 0x8900, 0x1fca, 0x3faa },
-  { 0x8900, 0x1fc8, 0x2faa },
-  { 0x0500, 0x1fc7, 0x0000 },
-  { 0x0900, 0x1fc9, 0x0faa },
-  { 0x8800, 0x1fcc, 0x2000 },
-  { 0x0900, 0x1fcb, 0x0faa },
-  { 0x1800, 0x1fcd, 0x0000 },
-  { 0x8900, 0x1fd8, 0x4ff8 },
-  { 0x8500, 0x1fd2, 0x3000 },
-  { 0x8500, 0x1fd0, 0x2008 },
-  { 0x1800, 0x1fcf, 0x0000 },
-  { 0x0500, 0x1fd1, 0x0008 },
-  { 0x8500, 0x1fd6, 0x2000 },
-  { 0x0500, 0x1fd3, 0x0000 },
-  { 0x0500, 0x1fd7, 0x0000 },
-  { 0x9800, 0x1fdd, 0x3000 },
-  { 0x8900, 0x1fda, 0x2f9c },
-  { 0x0900, 0x1fd9, 0x0ff8 },
-  { 0x0900, 0x1fdb, 0x0f9c },
-  { 0x9800, 0x1fdf, 0x2000 },
-  { 0x1800, 0x1fde, 0x0000 },
-  { 0x0500, 0x1fe0, 0x0008 },
-  { 0x8500, 0x1ff3, 0x5009 },
-  { 0x8900, 0x1fe9, 0x4ff8 },
-  { 0x8500, 0x1fe5, 0x3007 },
-  { 0x8500, 0x1fe3, 0x2000 },
-  { 0x0500, 0x1fe2, 0x0000 },
-  { 0x0500, 0x1fe4, 0x0000 },
-  { 0x8500, 0x1fe7, 0x2000 },
-  { 0x0500, 0x1fe6, 0x0000 },
-  { 0x0900, 0x1fe8, 0x0ff8 },
-  { 0x9800, 0x1fed, 0x3000 },
-  { 0x8900, 0x1feb, 0x2f90 },
-  { 0x0900, 0x1fea, 0x0f90 },
-  { 0x0900, 0x1fec, 0x0ff9 },
-  { 0x9800, 0x1fef, 0x2000 },
-  { 0x1800, 0x1fee, 0x0000 },
-  { 0x0500, 0x1ff2, 0x0000 },
-  { 0x8800, 0x1ffc, 0x4000 },
-  { 0x8900, 0x1ff8, 0x3f80 },
-  { 0x8500, 0x1ff6, 0x2000 },
-  { 0x0500, 0x1ff4, 0x0000 },
-  { 0x0500, 0x1ff7, 0x0000 },
-  { 0x8900, 0x1ffa, 0x2f82 },
-  { 0x0900, 0x1ff9, 0x0f80 },
-  { 0x0900, 0x1ffb, 0x0f82 },
-  { 0x9d00, 0x2001, 0x3000 },
-  { 0x9800, 0x1ffe, 0x2000 },
-  { 0x1800, 0x1ffd, 0x0000 },
-  { 0x1d00, 0x2000, 0x0000 },
-  { 0x9d00, 0x2003, 0x2000 },
-  { 0x1d00, 0x2002, 0x0000 },
-  { 0x1d00, 0x2004, 0x0000 },
-  { 0x9500, 0x2025, 0x6000 },
-  { 0x9100, 0x2015, 0x5000 },
-  { 0x8100, 0x200d, 0x4000 },
-  { 0x9d00, 0x2009, 0x3000 },
-  { 0x9d00, 0x2007, 0x2000 },
-  { 0x1d00, 0x2006, 0x0000 },
-  { 0x1d00, 0x2008, 0x0000 },
-  { 0x9d00, 0x200b, 0x2000 },
-  { 0x1d00, 0x200a, 0x0000 },
-  { 0x0100, 0x200c, 0x0000 },
-  { 0x9100, 0x2011, 0x3000 },
-  { 0x8100, 0x200f, 0x2000 },
-  { 0x0100, 0x200e, 0x0000 },
-  { 0x1100, 0x2010, 0x0000 },
-  { 0x9100, 0x2013, 0x2000 },
-  { 0x1100, 0x2012, 0x0000 },
-  { 0x1100, 0x2014, 0x0000 },
-  { 0x9300, 0x201d, 0x4000 },
-  { 0x9300, 0x2019, 0x3000 },
-  { 0x9500, 0x2017, 0x2000 },
-  { 0x1500, 0x2016, 0x0000 },
-  { 0x1400, 0x2018, 0x0000 },
-  { 0x9400, 0x201b, 0x2000 },
-  { 0x1600, 0x201a, 0x0000 },
-  { 0x1400, 0x201c, 0x0000 },
-  { 0x9500, 0x2021, 0x3000 },
-  { 0x9400, 0x201f, 0x2000 },
-  { 0x1600, 0x201e, 0x0000 },
-  { 0x1500, 0x2020, 0x0000 },
-  { 0x9500, 0x2023, 0x2000 },
-  { 0x1500, 0x2022, 0x0000 },
-  { 0x1500, 0x2024, 0x0000 },
-  { 0x9500, 0x2035, 0x5000 },
-  { 0x8100, 0x202d, 0x4000 },
-  { 0x9c00, 0x2029, 0x3000 },
-  { 0x9500, 0x2027, 0x2000 },
-  { 0x1500, 0x2026, 0x0000 },
-  { 0x1b00, 0x2028, 0x0000 },
-  { 0x8100, 0x202b, 0x2000 },
-  { 0x0100, 0x202a, 0x0000 },
-  { 0x0100, 0x202c, 0x0000 },
-  { 0x9500, 0x2031, 0x3000 },
-  { 0x9d00, 0x202f, 0x2000 },
-  { 0x0100, 0x202e, 0x0000 },
-  { 0x1500, 0x2030, 0x0000 },
-  { 0x9500, 0x2033, 0x2000 },
-  { 0x1500, 0x2032, 0x0000 },
-  { 0x1500, 0x2034, 0x0000 },
-  { 0x9500, 0x203d, 0x4000 },
-  { 0x9400, 0x2039, 0x3000 },
-  { 0x9500, 0x2037, 0x2000 },
-  { 0x1500, 0x2036, 0x0000 },
-  { 0x1500, 0x2038, 0x0000 },
-  { 0x9500, 0x203b, 0x2000 },
-  { 0x1300, 0x203a, 0x0000 },
-  { 0x1500, 0x203c, 0x0000 },
-  { 0x9500, 0x2041, 0x3000 },
-  { 0x9000, 0x203f, 0x2000 },
-  { 0x1500, 0x203e, 0x0000 },
-  { 0x1000, 0x2040, 0x0000 },
-  { 0x9500, 0x2043, 0x2000 },
-  { 0x1500, 0x2042, 0x0000 },
-  { 0x1900, 0x2044, 0x0000 },
-  { 0x9900, 0x21ae, 0x9000 },
-  { 0x8900, 0x211a, 0x8000 },
-  { 0x9700, 0x20a7, 0x7000 },
-  { 0x8f00, 0x2076, 0x6000 },
-  { 0x9500, 0x2057, 0x5000 },
-  { 0x9500, 0x204d, 0x4000 },
-  { 0x9500, 0x2049, 0x3000 },
-  { 0x9500, 0x2047, 0x2000 },
-  { 0x1200, 0x2046, 0x0000 },
-  { 0x1500, 0x2048, 0x0000 },
-  { 0x9500, 0x204b, 0x2000 },
-  { 0x1500, 0x204a, 0x0000 },
-  { 0x1500, 0x204c, 0x0000 },
-  { 0x9500, 0x2051, 0x3000 },
-  { 0x9500, 0x204f, 0x2000 },
-  { 0x1500, 0x204e, 0x0000 },
-  { 0x1500, 0x2050, 0x0000 },
-  { 0x9500, 0x2053, 0x2000 },
-  { 0x1900, 0x2052, 0x0000 },
-  { 0x1000, 0x2054, 0x0000 },
-  { 0x8100, 0x206c, 0x4000 },
-  { 0x8100, 0x2062, 0x3000 },
-  { 0x8100, 0x2060, 0x2000 },
-  { 0x1d00, 0x205f, 0x0000 },
-  { 0x0100, 0x2061, 0x0000 },
-  { 0x8100, 0x206a, 0x2000 },
-  { 0x0100, 0x2063, 0x0000 },
-  { 0x0100, 0x206b, 0x0000 },
-  { 0x8f00, 0x2070, 0x3000 },
-  { 0x8100, 0x206e, 0x2000 },
-  { 0x0100, 0x206d, 0x0000 },
-  { 0x0100, 0x206f, 0x0000 },
-  { 0x8f00, 0x2074, 0x2000 },
-  { 0x0500, 0x2071, 0x0000 },
-  { 0x0f00, 0x2075, 0x0000 },
-  { 0x8f00, 0x2086, 0x5000 },
-  { 0x9200, 0x207e, 0x4000 },
-  { 0x9900, 0x207a, 0x3000 },
-  { 0x8f00, 0x2078, 0x2000 },
-  { 0x0f00, 0x2077, 0x0000 },
-  { 0x0f00, 0x2079, 0x0000 },
-  { 0x9900, 0x207c, 0x2000 },
-  { 0x1900, 0x207b, 0x0000 },
-  { 0x1600, 0x207d, 0x0000 },
-  { 0x8f00, 0x2082, 0x3000 },
-  { 0x8f00, 0x2080, 0x2000 },
-  { 0x0500, 0x207f, 0x0000 },
-  { 0x0f00, 0x2081, 0x0000 },
-  { 0x8f00, 0x2084, 0x2000 },
-  { 0x0f00, 0x2083, 0x0000 },
-  { 0x0f00, 0x2085, 0x0000 },
-  { 0x9200, 0x208e, 0x4000 },
-  { 0x9900, 0x208a, 0x3000 },
-  { 0x8f00, 0x2088, 0x2000 },
-  { 0x0f00, 0x2087, 0x0000 },
-  { 0x0f00, 0x2089, 0x0000 },
-  { 0x9900, 0x208c, 0x2000 },
-  { 0x1900, 0x208b, 0x0000 },
-  { 0x1600, 0x208d, 0x0000 },
-  { 0x9700, 0x20a3, 0x3000 },
-  { 0x9700, 0x20a1, 0x2000 },
-  { 0x1700, 0x20a0, 0x0000 },
-  { 0x1700, 0x20a2, 0x0000 },
-  { 0x9700, 0x20a5, 0x2000 },
-  { 0x1700, 0x20a4, 0x0000 },
-  { 0x1700, 0x20a6, 0x0000 },
-  { 0x8c00, 0x20e5, 0x6000 },
-  { 0x8c00, 0x20d5, 0x5000 },
-  { 0x9700, 0x20af, 0x4000 },
-  { 0x9700, 0x20ab, 0x3000 },
-  { 0x9700, 0x20a9, 0x2000 },
-  { 0x1700, 0x20a8, 0x0000 },
-  { 0x1700, 0x20aa, 0x0000 },
-  { 0x9700, 0x20ad, 0x2000 },
-  { 0x1700, 0x20ac, 0x0000 },
-  { 0x1700, 0x20ae, 0x0000 },
-  { 0x8c00, 0x20d1, 0x3000 },
-  { 0x9700, 0x20b1, 0x2000 },
-  { 0x1700, 0x20b0, 0x0000 },
-  { 0x0c00, 0x20d0, 0x0000 },
-  { 0x8c00, 0x20d3, 0x2000 },
-  { 0x0c00, 0x20d2, 0x0000 },
-  { 0x0c00, 0x20d4, 0x0000 },
-  { 0x8b00, 0x20dd, 0x4000 },
-  { 0x8c00, 0x20d9, 0x3000 },
-  { 0x8c00, 0x20d7, 0x2000 },
-  { 0x0c00, 0x20d6, 0x0000 },
-  { 0x0c00, 0x20d8, 0x0000 },
-  { 0x8c00, 0x20db, 0x2000 },
-  { 0x0c00, 0x20da, 0x0000 },
-  { 0x0c00, 0x20dc, 0x0000 },
-  { 0x8c00, 0x20e1, 0x3000 },
-  { 0x8b00, 0x20df, 0x2000 },
-  { 0x0b00, 0x20de, 0x0000 },
-  { 0x0b00, 0x20e0, 0x0000 },
-  { 0x8b00, 0x20e3, 0x2000 },
-  { 0x0b00, 0x20e2, 0x0000 },
-  { 0x0b00, 0x20e4, 0x0000 },
-  { 0x8500, 0x210a, 0x5000 },
-  { 0x8900, 0x2102, 0x4000 },
-  { 0x8c00, 0x20e9, 0x3000 },
-  { 0x8c00, 0x20e7, 0x2000 },
-  { 0x0c00, 0x20e6, 0x0000 },
-  { 0x0c00, 0x20e8, 0x0000 },
-  { 0x9a00, 0x2100, 0x2000 },
-  { 0x0c00, 0x20ea, 0x0000 },
-  { 0x1a00, 0x2101, 0x0000 },
-  { 0x9a00, 0x2106, 0x3000 },
-  { 0x9a00, 0x2104, 0x2000 },
-  { 0x1a00, 0x2103, 0x0000 },
-  { 0x1a00, 0x2105, 0x0000 },
-  { 0x9a00, 0x2108, 0x2000 },
-  { 0x0900, 0x2107, 0x0000 },
-  { 0x1a00, 0x2109, 0x0000 },
-  { 0x8900, 0x2112, 0x4000 },
-  { 0x8500, 0x210e, 0x3000 },
-  { 0x8900, 0x210c, 0x2000 },
-  { 0x0900, 0x210b, 0x0000 },
-  { 0x0900, 0x210d, 0x0000 },
-  { 0x8900, 0x2110, 0x2000 },
-  { 0x0500, 0x210f, 0x0000 },
-  { 0x0900, 0x2111, 0x0000 },
-  { 0x9a00, 0x2116, 0x3000 },
-  { 0x9a00, 0x2114, 0x2000 },
-  { 0x0500, 0x2113, 0x0000 },
-  { 0x0900, 0x2115, 0x0000 },
-  { 0x9a00, 0x2118, 0x2000 },
-  { 0x1a00, 0x2117, 0x0000 },
-  { 0x0900, 0x2119, 0x0000 },
-  { 0x8e00, 0x2162, 0x7000 },
-  { 0x9a00, 0x213a, 0x6000 },
-  { 0x8900, 0x212a, 0x5000 },
-  { 0x9a00, 0x2122, 0x4000 },
-  { 0x9a00, 0x211e, 0x3000 },
-  { 0x8900, 0x211c, 0x2000 },
-  { 0x0900, 0x211b, 0x0000 },
-  { 0x0900, 0x211d, 0x0000 },
-  { 0x9a00, 0x2120, 0x2000 },
-  { 0x1a00, 0x211f, 0x0000 },
-  { 0x1a00, 0x2121, 0x0000 },
-  { 0x8900, 0x2126, 0x3000 },
-  { 0x8900, 0x2124, 0x2000 },
-  { 0x1a00, 0x2123, 0x0000 },
-  { 0x1a00, 0x2125, 0x0000 },
-  { 0x8900, 0x2128, 0x2000 },
-  { 0x1a00, 0x2127, 0x0000 },
-  { 0x1a00, 0x2129, 0x0000 },
-  { 0x9a00, 0x2132, 0x4000 },
-  { 0x9a00, 0x212e, 0x3000 },
-  { 0x8900, 0x212c, 0x2000 },
-  { 0x0900, 0x212b, 0x0000 },
-  { 0x0900, 0x212d, 0x0000 },
-  { 0x8900, 0x2130, 0x2000 },
-  { 0x0500, 0x212f, 0x0000 },
-  { 0x0900, 0x2131, 0x0000 },
-  { 0x8700, 0x2136, 0x3000 },
-  { 0x8500, 0x2134, 0x2000 },
-  { 0x0900, 0x2133, 0x0000 },
-  { 0x0700, 0x2135, 0x0000 },
-  { 0x8700, 0x2138, 0x2000 },
-  { 0x0700, 0x2137, 0x0000 },
-  { 0x0500, 0x2139, 0x0000 },
-  { 0x9900, 0x214b, 0x5000 },
-  { 0x9900, 0x2143, 0x4000 },
-  { 0x8900, 0x213f, 0x3000 },
-  { 0x8500, 0x213d, 0x2000 },
-  { 0x1a00, 0x213b, 0x0000 },
-  { 0x0900, 0x213e, 0x0000 },
-  { 0x9900, 0x2141, 0x2000 },
-  { 0x1900, 0x2140, 0x0000 },
-  { 0x1900, 0x2142, 0x0000 },
-  { 0x8500, 0x2147, 0x3000 },
-  { 0x8900, 0x2145, 0x2000 },
-  { 0x1900, 0x2144, 0x0000 },
-  { 0x0500, 0x2146, 0x0000 },
-  { 0x8500, 0x2149, 0x2000 },
-  { 0x0500, 0x2148, 0x0000 },
-  { 0x1a00, 0x214a, 0x0000 },
-  { 0x8f00, 0x215a, 0x4000 },
-  { 0x8f00, 0x2156, 0x3000 },
-  { 0x8f00, 0x2154, 0x2000 },
-  { 0x0f00, 0x2153, 0x0000 },
-  { 0x0f00, 0x2155, 0x0000 },
-  { 0x8f00, 0x2158, 0x2000 },
-  { 0x0f00, 0x2157, 0x0000 },
-  { 0x0f00, 0x2159, 0x0000 },
-  { 0x8f00, 0x215e, 0x3000 },
-  { 0x8f00, 0x215c, 0x2000 },
-  { 0x0f00, 0x215b, 0x0000 },
-  { 0x0f00, 0x215d, 0x0000 },
-  { 0x8e00, 0x2160, 0x2000 },
-  { 0x0f00, 0x215f, 0x0000 },
-  { 0x0e00, 0x2161, 0x0000 },
-  { 0x8e00, 0x2182, 0x6000 },
-  { 0x8e00, 0x2172, 0x5000 },
-  { 0x8e00, 0x216a, 0x4000 },
-  { 0x8e00, 0x2166, 0x3000 },
-  { 0x8e00, 0x2164, 0x2000 },
-  { 0x0e00, 0x2163, 0x0000 },
-  { 0x0e00, 0x2165, 0x0000 },
-  { 0x8e00, 0x2168, 0x2000 },
-  { 0x0e00, 0x2167, 0x0000 },
-  { 0x0e00, 0x2169, 0x0000 },
-  { 0x8e00, 0x216e, 0x3000 },
-  { 0x8e00, 0x216c, 0x2000 },
-  { 0x0e00, 0x216b, 0x0000 },
-  { 0x0e00, 0x216d, 0x0000 },
-  { 0x8e00, 0x2170, 0x2000 },
-  { 0x0e00, 0x216f, 0x0000 },
-  { 0x0e00, 0x2171, 0x0000 },
-  { 0x8e00, 0x217a, 0x4000 },
-  { 0x8e00, 0x2176, 0x3000 },
-  { 0x8e00, 0x2174, 0x2000 },
-  { 0x0e00, 0x2173, 0x0000 },
-  { 0x0e00, 0x2175, 0x0000 },
-  { 0x8e00, 0x2178, 0x2000 },
-  { 0x0e00, 0x2177, 0x0000 },
-  { 0x0e00, 0x2179, 0x0000 },
-  { 0x8e00, 0x217e, 0x3000 },
-  { 0x8e00, 0x217c, 0x2000 },
-  { 0x0e00, 0x217b, 0x0000 },
-  { 0x0e00, 0x217d, 0x0000 },
-  { 0x8e00, 0x2180, 0x2000 },
-  { 0x0e00, 0x217f, 0x0000 },
-  { 0x0e00, 0x2181, 0x0000 },
-  { 0x9a00, 0x219e, 0x5000 },
-  { 0x9a00, 0x2196, 0x4000 },
-  { 0x9900, 0x2192, 0x3000 },
-  { 0x9900, 0x2190, 0x2000 },
-  { 0x0e00, 0x2183, 0x0000 },
-  { 0x1900, 0x2191, 0x0000 },
-  { 0x9900, 0x2194, 0x2000 },
-  { 0x1900, 0x2193, 0x0000 },
-  { 0x1a00, 0x2195, 0x0000 },
-  { 0x9900, 0x219a, 0x3000 },
-  { 0x9a00, 0x2198, 0x2000 },
-  { 0x1a00, 0x2197, 0x0000 },
-  { 0x1a00, 0x2199, 0x0000 },
-  { 0x9a00, 0x219c, 0x2000 },
-  { 0x1900, 0x219b, 0x0000 },
-  { 0x1a00, 0x219d, 0x0000 },
-  { 0x9900, 0x21a6, 0x4000 },
-  { 0x9a00, 0x21a2, 0x3000 },
-  { 0x9900, 0x21a0, 0x2000 },
-  { 0x1a00, 0x219f, 0x0000 },
-  { 0x1a00, 0x21a1, 0x0000 },
-  { 0x9a00, 0x21a4, 0x2000 },
-  { 0x1900, 0x21a3, 0x0000 },
-  { 0x1a00, 0x21a5, 0x0000 },
-  { 0x9a00, 0x21aa, 0x3000 },
-  { 0x9a00, 0x21a8, 0x2000 },
-  { 0x1a00, 0x21a7, 0x0000 },
-  { 0x1a00, 0x21a9, 0x0000 },
-  { 0x9a00, 0x21ac, 0x2000 },
-  { 0x1a00, 0x21ab, 0x0000 },
-  { 0x1a00, 0x21ad, 0x0000 },
-  { 0x9900, 0x222e, 0x8000 },
-  { 0x9a00, 0x21ee, 0x7000 },
-  { 0x9900, 0x21ce, 0x6000 },
-  { 0x9a00, 0x21be, 0x5000 },
-  { 0x9a00, 0x21b6, 0x4000 },
-  { 0x9a00, 0x21b2, 0x3000 },
-  { 0x9a00, 0x21b0, 0x2000 },
-  { 0x1a00, 0x21af, 0x0000 },
-  { 0x1a00, 0x21b1, 0x0000 },
-  { 0x9a00, 0x21b4, 0x2000 },
-  { 0x1a00, 0x21b3, 0x0000 },
-  { 0x1a00, 0x21b5, 0x0000 },
-  { 0x9a00, 0x21ba, 0x3000 },
-  { 0x9a00, 0x21b8, 0x2000 },
-  { 0x1a00, 0x21b7, 0x0000 },
-  { 0x1a00, 0x21b9, 0x0000 },
-  { 0x9a00, 0x21bc, 0x2000 },
-  { 0x1a00, 0x21bb, 0x0000 },
-  { 0x1a00, 0x21bd, 0x0000 },
-  { 0x9a00, 0x21c6, 0x4000 },
-  { 0x9a00, 0x21c2, 0x3000 },
-  { 0x9a00, 0x21c0, 0x2000 },
-  { 0x1a00, 0x21bf, 0x0000 },
-  { 0x1a00, 0x21c1, 0x0000 },
-  { 0x9a00, 0x21c4, 0x2000 },
-  { 0x1a00, 0x21c3, 0x0000 },
-  { 0x1a00, 0x21c5, 0x0000 },
-  { 0x9a00, 0x21ca, 0x3000 },
-  { 0x9a00, 0x21c8, 0x2000 },
-  { 0x1a00, 0x21c7, 0x0000 },
-  { 0x1a00, 0x21c9, 0x0000 },
-  { 0x9a00, 0x21cc, 0x2000 },
-  { 0x1a00, 0x21cb, 0x0000 },
-  { 0x1a00, 0x21cd, 0x0000 },
-  { 0x9a00, 0x21de, 0x5000 },
-  { 0x9a00, 0x21d6, 0x4000 },
-  { 0x9900, 0x21d2, 0x3000 },
-  { 0x9a00, 0x21d0, 0x2000 },
-  { 0x1900, 0x21cf, 0x0000 },
-  { 0x1a00, 0x21d1, 0x0000 },
-  { 0x9900, 0x21d4, 0x2000 },
-  { 0x1a00, 0x21d3, 0x0000 },
-  { 0x1a00, 0x21d5, 0x0000 },
-  { 0x9a00, 0x21da, 0x3000 },
-  { 0x9a00, 0x21d8, 0x2000 },
-  { 0x1a00, 0x21d7, 0x0000 },
-  { 0x1a00, 0x21d9, 0x0000 },
-  { 0x9a00, 0x21dc, 0x2000 },
-  { 0x1a00, 0x21db, 0x0000 },
-  { 0x1a00, 0x21dd, 0x0000 },
-  { 0x9a00, 0x21e6, 0x4000 },
-  { 0x9a00, 0x21e2, 0x3000 },
-  { 0x9a00, 0x21e0, 0x2000 },
-  { 0x1a00, 0x21df, 0x0000 },
-  { 0x1a00, 0x21e1, 0x0000 },
-  { 0x9a00, 0x21e4, 0x2000 },
-  { 0x1a00, 0x21e3, 0x0000 },
-  { 0x1a00, 0x21e5, 0x0000 },
-  { 0x9a00, 0x21ea, 0x3000 },
-  { 0x9a00, 0x21e8, 0x2000 },
-  { 0x1a00, 0x21e7, 0x0000 },
-  { 0x1a00, 0x21e9, 0x0000 },
-  { 0x9a00, 0x21ec, 0x2000 },
-  { 0x1a00, 0x21eb, 0x0000 },
-  { 0x1a00, 0x21ed, 0x0000 },
-  { 0x9900, 0x220e, 0x6000 },
-  { 0x9900, 0x21fe, 0x5000 },
-  { 0x9900, 0x21f6, 0x4000 },
-  { 0x9a00, 0x21f2, 0x3000 },
-  { 0x9a00, 0x21f0, 0x2000 },
-  { 0x1a00, 0x21ef, 0x0000 },
-  { 0x1a00, 0x21f1, 0x0000 },
-  { 0x9900, 0x21f4, 0x2000 },
-  { 0x1a00, 0x21f3, 0x0000 },
-  { 0x1900, 0x21f5, 0x0000 },
-  { 0x9900, 0x21fa, 0x3000 },
-  { 0x9900, 0x21f8, 0x2000 },
-  { 0x1900, 0x21f7, 0x0000 },
-  { 0x1900, 0x21f9, 0x0000 },
-  { 0x9900, 0x21fc, 0x2000 },
-  { 0x1900, 0x21fb, 0x0000 },
-  { 0x1900, 0x21fd, 0x0000 },
-  { 0x9900, 0x2206, 0x4000 },
-  { 0x9900, 0x2202, 0x3000 },
-  { 0x9900, 0x2200, 0x2000 },
-  { 0x1900, 0x21ff, 0x0000 },
-  { 0x1900, 0x2201, 0x0000 },
-  { 0x9900, 0x2204, 0x2000 },
-  { 0x1900, 0x2203, 0x0000 },
-  { 0x1900, 0x2205, 0x0000 },
-  { 0x9900, 0x220a, 0x3000 },
-  { 0x9900, 0x2208, 0x2000 },
-  { 0x1900, 0x2207, 0x0000 },
-  { 0x1900, 0x2209, 0x0000 },
-  { 0x9900, 0x220c, 0x2000 },
-  { 0x1900, 0x220b, 0x0000 },
-  { 0x1900, 0x220d, 0x0000 },
-  { 0x9900, 0x221e, 0x5000 },
-  { 0x9900, 0x2216, 0x4000 },
-  { 0x9900, 0x2212, 0x3000 },
-  { 0x9900, 0x2210, 0x2000 },
-  { 0x1900, 0x220f, 0x0000 },
-  { 0x1900, 0x2211, 0x0000 },
-  { 0x9900, 0x2214, 0x2000 },
-  { 0x1900, 0x2213, 0x0000 },
-  { 0x1900, 0x2215, 0x0000 },
-  { 0x9900, 0x221a, 0x3000 },
-  { 0x9900, 0x2218, 0x2000 },
-  { 0x1900, 0x2217, 0x0000 },
-  { 0x1900, 0x2219, 0x0000 },
-  { 0x9900, 0x221c, 0x2000 },
-  { 0x1900, 0x221b, 0x0000 },
-  { 0x1900, 0x221d, 0x0000 },
-  { 0x9900, 0x2226, 0x4000 },
-  { 0x9900, 0x2222, 0x3000 },
-  { 0x9900, 0x2220, 0x2000 },
-  { 0x1900, 0x221f, 0x0000 },
-  { 0x1900, 0x2221, 0x0000 },
-  { 0x9900, 0x2224, 0x2000 },
-  { 0x1900, 0x2223, 0x0000 },
-  { 0x1900, 0x2225, 0x0000 },
-  { 0x9900, 0x222a, 0x3000 },
-  { 0x9900, 0x2228, 0x2000 },
-  { 0x1900, 0x2227, 0x0000 },
-  { 0x1900, 0x2229, 0x0000 },
-  { 0x9900, 0x222c, 0x2000 },
-  { 0x1900, 0x222b, 0x0000 },
-  { 0x1900, 0x222d, 0x0000 },
-  { 0x9900, 0x226e, 0x7000 },
-  { 0x9900, 0x224e, 0x6000 },
-  { 0x9900, 0x223e, 0x5000 },
-  { 0x9900, 0x2236, 0x4000 },
-  { 0x9900, 0x2232, 0x3000 },
-  { 0x9900, 0x2230, 0x2000 },
-  { 0x1900, 0x222f, 0x0000 },
-  { 0x1900, 0x2231, 0x0000 },
-  { 0x9900, 0x2234, 0x2000 },
-  { 0x1900, 0x2233, 0x0000 },
-  { 0x1900, 0x2235, 0x0000 },
-  { 0x9900, 0x223a, 0x3000 },
-  { 0x9900, 0x2238, 0x2000 },
-  { 0x1900, 0x2237, 0x0000 },
-  { 0x1900, 0x2239, 0x0000 },
-  { 0x9900, 0x223c, 0x2000 },
-  { 0x1900, 0x223b, 0x0000 },
-  { 0x1900, 0x223d, 0x0000 },
-  { 0x9900, 0x2246, 0x4000 },
-  { 0x9900, 0x2242, 0x3000 },
-  { 0x9900, 0x2240, 0x2000 },
-  { 0x1900, 0x223f, 0x0000 },
-  { 0x1900, 0x2241, 0x0000 },
-  { 0x9900, 0x2244, 0x2000 },
-  { 0x1900, 0x2243, 0x0000 },
-  { 0x1900, 0x2245, 0x0000 },
-  { 0x9900, 0x224a, 0x3000 },
-  { 0x9900, 0x2248, 0x2000 },
-  { 0x1900, 0x2247, 0x0000 },
-  { 0x1900, 0x2249, 0x0000 },
-  { 0x9900, 0x224c, 0x2000 },
-  { 0x1900, 0x224b, 0x0000 },
-  { 0x1900, 0x224d, 0x0000 },
-  { 0x9900, 0x225e, 0x5000 },
-  { 0x9900, 0x2256, 0x4000 },
-  { 0x9900, 0x2252, 0x3000 },
-  { 0x9900, 0x2250, 0x2000 },
-  { 0x1900, 0x224f, 0x0000 },
-  { 0x1900, 0x2251, 0x0000 },
-  { 0x9900, 0x2254, 0x2000 },
-  { 0x1900, 0x2253, 0x0000 },
-  { 0x1900, 0x2255, 0x0000 },
-  { 0x9900, 0x225a, 0x3000 },
-  { 0x9900, 0x2258, 0x2000 },
-  { 0x1900, 0x2257, 0x0000 },
-  { 0x1900, 0x2259, 0x0000 },
-  { 0x9900, 0x225c, 0x2000 },
-  { 0x1900, 0x225b, 0x0000 },
-  { 0x1900, 0x225d, 0x0000 },
-  { 0x9900, 0x2266, 0x4000 },
-  { 0x9900, 0x2262, 0x3000 },
-  { 0x9900, 0x2260, 0x2000 },
-  { 0x1900, 0x225f, 0x0000 },
-  { 0x1900, 0x2261, 0x0000 },
-  { 0x9900, 0x2264, 0x2000 },
-  { 0x1900, 0x2263, 0x0000 },
-  { 0x1900, 0x2265, 0x0000 },
-  { 0x9900, 0x226a, 0x3000 },
-  { 0x9900, 0x2268, 0x2000 },
-  { 0x1900, 0x2267, 0x0000 },
-  { 0x1900, 0x2269, 0x0000 },
-  { 0x9900, 0x226c, 0x2000 },
-  { 0x1900, 0x226b, 0x0000 },
-  { 0x1900, 0x226d, 0x0000 },
-  { 0x9900, 0x228e, 0x6000 },
-  { 0x9900, 0x227e, 0x5000 },
-  { 0x9900, 0x2276, 0x4000 },
-  { 0x9900, 0x2272, 0x3000 },
-  { 0x9900, 0x2270, 0x2000 },
-  { 0x1900, 0x226f, 0x0000 },
-  { 0x1900, 0x2271, 0x0000 },
-  { 0x9900, 0x2274, 0x2000 },
-  { 0x1900, 0x2273, 0x0000 },
-  { 0x1900, 0x2275, 0x0000 },
-  { 0x9900, 0x227a, 0x3000 },
-  { 0x9900, 0x2278, 0x2000 },
-  { 0x1900, 0x2277, 0x0000 },
-  { 0x1900, 0x2279, 0x0000 },
-  { 0x9900, 0x227c, 0x2000 },
-  { 0x1900, 0x227b, 0x0000 },
-  { 0x1900, 0x227d, 0x0000 },
-  { 0x9900, 0x2286, 0x4000 },
-  { 0x9900, 0x2282, 0x3000 },
-  { 0x9900, 0x2280, 0x2000 },
-  { 0x1900, 0x227f, 0x0000 },
-  { 0x1900, 0x2281, 0x0000 },
-  { 0x9900, 0x2284, 0x2000 },
-  { 0x1900, 0x2283, 0x0000 },
-  { 0x1900, 0x2285, 0x0000 },
-  { 0x9900, 0x228a, 0x3000 },
-  { 0x9900, 0x2288, 0x2000 },
-  { 0x1900, 0x2287, 0x0000 },
-  { 0x1900, 0x2289, 0x0000 },
-  { 0x9900, 0x228c, 0x2000 },
-  { 0x1900, 0x228b, 0x0000 },
-  { 0x1900, 0x228d, 0x0000 },
-  { 0x9900, 0x229e, 0x5000 },
-  { 0x9900, 0x2296, 0x4000 },
-  { 0x9900, 0x2292, 0x3000 },
-  { 0x9900, 0x2290, 0x2000 },
-  { 0x1900, 0x228f, 0x0000 },
-  { 0x1900, 0x2291, 0x0000 },
-  { 0x9900, 0x2294, 0x2000 },
-  { 0x1900, 0x2293, 0x0000 },
-  { 0x1900, 0x2295, 0x0000 },
-  { 0x9900, 0x229a, 0x3000 },
-  { 0x9900, 0x2298, 0x2000 },
-  { 0x1900, 0x2297, 0x0000 },
-  { 0x1900, 0x2299, 0x0000 },
-  { 0x9900, 0x229c, 0x2000 },
-  { 0x1900, 0x229b, 0x0000 },
-  { 0x1900, 0x229d, 0x0000 },
-  { 0x9900, 0x22a6, 0x4000 },
-  { 0x9900, 0x22a2, 0x3000 },
-  { 0x9900, 0x22a0, 0x2000 },
-  { 0x1900, 0x229f, 0x0000 },
-  { 0x1900, 0x22a1, 0x0000 },
-  { 0x9900, 0x22a4, 0x2000 },
-  { 0x1900, 0x22a3, 0x0000 },
-  { 0x1900, 0x22a5, 0x0000 },
-  { 0x9900, 0x22aa, 0x3000 },
-  { 0x9900, 0x22a8, 0x2000 },
-  { 0x1900, 0x22a7, 0x0000 },
-  { 0x1900, 0x22a9, 0x0000 },
-  { 0x9900, 0x22ac, 0x2000 },
-  { 0x1900, 0x22ab, 0x0000 },
-  { 0x1900, 0x22ad, 0x0000 },
-  { 0x8f00, 0x2787, 0xb000 },
-  { 0x9a00, 0x250b, 0xa000 },
-  { 0x9900, 0x23ae, 0x9000 },
-  { 0x9a00, 0x232e, 0x8000 },
-  { 0x9900, 0x22ee, 0x7000 },
-  { 0x9900, 0x22ce, 0x6000 },
-  { 0x9900, 0x22be, 0x5000 },
-  { 0x9900, 0x22b6, 0x4000 },
-  { 0x9900, 0x22b2, 0x3000 },
-  { 0x9900, 0x22b0, 0x2000 },
-  { 0x1900, 0x22af, 0x0000 },
-  { 0x1900, 0x22b1, 0x0000 },
-  { 0x9900, 0x22b4, 0x2000 },
-  { 0x1900, 0x22b3, 0x0000 },
-  { 0x1900, 0x22b5, 0x0000 },
-  { 0x9900, 0x22ba, 0x3000 },
-  { 0x9900, 0x22b8, 0x2000 },
-  { 0x1900, 0x22b7, 0x0000 },
-  { 0x1900, 0x22b9, 0x0000 },
-  { 0x9900, 0x22bc, 0x2000 },
-  { 0x1900, 0x22bb, 0x0000 },
-  { 0x1900, 0x22bd, 0x0000 },
-  { 0x9900, 0x22c6, 0x4000 },
-  { 0x9900, 0x22c2, 0x3000 },
-  { 0x9900, 0x22c0, 0x2000 },
-  { 0x1900, 0x22bf, 0x0000 },
-  { 0x1900, 0x22c1, 0x0000 },
-  { 0x9900, 0x22c4, 0x2000 },
-  { 0x1900, 0x22c3, 0x0000 },
-  { 0x1900, 0x22c5, 0x0000 },
-  { 0x9900, 0x22ca, 0x3000 },
-  { 0x9900, 0x22c8, 0x2000 },
-  { 0x1900, 0x22c7, 0x0000 },
-  { 0x1900, 0x22c9, 0x0000 },
-  { 0x9900, 0x22cc, 0x2000 },
-  { 0x1900, 0x22cb, 0x0000 },
-  { 0x1900, 0x22cd, 0x0000 },
-  { 0x9900, 0x22de, 0x5000 },
-  { 0x9900, 0x22d6, 0x4000 },
-  { 0x9900, 0x22d2, 0x3000 },
-  { 0x9900, 0x22d0, 0x2000 },
-  { 0x1900, 0x22cf, 0x0000 },
-  { 0x1900, 0x22d1, 0x0000 },
-  { 0x9900, 0x22d4, 0x2000 },
-  { 0x1900, 0x22d3, 0x0000 },
-  { 0x1900, 0x22d5, 0x0000 },
-  { 0x9900, 0x22da, 0x3000 },
-  { 0x9900, 0x22d8, 0x2000 },
-  { 0x1900, 0x22d7, 0x0000 },
-  { 0x1900, 0x22d9, 0x0000 },
-  { 0x9900, 0x22dc, 0x2000 },
-  { 0x1900, 0x22db, 0x0000 },
-  { 0x1900, 0x22dd, 0x0000 },
-  { 0x9900, 0x22e6, 0x4000 },
-  { 0x9900, 0x22e2, 0x3000 },
-  { 0x9900, 0x22e0, 0x2000 },
-  { 0x1900, 0x22df, 0x0000 },
-  { 0x1900, 0x22e1, 0x0000 },
-  { 0x9900, 0x22e4, 0x2000 },
-  { 0x1900, 0x22e3, 0x0000 },
-  { 0x1900, 0x22e5, 0x0000 },
-  { 0x9900, 0x22ea, 0x3000 },
-  { 0x9900, 0x22e8, 0x2000 },
-  { 0x1900, 0x22e7, 0x0000 },
-  { 0x1900, 0x22e9, 0x0000 },
-  { 0x9900, 0x22ec, 0x2000 },
-  { 0x1900, 0x22eb, 0x0000 },
-  { 0x1900, 0x22ed, 0x0000 },
-  { 0x9a00, 0x230e, 0x6000 },
-  { 0x9900, 0x22fe, 0x5000 },
-  { 0x9900, 0x22f6, 0x4000 },
-  { 0x9900, 0x22f2, 0x3000 },
-  { 0x9900, 0x22f0, 0x2000 },
-  { 0x1900, 0x22ef, 0x0000 },
-  { 0x1900, 0x22f1, 0x0000 },
-  { 0x9900, 0x22f4, 0x2000 },
-  { 0x1900, 0x22f3, 0x0000 },
-  { 0x1900, 0x22f5, 0x0000 },
-  { 0x9900, 0x22fa, 0x3000 },
-  { 0x9900, 0x22f8, 0x2000 },
-  { 0x1900, 0x22f7, 0x0000 },
-  { 0x1900, 0x22f9, 0x0000 },
-  { 0x9900, 0x22fc, 0x2000 },
-  { 0x1900, 0x22fb, 0x0000 },
-  { 0x1900, 0x22fd, 0x0000 },
-  { 0x9a00, 0x2306, 0x4000 },
-  { 0x9a00, 0x2302, 0x3000 },
-  { 0x9a00, 0x2300, 0x2000 },
-  { 0x1900, 0x22ff, 0x0000 },
-  { 0x1a00, 0x2301, 0x0000 },
-  { 0x9a00, 0x2304, 0x2000 },
-  { 0x1a00, 0x2303, 0x0000 },
-  { 0x1a00, 0x2305, 0x0000 },
-  { 0x9900, 0x230a, 0x3000 },
-  { 0x9900, 0x2308, 0x2000 },
-  { 0x1a00, 0x2307, 0x0000 },
-  { 0x1900, 0x2309, 0x0000 },
-  { 0x9a00, 0x230c, 0x2000 },
-  { 0x1900, 0x230b, 0x0000 },
-  { 0x1a00, 0x230d, 0x0000 },
-  { 0x9a00, 0x231e, 0x5000 },
-  { 0x9a00, 0x2316, 0x4000 },
-  { 0x9a00, 0x2312, 0x3000 },
-  { 0x9a00, 0x2310, 0x2000 },
-  { 0x1a00, 0x230f, 0x0000 },
-  { 0x1a00, 0x2311, 0x0000 },
-  { 0x9a00, 0x2314, 0x2000 },
-  { 0x1a00, 0x2313, 0x0000 },
-  { 0x1a00, 0x2315, 0x0000 },
-  { 0x9a00, 0x231a, 0x3000 },
-  { 0x9a00, 0x2318, 0x2000 },
-  { 0x1a00, 0x2317, 0x0000 },
-  { 0x1a00, 0x2319, 0x0000 },
-  { 0x9a00, 0x231c, 0x2000 },
-  { 0x1a00, 0x231b, 0x0000 },
-  { 0x1a00, 0x231d, 0x0000 },
-  { 0x9a00, 0x2326, 0x4000 },
-  { 0x9a00, 0x2322, 0x3000 },
-  { 0x9900, 0x2320, 0x2000 },
-  { 0x1a00, 0x231f, 0x0000 },
-  { 0x1900, 0x2321, 0x0000 },
-  { 0x9a00, 0x2324, 0x2000 },
-  { 0x1a00, 0x2323, 0x0000 },
-  { 0x1a00, 0x2325, 0x0000 },
-  { 0x9200, 0x232a, 0x3000 },
-  { 0x9a00, 0x2328, 0x2000 },
-  { 0x1a00, 0x2327, 0x0000 },
-  { 0x1600, 0x2329, 0x0000 },
-  { 0x9a00, 0x232c, 0x2000 },
-  { 0x1a00, 0x232b, 0x0000 },
-  { 0x1a00, 0x232d, 0x0000 },
-  { 0x9a00, 0x236e, 0x7000 },
-  { 0x9a00, 0x234e, 0x6000 },
-  { 0x9a00, 0x233e, 0x5000 },
-  { 0x9a00, 0x2336, 0x4000 },
-  { 0x9a00, 0x2332, 0x3000 },
-  { 0x9a00, 0x2330, 0x2000 },
-  { 0x1a00, 0x232f, 0x0000 },
-  { 0x1a00, 0x2331, 0x0000 },
-  { 0x9a00, 0x2334, 0x2000 },
-  { 0x1a00, 0x2333, 0x0000 },
-  { 0x1a00, 0x2335, 0x0000 },
-  { 0x9a00, 0x233a, 0x3000 },
-  { 0x9a00, 0x2338, 0x2000 },
-  { 0x1a00, 0x2337, 0x0000 },
-  { 0x1a00, 0x2339, 0x0000 },
-  { 0x9a00, 0x233c, 0x2000 },
-  { 0x1a00, 0x233b, 0x0000 },
-  { 0x1a00, 0x233d, 0x0000 },
-  { 0x9a00, 0x2346, 0x4000 },
-  { 0x9a00, 0x2342, 0x3000 },
-  { 0x9a00, 0x2340, 0x2000 },
-  { 0x1a00, 0x233f, 0x0000 },
-  { 0x1a00, 0x2341, 0x0000 },
-  { 0x9a00, 0x2344, 0x2000 },
-  { 0x1a00, 0x2343, 0x0000 },
-  { 0x1a00, 0x2345, 0x0000 },
-  { 0x9a00, 0x234a, 0x3000 },
-  { 0x9a00, 0x2348, 0x2000 },
-  { 0x1a00, 0x2347, 0x0000 },
-  { 0x1a00, 0x2349, 0x0000 },
-  { 0x9a00, 0x234c, 0x2000 },
-  { 0x1a00, 0x234b, 0x0000 },
-  { 0x1a00, 0x234d, 0x0000 },
-  { 0x9a00, 0x235e, 0x5000 },
-  { 0x9a00, 0x2356, 0x4000 },
-  { 0x9a00, 0x2352, 0x3000 },
-  { 0x9a00, 0x2350, 0x2000 },
-  { 0x1a00, 0x234f, 0x0000 },
-  { 0x1a00, 0x2351, 0x0000 },
-  { 0x9a00, 0x2354, 0x2000 },
-  { 0x1a00, 0x2353, 0x0000 },
-  { 0x1a00, 0x2355, 0x0000 },
-  { 0x9a00, 0x235a, 0x3000 },
-  { 0x9a00, 0x2358, 0x2000 },
-  { 0x1a00, 0x2357, 0x0000 },
-  { 0x1a00, 0x2359, 0x0000 },
-  { 0x9a00, 0x235c, 0x2000 },
-  { 0x1a00, 0x235b, 0x0000 },
-  { 0x1a00, 0x235d, 0x0000 },
-  { 0x9a00, 0x2366, 0x4000 },
-  { 0x9a00, 0x2362, 0x3000 },
-  { 0x9a00, 0x2360, 0x2000 },
-  { 0x1a00, 0x235f, 0x0000 },
-  { 0x1a00, 0x2361, 0x0000 },
-  { 0x9a00, 0x2364, 0x2000 },
-  { 0x1a00, 0x2363, 0x0000 },
-  { 0x1a00, 0x2365, 0x0000 },
-  { 0x9a00, 0x236a, 0x3000 },
-  { 0x9a00, 0x2368, 0x2000 },
-  { 0x1a00, 0x2367, 0x0000 },
-  { 0x1a00, 0x2369, 0x0000 },
-  { 0x9a00, 0x236c, 0x2000 },
-  { 0x1a00, 0x236b, 0x0000 },
-  { 0x1a00, 0x236d, 0x0000 },
-  { 0x9a00, 0x238e, 0x6000 },
-  { 0x9a00, 0x237e, 0x5000 },
-  { 0x9a00, 0x2376, 0x4000 },
-  { 0x9a00, 0x2372, 0x3000 },
-  { 0x9a00, 0x2370, 0x2000 },
-  { 0x1a00, 0x236f, 0x0000 },
-  { 0x1a00, 0x2371, 0x0000 },
-  { 0x9a00, 0x2374, 0x2000 },
-  { 0x1a00, 0x2373, 0x0000 },
-  { 0x1a00, 0x2375, 0x0000 },
-  { 0x9a00, 0x237a, 0x3000 },
-  { 0x9a00, 0x2378, 0x2000 },
-  { 0x1a00, 0x2377, 0x0000 },
-  { 0x1a00, 0x2379, 0x0000 },
-  { 0x9900, 0x237c, 0x2000 },
-  { 0x1a00, 0x237b, 0x0000 },
-  { 0x1a00, 0x237d, 0x0000 },
-  { 0x9a00, 0x2386, 0x4000 },
-  { 0x9a00, 0x2382, 0x3000 },
-  { 0x9a00, 0x2380, 0x2000 },
-  { 0x1a00, 0x237f, 0x0000 },
-  { 0x1a00, 0x2381, 0x0000 },
-  { 0x9a00, 0x2384, 0x2000 },
-  { 0x1a00, 0x2383, 0x0000 },
-  { 0x1a00, 0x2385, 0x0000 },
-  { 0x9a00, 0x238a, 0x3000 },
-  { 0x9a00, 0x2388, 0x2000 },
-  { 0x1a00, 0x2387, 0x0000 },
-  { 0x1a00, 0x2389, 0x0000 },
-  { 0x9a00, 0x238c, 0x2000 },
-  { 0x1a00, 0x238b, 0x0000 },
-  { 0x1a00, 0x238d, 0x0000 },
-  { 0x9900, 0x239e, 0x5000 },
-  { 0x9a00, 0x2396, 0x4000 },
-  { 0x9a00, 0x2392, 0x3000 },
-  { 0x9a00, 0x2390, 0x2000 },
-  { 0x1a00, 0x238f, 0x0000 },
-  { 0x1a00, 0x2391, 0x0000 },
-  { 0x9a00, 0x2394, 0x2000 },
-  { 0x1a00, 0x2393, 0x0000 },
-  { 0x1a00, 0x2395, 0x0000 },
-  { 0x9a00, 0x239a, 0x3000 },
-  { 0x9a00, 0x2398, 0x2000 },
-  { 0x1a00, 0x2397, 0x0000 },
-  { 0x1a00, 0x2399, 0x0000 },
-  { 0x9900, 0x239c, 0x2000 },
-  { 0x1900, 0x239b, 0x0000 },
-  { 0x1900, 0x239d, 0x0000 },
-  { 0x9900, 0x23a6, 0x4000 },
-  { 0x9900, 0x23a2, 0x3000 },
-  { 0x9900, 0x23a0, 0x2000 },
-  { 0x1900, 0x239f, 0x0000 },
-  { 0x1900, 0x23a1, 0x0000 },
-  { 0x9900, 0x23a4, 0x2000 },
-  { 0x1900, 0x23a3, 0x0000 },
-  { 0x1900, 0x23a5, 0x0000 },
-  { 0x9900, 0x23aa, 0x3000 },
-  { 0x9900, 0x23a8, 0x2000 },
-  { 0x1900, 0x23a7, 0x0000 },
-  { 0x1900, 0x23a9, 0x0000 },
-  { 0x9900, 0x23ac, 0x2000 },
-  { 0x1900, 0x23ab, 0x0000 },
-  { 0x1900, 0x23ad, 0x0000 },
-  { 0x8f00, 0x248b, 0x8000 },
-  { 0x9a00, 0x241d, 0x7000 },
-  { 0x9a00, 0x23ce, 0x6000 },
-  { 0x9a00, 0x23be, 0x5000 },
-  { 0x9500, 0x23b6, 0x4000 },
-  { 0x9900, 0x23b2, 0x3000 },
-  { 0x9900, 0x23b0, 0x2000 },
-  { 0x1900, 0x23af, 0x0000 },
-  { 0x1900, 0x23b1, 0x0000 },
-  { 0x9600, 0x23b4, 0x2000 },
-  { 0x1900, 0x23b3, 0x0000 },
-  { 0x1200, 0x23b5, 0x0000 },
-  { 0x9a00, 0x23ba, 0x3000 },
-  { 0x9a00, 0x23b8, 0x2000 },
-  { 0x1a00, 0x23b7, 0x0000 },
-  { 0x1a00, 0x23b9, 0x0000 },
-  { 0x9a00, 0x23bc, 0x2000 },
-  { 0x1a00, 0x23bb, 0x0000 },
-  { 0x1a00, 0x23bd, 0x0000 },
-  { 0x9a00, 0x23c6, 0x4000 },
-  { 0x9a00, 0x23c2, 0x3000 },
-  { 0x9a00, 0x23c0, 0x2000 },
-  { 0x1a00, 0x23bf, 0x0000 },
-  { 0x1a00, 0x23c1, 0x0000 },
-  { 0x9a00, 0x23c4, 0x2000 },
-  { 0x1a00, 0x23c3, 0x0000 },
-  { 0x1a00, 0x23c5, 0x0000 },
-  { 0x9a00, 0x23ca, 0x3000 },
-  { 0x9a00, 0x23c8, 0x2000 },
-  { 0x1a00, 0x23c7, 0x0000 },
-  { 0x1a00, 0x23c9, 0x0000 },
-  { 0x9a00, 0x23cc, 0x2000 },
-  { 0x1a00, 0x23cb, 0x0000 },
-  { 0x1a00, 0x23cd, 0x0000 },
-  { 0x9a00, 0x240d, 0x5000 },
-  { 0x9a00, 0x2405, 0x4000 },
-  { 0x9a00, 0x2401, 0x3000 },
-  { 0x9a00, 0x23d0, 0x2000 },
-  { 0x1a00, 0x23cf, 0x0000 },
-  { 0x1a00, 0x2400, 0x0000 },
-  { 0x9a00, 0x2403, 0x2000 },
-  { 0x1a00, 0x2402, 0x0000 },
-  { 0x1a00, 0x2404, 0x0000 },
-  { 0x9a00, 0x2409, 0x3000 },
-  { 0x9a00, 0x2407, 0x2000 },
-  { 0x1a00, 0x2406, 0x0000 },
-  { 0x1a00, 0x2408, 0x0000 },
-  { 0x9a00, 0x240b, 0x2000 },
-  { 0x1a00, 0x240a, 0x0000 },
-  { 0x1a00, 0x240c, 0x0000 },
-  { 0x9a00, 0x2415, 0x4000 },
-  { 0x9a00, 0x2411, 0x3000 },
-  { 0x9a00, 0x240f, 0x2000 },
-  { 0x1a00, 0x240e, 0x0000 },
-  { 0x1a00, 0x2410, 0x0000 },
-  { 0x9a00, 0x2413, 0x2000 },
-  { 0x1a00, 0x2412, 0x0000 },
-  { 0x1a00, 0x2414, 0x0000 },
-  { 0x9a00, 0x2419, 0x3000 },
-  { 0x9a00, 0x2417, 0x2000 },
-  { 0x1a00, 0x2416, 0x0000 },
-  { 0x1a00, 0x2418, 0x0000 },
-  { 0x9a00, 0x241b, 0x2000 },
-  { 0x1a00, 0x241a, 0x0000 },
-  { 0x1a00, 0x241c, 0x0000 },
-  { 0x8f00, 0x246b, 0x6000 },
-  { 0x9a00, 0x2446, 0x5000 },
-  { 0x9a00, 0x2425, 0x4000 },
-  { 0x9a00, 0x2421, 0x3000 },
-  { 0x9a00, 0x241f, 0x2000 },
-  { 0x1a00, 0x241e, 0x0000 },
-  { 0x1a00, 0x2420, 0x0000 },
-  { 0x9a00, 0x2423, 0x2000 },
-  { 0x1a00, 0x2422, 0x0000 },
-  { 0x1a00, 0x2424, 0x0000 },
-  { 0x9a00, 0x2442, 0x3000 },
-  { 0x9a00, 0x2440, 0x2000 },
-  { 0x1a00, 0x2426, 0x0000 },
-  { 0x1a00, 0x2441, 0x0000 },
-  { 0x9a00, 0x2444, 0x2000 },
-  { 0x1a00, 0x2443, 0x0000 },
-  { 0x1a00, 0x2445, 0x0000 },
-  { 0x8f00, 0x2463, 0x4000 },
-  { 0x9a00, 0x244a, 0x3000 },
-  { 0x9a00, 0x2448, 0x2000 },
-  { 0x1a00, 0x2447, 0x0000 },
-  { 0x1a00, 0x2449, 0x0000 },
-  { 0x8f00, 0x2461, 0x2000 },
-  { 0x0f00, 0x2460, 0x0000 },
-  { 0x0f00, 0x2462, 0x0000 },
-  { 0x8f00, 0x2467, 0x3000 },
-  { 0x8f00, 0x2465, 0x2000 },
-  { 0x0f00, 0x2464, 0x0000 },
-  { 0x0f00, 0x2466, 0x0000 },
-  { 0x8f00, 0x2469, 0x2000 },
-  { 0x0f00, 0x2468, 0x0000 },
-  { 0x0f00, 0x246a, 0x0000 },
-  { 0x8f00, 0x247b, 0x5000 },
-  { 0x8f00, 0x2473, 0x4000 },
-  { 0x8f00, 0x246f, 0x3000 },
-  { 0x8f00, 0x246d, 0x2000 },
-  { 0x0f00, 0x246c, 0x0000 },
-  { 0x0f00, 0x246e, 0x0000 },
-  { 0x8f00, 0x2471, 0x2000 },
-  { 0x0f00, 0x2470, 0x0000 },
-  { 0x0f00, 0x2472, 0x0000 },
-  { 0x8f00, 0x2477, 0x3000 },
-  { 0x8f00, 0x2475, 0x2000 },
-  { 0x0f00, 0x2474, 0x0000 },
-  { 0x0f00, 0x2476, 0x0000 },
-  { 0x8f00, 0x2479, 0x2000 },
-  { 0x0f00, 0x2478, 0x0000 },
-  { 0x0f00, 0x247a, 0x0000 },
-  { 0x8f00, 0x2483, 0x4000 },
-  { 0x8f00, 0x247f, 0x3000 },
-  { 0x8f00, 0x247d, 0x2000 },
-  { 0x0f00, 0x247c, 0x0000 },
-  { 0x0f00, 0x247e, 0x0000 },
-  { 0x8f00, 0x2481, 0x2000 },
-  { 0x0f00, 0x2480, 0x0000 },
-  { 0x0f00, 0x2482, 0x0000 },
-  { 0x8f00, 0x2487, 0x3000 },
-  { 0x8f00, 0x2485, 0x2000 },
-  { 0x0f00, 0x2484, 0x0000 },
-  { 0x0f00, 0x2486, 0x0000 },
-  { 0x8f00, 0x2489, 0x2000 },
-  { 0x0f00, 0x2488, 0x0000 },
-  { 0x0f00, 0x248a, 0x0000 },
-  { 0x9a00, 0x24cb, 0x7000 },
-  { 0x9a00, 0x24ab, 0x6000 },
-  { 0x8f00, 0x249b, 0x5000 },
-  { 0x8f00, 0x2493, 0x4000 },
-  { 0x8f00, 0x248f, 0x3000 },
-  { 0x8f00, 0x248d, 0x2000 },
-  { 0x0f00, 0x248c, 0x0000 },
-  { 0x0f00, 0x248e, 0x0000 },
-  { 0x8f00, 0x2491, 0x2000 },
-  { 0x0f00, 0x2490, 0x0000 },
-  { 0x0f00, 0x2492, 0x0000 },
-  { 0x8f00, 0x2497, 0x3000 },
-  { 0x8f00, 0x2495, 0x2000 },
-  { 0x0f00, 0x2494, 0x0000 },
-  { 0x0f00, 0x2496, 0x0000 },
-  { 0x8f00, 0x2499, 0x2000 },
-  { 0x0f00, 0x2498, 0x0000 },
-  { 0x0f00, 0x249a, 0x0000 },
-  { 0x9a00, 0x24a3, 0x4000 },
-  { 0x9a00, 0x249f, 0x3000 },
-  { 0x9a00, 0x249d, 0x2000 },
-  { 0x1a00, 0x249c, 0x0000 },
-  { 0x1a00, 0x249e, 0x0000 },
-  { 0x9a00, 0x24a1, 0x2000 },
-  { 0x1a00, 0x24a0, 0x0000 },
-  { 0x1a00, 0x24a2, 0x0000 },
-  { 0x9a00, 0x24a7, 0x3000 },
-  { 0x9a00, 0x24a5, 0x2000 },
-  { 0x1a00, 0x24a4, 0x0000 },
-  { 0x1a00, 0x24a6, 0x0000 },
-  { 0x9a00, 0x24a9, 0x2000 },
-  { 0x1a00, 0x24a8, 0x0000 },
-  { 0x1a00, 0x24aa, 0x0000 },
-  { 0x9a00, 0x24bb, 0x5000 },
-  { 0x9a00, 0x24b3, 0x4000 },
-  { 0x9a00, 0x24af, 0x3000 },
-  { 0x9a00, 0x24ad, 0x2000 },
-  { 0x1a00, 0x24ac, 0x0000 },
-  { 0x1a00, 0x24ae, 0x0000 },
-  { 0x9a00, 0x24b1, 0x2000 },
-  { 0x1a00, 0x24b0, 0x0000 },
-  { 0x1a00, 0x24b2, 0x0000 },
-  { 0x9a00, 0x24b7, 0x3000 },
-  { 0x9a00, 0x24b5, 0x2000 },
-  { 0x1a00, 0x24b4, 0x0000 },
-  { 0x1a00, 0x24b6, 0x0000 },
-  { 0x9a00, 0x24b9, 0x2000 },
-  { 0x1a00, 0x24b8, 0x0000 },
-  { 0x1a00, 0x24ba, 0x0000 },
-  { 0x9a00, 0x24c3, 0x4000 },
-  { 0x9a00, 0x24bf, 0x3000 },
-  { 0x9a00, 0x24bd, 0x2000 },
-  { 0x1a00, 0x24bc, 0x0000 },
-  { 0x1a00, 0x24be, 0x0000 },
-  { 0x9a00, 0x24c1, 0x2000 },
-  { 0x1a00, 0x24c0, 0x0000 },
-  { 0x1a00, 0x24c2, 0x0000 },
-  { 0x9a00, 0x24c7, 0x3000 },
-  { 0x9a00, 0x24c5, 0x2000 },
-  { 0x1a00, 0x24c4, 0x0000 },
-  { 0x1a00, 0x24c6, 0x0000 },
-  { 0x9a00, 0x24c9, 0x2000 },
-  { 0x1a00, 0x24c8, 0x0000 },
-  { 0x1a00, 0x24ca, 0x0000 },
-  { 0x8f00, 0x24eb, 0x6000 },
-  { 0x9a00, 0x24db, 0x5000 },
-  { 0x9a00, 0x24d3, 0x4000 },
-  { 0x9a00, 0x24cf, 0x3000 },
-  { 0x9a00, 0x24cd, 0x2000 },
-  { 0x1a00, 0x24cc, 0x0000 },
-  { 0x1a00, 0x24ce, 0x0000 },
-  { 0x9a00, 0x24d1, 0x2000 },
-  { 0x1a00, 0x24d0, 0x0000 },
-  { 0x1a00, 0x24d2, 0x0000 },
-  { 0x9a00, 0x24d7, 0x3000 },
-  { 0x9a00, 0x24d5, 0x2000 },
-  { 0x1a00, 0x24d4, 0x0000 },
-  { 0x1a00, 0x24d6, 0x0000 },
-  { 0x9a00, 0x24d9, 0x2000 },
-  { 0x1a00, 0x24d8, 0x0000 },
-  { 0x1a00, 0x24da, 0x0000 },
-  { 0x9a00, 0x24e3, 0x4000 },
-  { 0x9a00, 0x24df, 0x3000 },
-  { 0x9a00, 0x24dd, 0x2000 },
-  { 0x1a00, 0x24dc, 0x0000 },
-  { 0x1a00, 0x24de, 0x0000 },
-  { 0x9a00, 0x24e1, 0x2000 },
-  { 0x1a00, 0x24e0, 0x0000 },
-  { 0x1a00, 0x24e2, 0x0000 },
-  { 0x9a00, 0x24e7, 0x3000 },
-  { 0x9a00, 0x24e5, 0x2000 },
-  { 0x1a00, 0x24e4, 0x0000 },
-  { 0x1a00, 0x24e6, 0x0000 },
-  { 0x9a00, 0x24e9, 0x2000 },
-  { 0x1a00, 0x24e8, 0x0000 },
-  { 0x0f00, 0x24ea, 0x0000 },
-  { 0x8f00, 0x24fb, 0x5000 },
-  { 0x8f00, 0x24f3, 0x4000 },
-  { 0x8f00, 0x24ef, 0x3000 },
-  { 0x8f00, 0x24ed, 0x2000 },
-  { 0x0f00, 0x24ec, 0x0000 },
-  { 0x0f00, 0x24ee, 0x0000 },
-  { 0x8f00, 0x24f1, 0x2000 },
-  { 0x0f00, 0x24f0, 0x0000 },
-  { 0x0f00, 0x24f2, 0x0000 },
-  { 0x8f00, 0x24f7, 0x3000 },
-  { 0x8f00, 0x24f5, 0x2000 },
-  { 0x0f00, 0x24f4, 0x0000 },
-  { 0x0f00, 0x24f6, 0x0000 },
-  { 0x8f00, 0x24f9, 0x2000 },
-  { 0x0f00, 0x24f8, 0x0000 },
-  { 0x0f00, 0x24fa, 0x0000 },
-  { 0x9a00, 0x2503, 0x4000 },
-  { 0x8f00, 0x24ff, 0x3000 },
-  { 0x8f00, 0x24fd, 0x2000 },
-  { 0x0f00, 0x24fc, 0x0000 },
-  { 0x0f00, 0x24fe, 0x0000 },
-  { 0x9a00, 0x2501, 0x2000 },
-  { 0x1a00, 0x2500, 0x0000 },
-  { 0x1a00, 0x2502, 0x0000 },
-  { 0x9a00, 0x2507, 0x3000 },
-  { 0x9a00, 0x2505, 0x2000 },
-  { 0x1a00, 0x2504, 0x0000 },
-  { 0x1a00, 0x2506, 0x0000 },
-  { 0x9a00, 0x2509, 0x2000 },
-  { 0x1a00, 0x2508, 0x0000 },
-  { 0x1a00, 0x250a, 0x0000 },
-  { 0x9a00, 0x260b, 0x9000 },
-  { 0x9a00, 0x258b, 0x8000 },
-  { 0x9a00, 0x254b, 0x7000 },
-  { 0x9a00, 0x252b, 0x6000 },
-  { 0x9a00, 0x251b, 0x5000 },
-  { 0x9a00, 0x2513, 0x4000 },
-  { 0x9a00, 0x250f, 0x3000 },
-  { 0x9a00, 0x250d, 0x2000 },
-  { 0x1a00, 0x250c, 0x0000 },
-  { 0x1a00, 0x250e, 0x0000 },
-  { 0x9a00, 0x2511, 0x2000 },
-  { 0x1a00, 0x2510, 0x0000 },
-  { 0x1a00, 0x2512, 0x0000 },
-  { 0x9a00, 0x2517, 0x3000 },
-  { 0x9a00, 0x2515, 0x2000 },
-  { 0x1a00, 0x2514, 0x0000 },
-  { 0x1a00, 0x2516, 0x0000 },
-  { 0x9a00, 0x2519, 0x2000 },
-  { 0x1a00, 0x2518, 0x0000 },
-  { 0x1a00, 0x251a, 0x0000 },
-  { 0x9a00, 0x2523, 0x4000 },
-  { 0x9a00, 0x251f, 0x3000 },
-  { 0x9a00, 0x251d, 0x2000 },
-  { 0x1a00, 0x251c, 0x0000 },
-  { 0x1a00, 0x251e, 0x0000 },
-  { 0x9a00, 0x2521, 0x2000 },
-  { 0x1a00, 0x2520, 0x0000 },
-  { 0x1a00, 0x2522, 0x0000 },
-  { 0x9a00, 0x2527, 0x3000 },
-  { 0x9a00, 0x2525, 0x2000 },
-  { 0x1a00, 0x2524, 0x0000 },
-  { 0x1a00, 0x2526, 0x0000 },
-  { 0x9a00, 0x2529, 0x2000 },
-  { 0x1a00, 0x2528, 0x0000 },
-  { 0x1a00, 0x252a, 0x0000 },
-  { 0x9a00, 0x253b, 0x5000 },
-  { 0x9a00, 0x2533, 0x4000 },
-  { 0x9a00, 0x252f, 0x3000 },
-  { 0x9a00, 0x252d, 0x2000 },
-  { 0x1a00, 0x252c, 0x0000 },
-  { 0x1a00, 0x252e, 0x0000 },
-  { 0x9a00, 0x2531, 0x2000 },
-  { 0x1a00, 0x2530, 0x0000 },
-  { 0x1a00, 0x2532, 0x0000 },
-  { 0x9a00, 0x2537, 0x3000 },
-  { 0x9a00, 0x2535, 0x2000 },
-  { 0x1a00, 0x2534, 0x0000 },
-  { 0x1a00, 0x2536, 0x0000 },
-  { 0x9a00, 0x2539, 0x2000 },
-  { 0x1a00, 0x2538, 0x0000 },
-  { 0x1a00, 0x253a, 0x0000 },
-  { 0x9a00, 0x2543, 0x4000 },
-  { 0x9a00, 0x253f, 0x3000 },
-  { 0x9a00, 0x253d, 0x2000 },
-  { 0x1a00, 0x253c, 0x0000 },
-  { 0x1a00, 0x253e, 0x0000 },
-  { 0x9a00, 0x2541, 0x2000 },
-  { 0x1a00, 0x2540, 0x0000 },
-  { 0x1a00, 0x2542, 0x0000 },
-  { 0x9a00, 0x2547, 0x3000 },
-  { 0x9a00, 0x2545, 0x2000 },
-  { 0x1a00, 0x2544, 0x0000 },
-  { 0x1a00, 0x2546, 0x0000 },
-  { 0x9a00, 0x2549, 0x2000 },
-  { 0x1a00, 0x2548, 0x0000 },
-  { 0x1a00, 0x254a, 0x0000 },
-  { 0x9a00, 0x256b, 0x6000 },
-  { 0x9a00, 0x255b, 0x5000 },
-  { 0x9a00, 0x2553, 0x4000 },
-  { 0x9a00, 0x254f, 0x3000 },
-  { 0x9a00, 0x254d, 0x2000 },
-  { 0x1a00, 0x254c, 0x0000 },
-  { 0x1a00, 0x254e, 0x0000 },
-  { 0x9a00, 0x2551, 0x2000 },
-  { 0x1a00, 0x2550, 0x0000 },
-  { 0x1a00, 0x2552, 0x0000 },
-  { 0x9a00, 0x2557, 0x3000 },
-  { 0x9a00, 0x2555, 0x2000 },
-  { 0x1a00, 0x2554, 0x0000 },
-  { 0x1a00, 0x2556, 0x0000 },
-  { 0x9a00, 0x2559, 0x2000 },
-  { 0x1a00, 0x2558, 0x0000 },
-  { 0x1a00, 0x255a, 0x0000 },
-  { 0x9a00, 0x2563, 0x4000 },
-  { 0x9a00, 0x255f, 0x3000 },
-  { 0x9a00, 0x255d, 0x2000 },
-  { 0x1a00, 0x255c, 0x0000 },
-  { 0x1a00, 0x255e, 0x0000 },
-  { 0x9a00, 0x2561, 0x2000 },
-  { 0x1a00, 0x2560, 0x0000 },
-  { 0x1a00, 0x2562, 0x0000 },
-  { 0x9a00, 0x2567, 0x3000 },
-  { 0x9a00, 0x2565, 0x2000 },
-  { 0x1a00, 0x2564, 0x0000 },
-  { 0x1a00, 0x2566, 0x0000 },
-  { 0x9a00, 0x2569, 0x2000 },
-  { 0x1a00, 0x2568, 0x0000 },
-  { 0x1a00, 0x256a, 0x0000 },
-  { 0x9a00, 0x257b, 0x5000 },
-  { 0x9a00, 0x2573, 0x4000 },
-  { 0x9a00, 0x256f, 0x3000 },
-  { 0x9a00, 0x256d, 0x2000 },
-  { 0x1a00, 0x256c, 0x0000 },
-  { 0x1a00, 0x256e, 0x0000 },
-  { 0x9a00, 0x2571, 0x2000 },
-  { 0x1a00, 0x2570, 0x0000 },
-  { 0x1a00, 0x2572, 0x0000 },
-  { 0x9a00, 0x2577, 0x3000 },
-  { 0x9a00, 0x2575, 0x2000 },
-  { 0x1a00, 0x2574, 0x0000 },
-  { 0x1a00, 0x2576, 0x0000 },
-  { 0x9a00, 0x2579, 0x2000 },
-  { 0x1a00, 0x2578, 0x0000 },
-  { 0x1a00, 0x257a, 0x0000 },
-  { 0x9a00, 0x2583, 0x4000 },
-  { 0x9a00, 0x257f, 0x3000 },
-  { 0x9a00, 0x257d, 0x2000 },
-  { 0x1a00, 0x257c, 0x0000 },
-  { 0x1a00, 0x257e, 0x0000 },
-  { 0x9a00, 0x2581, 0x2000 },
-  { 0x1a00, 0x2580, 0x0000 },
-  { 0x1a00, 0x2582, 0x0000 },
-  { 0x9a00, 0x2587, 0x3000 },
-  { 0x9a00, 0x2585, 0x2000 },
-  { 0x1a00, 0x2584, 0x0000 },
-  { 0x1a00, 0x2586, 0x0000 },
-  { 0x9a00, 0x2589, 0x2000 },
-  { 0x1a00, 0x2588, 0x0000 },
-  { 0x1a00, 0x258a, 0x0000 },
-  { 0x9a00, 0x25cb, 0x7000 },
-  { 0x9a00, 0x25ab, 0x6000 },
-  { 0x9a00, 0x259b, 0x5000 },
-  { 0x9a00, 0x2593, 0x4000 },
-  { 0x9a00, 0x258f, 0x3000 },
-  { 0x9a00, 0x258d, 0x2000 },
-  { 0x1a00, 0x258c, 0x0000 },
-  { 0x1a00, 0x258e, 0x0000 },
-  { 0x9a00, 0x2591, 0x2000 },
-  { 0x1a00, 0x2590, 0x0000 },
-  { 0x1a00, 0x2592, 0x0000 },
-  { 0x9a00, 0x2597, 0x3000 },
-  { 0x9a00, 0x2595, 0x2000 },
-  { 0x1a00, 0x2594, 0x0000 },
-  { 0x1a00, 0x2596, 0x0000 },
-  { 0x9a00, 0x2599, 0x2000 },
-  { 0x1a00, 0x2598, 0x0000 },
-  { 0x1a00, 0x259a, 0x0000 },
-  { 0x9a00, 0x25a3, 0x4000 },
-  { 0x9a00, 0x259f, 0x3000 },
-  { 0x9a00, 0x259d, 0x2000 },
-  { 0x1a00, 0x259c, 0x0000 },
-  { 0x1a00, 0x259e, 0x0000 },
-  { 0x9a00, 0x25a1, 0x2000 },
-  { 0x1a00, 0x25a0, 0x0000 },
-  { 0x1a00, 0x25a2, 0x0000 },
-  { 0x9a00, 0x25a7, 0x3000 },
-  { 0x9a00, 0x25a5, 0x2000 },
-  { 0x1a00, 0x25a4, 0x0000 },
-  { 0x1a00, 0x25a6, 0x0000 },
-  { 0x9a00, 0x25a9, 0x2000 },
-  { 0x1a00, 0x25a8, 0x0000 },
-  { 0x1a00, 0x25aa, 0x0000 },
-  { 0x9a00, 0x25bb, 0x5000 },
-  { 0x9a00, 0x25b3, 0x4000 },
-  { 0x9a00, 0x25af, 0x3000 },
-  { 0x9a00, 0x25ad, 0x2000 },
-  { 0x1a00, 0x25ac, 0x0000 },
-  { 0x1a00, 0x25ae, 0x0000 },
-  { 0x9a00, 0x25b1, 0x2000 },
-  { 0x1a00, 0x25b0, 0x0000 },
-  { 0x1a00, 0x25b2, 0x0000 },
-  { 0x9900, 0x25b7, 0x3000 },
-  { 0x9a00, 0x25b5, 0x2000 },
-  { 0x1a00, 0x25b4, 0x0000 },
-  { 0x1a00, 0x25b6, 0x0000 },
-  { 0x9a00, 0x25b9, 0x2000 },
-  { 0x1a00, 0x25b8, 0x0000 },
-  { 0x1a00, 0x25ba, 0x0000 },
-  { 0x9a00, 0x25c3, 0x4000 },
-  { 0x9a00, 0x25bf, 0x3000 },
-  { 0x9a00, 0x25bd, 0x2000 },
-  { 0x1a00, 0x25bc, 0x0000 },
-  { 0x1a00, 0x25be, 0x0000 },
-  { 0x9900, 0x25c1, 0x2000 },
-  { 0x1a00, 0x25c0, 0x0000 },
-  { 0x1a00, 0x25c2, 0x0000 },
-  { 0x9a00, 0x25c7, 0x3000 },
-  { 0x9a00, 0x25c5, 0x2000 },
-  { 0x1a00, 0x25c4, 0x0000 },
-  { 0x1a00, 0x25c6, 0x0000 },
-  { 0x9a00, 0x25c9, 0x2000 },
-  { 0x1a00, 0x25c8, 0x0000 },
-  { 0x1a00, 0x25ca, 0x0000 },
-  { 0x9a00, 0x25eb, 0x6000 },
-  { 0x9a00, 0x25db, 0x5000 },
-  { 0x9a00, 0x25d3, 0x4000 },
-  { 0x9a00, 0x25cf, 0x3000 },
-  { 0x9a00, 0x25cd, 0x2000 },
-  { 0x1a00, 0x25cc, 0x0000 },
-  { 0x1a00, 0x25ce, 0x0000 },
-  { 0x9a00, 0x25d1, 0x2000 },
-  { 0x1a00, 0x25d0, 0x0000 },
-  { 0x1a00, 0x25d2, 0x0000 },
-  { 0x9a00, 0x25d7, 0x3000 },
-  { 0x9a00, 0x25d5, 0x2000 },
-  { 0x1a00, 0x25d4, 0x0000 },
-  { 0x1a00, 0x25d6, 0x0000 },
-  { 0x9a00, 0x25d9, 0x2000 },
-  { 0x1a00, 0x25d8, 0x0000 },
-  { 0x1a00, 0x25da, 0x0000 },
-  { 0x9a00, 0x25e3, 0x4000 },
-  { 0x9a00, 0x25df, 0x3000 },
-  { 0x9a00, 0x25dd, 0x2000 },
-  { 0x1a00, 0x25dc, 0x0000 },
-  { 0x1a00, 0x25de, 0x0000 },
-  { 0x9a00, 0x25e1, 0x2000 },
-  { 0x1a00, 0x25e0, 0x0000 },
-  { 0x1a00, 0x25e2, 0x0000 },
-  { 0x9a00, 0x25e7, 0x3000 },
-  { 0x9a00, 0x25e5, 0x2000 },
-  { 0x1a00, 0x25e4, 0x0000 },
-  { 0x1a00, 0x25e6, 0x0000 },
-  { 0x9a00, 0x25e9, 0x2000 },
-  { 0x1a00, 0x25e8, 0x0000 },
-  { 0x1a00, 0x25ea, 0x0000 },
-  { 0x9900, 0x25fb, 0x5000 },
-  { 0x9a00, 0x25f3, 0x4000 },
-  { 0x9a00, 0x25ef, 0x3000 },
-  { 0x9a00, 0x25ed, 0x2000 },
-  { 0x1a00, 0x25ec, 0x0000 },
-  { 0x1a00, 0x25ee, 0x0000 },
-  { 0x9a00, 0x25f1, 0x2000 },
-  { 0x1a00, 0x25f0, 0x0000 },
-  { 0x1a00, 0x25f2, 0x0000 },
-  { 0x9a00, 0x25f7, 0x3000 },
-  { 0x9a00, 0x25f5, 0x2000 },
-  { 0x1a00, 0x25f4, 0x0000 },
-  { 0x1a00, 0x25f6, 0x0000 },
-  { 0x9900, 0x25f9, 0x2000 },
-  { 0x1900, 0x25f8, 0x0000 },
-  { 0x1900, 0x25fa, 0x0000 },
-  { 0x9a00, 0x2603, 0x4000 },
-  { 0x9900, 0x25ff, 0x3000 },
-  { 0x9900, 0x25fd, 0x2000 },
-  { 0x1900, 0x25fc, 0x0000 },
-  { 0x1900, 0x25fe, 0x0000 },
-  { 0x9a00, 0x2601, 0x2000 },
-  { 0x1a00, 0x2600, 0x0000 },
-  { 0x1a00, 0x2602, 0x0000 },
-  { 0x9a00, 0x2607, 0x3000 },
-  { 0x9a00, 0x2605, 0x2000 },
-  { 0x1a00, 0x2604, 0x0000 },
-  { 0x1a00, 0x2606, 0x0000 },
-  { 0x9a00, 0x2609, 0x2000 },
-  { 0x1a00, 0x2608, 0x0000 },
-  { 0x1a00, 0x260a, 0x0000 },
-  { 0x9a00, 0x268e, 0x8000 },
-  { 0x9a00, 0x264c, 0x7000 },
-  { 0x9a00, 0x262c, 0x6000 },
-  { 0x9a00, 0x261c, 0x5000 },
-  { 0x9a00, 0x2613, 0x4000 },
-  { 0x9a00, 0x260f, 0x3000 },
-  { 0x9a00, 0x260d, 0x2000 },
-  { 0x1a00, 0x260c, 0x0000 },
-  { 0x1a00, 0x260e, 0x0000 },
-  { 0x9a00, 0x2611, 0x2000 },
-  { 0x1a00, 0x2610, 0x0000 },
-  { 0x1a00, 0x2612, 0x0000 },
-  { 0x9a00, 0x2617, 0x3000 },
-  { 0x9a00, 0x2615, 0x2000 },
-  { 0x1a00, 0x2614, 0x0000 },
-  { 0x1a00, 0x2616, 0x0000 },
-  { 0x9a00, 0x261a, 0x2000 },
-  { 0x1a00, 0x2619, 0x0000 },
-  { 0x1a00, 0x261b, 0x0000 },
-  { 0x9a00, 0x2624, 0x4000 },
-  { 0x9a00, 0x2620, 0x3000 },
-  { 0x9a00, 0x261e, 0x2000 },
-  { 0x1a00, 0x261d, 0x0000 },
-  { 0x1a00, 0x261f, 0x0000 },
-  { 0x9a00, 0x2622, 0x2000 },
-  { 0x1a00, 0x2621, 0x0000 },
-  { 0x1a00, 0x2623, 0x0000 },
-  { 0x9a00, 0x2628, 0x3000 },
-  { 0x9a00, 0x2626, 0x2000 },
-  { 0x1a00, 0x2625, 0x0000 },
-  { 0x1a00, 0x2627, 0x0000 },
-  { 0x9a00, 0x262a, 0x2000 },
-  { 0x1a00, 0x2629, 0x0000 },
-  { 0x1a00, 0x262b, 0x0000 },
-  { 0x9a00, 0x263c, 0x5000 },
-  { 0x9a00, 0x2634, 0x4000 },
-  { 0x9a00, 0x2630, 0x3000 },
-  { 0x9a00, 0x262e, 0x2000 },
-  { 0x1a00, 0x262d, 0x0000 },
-  { 0x1a00, 0x262f, 0x0000 },
-  { 0x9a00, 0x2632, 0x2000 },
-  { 0x1a00, 0x2631, 0x0000 },
-  { 0x1a00, 0x2633, 0x0000 },
-  { 0x9a00, 0x2638, 0x3000 },
-  { 0x9a00, 0x2636, 0x2000 },
-  { 0x1a00, 0x2635, 0x0000 },
-  { 0x1a00, 0x2637, 0x0000 },
-  { 0x9a00, 0x263a, 0x2000 },
-  { 0x1a00, 0x2639, 0x0000 },
-  { 0x1a00, 0x263b, 0x0000 },
-  { 0x9a00, 0x2644, 0x4000 },
-  { 0x9a00, 0x2640, 0x3000 },
-  { 0x9a00, 0x263e, 0x2000 },
-  { 0x1a00, 0x263d, 0x0000 },
-  { 0x1a00, 0x263f, 0x0000 },
-  { 0x9a00, 0x2642, 0x2000 },
-  { 0x1a00, 0x2641, 0x0000 },
-  { 0x1a00, 0x2643, 0x0000 },
-  { 0x9a00, 0x2648, 0x3000 },
-  { 0x9a00, 0x2646, 0x2000 },
-  { 0x1a00, 0x2645, 0x0000 },
-  { 0x1a00, 0x2647, 0x0000 },
-  { 0x9a00, 0x264a, 0x2000 },
-  { 0x1a00, 0x2649, 0x0000 },
-  { 0x1a00, 0x264b, 0x0000 },
-  { 0x9a00, 0x266c, 0x6000 },
-  { 0x9a00, 0x265c, 0x5000 },
-  { 0x9a00, 0x2654, 0x4000 },
-  { 0x9a00, 0x2650, 0x3000 },
-  { 0x9a00, 0x264e, 0x2000 },
-  { 0x1a00, 0x264d, 0x0000 },
-  { 0x1a00, 0x264f, 0x0000 },
-  { 0x9a00, 0x2652, 0x2000 },
-  { 0x1a00, 0x2651, 0x0000 },
-  { 0x1a00, 0x2653, 0x0000 },
-  { 0x9a00, 0x2658, 0x3000 },
-  { 0x9a00, 0x2656, 0x2000 },
-  { 0x1a00, 0x2655, 0x0000 },
-  { 0x1a00, 0x2657, 0x0000 },
-  { 0x9a00, 0x265a, 0x2000 },
-  { 0x1a00, 0x2659, 0x0000 },
-  { 0x1a00, 0x265b, 0x0000 },
-  { 0x9a00, 0x2664, 0x4000 },
-  { 0x9a00, 0x2660, 0x3000 },
-  { 0x9a00, 0x265e, 0x2000 },
-  { 0x1a00, 0x265d, 0x0000 },
-  { 0x1a00, 0x265f, 0x0000 },
-  { 0x9a00, 0x2662, 0x2000 },
-  { 0x1a00, 0x2661, 0x0000 },
-  { 0x1a00, 0x2663, 0x0000 },
-  { 0x9a00, 0x2668, 0x3000 },
-  { 0x9a00, 0x2666, 0x2000 },
-  { 0x1a00, 0x2665, 0x0000 },
-  { 0x1a00, 0x2667, 0x0000 },
-  { 0x9a00, 0x266a, 0x2000 },
-  { 0x1a00, 0x2669, 0x0000 },
-  { 0x1a00, 0x266b, 0x0000 },
-  { 0x9a00, 0x267c, 0x5000 },
-  { 0x9a00, 0x2674, 0x4000 },
-  { 0x9a00, 0x2670, 0x3000 },
-  { 0x9a00, 0x266e, 0x2000 },
-  { 0x1a00, 0x266d, 0x0000 },
-  { 0x1900, 0x266f, 0x0000 },
-  { 0x9a00, 0x2672, 0x2000 },
-  { 0x1a00, 0x2671, 0x0000 },
-  { 0x1a00, 0x2673, 0x0000 },
-  { 0x9a00, 0x2678, 0x3000 },
-  { 0x9a00, 0x2676, 0x2000 },
-  { 0x1a00, 0x2675, 0x0000 },
-  { 0x1a00, 0x2677, 0x0000 },
-  { 0x9a00, 0x267a, 0x2000 },
-  { 0x1a00, 0x2679, 0x0000 },
-  { 0x1a00, 0x267b, 0x0000 },
-  { 0x9a00, 0x2686, 0x4000 },
-  { 0x9a00, 0x2682, 0x3000 },
-  { 0x9a00, 0x2680, 0x2000 },
-  { 0x1a00, 0x267d, 0x0000 },
-  { 0x1a00, 0x2681, 0x0000 },
-  { 0x9a00, 0x2684, 0x2000 },
-  { 0x1a00, 0x2683, 0x0000 },
-  { 0x1a00, 0x2685, 0x0000 },
-  { 0x9a00, 0x268a, 0x3000 },
-  { 0x9a00, 0x2688, 0x2000 },
-  { 0x1a00, 0x2687, 0x0000 },
-  { 0x1a00, 0x2689, 0x0000 },
-  { 0x9a00, 0x268c, 0x2000 },
-  { 0x1a00, 0x268b, 0x0000 },
-  { 0x1a00, 0x268d, 0x0000 },
-  { 0x9a00, 0x273f, 0x7000 },
-  { 0x9a00, 0x271e, 0x6000 },
-  { 0x9a00, 0x270e, 0x5000 },
-  { 0x9a00, 0x2703, 0x4000 },
-  { 0x9a00, 0x26a0, 0x3000 },
-  { 0x9a00, 0x2690, 0x2000 },
-  { 0x1a00, 0x268f, 0x0000 },
-  { 0x1a00, 0x2691, 0x0000 },
-  { 0x9a00, 0x2701, 0x2000 },
-  { 0x1a00, 0x26a1, 0x0000 },
-  { 0x1a00, 0x2702, 0x0000 },
-  { 0x9a00, 0x2708, 0x3000 },
-  { 0x9a00, 0x2706, 0x2000 },
-  { 0x1a00, 0x2704, 0x0000 },
-  { 0x1a00, 0x2707, 0x0000 },
-  { 0x9a00, 0x270c, 0x2000 },
-  { 0x1a00, 0x2709, 0x0000 },
-  { 0x1a00, 0x270d, 0x0000 },
-  { 0x9a00, 0x2716, 0x4000 },
-  { 0x9a00, 0x2712, 0x3000 },
-  { 0x9a00, 0x2710, 0x2000 },
-  { 0x1a00, 0x270f, 0x0000 },
-  { 0x1a00, 0x2711, 0x0000 },
-  { 0x9a00, 0x2714, 0x2000 },
-  { 0x1a00, 0x2713, 0x0000 },
-  { 0x1a00, 0x2715, 0x0000 },
-  { 0x9a00, 0x271a, 0x3000 },
-  { 0x9a00, 0x2718, 0x2000 },
-  { 0x1a00, 0x2717, 0x0000 },
-  { 0x1a00, 0x2719, 0x0000 },
-  { 0x9a00, 0x271c, 0x2000 },
-  { 0x1a00, 0x271b, 0x0000 },
-  { 0x1a00, 0x271d, 0x0000 },
-  { 0x9a00, 0x272f, 0x5000 },
-  { 0x9a00, 0x2726, 0x4000 },
-  { 0x9a00, 0x2722, 0x3000 },
-  { 0x9a00, 0x2720, 0x2000 },
-  { 0x1a00, 0x271f, 0x0000 },
-  { 0x1a00, 0x2721, 0x0000 },
-  { 0x9a00, 0x2724, 0x2000 },
-  { 0x1a00, 0x2723, 0x0000 },
-  { 0x1a00, 0x2725, 0x0000 },
-  { 0x9a00, 0x272b, 0x3000 },
-  { 0x9a00, 0x2729, 0x2000 },
-  { 0x1a00, 0x2727, 0x0000 },
-  { 0x1a00, 0x272a, 0x0000 },
-  { 0x9a00, 0x272d, 0x2000 },
-  { 0x1a00, 0x272c, 0x0000 },
-  { 0x1a00, 0x272e, 0x0000 },
-  { 0x9a00, 0x2737, 0x4000 },
-  { 0x9a00, 0x2733, 0x3000 },
-  { 0x9a00, 0x2731, 0x2000 },
-  { 0x1a00, 0x2730, 0x0000 },
-  { 0x1a00, 0x2732, 0x0000 },
-  { 0x9a00, 0x2735, 0x2000 },
-  { 0x1a00, 0x2734, 0x0000 },
-  { 0x1a00, 0x2736, 0x0000 },
-  { 0x9a00, 0x273b, 0x3000 },
-  { 0x9a00, 0x2739, 0x2000 },
-  { 0x1a00, 0x2738, 0x0000 },
-  { 0x1a00, 0x273a, 0x0000 },
-  { 0x9a00, 0x273d, 0x2000 },
-  { 0x1a00, 0x273c, 0x0000 },
-  { 0x1a00, 0x273e, 0x0000 },
-  { 0x9a00, 0x2767, 0x6000 },
-  { 0x9a00, 0x2751, 0x5000 },
-  { 0x9a00, 0x2747, 0x4000 },
-  { 0x9a00, 0x2743, 0x3000 },
-  { 0x9a00, 0x2741, 0x2000 },
-  { 0x1a00, 0x2740, 0x0000 },
-  { 0x1a00, 0x2742, 0x0000 },
-  { 0x9a00, 0x2745, 0x2000 },
-  { 0x1a00, 0x2744, 0x0000 },
-  { 0x1a00, 0x2746, 0x0000 },
-  { 0x9a00, 0x274b, 0x3000 },
-  { 0x9a00, 0x2749, 0x2000 },
-  { 0x1a00, 0x2748, 0x0000 },
-  { 0x1a00, 0x274a, 0x0000 },
-  { 0x9a00, 0x274f, 0x2000 },
-  { 0x1a00, 0x274d, 0x0000 },
-  { 0x1a00, 0x2750, 0x0000 },
-  { 0x9a00, 0x275d, 0x4000 },
-  { 0x9a00, 0x2759, 0x3000 },
-  { 0x9a00, 0x2756, 0x2000 },
-  { 0x1a00, 0x2752, 0x0000 },
-  { 0x1a00, 0x2758, 0x0000 },
-  { 0x9a00, 0x275b, 0x2000 },
-  { 0x1a00, 0x275a, 0x0000 },
-  { 0x1a00, 0x275c, 0x0000 },
-  { 0x9a00, 0x2763, 0x3000 },
-  { 0x9a00, 0x2761, 0x2000 },
-  { 0x1a00, 0x275e, 0x0000 },
-  { 0x1a00, 0x2762, 0x0000 },
-  { 0x9a00, 0x2765, 0x2000 },
-  { 0x1a00, 0x2764, 0x0000 },
-  { 0x1a00, 0x2766, 0x0000 },
-  { 0x8f00, 0x2777, 0x5000 },
-  { 0x9200, 0x276f, 0x4000 },
-  { 0x9200, 0x276b, 0x3000 },
-  { 0x9200, 0x2769, 0x2000 },
-  { 0x1600, 0x2768, 0x0000 },
-  { 0x1600, 0x276a, 0x0000 },
-  { 0x9200, 0x276d, 0x2000 },
-  { 0x1600, 0x276c, 0x0000 },
-  { 0x1600, 0x276e, 0x0000 },
-  { 0x9200, 0x2773, 0x3000 },
-  { 0x9200, 0x2771, 0x2000 },
-  { 0x1600, 0x2770, 0x0000 },
-  { 0x1600, 0x2772, 0x0000 },
-  { 0x9200, 0x2775, 0x2000 },
-  { 0x1600, 0x2774, 0x0000 },
-  { 0x0f00, 0x2776, 0x0000 },
-  { 0x8f00, 0x277f, 0x4000 },
-  { 0x8f00, 0x277b, 0x3000 },
-  { 0x8f00, 0x2779, 0x2000 },
-  { 0x0f00, 0x2778, 0x0000 },
-  { 0x0f00, 0x277a, 0x0000 },
-  { 0x8f00, 0x277d, 0x2000 },
-  { 0x0f00, 0x277c, 0x0000 },
-  { 0x0f00, 0x277e, 0x0000 },
-  { 0x8f00, 0x2783, 0x3000 },
-  { 0x8f00, 0x2781, 0x2000 },
-  { 0x0f00, 0x2780, 0x0000 },
-  { 0x0f00, 0x2782, 0x0000 },
-  { 0x8f00, 0x2785, 0x2000 },
-  { 0x0f00, 0x2784, 0x0000 },
-  { 0x0f00, 0x2786, 0x0000 },
-  { 0x9900, 0x29a0, 0xa000 },
-  { 0x9a00, 0x28a0, 0x9000 },
-  { 0x9a00, 0x2820, 0x8000 },
-  { 0x9900, 0x27dc, 0x7000 },
-  { 0x9a00, 0x27aa, 0x6000 },
-  { 0x9a00, 0x279a, 0x5000 },
-  { 0x8f00, 0x278f, 0x4000 },
-  { 0x8f00, 0x278b, 0x3000 },
-  { 0x8f00, 0x2789, 0x2000 },
-  { 0x0f00, 0x2788, 0x0000 },
-  { 0x0f00, 0x278a, 0x0000 },
-  { 0x8f00, 0x278d, 0x2000 },
-  { 0x0f00, 0x278c, 0x0000 },
-  { 0x0f00, 0x278e, 0x0000 },
-  { 0x8f00, 0x2793, 0x3000 },
-  { 0x8f00, 0x2791, 0x2000 },
-  { 0x0f00, 0x2790, 0x0000 },
-  { 0x0f00, 0x2792, 0x0000 },
-  { 0x9a00, 0x2798, 0x2000 },
-  { 0x1a00, 0x2794, 0x0000 },
-  { 0x1a00, 0x2799, 0x0000 },
-  { 0x9a00, 0x27a2, 0x4000 },
-  { 0x9a00, 0x279e, 0x3000 },
-  { 0x9a00, 0x279c, 0x2000 },
-  { 0x1a00, 0x279b, 0x0000 },
-  { 0x1a00, 0x279d, 0x0000 },
-  { 0x9a00, 0x27a0, 0x2000 },
-  { 0x1a00, 0x279f, 0x0000 },
-  { 0x1a00, 0x27a1, 0x0000 },
-  { 0x9a00, 0x27a6, 0x3000 },
-  { 0x9a00, 0x27a4, 0x2000 },
-  { 0x1a00, 0x27a3, 0x0000 },
-  { 0x1a00, 0x27a5, 0x0000 },
-  { 0x9a00, 0x27a8, 0x2000 },
-  { 0x1a00, 0x27a7, 0x0000 },
-  { 0x1a00, 0x27a9, 0x0000 },
-  { 0x9a00, 0x27bb, 0x5000 },
-  { 0x9a00, 0x27b3, 0x4000 },
-  { 0x9a00, 0x27ae, 0x3000 },
-  { 0x9a00, 0x27ac, 0x2000 },
-  { 0x1a00, 0x27ab, 0x0000 },
-  { 0x1a00, 0x27ad, 0x0000 },
-  { 0x9a00, 0x27b1, 0x2000 },
-  { 0x1a00, 0x27af, 0x0000 },
-  { 0x1a00, 0x27b2, 0x0000 },
-  { 0x9a00, 0x27b7, 0x3000 },
-  { 0x9a00, 0x27b5, 0x2000 },
-  { 0x1a00, 0x27b4, 0x0000 },
-  { 0x1a00, 0x27b6, 0x0000 },
-  { 0x9a00, 0x27b9, 0x2000 },
-  { 0x1a00, 0x27b8, 0x0000 },
-  { 0x1a00, 0x27ba, 0x0000 },
-  { 0x9900, 0x27d4, 0x4000 },
-  { 0x9900, 0x27d0, 0x3000 },
-  { 0x9a00, 0x27bd, 0x2000 },
-  { 0x1a00, 0x27bc, 0x0000 },
-  { 0x1a00, 0x27be, 0x0000 },
-  { 0x9900, 0x27d2, 0x2000 },
-  { 0x1900, 0x27d1, 0x0000 },
-  { 0x1900, 0x27d3, 0x0000 },
-  { 0x9900, 0x27d8, 0x3000 },
-  { 0x9900, 0x27d6, 0x2000 },
-  { 0x1900, 0x27d5, 0x0000 },
-  { 0x1900, 0x27d7, 0x0000 },
-  { 0x9900, 0x27da, 0x2000 },
-  { 0x1900, 0x27d9, 0x0000 },
-  { 0x1900, 0x27db, 0x0000 },
-  { 0x9a00, 0x2800, 0x6000 },
-  { 0x9900, 0x27f0, 0x5000 },
-  { 0x9900, 0x27e4, 0x4000 },
-  { 0x9900, 0x27e0, 0x3000 },
-  { 0x9900, 0x27de, 0x2000 },
-  { 0x1900, 0x27dd, 0x0000 },
-  { 0x1900, 0x27df, 0x0000 },
-  { 0x9900, 0x27e2, 0x2000 },
-  { 0x1900, 0x27e1, 0x0000 },
-  { 0x1900, 0x27e3, 0x0000 },
-  { 0x9600, 0x27e8, 0x3000 },
-  { 0x9600, 0x27e6, 0x2000 },
-  { 0x1900, 0x27e5, 0x0000 },
-  { 0x1200, 0x27e7, 0x0000 },
-  { 0x9600, 0x27ea, 0x2000 },
-  { 0x1200, 0x27e9, 0x0000 },
-  { 0x1200, 0x27eb, 0x0000 },
-  { 0x9900, 0x27f8, 0x4000 },
-  { 0x9900, 0x27f4, 0x3000 },
-  { 0x9900, 0x27f2, 0x2000 },
-  { 0x1900, 0x27f1, 0x0000 },
-  { 0x1900, 0x27f3, 0x0000 },
-  { 0x9900, 0x27f6, 0x2000 },
-  { 0x1900, 0x27f5, 0x0000 },
-  { 0x1900, 0x27f7, 0x0000 },
-  { 0x9900, 0x27fc, 0x3000 },
-  { 0x9900, 0x27fa, 0x2000 },
-  { 0x1900, 0x27f9, 0x0000 },
-  { 0x1900, 0x27fb, 0x0000 },
-  { 0x9900, 0x27fe, 0x2000 },
-  { 0x1900, 0x27fd, 0x0000 },
-  { 0x1900, 0x27ff, 0x0000 },
-  { 0x9a00, 0x2810, 0x5000 },
-  { 0x9a00, 0x2808, 0x4000 },
-  { 0x9a00, 0x2804, 0x3000 },
-  { 0x9a00, 0x2802, 0x2000 },
-  { 0x1a00, 0x2801, 0x0000 },
-  { 0x1a00, 0x2803, 0x0000 },
-  { 0x9a00, 0x2806, 0x2000 },
-  { 0x1a00, 0x2805, 0x0000 },
-  { 0x1a00, 0x2807, 0x0000 },
-  { 0x9a00, 0x280c, 0x3000 },
-  { 0x9a00, 0x280a, 0x2000 },
-  { 0x1a00, 0x2809, 0x0000 },
-  { 0x1a00, 0x280b, 0x0000 },
-  { 0x9a00, 0x280e, 0x2000 },
-  { 0x1a00, 0x280d, 0x0000 },
-  { 0x1a00, 0x280f, 0x0000 },
-  { 0x9a00, 0x2818, 0x4000 },
-  { 0x9a00, 0x2814, 0x3000 },
-  { 0x9a00, 0x2812, 0x2000 },
-  { 0x1a00, 0x2811, 0x0000 },
-  { 0x1a00, 0x2813, 0x0000 },
-  { 0x9a00, 0x2816, 0x2000 },
-  { 0x1a00, 0x2815, 0x0000 },
-  { 0x1a00, 0x2817, 0x0000 },
-  { 0x9a00, 0x281c, 0x3000 },
-  { 0x9a00, 0x281a, 0x2000 },
-  { 0x1a00, 0x2819, 0x0000 },
-  { 0x1a00, 0x281b, 0x0000 },
-  { 0x9a00, 0x281e, 0x2000 },
-  { 0x1a00, 0x281d, 0x0000 },
-  { 0x1a00, 0x281f, 0x0000 },
-  { 0x9a00, 0x2860, 0x7000 },
-  { 0x9a00, 0x2840, 0x6000 },
-  { 0x9a00, 0x2830, 0x5000 },
-  { 0x9a00, 0x2828, 0x4000 },
-  { 0x9a00, 0x2824, 0x3000 },
-  { 0x9a00, 0x2822, 0x2000 },
-  { 0x1a00, 0x2821, 0x0000 },
-  { 0x1a00, 0x2823, 0x0000 },
-  { 0x9a00, 0x2826, 0x2000 },
-  { 0x1a00, 0x2825, 0x0000 },
-  { 0x1a00, 0x2827, 0x0000 },
-  { 0x9a00, 0x282c, 0x3000 },
-  { 0x9a00, 0x282a, 0x2000 },
-  { 0x1a00, 0x2829, 0x0000 },
-  { 0x1a00, 0x282b, 0x0000 },
-  { 0x9a00, 0x282e, 0x2000 },
-  { 0x1a00, 0x282d, 0x0000 },
-  { 0x1a00, 0x282f, 0x0000 },
-  { 0x9a00, 0x2838, 0x4000 },
-  { 0x9a00, 0x2834, 0x3000 },
-  { 0x9a00, 0x2832, 0x2000 },
-  { 0x1a00, 0x2831, 0x0000 },
-  { 0x1a00, 0x2833, 0x0000 },
-  { 0x9a00, 0x2836, 0x2000 },
-  { 0x1a00, 0x2835, 0x0000 },
-  { 0x1a00, 0x2837, 0x0000 },
-  { 0x9a00, 0x283c, 0x3000 },
-  { 0x9a00, 0x283a, 0x2000 },
-  { 0x1a00, 0x2839, 0x0000 },
-  { 0x1a00, 0x283b, 0x0000 },
-  { 0x9a00, 0x283e, 0x2000 },
-  { 0x1a00, 0x283d, 0x0000 },
-  { 0x1a00, 0x283f, 0x0000 },
-  { 0x9a00, 0x2850, 0x5000 },
-  { 0x9a00, 0x2848, 0x4000 },
-  { 0x9a00, 0x2844, 0x3000 },
-  { 0x9a00, 0x2842, 0x2000 },
-  { 0x1a00, 0x2841, 0x0000 },
-  { 0x1a00, 0x2843, 0x0000 },
-  { 0x9a00, 0x2846, 0x2000 },
-  { 0x1a00, 0x2845, 0x0000 },
-  { 0x1a00, 0x2847, 0x0000 },
-  { 0x9a00, 0x284c, 0x3000 },
-  { 0x9a00, 0x284a, 0x2000 },
-  { 0x1a00, 0x2849, 0x0000 },
-  { 0x1a00, 0x284b, 0x0000 },
-  { 0x9a00, 0x284e, 0x2000 },
-  { 0x1a00, 0x284d, 0x0000 },
-  { 0x1a00, 0x284f, 0x0000 },
-  { 0x9a00, 0x2858, 0x4000 },
-  { 0x9a00, 0x2854, 0x3000 },
-  { 0x9a00, 0x2852, 0x2000 },
-  { 0x1a00, 0x2851, 0x0000 },
-  { 0x1a00, 0x2853, 0x0000 },
-  { 0x9a00, 0x2856, 0x2000 },
-  { 0x1a00, 0x2855, 0x0000 },
-  { 0x1a00, 0x2857, 0x0000 },
-  { 0x9a00, 0x285c, 0x3000 },
-  { 0x9a00, 0x285a, 0x2000 },
-  { 0x1a00, 0x2859, 0x0000 },
-  { 0x1a00, 0x285b, 0x0000 },
-  { 0x9a00, 0x285e, 0x2000 },
-  { 0x1a00, 0x285d, 0x0000 },
-  { 0x1a00, 0x285f, 0x0000 },
-  { 0x9a00, 0x2880, 0x6000 },
-  { 0x9a00, 0x2870, 0x5000 },
-  { 0x9a00, 0x2868, 0x4000 },
-  { 0x9a00, 0x2864, 0x3000 },
-  { 0x9a00, 0x2862, 0x2000 },
-  { 0x1a00, 0x2861, 0x0000 },
-  { 0x1a00, 0x2863, 0x0000 },
-  { 0x9a00, 0x2866, 0x2000 },
-  { 0x1a00, 0x2865, 0x0000 },
-  { 0x1a00, 0x2867, 0x0000 },
-  { 0x9a00, 0x286c, 0x3000 },
-  { 0x9a00, 0x286a, 0x2000 },
-  { 0x1a00, 0x2869, 0x0000 },
-  { 0x1a00, 0x286b, 0x0000 },
-  { 0x9a00, 0x286e, 0x2000 },
-  { 0x1a00, 0x286d, 0x0000 },
-  { 0x1a00, 0x286f, 0x0000 },
-  { 0x9a00, 0x2878, 0x4000 },
-  { 0x9a00, 0x2874, 0x3000 },
-  { 0x9a00, 0x2872, 0x2000 },
-  { 0x1a00, 0x2871, 0x0000 },
-  { 0x1a00, 0x2873, 0x0000 },
-  { 0x9a00, 0x2876, 0x2000 },
-  { 0x1a00, 0x2875, 0x0000 },
-  { 0x1a00, 0x2877, 0x0000 },
-  { 0x9a00, 0x287c, 0x3000 },
-  { 0x9a00, 0x287a, 0x2000 },
-  { 0x1a00, 0x2879, 0x0000 },
-  { 0x1a00, 0x287b, 0x0000 },
-  { 0x9a00, 0x287e, 0x2000 },
-  { 0x1a00, 0x287d, 0x0000 },
-  { 0x1a00, 0x287f, 0x0000 },
-  { 0x9a00, 0x2890, 0x5000 },
-  { 0x9a00, 0x2888, 0x4000 },
-  { 0x9a00, 0x2884, 0x3000 },
-  { 0x9a00, 0x2882, 0x2000 },
-  { 0x1a00, 0x2881, 0x0000 },
-  { 0x1a00, 0x2883, 0x0000 },
-  { 0x9a00, 0x2886, 0x2000 },
-  { 0x1a00, 0x2885, 0x0000 },
-  { 0x1a00, 0x2887, 0x0000 },
-  { 0x9a00, 0x288c, 0x3000 },
-  { 0x9a00, 0x288a, 0x2000 },
-  { 0x1a00, 0x2889, 0x0000 },
-  { 0x1a00, 0x288b, 0x0000 },
-  { 0x9a00, 0x288e, 0x2000 },
-  { 0x1a00, 0x288d, 0x0000 },
-  { 0x1a00, 0x288f, 0x0000 },
-  { 0x9a00, 0x2898, 0x4000 },
-  { 0x9a00, 0x2894, 0x3000 },
-  { 0x9a00, 0x2892, 0x2000 },
-  { 0x1a00, 0x2891, 0x0000 },
-  { 0x1a00, 0x2893, 0x0000 },
-  { 0x9a00, 0x2896, 0x2000 },
-  { 0x1a00, 0x2895, 0x0000 },
-  { 0x1a00, 0x2897, 0x0000 },
-  { 0x9a00, 0x289c, 0x3000 },
-  { 0x9a00, 0x289a, 0x2000 },
-  { 0x1a00, 0x2899, 0x0000 },
-  { 0x1a00, 0x289b, 0x0000 },
-  { 0x9a00, 0x289e, 0x2000 },
-  { 0x1a00, 0x289d, 0x0000 },
-  { 0x1a00, 0x289f, 0x0000 },
-  { 0x9900, 0x2920, 0x8000 },
-  { 0x9a00, 0x28e0, 0x7000 },
-  { 0x9a00, 0x28c0, 0x6000 },
-  { 0x9a00, 0x28b0, 0x5000 },
-  { 0x9a00, 0x28a8, 0x4000 },
-  { 0x9a00, 0x28a4, 0x3000 },
-  { 0x9a00, 0x28a2, 0x2000 },
-  { 0x1a00, 0x28a1, 0x0000 },
-  { 0x1a00, 0x28a3, 0x0000 },
-  { 0x9a00, 0x28a6, 0x2000 },
-  { 0x1a00, 0x28a5, 0x0000 },
-  { 0x1a00, 0x28a7, 0x0000 },
-  { 0x9a00, 0x28ac, 0x3000 },
-  { 0x9a00, 0x28aa, 0x2000 },
-  { 0x1a00, 0x28a9, 0x0000 },
-  { 0x1a00, 0x28ab, 0x0000 },
-  { 0x9a00, 0x28ae, 0x2000 },
-  { 0x1a00, 0x28ad, 0x0000 },
-  { 0x1a00, 0x28af, 0x0000 },
-  { 0x9a00, 0x28b8, 0x4000 },
-  { 0x9a00, 0x28b4, 0x3000 },
-  { 0x9a00, 0x28b2, 0x2000 },
-  { 0x1a00, 0x28b1, 0x0000 },
-  { 0x1a00, 0x28b3, 0x0000 },
-  { 0x9a00, 0x28b6, 0x2000 },
-  { 0x1a00, 0x28b5, 0x0000 },
-  { 0x1a00, 0x28b7, 0x0000 },
-  { 0x9a00, 0x28bc, 0x3000 },
-  { 0x9a00, 0x28ba, 0x2000 },
-  { 0x1a00, 0x28b9, 0x0000 },
-  { 0x1a00, 0x28bb, 0x0000 },
-  { 0x9a00, 0x28be, 0x2000 },
-  { 0x1a00, 0x28bd, 0x0000 },
-  { 0x1a00, 0x28bf, 0x0000 },
-  { 0x9a00, 0x28d0, 0x5000 },
-  { 0x9a00, 0x28c8, 0x4000 },
-  { 0x9a00, 0x28c4, 0x3000 },
-  { 0x9a00, 0x28c2, 0x2000 },
-  { 0x1a00, 0x28c1, 0x0000 },
-  { 0x1a00, 0x28c3, 0x0000 },
-  { 0x9a00, 0x28c6, 0x2000 },
-  { 0x1a00, 0x28c5, 0x0000 },
-  { 0x1a00, 0x28c7, 0x0000 },
-  { 0x9a00, 0x28cc, 0x3000 },
-  { 0x9a00, 0x28ca, 0x2000 },
-  { 0x1a00, 0x28c9, 0x0000 },
-  { 0x1a00, 0x28cb, 0x0000 },
-  { 0x9a00, 0x28ce, 0x2000 },
-  { 0x1a00, 0x28cd, 0x0000 },
-  { 0x1a00, 0x28cf, 0x0000 },
-  { 0x9a00, 0x28d8, 0x4000 },
-  { 0x9a00, 0x28d4, 0x3000 },
-  { 0x9a00, 0x28d2, 0x2000 },
-  { 0x1a00, 0x28d1, 0x0000 },
-  { 0x1a00, 0x28d3, 0x0000 },
-  { 0x9a00, 0x28d6, 0x2000 },
-  { 0x1a00, 0x28d5, 0x0000 },
-  { 0x1a00, 0x28d7, 0x0000 },
-  { 0x9a00, 0x28dc, 0x3000 },
-  { 0x9a00, 0x28da, 0x2000 },
-  { 0x1a00, 0x28d9, 0x0000 },
-  { 0x1a00, 0x28db, 0x0000 },
-  { 0x9a00, 0x28de, 0x2000 },
-  { 0x1a00, 0x28dd, 0x0000 },
-  { 0x1a00, 0x28df, 0x0000 },
-  { 0x9900, 0x2900, 0x6000 },
-  { 0x9a00, 0x28f0, 0x5000 },
-  { 0x9a00, 0x28e8, 0x4000 },
-  { 0x9a00, 0x28e4, 0x3000 },
-  { 0x9a00, 0x28e2, 0x2000 },
-  { 0x1a00, 0x28e1, 0x0000 },
-  { 0x1a00, 0x28e3, 0x0000 },
-  { 0x9a00, 0x28e6, 0x2000 },
-  { 0x1a00, 0x28e5, 0x0000 },
-  { 0x1a00, 0x28e7, 0x0000 },
-  { 0x9a00, 0x28ec, 0x3000 },
-  { 0x9a00, 0x28ea, 0x2000 },
-  { 0x1a00, 0x28e9, 0x0000 },
-  { 0x1a00, 0x28eb, 0x0000 },
-  { 0x9a00, 0x28ee, 0x2000 },
-  { 0x1a00, 0x28ed, 0x0000 },
-  { 0x1a00, 0x28ef, 0x0000 },
-  { 0x9a00, 0x28f8, 0x4000 },
-  { 0x9a00, 0x28f4, 0x3000 },
-  { 0x9a00, 0x28f2, 0x2000 },
-  { 0x1a00, 0x28f1, 0x0000 },
-  { 0x1a00, 0x28f3, 0x0000 },
-  { 0x9a00, 0x28f6, 0x2000 },
-  { 0x1a00, 0x28f5, 0x0000 },
-  { 0x1a00, 0x28f7, 0x0000 },
-  { 0x9a00, 0x28fc, 0x3000 },
-  { 0x9a00, 0x28fa, 0x2000 },
-  { 0x1a00, 0x28f9, 0x0000 },
-  { 0x1a00, 0x28fb, 0x0000 },
-  { 0x9a00, 0x28fe, 0x2000 },
-  { 0x1a00, 0x28fd, 0x0000 },
-  { 0x1a00, 0x28ff, 0x0000 },
-  { 0x9900, 0x2910, 0x5000 },
-  { 0x9900, 0x2908, 0x4000 },
-  { 0x9900, 0x2904, 0x3000 },
-  { 0x9900, 0x2902, 0x2000 },
-  { 0x1900, 0x2901, 0x0000 },
-  { 0x1900, 0x2903, 0x0000 },
-  { 0x9900, 0x2906, 0x2000 },
-  { 0x1900, 0x2905, 0x0000 },
-  { 0x1900, 0x2907, 0x0000 },
-  { 0x9900, 0x290c, 0x3000 },
-  { 0x9900, 0x290a, 0x2000 },
-  { 0x1900, 0x2909, 0x0000 },
-  { 0x1900, 0x290b, 0x0000 },
-  { 0x9900, 0x290e, 0x2000 },
-  { 0x1900, 0x290d, 0x0000 },
-  { 0x1900, 0x290f, 0x0000 },
-  { 0x9900, 0x2918, 0x4000 },
-  { 0x9900, 0x2914, 0x3000 },
-  { 0x9900, 0x2912, 0x2000 },
-  { 0x1900, 0x2911, 0x0000 },
-  { 0x1900, 0x2913, 0x0000 },
-  { 0x9900, 0x2916, 0x2000 },
-  { 0x1900, 0x2915, 0x0000 },
-  { 0x1900, 0x2917, 0x0000 },
-  { 0x9900, 0x291c, 0x3000 },
-  { 0x9900, 0x291a, 0x2000 },
-  { 0x1900, 0x2919, 0x0000 },
-  { 0x1900, 0x291b, 0x0000 },
-  { 0x9900, 0x291e, 0x2000 },
-  { 0x1900, 0x291d, 0x0000 },
-  { 0x1900, 0x291f, 0x0000 },
-  { 0x9900, 0x2960, 0x7000 },
-  { 0x9900, 0x2940, 0x6000 },
-  { 0x9900, 0x2930, 0x5000 },
-  { 0x9900, 0x2928, 0x4000 },
-  { 0x9900, 0x2924, 0x3000 },
-  { 0x9900, 0x2922, 0x2000 },
-  { 0x1900, 0x2921, 0x0000 },
-  { 0x1900, 0x2923, 0x0000 },
-  { 0x9900, 0x2926, 0x2000 },
-  { 0x1900, 0x2925, 0x0000 },
-  { 0x1900, 0x2927, 0x0000 },
-  { 0x9900, 0x292c, 0x3000 },
-  { 0x9900, 0x292a, 0x2000 },
-  { 0x1900, 0x2929, 0x0000 },
-  { 0x1900, 0x292b, 0x0000 },
-  { 0x9900, 0x292e, 0x2000 },
-  { 0x1900, 0x292d, 0x0000 },
-  { 0x1900, 0x292f, 0x0000 },
-  { 0x9900, 0x2938, 0x4000 },
-  { 0x9900, 0x2934, 0x3000 },
-  { 0x9900, 0x2932, 0x2000 },
-  { 0x1900, 0x2931, 0x0000 },
-  { 0x1900, 0x2933, 0x0000 },
-  { 0x9900, 0x2936, 0x2000 },
-  { 0x1900, 0x2935, 0x0000 },
-  { 0x1900, 0x2937, 0x0000 },
-  { 0x9900, 0x293c, 0x3000 },
-  { 0x9900, 0x293a, 0x2000 },
-  { 0x1900, 0x2939, 0x0000 },
-  { 0x1900, 0x293b, 0x0000 },
-  { 0x9900, 0x293e, 0x2000 },
-  { 0x1900, 0x293d, 0x0000 },
-  { 0x1900, 0x293f, 0x0000 },
-  { 0x9900, 0x2950, 0x5000 },
-  { 0x9900, 0x2948, 0x4000 },
-  { 0x9900, 0x2944, 0x3000 },
-  { 0x9900, 0x2942, 0x2000 },
-  { 0x1900, 0x2941, 0x0000 },
-  { 0x1900, 0x2943, 0x0000 },
-  { 0x9900, 0x2946, 0x2000 },
-  { 0x1900, 0x2945, 0x0000 },
-  { 0x1900, 0x2947, 0x0000 },
-  { 0x9900, 0x294c, 0x3000 },
-  { 0x9900, 0x294a, 0x2000 },
-  { 0x1900, 0x2949, 0x0000 },
-  { 0x1900, 0x294b, 0x0000 },
-  { 0x9900, 0x294e, 0x2000 },
-  { 0x1900, 0x294d, 0x0000 },
-  { 0x1900, 0x294f, 0x0000 },
-  { 0x9900, 0x2958, 0x4000 },
-  { 0x9900, 0x2954, 0x3000 },
-  { 0x9900, 0x2952, 0x2000 },
-  { 0x1900, 0x2951, 0x0000 },
-  { 0x1900, 0x2953, 0x0000 },
-  { 0x9900, 0x2956, 0x2000 },
-  { 0x1900, 0x2955, 0x0000 },
-  { 0x1900, 0x2957, 0x0000 },
-  { 0x9900, 0x295c, 0x3000 },
-  { 0x9900, 0x295a, 0x2000 },
-  { 0x1900, 0x2959, 0x0000 },
-  { 0x1900, 0x295b, 0x0000 },
-  { 0x9900, 0x295e, 0x2000 },
-  { 0x1900, 0x295d, 0x0000 },
-  { 0x1900, 0x295f, 0x0000 },
-  { 0x9900, 0x2980, 0x6000 },
-  { 0x9900, 0x2970, 0x5000 },
-  { 0x9900, 0x2968, 0x4000 },
-  { 0x9900, 0x2964, 0x3000 },
-  { 0x9900, 0x2962, 0x2000 },
-  { 0x1900, 0x2961, 0x0000 },
-  { 0x1900, 0x2963, 0x0000 },
-  { 0x9900, 0x2966, 0x2000 },
-  { 0x1900, 0x2965, 0x0000 },
-  { 0x1900, 0x2967, 0x0000 },
-  { 0x9900, 0x296c, 0x3000 },
-  { 0x9900, 0x296a, 0x2000 },
-  { 0x1900, 0x2969, 0x0000 },
-  { 0x1900, 0x296b, 0x0000 },
-  { 0x9900, 0x296e, 0x2000 },
-  { 0x1900, 0x296d, 0x0000 },
-  { 0x1900, 0x296f, 0x0000 },
-  { 0x9900, 0x2978, 0x4000 },
-  { 0x9900, 0x2974, 0x3000 },
-  { 0x9900, 0x2972, 0x2000 },
-  { 0x1900, 0x2971, 0x0000 },
-  { 0x1900, 0x2973, 0x0000 },
-  { 0x9900, 0x2976, 0x2000 },
-  { 0x1900, 0x2975, 0x0000 },
-  { 0x1900, 0x2977, 0x0000 },
-  { 0x9900, 0x297c, 0x3000 },
-  { 0x9900, 0x297a, 0x2000 },
-  { 0x1900, 0x2979, 0x0000 },
-  { 0x1900, 0x297b, 0x0000 },
-  { 0x9900, 0x297e, 0x2000 },
-  { 0x1900, 0x297d, 0x0000 },
-  { 0x1900, 0x297f, 0x0000 },
-  { 0x9200, 0x2990, 0x5000 },
-  { 0x9200, 0x2988, 0x4000 },
-  { 0x9200, 0x2984, 0x3000 },
-  { 0x9900, 0x2982, 0x2000 },
-  { 0x1900, 0x2981, 0x0000 },
-  { 0x1600, 0x2983, 0x0000 },
-  { 0x9200, 0x2986, 0x2000 },
-  { 0x1600, 0x2985, 0x0000 },
-  { 0x1600, 0x2987, 0x0000 },
-  { 0x9200, 0x298c, 0x3000 },
-  { 0x9200, 0x298a, 0x2000 },
-  { 0x1600, 0x2989, 0x0000 },
-  { 0x1600, 0x298b, 0x0000 },
-  { 0x9200, 0x298e, 0x2000 },
-  { 0x1600, 0x298d, 0x0000 },
-  { 0x1600, 0x298f, 0x0000 },
-  { 0x9200, 0x2998, 0x4000 },
-  { 0x9200, 0x2994, 0x3000 },
-  { 0x9200, 0x2992, 0x2000 },
-  { 0x1600, 0x2991, 0x0000 },
-  { 0x1600, 0x2993, 0x0000 },
-  { 0x9200, 0x2996, 0x2000 },
-  { 0x1600, 0x2995, 0x0000 },
-  { 0x1600, 0x2997, 0x0000 },
-  { 0x9900, 0x299c, 0x3000 },
-  { 0x9900, 0x299a, 0x2000 },
-  { 0x1900, 0x2999, 0x0000 },
-  { 0x1900, 0x299b, 0x0000 },
-  { 0x9900, 0x299e, 0x2000 },
-  { 0x1900, 0x299d, 0x0000 },
-  { 0x1900, 0x299f, 0x0000 },
-  { 0x9900, 0x2aa0, 0x9000 },
-  { 0x9900, 0x2a20, 0x8000 },
-  { 0x9900, 0x29e0, 0x7000 },
-  { 0x9900, 0x29c0, 0x6000 },
-  { 0x9900, 0x29b0, 0x5000 },
-  { 0x9900, 0x29a8, 0x4000 },
-  { 0x9900, 0x29a4, 0x3000 },
-  { 0x9900, 0x29a2, 0x2000 },
-  { 0x1900, 0x29a1, 0x0000 },
-  { 0x1900, 0x29a3, 0x0000 },
-  { 0x9900, 0x29a6, 0x2000 },
-  { 0x1900, 0x29a5, 0x0000 },
-  { 0x1900, 0x29a7, 0x0000 },
-  { 0x9900, 0x29ac, 0x3000 },
-  { 0x9900, 0x29aa, 0x2000 },
-  { 0x1900, 0x29a9, 0x0000 },
-  { 0x1900, 0x29ab, 0x0000 },
-  { 0x9900, 0x29ae, 0x2000 },
-  { 0x1900, 0x29ad, 0x0000 },
-  { 0x1900, 0x29af, 0x0000 },
-  { 0x9900, 0x29b8, 0x4000 },
-  { 0x9900, 0x29b4, 0x3000 },
-  { 0x9900, 0x29b2, 0x2000 },
-  { 0x1900, 0x29b1, 0x0000 },
-  { 0x1900, 0x29b3, 0x0000 },
-  { 0x9900, 0x29b6, 0x2000 },
-  { 0x1900, 0x29b5, 0x0000 },
-  { 0x1900, 0x29b7, 0x0000 },
-  { 0x9900, 0x29bc, 0x3000 },
-  { 0x9900, 0x29ba, 0x2000 },
-  { 0x1900, 0x29b9, 0x0000 },
-  { 0x1900, 0x29bb, 0x0000 },
-  { 0x9900, 0x29be, 0x2000 },
-  { 0x1900, 0x29bd, 0x0000 },
-  { 0x1900, 0x29bf, 0x0000 },
-  { 0x9900, 0x29d0, 0x5000 },
-  { 0x9900, 0x29c8, 0x4000 },
-  { 0x9900, 0x29c4, 0x3000 },
-  { 0x9900, 0x29c2, 0x2000 },
-  { 0x1900, 0x29c1, 0x0000 },
-  { 0x1900, 0x29c3, 0x0000 },
-  { 0x9900, 0x29c6, 0x2000 },
-  { 0x1900, 0x29c5, 0x0000 },
-  { 0x1900, 0x29c7, 0x0000 },
-  { 0x9900, 0x29cc, 0x3000 },
-  { 0x9900, 0x29ca, 0x2000 },
-  { 0x1900, 0x29c9, 0x0000 },
-  { 0x1900, 0x29cb, 0x0000 },
-  { 0x9900, 0x29ce, 0x2000 },
-  { 0x1900, 0x29cd, 0x0000 },
-  { 0x1900, 0x29cf, 0x0000 },
-  { 0x9600, 0x29d8, 0x4000 },
-  { 0x9900, 0x29d4, 0x3000 },
-  { 0x9900, 0x29d2, 0x2000 },
-  { 0x1900, 0x29d1, 0x0000 },
-  { 0x1900, 0x29d3, 0x0000 },
-  { 0x9900, 0x29d6, 0x2000 },
-  { 0x1900, 0x29d5, 0x0000 },
-  { 0x1900, 0x29d7, 0x0000 },
-  { 0x9900, 0x29dc, 0x3000 },
-  { 0x9600, 0x29da, 0x2000 },
-  { 0x1200, 0x29d9, 0x0000 },
-  { 0x1200, 0x29db, 0x0000 },
-  { 0x9900, 0x29de, 0x2000 },
-  { 0x1900, 0x29dd, 0x0000 },
-  { 0x1900, 0x29df, 0x0000 },
-  { 0x9900, 0x2a00, 0x6000 },
-  { 0x9900, 0x29f0, 0x5000 },
-  { 0x9900, 0x29e8, 0x4000 },
-  { 0x9900, 0x29e4, 0x3000 },
-  { 0x9900, 0x29e2, 0x2000 },
-  { 0x1900, 0x29e1, 0x0000 },
-  { 0x1900, 0x29e3, 0x0000 },
-  { 0x9900, 0x29e6, 0x2000 },
-  { 0x1900, 0x29e5, 0x0000 },
-  { 0x1900, 0x29e7, 0x0000 },
-  { 0x9900, 0x29ec, 0x3000 },
-  { 0x9900, 0x29ea, 0x2000 },
-  { 0x1900, 0x29e9, 0x0000 },
-  { 0x1900, 0x29eb, 0x0000 },
-  { 0x9900, 0x29ee, 0x2000 },
-  { 0x1900, 0x29ed, 0x0000 },
-  { 0x1900, 0x29ef, 0x0000 },
-  { 0x9900, 0x29f8, 0x4000 },
-  { 0x9900, 0x29f4, 0x3000 },
-  { 0x9900, 0x29f2, 0x2000 },
-  { 0x1900, 0x29f1, 0x0000 },
-  { 0x1900, 0x29f3, 0x0000 },
-  { 0x9900, 0x29f6, 0x2000 },
-  { 0x1900, 0x29f5, 0x0000 },
-  { 0x1900, 0x29f7, 0x0000 },
-  { 0x9600, 0x29fc, 0x3000 },
-  { 0x9900, 0x29fa, 0x2000 },
-  { 0x1900, 0x29f9, 0x0000 },
-  { 0x1900, 0x29fb, 0x0000 },
-  { 0x9900, 0x29fe, 0x2000 },
-  { 0x1200, 0x29fd, 0x0000 },
-  { 0x1900, 0x29ff, 0x0000 },
-  { 0x9900, 0x2a10, 0x5000 },
-  { 0x9900, 0x2a08, 0x4000 },
-  { 0x9900, 0x2a04, 0x3000 },
-  { 0x9900, 0x2a02, 0x2000 },
-  { 0x1900, 0x2a01, 0x0000 },
-  { 0x1900, 0x2a03, 0x0000 },
-  { 0x9900, 0x2a06, 0x2000 },
-  { 0x1900, 0x2a05, 0x0000 },
-  { 0x1900, 0x2a07, 0x0000 },
-  { 0x9900, 0x2a0c, 0x3000 },
-  { 0x9900, 0x2a0a, 0x2000 },
-  { 0x1900, 0x2a09, 0x0000 },
-  { 0x1900, 0x2a0b, 0x0000 },
-  { 0x9900, 0x2a0e, 0x2000 },
-  { 0x1900, 0x2a0d, 0x0000 },
-  { 0x1900, 0x2a0f, 0x0000 },
-  { 0x9900, 0x2a18, 0x4000 },
-  { 0x9900, 0x2a14, 0x3000 },
-  { 0x9900, 0x2a12, 0x2000 },
-  { 0x1900, 0x2a11, 0x0000 },
-  { 0x1900, 0x2a13, 0x0000 },
-  { 0x9900, 0x2a16, 0x2000 },
-  { 0x1900, 0x2a15, 0x0000 },
-  { 0x1900, 0x2a17, 0x0000 },
-  { 0x9900, 0x2a1c, 0x3000 },
-  { 0x9900, 0x2a1a, 0x2000 },
-  { 0x1900, 0x2a19, 0x0000 },
-  { 0x1900, 0x2a1b, 0x0000 },
-  { 0x9900, 0x2a1e, 0x2000 },
-  { 0x1900, 0x2a1d, 0x0000 },
-  { 0x1900, 0x2a1f, 0x0000 },
-  { 0x9900, 0x2a60, 0x7000 },
-  { 0x9900, 0x2a40, 0x6000 },
-  { 0x9900, 0x2a30, 0x5000 },
-  { 0x9900, 0x2a28, 0x4000 },
-  { 0x9900, 0x2a24, 0x3000 },
-  { 0x9900, 0x2a22, 0x2000 },
-  { 0x1900, 0x2a21, 0x0000 },
-  { 0x1900, 0x2a23, 0x0000 },
-  { 0x9900, 0x2a26, 0x2000 },
-  { 0x1900, 0x2a25, 0x0000 },
-  { 0x1900, 0x2a27, 0x0000 },
-  { 0x9900, 0x2a2c, 0x3000 },
-  { 0x9900, 0x2a2a, 0x2000 },
-  { 0x1900, 0x2a29, 0x0000 },
-  { 0x1900, 0x2a2b, 0x0000 },
-  { 0x9900, 0x2a2e, 0x2000 },
-  { 0x1900, 0x2a2d, 0x0000 },
-  { 0x1900, 0x2a2f, 0x0000 },
-  { 0x9900, 0x2a38, 0x4000 },
-  { 0x9900, 0x2a34, 0x3000 },
-  { 0x9900, 0x2a32, 0x2000 },
-  { 0x1900, 0x2a31, 0x0000 },
-  { 0x1900, 0x2a33, 0x0000 },
-  { 0x9900, 0x2a36, 0x2000 },
-  { 0x1900, 0x2a35, 0x0000 },
-  { 0x1900, 0x2a37, 0x0000 },
-  { 0x9900, 0x2a3c, 0x3000 },
-  { 0x9900, 0x2a3a, 0x2000 },
-  { 0x1900, 0x2a39, 0x0000 },
-  { 0x1900, 0x2a3b, 0x0000 },
-  { 0x9900, 0x2a3e, 0x2000 },
-  { 0x1900, 0x2a3d, 0x0000 },
-  { 0x1900, 0x2a3f, 0x0000 },
-  { 0x9900, 0x2a50, 0x5000 },
-  { 0x9900, 0x2a48, 0x4000 },
-  { 0x9900, 0x2a44, 0x3000 },
-  { 0x9900, 0x2a42, 0x2000 },
-  { 0x1900, 0x2a41, 0x0000 },
-  { 0x1900, 0x2a43, 0x0000 },
-  { 0x9900, 0x2a46, 0x2000 },
-  { 0x1900, 0x2a45, 0x0000 },
-  { 0x1900, 0x2a47, 0x0000 },
-  { 0x9900, 0x2a4c, 0x3000 },
-  { 0x9900, 0x2a4a, 0x2000 },
-  { 0x1900, 0x2a49, 0x0000 },
-  { 0x1900, 0x2a4b, 0x0000 },
-  { 0x9900, 0x2a4e, 0x2000 },
-  { 0x1900, 0x2a4d, 0x0000 },
-  { 0x1900, 0x2a4f, 0x0000 },
-  { 0x9900, 0x2a58, 0x4000 },
-  { 0x9900, 0x2a54, 0x3000 },
-  { 0x9900, 0x2a52, 0x2000 },
-  { 0x1900, 0x2a51, 0x0000 },
-  { 0x1900, 0x2a53, 0x0000 },
-  { 0x9900, 0x2a56, 0x2000 },
-  { 0x1900, 0x2a55, 0x0000 },
-  { 0x1900, 0x2a57, 0x0000 },
-  { 0x9900, 0x2a5c, 0x3000 },
-  { 0x9900, 0x2a5a, 0x2000 },
-  { 0x1900, 0x2a59, 0x0000 },
-  { 0x1900, 0x2a5b, 0x0000 },
-  { 0x9900, 0x2a5e, 0x2000 },
-  { 0x1900, 0x2a5d, 0x0000 },
-  { 0x1900, 0x2a5f, 0x0000 },
-  { 0x9900, 0x2a80, 0x6000 },
-  { 0x9900, 0x2a70, 0x5000 },
-  { 0x9900, 0x2a68, 0x4000 },
-  { 0x9900, 0x2a64, 0x3000 },
-  { 0x9900, 0x2a62, 0x2000 },
-  { 0x1900, 0x2a61, 0x0000 },
-  { 0x1900, 0x2a63, 0x0000 },
-  { 0x9900, 0x2a66, 0x2000 },
-  { 0x1900, 0x2a65, 0x0000 },
-  { 0x1900, 0x2a67, 0x0000 },
-  { 0x9900, 0x2a6c, 0x3000 },
-  { 0x9900, 0x2a6a, 0x2000 },
-  { 0x1900, 0x2a69, 0x0000 },
-  { 0x1900, 0x2a6b, 0x0000 },
-  { 0x9900, 0x2a6e, 0x2000 },
-  { 0x1900, 0x2a6d, 0x0000 },
-  { 0x1900, 0x2a6f, 0x0000 },
-  { 0x9900, 0x2a78, 0x4000 },
-  { 0x9900, 0x2a74, 0x3000 },
-  { 0x9900, 0x2a72, 0x2000 },
-  { 0x1900, 0x2a71, 0x0000 },
-  { 0x1900, 0x2a73, 0x0000 },
-  { 0x9900, 0x2a76, 0x2000 },
-  { 0x1900, 0x2a75, 0x0000 },
-  { 0x1900, 0x2a77, 0x0000 },
-  { 0x9900, 0x2a7c, 0x3000 },
-  { 0x9900, 0x2a7a, 0x2000 },
-  { 0x1900, 0x2a79, 0x0000 },
-  { 0x1900, 0x2a7b, 0x0000 },
-  { 0x9900, 0x2a7e, 0x2000 },
-  { 0x1900, 0x2a7d, 0x0000 },
-  { 0x1900, 0x2a7f, 0x0000 },
-  { 0x9900, 0x2a90, 0x5000 },
-  { 0x9900, 0x2a88, 0x4000 },
-  { 0x9900, 0x2a84, 0x3000 },
-  { 0x9900, 0x2a82, 0x2000 },
-  { 0x1900, 0x2a81, 0x0000 },
-  { 0x1900, 0x2a83, 0x0000 },
-  { 0x9900, 0x2a86, 0x2000 },
-  { 0x1900, 0x2a85, 0x0000 },
-  { 0x1900, 0x2a87, 0x0000 },
-  { 0x9900, 0x2a8c, 0x3000 },
-  { 0x9900, 0x2a8a, 0x2000 },
-  { 0x1900, 0x2a89, 0x0000 },
-  { 0x1900, 0x2a8b, 0x0000 },
-  { 0x9900, 0x2a8e, 0x2000 },
-  { 0x1900, 0x2a8d, 0x0000 },
-  { 0x1900, 0x2a8f, 0x0000 },
-  { 0x9900, 0x2a98, 0x4000 },
-  { 0x9900, 0x2a94, 0x3000 },
-  { 0x9900, 0x2a92, 0x2000 },
-  { 0x1900, 0x2a91, 0x0000 },
-  { 0x1900, 0x2a93, 0x0000 },
-  { 0x9900, 0x2a96, 0x2000 },
-  { 0x1900, 0x2a95, 0x0000 },
-  { 0x1900, 0x2a97, 0x0000 },
-  { 0x9900, 0x2a9c, 0x3000 },
-  { 0x9900, 0x2a9a, 0x2000 },
-  { 0x1900, 0x2a99, 0x0000 },
-  { 0x1900, 0x2a9b, 0x0000 },
-  { 0x9900, 0x2a9e, 0x2000 },
-  { 0x1900, 0x2a9d, 0x0000 },
-  { 0x1900, 0x2a9f, 0x0000 },
-  { 0x9a00, 0x2e92, 0x8000 },
-  { 0x9900, 0x2ae0, 0x7000 },
-  { 0x9900, 0x2ac0, 0x6000 },
-  { 0x9900, 0x2ab0, 0x5000 },
-  { 0x9900, 0x2aa8, 0x4000 },
-  { 0x9900, 0x2aa4, 0x3000 },
-  { 0x9900, 0x2aa2, 0x2000 },
-  { 0x1900, 0x2aa1, 0x0000 },
-  { 0x1900, 0x2aa3, 0x0000 },
-  { 0x9900, 0x2aa6, 0x2000 },
-  { 0x1900, 0x2aa5, 0x0000 },
-  { 0x1900, 0x2aa7, 0x0000 },
-  { 0x9900, 0x2aac, 0x3000 },
-  { 0x9900, 0x2aaa, 0x2000 },
-  { 0x1900, 0x2aa9, 0x0000 },
-  { 0x1900, 0x2aab, 0x0000 },
-  { 0x9900, 0x2aae, 0x2000 },
-  { 0x1900, 0x2aad, 0x0000 },
-  { 0x1900, 0x2aaf, 0x0000 },
-  { 0x9900, 0x2ab8, 0x4000 },
-  { 0x9900, 0x2ab4, 0x3000 },
-  { 0x9900, 0x2ab2, 0x2000 },
-  { 0x1900, 0x2ab1, 0x0000 },
-  { 0x1900, 0x2ab3, 0x0000 },
-  { 0x9900, 0x2ab6, 0x2000 },
-  { 0x1900, 0x2ab5, 0x0000 },
-  { 0x1900, 0x2ab7, 0x0000 },
-  { 0x9900, 0x2abc, 0x3000 },
-  { 0x9900, 0x2aba, 0x2000 },
-  { 0x1900, 0x2ab9, 0x0000 },
-  { 0x1900, 0x2abb, 0x0000 },
-  { 0x9900, 0x2abe, 0x2000 },
-  { 0x1900, 0x2abd, 0x0000 },
-  { 0x1900, 0x2abf, 0x0000 },
-  { 0x9900, 0x2ad0, 0x5000 },
-  { 0x9900, 0x2ac8, 0x4000 },
-  { 0x9900, 0x2ac4, 0x3000 },
-  { 0x9900, 0x2ac2, 0x2000 },
-  { 0x1900, 0x2ac1, 0x0000 },
-  { 0x1900, 0x2ac3, 0x0000 },
-  { 0x9900, 0x2ac6, 0x2000 },
-  { 0x1900, 0x2ac5, 0x0000 },
-  { 0x1900, 0x2ac7, 0x0000 },
-  { 0x9900, 0x2acc, 0x3000 },
-  { 0x9900, 0x2aca, 0x2000 },
-  { 0x1900, 0x2ac9, 0x0000 },
-  { 0x1900, 0x2acb, 0x0000 },
-  { 0x9900, 0x2ace, 0x2000 },
-  { 0x1900, 0x2acd, 0x0000 },
-  { 0x1900, 0x2acf, 0x0000 },
-  { 0x9900, 0x2ad8, 0x4000 },
-  { 0x9900, 0x2ad4, 0x3000 },
-  { 0x9900, 0x2ad2, 0x2000 },
-  { 0x1900, 0x2ad1, 0x0000 },
-  { 0x1900, 0x2ad3, 0x0000 },
-  { 0x9900, 0x2ad6, 0x2000 },
-  { 0x1900, 0x2ad5, 0x0000 },
-  { 0x1900, 0x2ad7, 0x0000 },
-  { 0x9900, 0x2adc, 0x3000 },
-  { 0x9900, 0x2ada, 0x2000 },
-  { 0x1900, 0x2ad9, 0x0000 },
-  { 0x1900, 0x2adb, 0x0000 },
-  { 0x9900, 0x2ade, 0x2000 },
-  { 0x1900, 0x2add, 0x0000 },
-  { 0x1900, 0x2adf, 0x0000 },
-  { 0x9a00, 0x2b00, 0x6000 },
-  { 0x9900, 0x2af0, 0x5000 },
-  { 0x9900, 0x2ae8, 0x4000 },
-  { 0x9900, 0x2ae4, 0x3000 },
-  { 0x9900, 0x2ae2, 0x2000 },
-  { 0x1900, 0x2ae1, 0x0000 },
-  { 0x1900, 0x2ae3, 0x0000 },
-  { 0x9900, 0x2ae6, 0x2000 },
-  { 0x1900, 0x2ae5, 0x0000 },
-  { 0x1900, 0x2ae7, 0x0000 },
-  { 0x9900, 0x2aec, 0x3000 },
-  { 0x9900, 0x2aea, 0x2000 },
-  { 0x1900, 0x2ae9, 0x0000 },
-  { 0x1900, 0x2aeb, 0x0000 },
-  { 0x9900, 0x2aee, 0x2000 },
-  { 0x1900, 0x2aed, 0x0000 },
-  { 0x1900, 0x2aef, 0x0000 },
-  { 0x9900, 0x2af8, 0x4000 },
-  { 0x9900, 0x2af4, 0x3000 },
-  { 0x9900, 0x2af2, 0x2000 },
-  { 0x1900, 0x2af1, 0x0000 },
-  { 0x1900, 0x2af3, 0x0000 },
-  { 0x9900, 0x2af6, 0x2000 },
-  { 0x1900, 0x2af5, 0x0000 },
-  { 0x1900, 0x2af7, 0x0000 },
-  { 0x9900, 0x2afc, 0x3000 },
-  { 0x9900, 0x2afa, 0x2000 },
-  { 0x1900, 0x2af9, 0x0000 },
-  { 0x1900, 0x2afb, 0x0000 },
-  { 0x9900, 0x2afe, 0x2000 },
-  { 0x1900, 0x2afd, 0x0000 },
-  { 0x1900, 0x2aff, 0x0000 },
-  { 0x9a00, 0x2e82, 0x5000 },
-  { 0x9a00, 0x2b08, 0x4000 },
-  { 0x9a00, 0x2b04, 0x3000 },
-  { 0x9a00, 0x2b02, 0x2000 },
-  { 0x1a00, 0x2b01, 0x0000 },
-  { 0x1a00, 0x2b03, 0x0000 },
-  { 0x9a00, 0x2b06, 0x2000 },
-  { 0x1a00, 0x2b05, 0x0000 },
-  { 0x1a00, 0x2b07, 0x0000 },
-  { 0x9a00, 0x2b0c, 0x3000 },
-  { 0x9a00, 0x2b0a, 0x2000 },
-  { 0x1a00, 0x2b09, 0x0000 },
-  { 0x1a00, 0x2b0b, 0x0000 },
-  { 0x9a00, 0x2e80, 0x2000 },
-  { 0x1a00, 0x2b0d, 0x0000 },
-  { 0x1a00, 0x2e81, 0x0000 },
-  { 0x9a00, 0x2e8a, 0x4000 },
-  { 0x9a00, 0x2e86, 0x3000 },
-  { 0x9a00, 0x2e84, 0x2000 },
-  { 0x1a00, 0x2e83, 0x0000 },
-  { 0x1a00, 0x2e85, 0x0000 },
-  { 0x9a00, 0x2e88, 0x2000 },
-  { 0x1a00, 0x2e87, 0x0000 },
-  { 0x1a00, 0x2e89, 0x0000 },
-  { 0x9a00, 0x2e8e, 0x3000 },
-  { 0x9a00, 0x2e8c, 0x2000 },
-  { 0x1a00, 0x2e8b, 0x0000 },
-  { 0x1a00, 0x2e8d, 0x0000 },
-  { 0x9a00, 0x2e90, 0x2000 },
-  { 0x1a00, 0x2e8f, 0x0000 },
-  { 0x1a00, 0x2e91, 0x0000 },
-  { 0x9a00, 0x2ed3, 0x7000 },
-  { 0x9a00, 0x2eb3, 0x6000 },
-  { 0x9a00, 0x2ea3, 0x5000 },
-  { 0x9a00, 0x2e9b, 0x4000 },
-  { 0x9a00, 0x2e96, 0x3000 },
-  { 0x9a00, 0x2e94, 0x2000 },
-  { 0x1a00, 0x2e93, 0x0000 },
-  { 0x1a00, 0x2e95, 0x0000 },
-  { 0x9a00, 0x2e98, 0x2000 },
-  { 0x1a00, 0x2e97, 0x0000 },
-  { 0x1a00, 0x2e99, 0x0000 },
-  { 0x9a00, 0x2e9f, 0x3000 },
-  { 0x9a00, 0x2e9d, 0x2000 },
-  { 0x1a00, 0x2e9c, 0x0000 },
-  { 0x1a00, 0x2e9e, 0x0000 },
-  { 0x9a00, 0x2ea1, 0x2000 },
-  { 0x1a00, 0x2ea0, 0x0000 },
-  { 0x1a00, 0x2ea2, 0x0000 },
-  { 0x9a00, 0x2eab, 0x4000 },
-  { 0x9a00, 0x2ea7, 0x3000 },
-  { 0x9a00, 0x2ea5, 0x2000 },
-  { 0x1a00, 0x2ea4, 0x0000 },
-  { 0x1a00, 0x2ea6, 0x0000 },
-  { 0x9a00, 0x2ea9, 0x2000 },
-  { 0x1a00, 0x2ea8, 0x0000 },
-  { 0x1a00, 0x2eaa, 0x0000 },
-  { 0x9a00, 0x2eaf, 0x3000 },
-  { 0x9a00, 0x2ead, 0x2000 },
-  { 0x1a00, 0x2eac, 0x0000 },
-  { 0x1a00, 0x2eae, 0x0000 },
-  { 0x9a00, 0x2eb1, 0x2000 },
-  { 0x1a00, 0x2eb0, 0x0000 },
-  { 0x1a00, 0x2eb2, 0x0000 },
-  { 0x9a00, 0x2ec3, 0x5000 },
-  { 0x9a00, 0x2ebb, 0x4000 },
-  { 0x9a00, 0x2eb7, 0x3000 },
-  { 0x9a00, 0x2eb5, 0x2000 },
-  { 0x1a00, 0x2eb4, 0x0000 },
-  { 0x1a00, 0x2eb6, 0x0000 },
-  { 0x9a00, 0x2eb9, 0x2000 },
-  { 0x1a00, 0x2eb8, 0x0000 },
-  { 0x1a00, 0x2eba, 0x0000 },
-  { 0x9a00, 0x2ebf, 0x3000 },
-  { 0x9a00, 0x2ebd, 0x2000 },
-  { 0x1a00, 0x2ebc, 0x0000 },
-  { 0x1a00, 0x2ebe, 0x0000 },
-  { 0x9a00, 0x2ec1, 0x2000 },
-  { 0x1a00, 0x2ec0, 0x0000 },
-  { 0x1a00, 0x2ec2, 0x0000 },
-  { 0x9a00, 0x2ecb, 0x4000 },
-  { 0x9a00, 0x2ec7, 0x3000 },
-  { 0x9a00, 0x2ec5, 0x2000 },
-  { 0x1a00, 0x2ec4, 0x0000 },
-  { 0x1a00, 0x2ec6, 0x0000 },
-  { 0x9a00, 0x2ec9, 0x2000 },
-  { 0x1a00, 0x2ec8, 0x0000 },
-  { 0x1a00, 0x2eca, 0x0000 },
-  { 0x9a00, 0x2ecf, 0x3000 },
-  { 0x9a00, 0x2ecd, 0x2000 },
-  { 0x1a00, 0x2ecc, 0x0000 },
-  { 0x1a00, 0x2ece, 0x0000 },
-  { 0x9a00, 0x2ed1, 0x2000 },
-  { 0x1a00, 0x2ed0, 0x0000 },
-  { 0x1a00, 0x2ed2, 0x0000 },
-  { 0x9a00, 0x2ef3, 0x6000 },
-  { 0x9a00, 0x2ee3, 0x5000 },
-  { 0x9a00, 0x2edb, 0x4000 },
-  { 0x9a00, 0x2ed7, 0x3000 },
-  { 0x9a00, 0x2ed5, 0x2000 },
-  { 0x1a00, 0x2ed4, 0x0000 },
-  { 0x1a00, 0x2ed6, 0x0000 },
-  { 0x9a00, 0x2ed9, 0x2000 },
-  { 0x1a00, 0x2ed8, 0x0000 },
-  { 0x1a00, 0x2eda, 0x0000 },
-  { 0x9a00, 0x2edf, 0x3000 },
-  { 0x9a00, 0x2edd, 0x2000 },
-  { 0x1a00, 0x2edc, 0x0000 },
-  { 0x1a00, 0x2ede, 0x0000 },
-  { 0x9a00, 0x2ee1, 0x2000 },
-  { 0x1a00, 0x2ee0, 0x0000 },
-  { 0x1a00, 0x2ee2, 0x0000 },
-  { 0x9a00, 0x2eeb, 0x4000 },
-  { 0x9a00, 0x2ee7, 0x3000 },
-  { 0x9a00, 0x2ee5, 0x2000 },
-  { 0x1a00, 0x2ee4, 0x0000 },
-  { 0x1a00, 0x2ee6, 0x0000 },
-  { 0x9a00, 0x2ee9, 0x2000 },
-  { 0x1a00, 0x2ee8, 0x0000 },
-  { 0x1a00, 0x2eea, 0x0000 },
-  { 0x9a00, 0x2eef, 0x3000 },
-  { 0x9a00, 0x2eed, 0x2000 },
-  { 0x1a00, 0x2eec, 0x0000 },
-  { 0x1a00, 0x2eee, 0x0000 },
-  { 0x9a00, 0x2ef1, 0x2000 },
-  { 0x1a00, 0x2ef0, 0x0000 },
-  { 0x1a00, 0x2ef2, 0x0000 },
-  { 0x9a00, 0x2f0f, 0x5000 },
-  { 0x9a00, 0x2f07, 0x4000 },
-  { 0x9a00, 0x2f03, 0x3000 },
-  { 0x9a00, 0x2f01, 0x2000 },
-  { 0x1a00, 0x2f00, 0x0000 },
-  { 0x1a00, 0x2f02, 0x0000 },
-  { 0x9a00, 0x2f05, 0x2000 },
-  { 0x1a00, 0x2f04, 0x0000 },
-  { 0x1a00, 0x2f06, 0x0000 },
-  { 0x9a00, 0x2f0b, 0x3000 },
-  { 0x9a00, 0x2f09, 0x2000 },
-  { 0x1a00, 0x2f08, 0x0000 },
-  { 0x1a00, 0x2f0a, 0x0000 },
-  { 0x9a00, 0x2f0d, 0x2000 },
-  { 0x1a00, 0x2f0c, 0x0000 },
-  { 0x1a00, 0x2f0e, 0x0000 },
-  { 0x9a00, 0x2f17, 0x4000 },
-  { 0x9a00, 0x2f13, 0x3000 },
-  { 0x9a00, 0x2f11, 0x2000 },
-  { 0x1a00, 0x2f10, 0x0000 },
-  { 0x1a00, 0x2f12, 0x0000 },
-  { 0x9a00, 0x2f15, 0x2000 },
-  { 0x1a00, 0x2f14, 0x0000 },
-  { 0x1a00, 0x2f16, 0x0000 },
-  { 0x9a00, 0x2f1b, 0x3000 },
-  { 0x9a00, 0x2f19, 0x2000 },
-  { 0x1a00, 0x2f18, 0x0000 },
-  { 0x1a00, 0x2f1a, 0x0000 },
-  { 0x9a00, 0x2f1d, 0x2000 },
-  { 0x1a00, 0x2f1c, 0x0000 },
-  { 0x1a00, 0x2f1e, 0x0000 },
-  { 0x8701, 0x00f0, 0xd000 },
-  { 0x8700, 0xa34d, 0xc000 },
-  { 0x9a00, 0x3391, 0xb000 },
-  { 0x8700, 0x3149, 0xa000 },
-  { 0x9500, 0x303d, 0x9000 },
-  { 0x9a00, 0x2f9f, 0x8000 },
-  { 0x9a00, 0x2f5f, 0x7000 },
-  { 0x9a00, 0x2f3f, 0x6000 },
-  { 0x9a00, 0x2f2f, 0x5000 },
-  { 0x9a00, 0x2f27, 0x4000 },
-  { 0x9a00, 0x2f23, 0x3000 },
-  { 0x9a00, 0x2f21, 0x2000 },
-  { 0x1a00, 0x2f20, 0x0000 },
-  { 0x1a00, 0x2f22, 0x0000 },
-  { 0x9a00, 0x2f25, 0x2000 },
-  { 0x1a00, 0x2f24, 0x0000 },
-  { 0x1a00, 0x2f26, 0x0000 },
-  { 0x9a00, 0x2f2b, 0x3000 },
-  { 0x9a00, 0x2f29, 0x2000 },
-  { 0x1a00, 0x2f28, 0x0000 },
-  { 0x1a00, 0x2f2a, 0x0000 },
-  { 0x9a00, 0x2f2d, 0x2000 },
-  { 0x1a00, 0x2f2c, 0x0000 },
-  { 0x1a00, 0x2f2e, 0x0000 },
-  { 0x9a00, 0x2f37, 0x4000 },
-  { 0x9a00, 0x2f33, 0x3000 },
-  { 0x9a00, 0x2f31, 0x2000 },
-  { 0x1a00, 0x2f30, 0x0000 },
-  { 0x1a00, 0x2f32, 0x0000 },
-  { 0x9a00, 0x2f35, 0x2000 },
-  { 0x1a00, 0x2f34, 0x0000 },
-  { 0x1a00, 0x2f36, 0x0000 },
-  { 0x9a00, 0x2f3b, 0x3000 },
-  { 0x9a00, 0x2f39, 0x2000 },
-  { 0x1a00, 0x2f38, 0x0000 },
-  { 0x1a00, 0x2f3a, 0x0000 },
-  { 0x9a00, 0x2f3d, 0x2000 },
-  { 0x1a00, 0x2f3c, 0x0000 },
-  { 0x1a00, 0x2f3e, 0x0000 },
-  { 0x9a00, 0x2f4f, 0x5000 },
-  { 0x9a00, 0x2f47, 0x4000 },
-  { 0x9a00, 0x2f43, 0x3000 },
-  { 0x9a00, 0x2f41, 0x2000 },
-  { 0x1a00, 0x2f40, 0x0000 },
-  { 0x1a00, 0x2f42, 0x0000 },
-  { 0x9a00, 0x2f45, 0x2000 },
-  { 0x1a00, 0x2f44, 0x0000 },
-  { 0x1a00, 0x2f46, 0x0000 },
-  { 0x9a00, 0x2f4b, 0x3000 },
-  { 0x9a00, 0x2f49, 0x2000 },
-  { 0x1a00, 0x2f48, 0x0000 },
-  { 0x1a00, 0x2f4a, 0x0000 },
-  { 0x9a00, 0x2f4d, 0x2000 },
-  { 0x1a00, 0x2f4c, 0x0000 },
-  { 0x1a00, 0x2f4e, 0x0000 },
-  { 0x9a00, 0x2f57, 0x4000 },
-  { 0x9a00, 0x2f53, 0x3000 },
-  { 0x9a00, 0x2f51, 0x2000 },
-  { 0x1a00, 0x2f50, 0x0000 },
-  { 0x1a00, 0x2f52, 0x0000 },
-  { 0x9a00, 0x2f55, 0x2000 },
-  { 0x1a00, 0x2f54, 0x0000 },
-  { 0x1a00, 0x2f56, 0x0000 },
-  { 0x9a00, 0x2f5b, 0x3000 },
-  { 0x9a00, 0x2f59, 0x2000 },
-  { 0x1a00, 0x2f58, 0x0000 },
-  { 0x1a00, 0x2f5a, 0x0000 },
-  { 0x9a00, 0x2f5d, 0x2000 },
-  { 0x1a00, 0x2f5c, 0x0000 },
-  { 0x1a00, 0x2f5e, 0x0000 },
-  { 0x9a00, 0x2f7f, 0x6000 },
-  { 0x9a00, 0x2f6f, 0x5000 },
-  { 0x9a00, 0x2f67, 0x4000 },
-  { 0x9a00, 0x2f63, 0x3000 },
-  { 0x9a00, 0x2f61, 0x2000 },
-  { 0x1a00, 0x2f60, 0x0000 },
-  { 0x1a00, 0x2f62, 0x0000 },
-  { 0x9a00, 0x2f65, 0x2000 },
-  { 0x1a00, 0x2f64, 0x0000 },
-  { 0x1a00, 0x2f66, 0x0000 },
-  { 0x9a00, 0x2f6b, 0x3000 },
-  { 0x9a00, 0x2f69, 0x2000 },
-  { 0x1a00, 0x2f68, 0x0000 },
-  { 0x1a00, 0x2f6a, 0x0000 },
-  { 0x9a00, 0x2f6d, 0x2000 },
-  { 0x1a00, 0x2f6c, 0x0000 },
-  { 0x1a00, 0x2f6e, 0x0000 },
-  { 0x9a00, 0x2f77, 0x4000 },
-  { 0x9a00, 0x2f73, 0x3000 },
-  { 0x9a00, 0x2f71, 0x2000 },
-  { 0x1a00, 0x2f70, 0x0000 },
-  { 0x1a00, 0x2f72, 0x0000 },
-  { 0x9a00, 0x2f75, 0x2000 },
-  { 0x1a00, 0x2f74, 0x0000 },
-  { 0x1a00, 0x2f76, 0x0000 },
-  { 0x9a00, 0x2f7b, 0x3000 },
-  { 0x9a00, 0x2f79, 0x2000 },
-  { 0x1a00, 0x2f78, 0x0000 },
-  { 0x1a00, 0x2f7a, 0x0000 },
-  { 0x9a00, 0x2f7d, 0x2000 },
-  { 0x1a00, 0x2f7c, 0x0000 },
-  { 0x1a00, 0x2f7e, 0x0000 },
-  { 0x9a00, 0x2f8f, 0x5000 },
-  { 0x9a00, 0x2f87, 0x4000 },
-  { 0x9a00, 0x2f83, 0x3000 },
-  { 0x9a00, 0x2f81, 0x2000 },
-  { 0x1a00, 0x2f80, 0x0000 },
-  { 0x1a00, 0x2f82, 0x0000 },
-  { 0x9a00, 0x2f85, 0x2000 },
-  { 0x1a00, 0x2f84, 0x0000 },
-  { 0x1a00, 0x2f86, 0x0000 },
-  { 0x9a00, 0x2f8b, 0x3000 },
-  { 0x9a00, 0x2f89, 0x2000 },
-  { 0x1a00, 0x2f88, 0x0000 },
-  { 0x1a00, 0x2f8a, 0x0000 },
-  { 0x9a00, 0x2f8d, 0x2000 },
-  { 0x1a00, 0x2f8c, 0x0000 },
-  { 0x1a00, 0x2f8e, 0x0000 },
-  { 0x9a00, 0x2f97, 0x4000 },
-  { 0x9a00, 0x2f93, 0x3000 },
-  { 0x9a00, 0x2f91, 0x2000 },
-  { 0x1a00, 0x2f90, 0x0000 },
-  { 0x1a00, 0x2f92, 0x0000 },
-  { 0x9a00, 0x2f95, 0x2000 },
-  { 0x1a00, 0x2f94, 0x0000 },
-  { 0x1a00, 0x2f96, 0x0000 },
-  { 0x9a00, 0x2f9b, 0x3000 },
-  { 0x9a00, 0x2f99, 0x2000 },
-  { 0x1a00, 0x2f98, 0x0000 },
-  { 0x1a00, 0x2f9a, 0x0000 },
-  { 0x9a00, 0x2f9d, 0x2000 },
-  { 0x1a00, 0x2f9c, 0x0000 },
-  { 0x1a00, 0x2f9e, 0x0000 },
-  { 0x9a00, 0x2ff9, 0x7000 },
-  { 0x9a00, 0x2fbf, 0x6000 },
-  { 0x9a00, 0x2faf, 0x5000 },
-  { 0x9a00, 0x2fa7, 0x4000 },
-  { 0x9a00, 0x2fa3, 0x3000 },
-  { 0x9a00, 0x2fa1, 0x2000 },
-  { 0x1a00, 0x2fa0, 0x0000 },
-  { 0x1a00, 0x2fa2, 0x0000 },
-  { 0x9a00, 0x2fa5, 0x2000 },
-  { 0x1a00, 0x2fa4, 0x0000 },
-  { 0x1a00, 0x2fa6, 0x0000 },
-  { 0x9a00, 0x2fab, 0x3000 },
-  { 0x9a00, 0x2fa9, 0x2000 },
-  { 0x1a00, 0x2fa8, 0x0000 },
-  { 0x1a00, 0x2faa, 0x0000 },
-  { 0x9a00, 0x2fad, 0x2000 },
-  { 0x1a00, 0x2fac, 0x0000 },
-  { 0x1a00, 0x2fae, 0x0000 },
-  { 0x9a00, 0x2fb7, 0x4000 },
-  { 0x9a00, 0x2fb3, 0x3000 },
-  { 0x9a00, 0x2fb1, 0x2000 },
-  { 0x1a00, 0x2fb0, 0x0000 },
-  { 0x1a00, 0x2fb2, 0x0000 },
-  { 0x9a00, 0x2fb5, 0x2000 },
-  { 0x1a00, 0x2fb4, 0x0000 },
-  { 0x1a00, 0x2fb6, 0x0000 },
-  { 0x9a00, 0x2fbb, 0x3000 },
-  { 0x9a00, 0x2fb9, 0x2000 },
-  { 0x1a00, 0x2fb8, 0x0000 },
-  { 0x1a00, 0x2fba, 0x0000 },
-  { 0x9a00, 0x2fbd, 0x2000 },
-  { 0x1a00, 0x2fbc, 0x0000 },
-  { 0x1a00, 0x2fbe, 0x0000 },
-  { 0x9a00, 0x2fcf, 0x5000 },
-  { 0x9a00, 0x2fc7, 0x4000 },
-  { 0x9a00, 0x2fc3, 0x3000 },
-  { 0x9a00, 0x2fc1, 0x2000 },
-  { 0x1a00, 0x2fc0, 0x0000 },
-  { 0x1a00, 0x2fc2, 0x0000 },
-  { 0x9a00, 0x2fc5, 0x2000 },
-  { 0x1a00, 0x2fc4, 0x0000 },
-  { 0x1a00, 0x2fc6, 0x0000 },
-  { 0x9a00, 0x2fcb, 0x3000 },
-  { 0x9a00, 0x2fc9, 0x2000 },
-  { 0x1a00, 0x2fc8, 0x0000 },
-  { 0x1a00, 0x2fca, 0x0000 },
-  { 0x9a00, 0x2fcd, 0x2000 },
-  { 0x1a00, 0x2fcc, 0x0000 },
-  { 0x1a00, 0x2fce, 0x0000 },
-  { 0x9a00, 0x2ff1, 0x4000 },
-  { 0x9a00, 0x2fd3, 0x3000 },
-  { 0x9a00, 0x2fd1, 0x2000 },
-  { 0x1a00, 0x2fd0, 0x0000 },
-  { 0x1a00, 0x2fd2, 0x0000 },
-  { 0x9a00, 0x2fd5, 0x2000 },
-  { 0x1a00, 0x2fd4, 0x0000 },
-  { 0x1a00, 0x2ff0, 0x0000 },
-  { 0x9a00, 0x2ff5, 0x3000 },
-  { 0x9a00, 0x2ff3, 0x2000 },
-  { 0x1a00, 0x2ff2, 0x0000 },
-  { 0x1a00, 0x2ff4, 0x0000 },
-  { 0x9a00, 0x2ff7, 0x2000 },
-  { 0x1a00, 0x2ff6, 0x0000 },
-  { 0x1a00, 0x2ff8, 0x0000 },
-  { 0x9600, 0x301d, 0x6000 },
-  { 0x9200, 0x300d, 0x5000 },
-  { 0x8600, 0x3005, 0x4000 },
-  { 0x9500, 0x3001, 0x3000 },
-  { 0x9a00, 0x2ffb, 0x2000 },
-  { 0x1a00, 0x2ffa, 0x0000 },
-  { 0x1d00, 0x3000, 0x0000 },
-  { 0x9500, 0x3003, 0x2000 },
-  { 0x1500, 0x3002, 0x0000 },
-  { 0x1a00, 0x3004, 0x0000 },
-  { 0x9200, 0x3009, 0x3000 },
-  { 0x8e00, 0x3007, 0x2000 },
-  { 0x0700, 0x3006, 0x0000 },
-  { 0x1600, 0x3008, 0x0000 },
-  { 0x9200, 0x300b, 0x2000 },
-  { 0x1600, 0x300a, 0x0000 },
-  { 0x1600, 0x300c, 0x0000 },
-  { 0x9200, 0x3015, 0x4000 },
-  { 0x9200, 0x3011, 0x3000 },
-  { 0x9200, 0x300f, 0x2000 },
-  { 0x1600, 0x300e, 0x0000 },
-  { 0x1600, 0x3010, 0x0000 },
-  { 0x9a00, 0x3013, 0x2000 },
-  { 0x1a00, 0x3012, 0x0000 },
-  { 0x1600, 0x3014, 0x0000 },
-  { 0x9200, 0x3019, 0x3000 },
-  { 0x9200, 0x3017, 0x2000 },
-  { 0x1600, 0x3016, 0x0000 },
-  { 0x1600, 0x3018, 0x0000 },
-  { 0x9200, 0x301b, 0x2000 },
-  { 0x1600, 0x301a, 0x0000 },
-  { 0x1100, 0x301c, 0x0000 },
-  { 0x8c00, 0x302d, 0x5000 },
-  { 0x8e00, 0x3025, 0x4000 },
-  { 0x8e00, 0x3021, 0x3000 },
-  { 0x9200, 0x301f, 0x2000 },
-  { 0x1200, 0x301e, 0x0000 },
-  { 0x1a00, 0x3020, 0x0000 },
-  { 0x8e00, 0x3023, 0x2000 },
-  { 0x0e00, 0x3022, 0x0000 },
-  { 0x0e00, 0x3024, 0x0000 },
-  { 0x8e00, 0x3029, 0x3000 },
-  { 0x8e00, 0x3027, 0x2000 },
-  { 0x0e00, 0x3026, 0x0000 },
-  { 0x0e00, 0x3028, 0x0000 },
-  { 0x8c00, 0x302b, 0x2000 },
-  { 0x0c00, 0x302a, 0x0000 },
-  { 0x0c00, 0x302c, 0x0000 },
-  { 0x8600, 0x3035, 0x4000 },
-  { 0x8600, 0x3031, 0x3000 },
-  { 0x8c00, 0x302f, 0x2000 },
-  { 0x0c00, 0x302e, 0x0000 },
-  { 0x1100, 0x3030, 0x0000 },
-  { 0x8600, 0x3033, 0x2000 },
-  { 0x0600, 0x3032, 0x0000 },
-  { 0x0600, 0x3034, 0x0000 },
-  { 0x8e00, 0x3039, 0x3000 },
-  { 0x9a00, 0x3037, 0x2000 },
-  { 0x1a00, 0x3036, 0x0000 },
-  { 0x0e00, 0x3038, 0x0000 },
-  { 0x8600, 0x303b, 0x2000 },
-  { 0x0e00, 0x303a, 0x0000 },
-  { 0x0700, 0x303c, 0x0000 },
-  { 0x8700, 0x30c0, 0x8000 },
-  { 0x8700, 0x307e, 0x7000 },
-  { 0x8700, 0x305e, 0x6000 },
-  { 0x8700, 0x304e, 0x5000 },
-  { 0x8700, 0x3046, 0x4000 },
-  { 0x8700, 0x3042, 0x3000 },
-  { 0x9a00, 0x303f, 0x2000 },
-  { 0x1a00, 0x303e, 0x0000 },
-  { 0x0700, 0x3041, 0x0000 },
-  { 0x8700, 0x3044, 0x2000 },
-  { 0x0700, 0x3043, 0x0000 },
-  { 0x0700, 0x3045, 0x0000 },
-  { 0x8700, 0x304a, 0x3000 },
-  { 0x8700, 0x3048, 0x2000 },
-  { 0x0700, 0x3047, 0x0000 },
-  { 0x0700, 0x3049, 0x0000 },
-  { 0x8700, 0x304c, 0x2000 },
-  { 0x0700, 0x304b, 0x0000 },
-  { 0x0700, 0x304d, 0x0000 },
-  { 0x8700, 0x3056, 0x4000 },
-  { 0x8700, 0x3052, 0x3000 },
-  { 0x8700, 0x3050, 0x2000 },
-  { 0x0700, 0x304f, 0x0000 },
-  { 0x0700, 0x3051, 0x0000 },
-  { 0x8700, 0x3054, 0x2000 },
-  { 0x0700, 0x3053, 0x0000 },
-  { 0x0700, 0x3055, 0x0000 },
-  { 0x8700, 0x305a, 0x3000 },
-  { 0x8700, 0x3058, 0x2000 },
-  { 0x0700, 0x3057, 0x0000 },
-  { 0x0700, 0x3059, 0x0000 },
-  { 0x8700, 0x305c, 0x2000 },
-  { 0x0700, 0x305b, 0x0000 },
-  { 0x0700, 0x305d, 0x0000 },
-  { 0x8700, 0x306e, 0x5000 },
-  { 0x8700, 0x3066, 0x4000 },
-  { 0x8700, 0x3062, 0x3000 },
-  { 0x8700, 0x3060, 0x2000 },
-  { 0x0700, 0x305f, 0x0000 },
-  { 0x0700, 0x3061, 0x0000 },
-  { 0x8700, 0x3064, 0x2000 },
-  { 0x0700, 0x3063, 0x0000 },
-  { 0x0700, 0x3065, 0x0000 },
-  { 0x8700, 0x306a, 0x3000 },
-  { 0x8700, 0x3068, 0x2000 },
-  { 0x0700, 0x3067, 0x0000 },
-  { 0x0700, 0x3069, 0x0000 },
-  { 0x8700, 0x306c, 0x2000 },
-  { 0x0700, 0x306b, 0x0000 },
-  { 0x0700, 0x306d, 0x0000 },
-  { 0x8700, 0x3076, 0x4000 },
-  { 0x8700, 0x3072, 0x3000 },
-  { 0x8700, 0x3070, 0x2000 },
-  { 0x0700, 0x306f, 0x0000 },
-  { 0x0700, 0x3071, 0x0000 },
-  { 0x8700, 0x3074, 0x2000 },
-  { 0x0700, 0x3073, 0x0000 },
-  { 0x0700, 0x3075, 0x0000 },
-  { 0x8700, 0x307a, 0x3000 },
-  { 0x8700, 0x3078, 0x2000 },
-  { 0x0700, 0x3077, 0x0000 },
-  { 0x0700, 0x3079, 0x0000 },
-  { 0x8700, 0x307c, 0x2000 },
-  { 0x0700, 0x307b, 0x0000 },
-  { 0x0700, 0x307d, 0x0000 },
-  { 0x9100, 0x30a0, 0x6000 },
-  { 0x8700, 0x308e, 0x5000 },
-  { 0x8700, 0x3086, 0x4000 },
-  { 0x8700, 0x3082, 0x3000 },
-  { 0x8700, 0x3080, 0x2000 },
-  { 0x0700, 0x307f, 0x0000 },
-  { 0x0700, 0x3081, 0x0000 },
-  { 0x8700, 0x3084, 0x2000 },
-  { 0x0700, 0x3083, 0x0000 },
-  { 0x0700, 0x3085, 0x0000 },
-  { 0x8700, 0x308a, 0x3000 },
-  { 0x8700, 0x3088, 0x2000 },
-  { 0x0700, 0x3087, 0x0000 },
-  { 0x0700, 0x3089, 0x0000 },
-  { 0x8700, 0x308c, 0x2000 },
-  { 0x0700, 0x308b, 0x0000 },
-  { 0x0700, 0x308d, 0x0000 },
-  { 0x8700, 0x3096, 0x4000 },
-  { 0x8700, 0x3092, 0x3000 },
-  { 0x8700, 0x3090, 0x2000 },
-  { 0x0700, 0x308f, 0x0000 },
-  { 0x0700, 0x3091, 0x0000 },
-  { 0x8700, 0x3094, 0x2000 },
-  { 0x0700, 0x3093, 0x0000 },
-  { 0x0700, 0x3095, 0x0000 },
-  { 0x9800, 0x309c, 0x3000 },
-  { 0x8c00, 0x309a, 0x2000 },
-  { 0x0c00, 0x3099, 0x0000 },
-  { 0x1800, 0x309b, 0x0000 },
-  { 0x8600, 0x309e, 0x2000 },
-  { 0x0600, 0x309d, 0x0000 },
-  { 0x0700, 0x309f, 0x0000 },
-  { 0x8700, 0x30b0, 0x5000 },
-  { 0x8700, 0x30a8, 0x4000 },
-  { 0x8700, 0x30a4, 0x3000 },
-  { 0x8700, 0x30a2, 0x2000 },
-  { 0x0700, 0x30a1, 0x0000 },
-  { 0x0700, 0x30a3, 0x0000 },
-  { 0x8700, 0x30a6, 0x2000 },
-  { 0x0700, 0x30a5, 0x0000 },
-  { 0x0700, 0x30a7, 0x0000 },
-  { 0x8700, 0x30ac, 0x3000 },
-  { 0x8700, 0x30aa, 0x2000 },
-  { 0x0700, 0x30a9, 0x0000 },
-  { 0x0700, 0x30ab, 0x0000 },
-  { 0x8700, 0x30ae, 0x2000 },
-  { 0x0700, 0x30ad, 0x0000 },
-  { 0x0700, 0x30af, 0x0000 },
-  { 0x8700, 0x30b8, 0x4000 },
-  { 0x8700, 0x30b4, 0x3000 },
-  { 0x8700, 0x30b2, 0x2000 },
-  { 0x0700, 0x30b1, 0x0000 },
-  { 0x0700, 0x30b3, 0x0000 },
-  { 0x8700, 0x30b6, 0x2000 },
-  { 0x0700, 0x30b5, 0x0000 },
-  { 0x0700, 0x30b7, 0x0000 },
-  { 0x8700, 0x30bc, 0x3000 },
-  { 0x8700, 0x30ba, 0x2000 },
-  { 0x0700, 0x30b9, 0x0000 },
-  { 0x0700, 0x30bb, 0x0000 },
-  { 0x8700, 0x30be, 0x2000 },
-  { 0x0700, 0x30bd, 0x0000 },
-  { 0x0700, 0x30bf, 0x0000 },
-  { 0x8700, 0x3105, 0x7000 },
-  { 0x8700, 0x30e0, 0x6000 },
-  { 0x8700, 0x30d0, 0x5000 },
-  { 0x8700, 0x30c8, 0x4000 },
-  { 0x8700, 0x30c4, 0x3000 },
-  { 0x8700, 0x30c2, 0x2000 },
-  { 0x0700, 0x30c1, 0x0000 },
-  { 0x0700, 0x30c3, 0x0000 },
-  { 0x8700, 0x30c6, 0x2000 },
-  { 0x0700, 0x30c5, 0x0000 },
-  { 0x0700, 0x30c7, 0x0000 },
-  { 0x8700, 0x30cc, 0x3000 },
-  { 0x8700, 0x30ca, 0x2000 },
-  { 0x0700, 0x30c9, 0x0000 },
-  { 0x0700, 0x30cb, 0x0000 },
-  { 0x8700, 0x30ce, 0x2000 },
-  { 0x0700, 0x30cd, 0x0000 },
-  { 0x0700, 0x30cf, 0x0000 },
-  { 0x8700, 0x30d8, 0x4000 },
-  { 0x8700, 0x30d4, 0x3000 },
-  { 0x8700, 0x30d2, 0x2000 },
-  { 0x0700, 0x30d1, 0x0000 },
-  { 0x0700, 0x30d3, 0x0000 },
-  { 0x8700, 0x30d6, 0x2000 },
-  { 0x0700, 0x30d5, 0x0000 },
-  { 0x0700, 0x30d7, 0x0000 },
-  { 0x8700, 0x30dc, 0x3000 },
-  { 0x8700, 0x30da, 0x2000 },
-  { 0x0700, 0x30d9, 0x0000 },
-  { 0x0700, 0x30db, 0x0000 },
-  { 0x8700, 0x30de, 0x2000 },
-  { 0x0700, 0x30dd, 0x0000 },
-  { 0x0700, 0x30df, 0x0000 },
-  { 0x8700, 0x30f0, 0x5000 },
-  { 0x8700, 0x30e8, 0x4000 },
-  { 0x8700, 0x30e4, 0x3000 },
-  { 0x8700, 0x30e2, 0x2000 },
-  { 0x0700, 0x30e1, 0x0000 },
-  { 0x0700, 0x30e3, 0x0000 },
-  { 0x8700, 0x30e6, 0x2000 },
-  { 0x0700, 0x30e5, 0x0000 },
-  { 0x0700, 0x30e7, 0x0000 },
-  { 0x8700, 0x30ec, 0x3000 },
-  { 0x8700, 0x30ea, 0x2000 },
-  { 0x0700, 0x30e9, 0x0000 },
-  { 0x0700, 0x30eb, 0x0000 },
-  { 0x8700, 0x30ee, 0x2000 },
-  { 0x0700, 0x30ed, 0x0000 },
-  { 0x0700, 0x30ef, 0x0000 },
-  { 0x8700, 0x30f8, 0x4000 },
-  { 0x8700, 0x30f4, 0x3000 },
-  { 0x8700, 0x30f2, 0x2000 },
-  { 0x0700, 0x30f1, 0x0000 },
-  { 0x0700, 0x30f3, 0x0000 },
-  { 0x8700, 0x30f6, 0x2000 },
-  { 0x0700, 0x30f5, 0x0000 },
-  { 0x0700, 0x30f7, 0x0000 },
-  { 0x8600, 0x30fc, 0x3000 },
-  { 0x8700, 0x30fa, 0x2000 },
-  { 0x0700, 0x30f9, 0x0000 },
-  { 0x1000, 0x30fb, 0x0000 },
-  { 0x8600, 0x30fe, 0x2000 },
-  { 0x0600, 0x30fd, 0x0000 },
-  { 0x0700, 0x30ff, 0x0000 },
-  { 0x8700, 0x3125, 0x6000 },
-  { 0x8700, 0x3115, 0x5000 },
-  { 0x8700, 0x310d, 0x4000 },
-  { 0x8700, 0x3109, 0x3000 },
-  { 0x8700, 0x3107, 0x2000 },
-  { 0x0700, 0x3106, 0x0000 },
-  { 0x0700, 0x3108, 0x0000 },
-  { 0x8700, 0x310b, 0x2000 },
-  { 0x0700, 0x310a, 0x0000 },
-  { 0x0700, 0x310c, 0x0000 },
-  { 0x8700, 0x3111, 0x3000 },
-  { 0x8700, 0x310f, 0x2000 },
-  { 0x0700, 0x310e, 0x0000 },
-  { 0x0700, 0x3110, 0x0000 },
-  { 0x8700, 0x3113, 0x2000 },
-  { 0x0700, 0x3112, 0x0000 },
-  { 0x0700, 0x3114, 0x0000 },
-  { 0x8700, 0x311d, 0x4000 },
-  { 0x8700, 0x3119, 0x3000 },
-  { 0x8700, 0x3117, 0x2000 },
-  { 0x0700, 0x3116, 0x0000 },
-  { 0x0700, 0x3118, 0x0000 },
-  { 0x8700, 0x311b, 0x2000 },
-  { 0x0700, 0x311a, 0x0000 },
-  { 0x0700, 0x311c, 0x0000 },
-  { 0x8700, 0x3121, 0x3000 },
-  { 0x8700, 0x311f, 0x2000 },
-  { 0x0700, 0x311e, 0x0000 },
-  { 0x0700, 0x3120, 0x0000 },
-  { 0x8700, 0x3123, 0x2000 },
-  { 0x0700, 0x3122, 0x0000 },
-  { 0x0700, 0x3124, 0x0000 },
-  { 0x8700, 0x3139, 0x5000 },
-  { 0x8700, 0x3131, 0x4000 },
-  { 0x8700, 0x3129, 0x3000 },
-  { 0x8700, 0x3127, 0x2000 },
-  { 0x0700, 0x3126, 0x0000 },
-  { 0x0700, 0x3128, 0x0000 },
-  { 0x8700, 0x312b, 0x2000 },
-  { 0x0700, 0x312a, 0x0000 },
-  { 0x0700, 0x312c, 0x0000 },
-  { 0x8700, 0x3135, 0x3000 },
-  { 0x8700, 0x3133, 0x2000 },
-  { 0x0700, 0x3132, 0x0000 },
-  { 0x0700, 0x3134, 0x0000 },
-  { 0x8700, 0x3137, 0x2000 },
-  { 0x0700, 0x3136, 0x0000 },
-  { 0x0700, 0x3138, 0x0000 },
-  { 0x8700, 0x3141, 0x4000 },
-  { 0x8700, 0x313d, 0x3000 },
-  { 0x8700, 0x313b, 0x2000 },
-  { 0x0700, 0x313a, 0x0000 },
-  { 0x0700, 0x313c, 0x0000 },
-  { 0x8700, 0x313f, 0x2000 },
-  { 0x0700, 0x313e, 0x0000 },
-  { 0x0700, 0x3140, 0x0000 },
-  { 0x8700, 0x3145, 0x3000 },
-  { 0x8700, 0x3143, 0x2000 },
-  { 0x0700, 0x3142, 0x0000 },
-  { 0x0700, 0x3144, 0x0000 },
-  { 0x8700, 0x3147, 0x2000 },
-  { 0x0700, 0x3146, 0x0000 },
-  { 0x0700, 0x3148, 0x0000 },
-  { 0x9a00, 0x3290, 0x9000 },
-  { 0x9a00, 0x3202, 0x8000 },
-  { 0x8700, 0x3189, 0x7000 },
-  { 0x8700, 0x3169, 0x6000 },
-  { 0x8700, 0x3159, 0x5000 },
-  { 0x8700, 0x3151, 0x4000 },
-  { 0x8700, 0x314d, 0x3000 },
-  { 0x8700, 0x314b, 0x2000 },
-  { 0x0700, 0x314a, 0x0000 },
-  { 0x0700, 0x314c, 0x0000 },
-  { 0x8700, 0x314f, 0x2000 },
-  { 0x0700, 0x314e, 0x0000 },
-  { 0x0700, 0x3150, 0x0000 },
-  { 0x8700, 0x3155, 0x3000 },
-  { 0x8700, 0x3153, 0x2000 },
-  { 0x0700, 0x3152, 0x0000 },
-  { 0x0700, 0x3154, 0x0000 },
-  { 0x8700, 0x3157, 0x2000 },
-  { 0x0700, 0x3156, 0x0000 },
-  { 0x0700, 0x3158, 0x0000 },
-  { 0x8700, 0x3161, 0x4000 },
-  { 0x8700, 0x315d, 0x3000 },
-  { 0x8700, 0x315b, 0x2000 },
-  { 0x0700, 0x315a, 0x0000 },
-  { 0x0700, 0x315c, 0x0000 },
-  { 0x8700, 0x315f, 0x2000 },
-  { 0x0700, 0x315e, 0x0000 },
-  { 0x0700, 0x3160, 0x0000 },
-  { 0x8700, 0x3165, 0x3000 },
-  { 0x8700, 0x3163, 0x2000 },
-  { 0x0700, 0x3162, 0x0000 },
-  { 0x0700, 0x3164, 0x0000 },
-  { 0x8700, 0x3167, 0x2000 },
-  { 0x0700, 0x3166, 0x0000 },
-  { 0x0700, 0x3168, 0x0000 },
-  { 0x8700, 0x3179, 0x5000 },
-  { 0x8700, 0x3171, 0x4000 },
-  { 0x8700, 0x316d, 0x3000 },
-  { 0x8700, 0x316b, 0x2000 },
-  { 0x0700, 0x316a, 0x0000 },
-  { 0x0700, 0x316c, 0x0000 },
-  { 0x8700, 0x316f, 0x2000 },
-  { 0x0700, 0x316e, 0x0000 },
-  { 0x0700, 0x3170, 0x0000 },
-  { 0x8700, 0x3175, 0x3000 },
-  { 0x8700, 0x3173, 0x2000 },
-  { 0x0700, 0x3172, 0x0000 },
-  { 0x0700, 0x3174, 0x0000 },
-  { 0x8700, 0x3177, 0x2000 },
-  { 0x0700, 0x3176, 0x0000 },
-  { 0x0700, 0x3178, 0x0000 },
-  { 0x8700, 0x3181, 0x4000 },
-  { 0x8700, 0x317d, 0x3000 },
-  { 0x8700, 0x317b, 0x2000 },
-  { 0x0700, 0x317a, 0x0000 },
-  { 0x0700, 0x317c, 0x0000 },
-  { 0x8700, 0x317f, 0x2000 },
-  { 0x0700, 0x317e, 0x0000 },
-  { 0x0700, 0x3180, 0x0000 },
-  { 0x8700, 0x3185, 0x3000 },
-  { 0x8700, 0x3183, 0x2000 },
-  { 0x0700, 0x3182, 0x0000 },
-  { 0x0700, 0x3184, 0x0000 },
-  { 0x8700, 0x3187, 0x2000 },
-  { 0x0700, 0x3186, 0x0000 },
-  { 0x0700, 0x3188, 0x0000 },
-  { 0x8700, 0x31aa, 0x6000 },
-  { 0x9a00, 0x319a, 0x5000 },
-  { 0x8f00, 0x3192, 0x4000 },
-  { 0x8700, 0x318d, 0x3000 },
-  { 0x8700, 0x318b, 0x2000 },
-  { 0x0700, 0x318a, 0x0000 },
-  { 0x0700, 0x318c, 0x0000 },
-  { 0x9a00, 0x3190, 0x2000 },
-  { 0x0700, 0x318e, 0x0000 },
-  { 0x1a00, 0x3191, 0x0000 },
-  { 0x9a00, 0x3196, 0x3000 },
-  { 0x8f00, 0x3194, 0x2000 },
-  { 0x0f00, 0x3193, 0x0000 },
-  { 0x0f00, 0x3195, 0x0000 },
-  { 0x9a00, 0x3198, 0x2000 },
-  { 0x1a00, 0x3197, 0x0000 },
-  { 0x1a00, 0x3199, 0x0000 },
-  { 0x8700, 0x31a2, 0x4000 },
-  { 0x9a00, 0x319e, 0x3000 },
-  { 0x9a00, 0x319c, 0x2000 },
-  { 0x1a00, 0x319b, 0x0000 },
-  { 0x1a00, 0x319d, 0x0000 },
-  { 0x8700, 0x31a0, 0x2000 },
-  { 0x1a00, 0x319f, 0x0000 },
-  { 0x0700, 0x31a1, 0x0000 },
-  { 0x8700, 0x31a6, 0x3000 },
-  { 0x8700, 0x31a4, 0x2000 },
-  { 0x0700, 0x31a3, 0x0000 },
-  { 0x0700, 0x31a5, 0x0000 },
-  { 0x8700, 0x31a8, 0x2000 },
-  { 0x0700, 0x31a7, 0x0000 },
-  { 0x0700, 0x31a9, 0x0000 },
-  { 0x8700, 0x31f2, 0x5000 },
-  { 0x8700, 0x31b2, 0x4000 },
-  { 0x8700, 0x31ae, 0x3000 },
-  { 0x8700, 0x31ac, 0x2000 },
-  { 0x0700, 0x31ab, 0x0000 },
-  { 0x0700, 0x31ad, 0x0000 },
-  { 0x8700, 0x31b0, 0x2000 },
-  { 0x0700, 0x31af, 0x0000 },
-  { 0x0700, 0x31b1, 0x0000 },
-  { 0x8700, 0x31b6, 0x3000 },
-  { 0x8700, 0x31b4, 0x2000 },
-  { 0x0700, 0x31b3, 0x0000 },
-  { 0x0700, 0x31b5, 0x0000 },
-  { 0x8700, 0x31f0, 0x2000 },
-  { 0x0700, 0x31b7, 0x0000 },
-  { 0x0700, 0x31f1, 0x0000 },
-  { 0x8700, 0x31fa, 0x4000 },
-  { 0x8700, 0x31f6, 0x3000 },
-  { 0x8700, 0x31f4, 0x2000 },
-  { 0x0700, 0x31f3, 0x0000 },
-  { 0x0700, 0x31f5, 0x0000 },
-  { 0x8700, 0x31f8, 0x2000 },
-  { 0x0700, 0x31f7, 0x0000 },
-  { 0x0700, 0x31f9, 0x0000 },
-  { 0x8700, 0x31fe, 0x3000 },
-  { 0x8700, 0x31fc, 0x2000 },
-  { 0x0700, 0x31fb, 0x0000 },
-  { 0x0700, 0x31fd, 0x0000 },
-  { 0x9a00, 0x3200, 0x2000 },
-  { 0x0700, 0x31ff, 0x0000 },
-  { 0x1a00, 0x3201, 0x0000 },
-  { 0x9a00, 0x3243, 0x7000 },
-  { 0x8f00, 0x3223, 0x6000 },
-  { 0x9a00, 0x3212, 0x5000 },
-  { 0x9a00, 0x320a, 0x4000 },
-  { 0x9a00, 0x3206, 0x3000 },
-  { 0x9a00, 0x3204, 0x2000 },
-  { 0x1a00, 0x3203, 0x0000 },
-  { 0x1a00, 0x3205, 0x0000 },
-  { 0x9a00, 0x3208, 0x2000 },
-  { 0x1a00, 0x3207, 0x0000 },
-  { 0x1a00, 0x3209, 0x0000 },
-  { 0x9a00, 0x320e, 0x3000 },
-  { 0x9a00, 0x320c, 0x2000 },
-  { 0x1a00, 0x320b, 0x0000 },
-  { 0x1a00, 0x320d, 0x0000 },
-  { 0x9a00, 0x3210, 0x2000 },
-  { 0x1a00, 0x320f, 0x0000 },
-  { 0x1a00, 0x3211, 0x0000 },
-  { 0x9a00, 0x321a, 0x4000 },
-  { 0x9a00, 0x3216, 0x3000 },
-  { 0x9a00, 0x3214, 0x2000 },
-  { 0x1a00, 0x3213, 0x0000 },
-  { 0x1a00, 0x3215, 0x0000 },
-  { 0x9a00, 0x3218, 0x2000 },
-  { 0x1a00, 0x3217, 0x0000 },
-  { 0x1a00, 0x3219, 0x0000 },
-  { 0x9a00, 0x321e, 0x3000 },
-  { 0x9a00, 0x321c, 0x2000 },
-  { 0x1a00, 0x321b, 0x0000 },
-  { 0x1a00, 0x321d, 0x0000 },
-  { 0x8f00, 0x3221, 0x2000 },
-  { 0x0f00, 0x3220, 0x0000 },
-  { 0x0f00, 0x3222, 0x0000 },
-  { 0x9a00, 0x3233, 0x5000 },
-  { 0x9a00, 0x322b, 0x4000 },
-  { 0x8f00, 0x3227, 0x3000 },
-  { 0x8f00, 0x3225, 0x2000 },
-  { 0x0f00, 0x3224, 0x0000 },
-  { 0x0f00, 0x3226, 0x0000 },
-  { 0x8f00, 0x3229, 0x2000 },
-  { 0x0f00, 0x3228, 0x0000 },
-  { 0x1a00, 0x322a, 0x0000 },
-  { 0x9a00, 0x322f, 0x3000 },
-  { 0x9a00, 0x322d, 0x2000 },
-  { 0x1a00, 0x322c, 0x0000 },
-  { 0x1a00, 0x322e, 0x0000 },
-  { 0x9a00, 0x3231, 0x2000 },
-  { 0x1a00, 0x3230, 0x0000 },
-  { 0x1a00, 0x3232, 0x0000 },
-  { 0x9a00, 0x323b, 0x4000 },
-  { 0x9a00, 0x3237, 0x3000 },
-  { 0x9a00, 0x3235, 0x2000 },
-  { 0x1a00, 0x3234, 0x0000 },
-  { 0x1a00, 0x3236, 0x0000 },
-  { 0x9a00, 0x3239, 0x2000 },
-  { 0x1a00, 0x3238, 0x0000 },
-  { 0x1a00, 0x323a, 0x0000 },
-  { 0x9a00, 0x323f, 0x3000 },
-  { 0x9a00, 0x323d, 0x2000 },
-  { 0x1a00, 0x323c, 0x0000 },
-  { 0x1a00, 0x323e, 0x0000 },
-  { 0x9a00, 0x3241, 0x2000 },
-  { 0x1a00, 0x3240, 0x0000 },
-  { 0x1a00, 0x3242, 0x0000 },
-  { 0x9a00, 0x326f, 0x6000 },
-  { 0x8f00, 0x325f, 0x5000 },
-  { 0x8f00, 0x3257, 0x4000 },
-  { 0x8f00, 0x3253, 0x3000 },
-  { 0x8f00, 0x3251, 0x2000 },
-  { 0x1a00, 0x3250, 0x0000 },
-  { 0x0f00, 0x3252, 0x0000 },
-  { 0x8f00, 0x3255, 0x2000 },
-  { 0x0f00, 0x3254, 0x0000 },
-  { 0x0f00, 0x3256, 0x0000 },
-  { 0x8f00, 0x325b, 0x3000 },
-  { 0x8f00, 0x3259, 0x2000 },
-  { 0x0f00, 0x3258, 0x0000 },
-  { 0x0f00, 0x325a, 0x0000 },
-  { 0x8f00, 0x325d, 0x2000 },
-  { 0x0f00, 0x325c, 0x0000 },
-  { 0x0f00, 0x325e, 0x0000 },
-  { 0x9a00, 0x3267, 0x4000 },
-  { 0x9a00, 0x3263, 0x3000 },
-  { 0x9a00, 0x3261, 0x2000 },
-  { 0x1a00, 0x3260, 0x0000 },
-  { 0x1a00, 0x3262, 0x0000 },
-  { 0x9a00, 0x3265, 0x2000 },
-  { 0x1a00, 0x3264, 0x0000 },
-  { 0x1a00, 0x3266, 0x0000 },
-  { 0x9a00, 0x326b, 0x3000 },
-  { 0x9a00, 0x3269, 0x2000 },
-  { 0x1a00, 0x3268, 0x0000 },
-  { 0x1a00, 0x326a, 0x0000 },
-  { 0x9a00, 0x326d, 0x2000 },
-  { 0x1a00, 0x326c, 0x0000 },
-  { 0x1a00, 0x326e, 0x0000 },
-  { 0x8f00, 0x3280, 0x5000 },
-  { 0x9a00, 0x3277, 0x4000 },
-  { 0x9a00, 0x3273, 0x3000 },
-  { 0x9a00, 0x3271, 0x2000 },
-  { 0x1a00, 0x3270, 0x0000 },
-  { 0x1a00, 0x3272, 0x0000 },
-  { 0x9a00, 0x3275, 0x2000 },
-  { 0x1a00, 0x3274, 0x0000 },
-  { 0x1a00, 0x3276, 0x0000 },
-  { 0x9a00, 0x327b, 0x3000 },
-  { 0x9a00, 0x3279, 0x2000 },
-  { 0x1a00, 0x3278, 0x0000 },
-  { 0x1a00, 0x327a, 0x0000 },
-  { 0x9a00, 0x327d, 0x2000 },
-  { 0x1a00, 0x327c, 0x0000 },
-  { 0x1a00, 0x327f, 0x0000 },
-  { 0x8f00, 0x3288, 0x4000 },
-  { 0x8f00, 0x3284, 0x3000 },
-  { 0x8f00, 0x3282, 0x2000 },
-  { 0x0f00, 0x3281, 0x0000 },
-  { 0x0f00, 0x3283, 0x0000 },
-  { 0x8f00, 0x3286, 0x2000 },
-  { 0x0f00, 0x3285, 0x0000 },
-  { 0x0f00, 0x3287, 0x0000 },
-  { 0x9a00, 0x328c, 0x3000 },
-  { 0x9a00, 0x328a, 0x2000 },
-  { 0x0f00, 0x3289, 0x0000 },
-  { 0x1a00, 0x328b, 0x0000 },
-  { 0x9a00, 0x328e, 0x2000 },
-  { 0x1a00, 0x328d, 0x0000 },
-  { 0x1a00, 0x328f, 0x0000 },
-  { 0x9a00, 0x3311, 0x8000 },
-  { 0x9a00, 0x32d0, 0x7000 },
-  { 0x9a00, 0x32b0, 0x6000 },
-  { 0x9a00, 0x32a0, 0x5000 },
-  { 0x9a00, 0x3298, 0x4000 },
-  { 0x9a00, 0x3294, 0x3000 },
-  { 0x9a00, 0x3292, 0x2000 },
-  { 0x1a00, 0x3291, 0x0000 },
-  { 0x1a00, 0x3293, 0x0000 },
-  { 0x9a00, 0x3296, 0x2000 },
-  { 0x1a00, 0x3295, 0x0000 },
-  { 0x1a00, 0x3297, 0x0000 },
-  { 0x9a00, 0x329c, 0x3000 },
-  { 0x9a00, 0x329a, 0x2000 },
-  { 0x1a00, 0x3299, 0x0000 },
-  { 0x1a00, 0x329b, 0x0000 },
-  { 0x9a00, 0x329e, 0x2000 },
-  { 0x1a00, 0x329d, 0x0000 },
-  { 0x1a00, 0x329f, 0x0000 },
-  { 0x9a00, 0x32a8, 0x4000 },
-  { 0x9a00, 0x32a4, 0x3000 },
-  { 0x9a00, 0x32a2, 0x2000 },
-  { 0x1a00, 0x32a1, 0x0000 },
-  { 0x1a00, 0x32a3, 0x0000 },
-  { 0x9a00, 0x32a6, 0x2000 },
-  { 0x1a00, 0x32a5, 0x0000 },
-  { 0x1a00, 0x32a7, 0x0000 },
-  { 0x9a00, 0x32ac, 0x3000 },
-  { 0x9a00, 0x32aa, 0x2000 },
-  { 0x1a00, 0x32a9, 0x0000 },
-  { 0x1a00, 0x32ab, 0x0000 },
-  { 0x9a00, 0x32ae, 0x2000 },
-  { 0x1a00, 0x32ad, 0x0000 },
-  { 0x1a00, 0x32af, 0x0000 },
-  { 0x9a00, 0x32c0, 0x5000 },
-  { 0x8f00, 0x32b8, 0x4000 },
-  { 0x8f00, 0x32b4, 0x3000 },
-  { 0x8f00, 0x32b2, 0x2000 },
-  { 0x0f00, 0x32b1, 0x0000 },
-  { 0x0f00, 0x32b3, 0x0000 },
-  { 0x8f00, 0x32b6, 0x2000 },
-  { 0x0f00, 0x32b5, 0x0000 },
-  { 0x0f00, 0x32b7, 0x0000 },
-  { 0x8f00, 0x32bc, 0x3000 },
-  { 0x8f00, 0x32ba, 0x2000 },
-  { 0x0f00, 0x32b9, 0x0000 },
-  { 0x0f00, 0x32bb, 0x0000 },
-  { 0x8f00, 0x32be, 0x2000 },
-  { 0x0f00, 0x32bd, 0x0000 },
-  { 0x0f00, 0x32bf, 0x0000 },
-  { 0x9a00, 0x32c8, 0x4000 },
-  { 0x9a00, 0x32c4, 0x3000 },
-  { 0x9a00, 0x32c2, 0x2000 },
-  { 0x1a00, 0x32c1, 0x0000 },
-  { 0x1a00, 0x32c3, 0x0000 },
-  { 0x9a00, 0x32c6, 0x2000 },
-  { 0x1a00, 0x32c5, 0x0000 },
-  { 0x1a00, 0x32c7, 0x0000 },
-  { 0x9a00, 0x32cc, 0x3000 },
-  { 0x9a00, 0x32ca, 0x2000 },
-  { 0x1a00, 0x32c9, 0x0000 },
-  { 0x1a00, 0x32cb, 0x0000 },
-  { 0x9a00, 0x32ce, 0x2000 },
-  { 0x1a00, 0x32cd, 0x0000 },
-  { 0x1a00, 0x32cf, 0x0000 },
-  { 0x9a00, 0x32f0, 0x6000 },
-  { 0x9a00, 0x32e0, 0x5000 },
-  { 0x9a00, 0x32d8, 0x4000 },
-  { 0x9a00, 0x32d4, 0x3000 },
-  { 0x9a00, 0x32d2, 0x2000 },
-  { 0x1a00, 0x32d1, 0x0000 },
-  { 0x1a00, 0x32d3, 0x0000 },
-  { 0x9a00, 0x32d6, 0x2000 },
-  { 0x1a00, 0x32d5, 0x0000 },
-  { 0x1a00, 0x32d7, 0x0000 },
-  { 0x9a00, 0x32dc, 0x3000 },
-  { 0x9a00, 0x32da, 0x2000 },
-  { 0x1a00, 0x32d9, 0x0000 },
-  { 0x1a00, 0x32db, 0x0000 },
-  { 0x9a00, 0x32de, 0x2000 },
-  { 0x1a00, 0x32dd, 0x0000 },
-  { 0x1a00, 0x32df, 0x0000 },
-  { 0x9a00, 0x32e8, 0x4000 },
-  { 0x9a00, 0x32e4, 0x3000 },
-  { 0x9a00, 0x32e2, 0x2000 },
-  { 0x1a00, 0x32e1, 0x0000 },
-  { 0x1a00, 0x32e3, 0x0000 },
-  { 0x9a00, 0x32e6, 0x2000 },
-  { 0x1a00, 0x32e5, 0x0000 },
-  { 0x1a00, 0x32e7, 0x0000 },
-  { 0x9a00, 0x32ec, 0x3000 },
-  { 0x9a00, 0x32ea, 0x2000 },
-  { 0x1a00, 0x32e9, 0x0000 },
-  { 0x1a00, 0x32eb, 0x0000 },
-  { 0x9a00, 0x32ee, 0x2000 },
-  { 0x1a00, 0x32ed, 0x0000 },
-  { 0x1a00, 0x32ef, 0x0000 },
-  { 0x9a00, 0x3301, 0x5000 },
-  { 0x9a00, 0x32f8, 0x4000 },
-  { 0x9a00, 0x32f4, 0x3000 },
-  { 0x9a00, 0x32f2, 0x2000 },
-  { 0x1a00, 0x32f1, 0x0000 },
-  { 0x1a00, 0x32f3, 0x0000 },
-  { 0x9a00, 0x32f6, 0x2000 },
-  { 0x1a00, 0x32f5, 0x0000 },
-  { 0x1a00, 0x32f7, 0x0000 },
-  { 0x9a00, 0x32fc, 0x3000 },
-  { 0x9a00, 0x32fa, 0x2000 },
-  { 0x1a00, 0x32f9, 0x0000 },
-  { 0x1a00, 0x32fb, 0x0000 },
-  { 0x9a00, 0x32fe, 0x2000 },
-  { 0x1a00, 0x32fd, 0x0000 },
-  { 0x1a00, 0x3300, 0x0000 },
-  { 0x9a00, 0x3309, 0x4000 },
-  { 0x9a00, 0x3305, 0x3000 },
-  { 0x9a00, 0x3303, 0x2000 },
-  { 0x1a00, 0x3302, 0x0000 },
-  { 0x1a00, 0x3304, 0x0000 },
-  { 0x9a00, 0x3307, 0x2000 },
-  { 0x1a00, 0x3306, 0x0000 },
-  { 0x1a00, 0x3308, 0x0000 },
-  { 0x9a00, 0x330d, 0x3000 },
-  { 0x9a00, 0x330b, 0x2000 },
-  { 0x1a00, 0x330a, 0x0000 },
-  { 0x1a00, 0x330c, 0x0000 },
-  { 0x9a00, 0x330f, 0x2000 },
-  { 0x1a00, 0x330e, 0x0000 },
-  { 0x1a00, 0x3310, 0x0000 },
-  { 0x9a00, 0x3351, 0x7000 },
-  { 0x9a00, 0x3331, 0x6000 },
-  { 0x9a00, 0x3321, 0x5000 },
-  { 0x9a00, 0x3319, 0x4000 },
-  { 0x9a00, 0x3315, 0x3000 },
-  { 0x9a00, 0x3313, 0x2000 },
-  { 0x1a00, 0x3312, 0x0000 },
-  { 0x1a00, 0x3314, 0x0000 },
-  { 0x9a00, 0x3317, 0x2000 },
-  { 0x1a00, 0x3316, 0x0000 },
-  { 0x1a00, 0x3318, 0x0000 },
-  { 0x9a00, 0x331d, 0x3000 },
-  { 0x9a00, 0x331b, 0x2000 },
-  { 0x1a00, 0x331a, 0x0000 },
-  { 0x1a00, 0x331c, 0x0000 },
-  { 0x9a00, 0x331f, 0x2000 },
-  { 0x1a00, 0x331e, 0x0000 },
-  { 0x1a00, 0x3320, 0x0000 },
-  { 0x9a00, 0x3329, 0x4000 },
-  { 0x9a00, 0x3325, 0x3000 },
-  { 0x9a00, 0x3323, 0x2000 },
-  { 0x1a00, 0x3322, 0x0000 },
-  { 0x1a00, 0x3324, 0x0000 },
-  { 0x9a00, 0x3327, 0x2000 },
-  { 0x1a00, 0x3326, 0x0000 },
-  { 0x1a00, 0x3328, 0x0000 },
-  { 0x9a00, 0x332d, 0x3000 },
-  { 0x9a00, 0x332b, 0x2000 },
-  { 0x1a00, 0x332a, 0x0000 },
-  { 0x1a00, 0x332c, 0x0000 },
-  { 0x9a00, 0x332f, 0x2000 },
-  { 0x1a00, 0x332e, 0x0000 },
-  { 0x1a00, 0x3330, 0x0000 },
-  { 0x9a00, 0x3341, 0x5000 },
-  { 0x9a00, 0x3339, 0x4000 },
-  { 0x9a00, 0x3335, 0x3000 },
-  { 0x9a00, 0x3333, 0x2000 },
-  { 0x1a00, 0x3332, 0x0000 },
-  { 0x1a00, 0x3334, 0x0000 },
-  { 0x9a00, 0x3337, 0x2000 },
-  { 0x1a00, 0x3336, 0x0000 },
-  { 0x1a00, 0x3338, 0x0000 },
-  { 0x9a00, 0x333d, 0x3000 },
-  { 0x9a00, 0x333b, 0x2000 },
-  { 0x1a00, 0x333a, 0x0000 },
-  { 0x1a00, 0x333c, 0x0000 },
-  { 0x9a00, 0x333f, 0x2000 },
-  { 0x1a00, 0x333e, 0x0000 },
-  { 0x1a00, 0x3340, 0x0000 },
-  { 0x9a00, 0x3349, 0x4000 },
-  { 0x9a00, 0x3345, 0x3000 },
-  { 0x9a00, 0x3343, 0x2000 },
-  { 0x1a00, 0x3342, 0x0000 },
-  { 0x1a00, 0x3344, 0x0000 },
-  { 0x9a00, 0x3347, 0x2000 },
-  { 0x1a00, 0x3346, 0x0000 },
-  { 0x1a00, 0x3348, 0x0000 },
-  { 0x9a00, 0x334d, 0x3000 },
-  { 0x9a00, 0x334b, 0x2000 },
-  { 0x1a00, 0x334a, 0x0000 },
-  { 0x1a00, 0x334c, 0x0000 },
-  { 0x9a00, 0x334f, 0x2000 },
-  { 0x1a00, 0x334e, 0x0000 },
-  { 0x1a00, 0x3350, 0x0000 },
-  { 0x9a00, 0x3371, 0x6000 },
-  { 0x9a00, 0x3361, 0x5000 },
-  { 0x9a00, 0x3359, 0x4000 },
-  { 0x9a00, 0x3355, 0x3000 },
-  { 0x9a00, 0x3353, 0x2000 },
-  { 0x1a00, 0x3352, 0x0000 },
-  { 0x1a00, 0x3354, 0x0000 },
-  { 0x9a00, 0x3357, 0x2000 },
-  { 0x1a00, 0x3356, 0x0000 },
-  { 0x1a00, 0x3358, 0x0000 },
-  { 0x9a00, 0x335d, 0x3000 },
-  { 0x9a00, 0x335b, 0x2000 },
-  { 0x1a00, 0x335a, 0x0000 },
-  { 0x1a00, 0x335c, 0x0000 },
-  { 0x9a00, 0x335f, 0x2000 },
-  { 0x1a00, 0x335e, 0x0000 },
-  { 0x1a00, 0x3360, 0x0000 },
-  { 0x9a00, 0x3369, 0x4000 },
-  { 0x9a00, 0x3365, 0x3000 },
-  { 0x9a00, 0x3363, 0x2000 },
-  { 0x1a00, 0x3362, 0x0000 },
-  { 0x1a00, 0x3364, 0x0000 },
-  { 0x9a00, 0x3367, 0x2000 },
-  { 0x1a00, 0x3366, 0x0000 },
-  { 0x1a00, 0x3368, 0x0000 },
-  { 0x9a00, 0x336d, 0x3000 },
-  { 0x9a00, 0x336b, 0x2000 },
-  { 0x1a00, 0x336a, 0x0000 },
-  { 0x1a00, 0x336c, 0x0000 },
-  { 0x9a00, 0x336f, 0x2000 },
-  { 0x1a00, 0x336e, 0x0000 },
-  { 0x1a00, 0x3370, 0x0000 },
-  { 0x9a00, 0x3381, 0x5000 },
-  { 0x9a00, 0x3379, 0x4000 },
-  { 0x9a00, 0x3375, 0x3000 },
-  { 0x9a00, 0x3373, 0x2000 },
-  { 0x1a00, 0x3372, 0x0000 },
-  { 0x1a00, 0x3374, 0x0000 },
-  { 0x9a00, 0x3377, 0x2000 },
-  { 0x1a00, 0x3376, 0x0000 },
-  { 0x1a00, 0x3378, 0x0000 },
-  { 0x9a00, 0x337d, 0x3000 },
-  { 0x9a00, 0x337b, 0x2000 },
-  { 0x1a00, 0x337a, 0x0000 },
-  { 0x1a00, 0x337c, 0x0000 },
-  { 0x9a00, 0x337f, 0x2000 },
-  { 0x1a00, 0x337e, 0x0000 },
-  { 0x1a00, 0x3380, 0x0000 },
-  { 0x9a00, 0x3389, 0x4000 },
-  { 0x9a00, 0x3385, 0x3000 },
-  { 0x9a00, 0x3383, 0x2000 },
-  { 0x1a00, 0x3382, 0x0000 },
-  { 0x1a00, 0x3384, 0x0000 },
-  { 0x9a00, 0x3387, 0x2000 },
-  { 0x1a00, 0x3386, 0x0000 },
-  { 0x1a00, 0x3388, 0x0000 },
-  { 0x9a00, 0x338d, 0x3000 },
-  { 0x9a00, 0x338b, 0x2000 },
-  { 0x1a00, 0x338a, 0x0000 },
-  { 0x1a00, 0x338c, 0x0000 },
-  { 0x9a00, 0x338f, 0x2000 },
-  { 0x1a00, 0x338e, 0x0000 },
-  { 0x1a00, 0x3390, 0x0000 },
-  { 0x8700, 0xa14d, 0xa000 },
-  { 0x8700, 0xa04d, 0x9000 },
-  { 0x9a00, 0x4dcf, 0x8000 },
-  { 0x9a00, 0x33d1, 0x7000 },
-  { 0x9a00, 0x33b1, 0x6000 },
-  { 0x9a00, 0x33a1, 0x5000 },
-  { 0x9a00, 0x3399, 0x4000 },
-  { 0x9a00, 0x3395, 0x3000 },
-  { 0x9a00, 0x3393, 0x2000 },
-  { 0x1a00, 0x3392, 0x0000 },
-  { 0x1a00, 0x3394, 0x0000 },
-  { 0x9a00, 0x3397, 0x2000 },
-  { 0x1a00, 0x3396, 0x0000 },
-  { 0x1a00, 0x3398, 0x0000 },
-  { 0x9a00, 0x339d, 0x3000 },
-  { 0x9a00, 0x339b, 0x2000 },
-  { 0x1a00, 0x339a, 0x0000 },
-  { 0x1a00, 0x339c, 0x0000 },
-  { 0x9a00, 0x339f, 0x2000 },
-  { 0x1a00, 0x339e, 0x0000 },
-  { 0x1a00, 0x33a0, 0x0000 },
-  { 0x9a00, 0x33a9, 0x4000 },
-  { 0x9a00, 0x33a5, 0x3000 },
-  { 0x9a00, 0x33a3, 0x2000 },
-  { 0x1a00, 0x33a2, 0x0000 },
-  { 0x1a00, 0x33a4, 0x0000 },
-  { 0x9a00, 0x33a7, 0x2000 },
-  { 0x1a00, 0x33a6, 0x0000 },
-  { 0x1a00, 0x33a8, 0x0000 },
-  { 0x9a00, 0x33ad, 0x3000 },
-  { 0x9a00, 0x33ab, 0x2000 },
-  { 0x1a00, 0x33aa, 0x0000 },
-  { 0x1a00, 0x33ac, 0x0000 },
-  { 0x9a00, 0x33af, 0x2000 },
-  { 0x1a00, 0x33ae, 0x0000 },
-  { 0x1a00, 0x33b0, 0x0000 },
-  { 0x9a00, 0x33c1, 0x5000 },
-  { 0x9a00, 0x33b9, 0x4000 },
-  { 0x9a00, 0x33b5, 0x3000 },
-  { 0x9a00, 0x33b3, 0x2000 },
-  { 0x1a00, 0x33b2, 0x0000 },
-  { 0x1a00, 0x33b4, 0x0000 },
-  { 0x9a00, 0x33b7, 0x2000 },
-  { 0x1a00, 0x33b6, 0x0000 },
-  { 0x1a00, 0x33b8, 0x0000 },
-  { 0x9a00, 0x33bd, 0x3000 },
-  { 0x9a00, 0x33bb, 0x2000 },
-  { 0x1a00, 0x33ba, 0x0000 },
-  { 0x1a00, 0x33bc, 0x0000 },
-  { 0x9a00, 0x33bf, 0x2000 },
-  { 0x1a00, 0x33be, 0x0000 },
-  { 0x1a00, 0x33c0, 0x0000 },
-  { 0x9a00, 0x33c9, 0x4000 },
-  { 0x9a00, 0x33c5, 0x3000 },
-  { 0x9a00, 0x33c3, 0x2000 },
-  { 0x1a00, 0x33c2, 0x0000 },
-  { 0x1a00, 0x33c4, 0x0000 },
-  { 0x9a00, 0x33c7, 0x2000 },
-  { 0x1a00, 0x33c6, 0x0000 },
-  { 0x1a00, 0x33c8, 0x0000 },
-  { 0x9a00, 0x33cd, 0x3000 },
-  { 0x9a00, 0x33cb, 0x2000 },
-  { 0x1a00, 0x33ca, 0x0000 },
-  { 0x1a00, 0x33cc, 0x0000 },
-  { 0x9a00, 0x33cf, 0x2000 },
-  { 0x1a00, 0x33ce, 0x0000 },
-  { 0x1a00, 0x33d0, 0x0000 },
-  { 0x9a00, 0x33f1, 0x6000 },
-  { 0x9a00, 0x33e1, 0x5000 },
-  { 0x9a00, 0x33d9, 0x4000 },
-  { 0x9a00, 0x33d5, 0x3000 },
-  { 0x9a00, 0x33d3, 0x2000 },
-  { 0x1a00, 0x33d2, 0x0000 },
-  { 0x1a00, 0x33d4, 0x0000 },
-  { 0x9a00, 0x33d7, 0x2000 },
-  { 0x1a00, 0x33d6, 0x0000 },
-  { 0x1a00, 0x33d8, 0x0000 },
-  { 0x9a00, 0x33dd, 0x3000 },
-  { 0x9a00, 0x33db, 0x2000 },
-  { 0x1a00, 0x33da, 0x0000 },
-  { 0x1a00, 0x33dc, 0x0000 },
-  { 0x9a00, 0x33df, 0x2000 },
-  { 0x1a00, 0x33de, 0x0000 },
-  { 0x1a00, 0x33e0, 0x0000 },
-  { 0x9a00, 0x33e9, 0x4000 },
-  { 0x9a00, 0x33e5, 0x3000 },
-  { 0x9a00, 0x33e3, 0x2000 },
-  { 0x1a00, 0x33e2, 0x0000 },
-  { 0x1a00, 0x33e4, 0x0000 },
-  { 0x9a00, 0x33e7, 0x2000 },
-  { 0x1a00, 0x33e6, 0x0000 },
-  { 0x1a00, 0x33e8, 0x0000 },
-  { 0x9a00, 0x33ed, 0x3000 },
-  { 0x9a00, 0x33eb, 0x2000 },
-  { 0x1a00, 0x33ea, 0x0000 },
-  { 0x1a00, 0x33ec, 0x0000 },
-  { 0x9a00, 0x33ef, 0x2000 },
-  { 0x1a00, 0x33ee, 0x0000 },
-  { 0x1a00, 0x33f0, 0x0000 },
-  { 0x8700, 0x4db5, 0x5000 },
-  { 0x9a00, 0x33f9, 0x4000 },
-  { 0x9a00, 0x33f5, 0x3000 },
-  { 0x9a00, 0x33f3, 0x2000 },
-  { 0x1a00, 0x33f2, 0x0000 },
-  { 0x1a00, 0x33f4, 0x0000 },
-  { 0x9a00, 0x33f7, 0x2000 },
-  { 0x1a00, 0x33f6, 0x0000 },
-  { 0x1a00, 0x33f8, 0x0000 },
-  { 0x9a00, 0x33fd, 0x3000 },
-  { 0x9a00, 0x33fb, 0x2000 },
-  { 0x1a00, 0x33fa, 0x0000 },
-  { 0x1a00, 0x33fc, 0x0000 },
-  { 0x9a00, 0x33ff, 0x2000 },
-  { 0x1a00, 0x33fe, 0x0000 },
-  { 0x0700, 0x3400, 0x0000 },
-  { 0x9a00, 0x4dc7, 0x4000 },
-  { 0x9a00, 0x4dc3, 0x3000 },
-  { 0x9a00, 0x4dc1, 0x2000 },
-  { 0x1a00, 0x4dc0, 0x0000 },
-  { 0x1a00, 0x4dc2, 0x0000 },
-  { 0x9a00, 0x4dc5, 0x2000 },
-  { 0x1a00, 0x4dc4, 0x0000 },
-  { 0x1a00, 0x4dc6, 0x0000 },
-  { 0x9a00, 0x4dcb, 0x3000 },
-  { 0x9a00, 0x4dc9, 0x2000 },
-  { 0x1a00, 0x4dc8, 0x0000 },
-  { 0x1a00, 0x4dca, 0x0000 },
-  { 0x9a00, 0x4dcd, 0x2000 },
-  { 0x1a00, 0x4dcc, 0x0000 },
-  { 0x1a00, 0x4dce, 0x0000 },
-  { 0x8700, 0xa00d, 0x7000 },
-  { 0x9a00, 0x4def, 0x6000 },
-  { 0x9a00, 0x4ddf, 0x5000 },
-  { 0x9a00, 0x4dd7, 0x4000 },
-  { 0x9a00, 0x4dd3, 0x3000 },
-  { 0x9a00, 0x4dd1, 0x2000 },
-  { 0x1a00, 0x4dd0, 0x0000 },
-  { 0x1a00, 0x4dd2, 0x0000 },
-  { 0x9a00, 0x4dd5, 0x2000 },
-  { 0x1a00, 0x4dd4, 0x0000 },
-  { 0x1a00, 0x4dd6, 0x0000 },
-  { 0x9a00, 0x4ddb, 0x3000 },
-  { 0x9a00, 0x4dd9, 0x2000 },
-  { 0x1a00, 0x4dd8, 0x0000 },
-  { 0x1a00, 0x4dda, 0x0000 },
-  { 0x9a00, 0x4ddd, 0x2000 },
-  { 0x1a00, 0x4ddc, 0x0000 },
-  { 0x1a00, 0x4dde, 0x0000 },
-  { 0x9a00, 0x4de7, 0x4000 },
-  { 0x9a00, 0x4de3, 0x3000 },
-  { 0x9a00, 0x4de1, 0x2000 },
-  { 0x1a00, 0x4de0, 0x0000 },
-  { 0x1a00, 0x4de2, 0x0000 },
-  { 0x9a00, 0x4de5, 0x2000 },
-  { 0x1a00, 0x4de4, 0x0000 },
-  { 0x1a00, 0x4de6, 0x0000 },
-  { 0x9a00, 0x4deb, 0x3000 },
-  { 0x9a00, 0x4de9, 0x2000 },
-  { 0x1a00, 0x4de8, 0x0000 },
-  { 0x1a00, 0x4dea, 0x0000 },
-  { 0x9a00, 0x4ded, 0x2000 },
-  { 0x1a00, 0x4dec, 0x0000 },
-  { 0x1a00, 0x4dee, 0x0000 },
-  { 0x9a00, 0x4dff, 0x5000 },
-  { 0x9a00, 0x4df7, 0x4000 },
-  { 0x9a00, 0x4df3, 0x3000 },
-  { 0x9a00, 0x4df1, 0x2000 },
-  { 0x1a00, 0x4df0, 0x0000 },
-  { 0x1a00, 0x4df2, 0x0000 },
-  { 0x9a00, 0x4df5, 0x2000 },
-  { 0x1a00, 0x4df4, 0x0000 },
-  { 0x1a00, 0x4df6, 0x0000 },
-  { 0x9a00, 0x4dfb, 0x3000 },
-  { 0x9a00, 0x4df9, 0x2000 },
-  { 0x1a00, 0x4df8, 0x0000 },
-  { 0x1a00, 0x4dfa, 0x0000 },
-  { 0x9a00, 0x4dfd, 0x2000 },
-  { 0x1a00, 0x4dfc, 0x0000 },
-  { 0x1a00, 0x4dfe, 0x0000 },
-  { 0x8700, 0xa005, 0x4000 },
-  { 0x8700, 0xa001, 0x3000 },
-  { 0x8700, 0x9fa5, 0x2000 },
-  { 0x0700, 0x4e00, 0x0000 },
-  { 0x0700, 0xa000, 0x0000 },
-  { 0x8700, 0xa003, 0x2000 },
-  { 0x0700, 0xa002, 0x0000 },
-  { 0x0700, 0xa004, 0x0000 },
-  { 0x8700, 0xa009, 0x3000 },
-  { 0x8700, 0xa007, 0x2000 },
-  { 0x0700, 0xa006, 0x0000 },
-  { 0x0700, 0xa008, 0x0000 },
-  { 0x8700, 0xa00b, 0x2000 },
-  { 0x0700, 0xa00a, 0x0000 },
-  { 0x0700, 0xa00c, 0x0000 },
-  { 0x8700, 0xa02d, 0x6000 },
-  { 0x8700, 0xa01d, 0x5000 },
-  { 0x8700, 0xa015, 0x4000 },
-  { 0x8700, 0xa011, 0x3000 },
-  { 0x8700, 0xa00f, 0x2000 },
-  { 0x0700, 0xa00e, 0x0000 },
-  { 0x0700, 0xa010, 0x0000 },
-  { 0x8700, 0xa013, 0x2000 },
-  { 0x0700, 0xa012, 0x0000 },
-  { 0x0700, 0xa014, 0x0000 },
-  { 0x8700, 0xa019, 0x3000 },
-  { 0x8700, 0xa017, 0x2000 },
-  { 0x0700, 0xa016, 0x0000 },
-  { 0x0700, 0xa018, 0x0000 },
-  { 0x8700, 0xa01b, 0x2000 },
-  { 0x0700, 0xa01a, 0x0000 },
-  { 0x0700, 0xa01c, 0x0000 },
-  { 0x8700, 0xa025, 0x4000 },
-  { 0x8700, 0xa021, 0x3000 },
-  { 0x8700, 0xa01f, 0x2000 },
-  { 0x0700, 0xa01e, 0x0000 },
-  { 0x0700, 0xa020, 0x0000 },
-  { 0x8700, 0xa023, 0x2000 },
-  { 0x0700, 0xa022, 0x0000 },
-  { 0x0700, 0xa024, 0x0000 },
-  { 0x8700, 0xa029, 0x3000 },
-  { 0x8700, 0xa027, 0x2000 },
-  { 0x0700, 0xa026, 0x0000 },
-  { 0x0700, 0xa028, 0x0000 },
-  { 0x8700, 0xa02b, 0x2000 },
-  { 0x0700, 0xa02a, 0x0000 },
-  { 0x0700, 0xa02c, 0x0000 },
-  { 0x8700, 0xa03d, 0x5000 },
-  { 0x8700, 0xa035, 0x4000 },
-  { 0x8700, 0xa031, 0x3000 },
-  { 0x8700, 0xa02f, 0x2000 },
-  { 0x0700, 0xa02e, 0x0000 },
-  { 0x0700, 0xa030, 0x0000 },
-  { 0x8700, 0xa033, 0x2000 },
-  { 0x0700, 0xa032, 0x0000 },
-  { 0x0700, 0xa034, 0x0000 },
-  { 0x8700, 0xa039, 0x3000 },
-  { 0x8700, 0xa037, 0x2000 },
-  { 0x0700, 0xa036, 0x0000 },
-  { 0x0700, 0xa038, 0x0000 },
-  { 0x8700, 0xa03b, 0x2000 },
-  { 0x0700, 0xa03a, 0x0000 },
-  { 0x0700, 0xa03c, 0x0000 },
-  { 0x8700, 0xa045, 0x4000 },
-  { 0x8700, 0xa041, 0x3000 },
-  { 0x8700, 0xa03f, 0x2000 },
-  { 0x0700, 0xa03e, 0x0000 },
-  { 0x0700, 0xa040, 0x0000 },
-  { 0x8700, 0xa043, 0x2000 },
-  { 0x0700, 0xa042, 0x0000 },
-  { 0x0700, 0xa044, 0x0000 },
-  { 0x8700, 0xa049, 0x3000 },
-  { 0x8700, 0xa047, 0x2000 },
-  { 0x0700, 0xa046, 0x0000 },
-  { 0x0700, 0xa048, 0x0000 },
-  { 0x8700, 0xa04b, 0x2000 },
-  { 0x0700, 0xa04a, 0x0000 },
-  { 0x0700, 0xa04c, 0x0000 },
-  { 0x8700, 0xa0cd, 0x8000 },
-  { 0x8700, 0xa08d, 0x7000 },
-  { 0x8700, 0xa06d, 0x6000 },
-  { 0x8700, 0xa05d, 0x5000 },
-  { 0x8700, 0xa055, 0x4000 },
-  { 0x8700, 0xa051, 0x3000 },
-  { 0x8700, 0xa04f, 0x2000 },
-  { 0x0700, 0xa04e, 0x0000 },
-  { 0x0700, 0xa050, 0x0000 },
-  { 0x8700, 0xa053, 0x2000 },
-  { 0x0700, 0xa052, 0x0000 },
-  { 0x0700, 0xa054, 0x0000 },
-  { 0x8700, 0xa059, 0x3000 },
-  { 0x8700, 0xa057, 0x2000 },
-  { 0x0700, 0xa056, 0x0000 },
-  { 0x0700, 0xa058, 0x0000 },
-  { 0x8700, 0xa05b, 0x2000 },
-  { 0x0700, 0xa05a, 0x0000 },
-  { 0x0700, 0xa05c, 0x0000 },
-  { 0x8700, 0xa065, 0x4000 },
-  { 0x8700, 0xa061, 0x3000 },
-  { 0x8700, 0xa05f, 0x2000 },
-  { 0x0700, 0xa05e, 0x0000 },
-  { 0x0700, 0xa060, 0x0000 },
-  { 0x8700, 0xa063, 0x2000 },
-  { 0x0700, 0xa062, 0x0000 },
-  { 0x0700, 0xa064, 0x0000 },
-  { 0x8700, 0xa069, 0x3000 },
-  { 0x8700, 0xa067, 0x2000 },
-  { 0x0700, 0xa066, 0x0000 },
-  { 0x0700, 0xa068, 0x0000 },
-  { 0x8700, 0xa06b, 0x2000 },
-  { 0x0700, 0xa06a, 0x0000 },
-  { 0x0700, 0xa06c, 0x0000 },
-  { 0x8700, 0xa07d, 0x5000 },
-  { 0x8700, 0xa075, 0x4000 },
-  { 0x8700, 0xa071, 0x3000 },
-  { 0x8700, 0xa06f, 0x2000 },
-  { 0x0700, 0xa06e, 0x0000 },
-  { 0x0700, 0xa070, 0x0000 },
-  { 0x8700, 0xa073, 0x2000 },
-  { 0x0700, 0xa072, 0x0000 },
-  { 0x0700, 0xa074, 0x0000 },
-  { 0x8700, 0xa079, 0x3000 },
-  { 0x8700, 0xa077, 0x2000 },
-  { 0x0700, 0xa076, 0x0000 },
-  { 0x0700, 0xa078, 0x0000 },
-  { 0x8700, 0xa07b, 0x2000 },
-  { 0x0700, 0xa07a, 0x0000 },
-  { 0x0700, 0xa07c, 0x0000 },
-  { 0x8700, 0xa085, 0x4000 },
-  { 0x8700, 0xa081, 0x3000 },
-  { 0x8700, 0xa07f, 0x2000 },
-  { 0x0700, 0xa07e, 0x0000 },
-  { 0x0700, 0xa080, 0x0000 },
-  { 0x8700, 0xa083, 0x2000 },
-  { 0x0700, 0xa082, 0x0000 },
-  { 0x0700, 0xa084, 0x0000 },
-  { 0x8700, 0xa089, 0x3000 },
-  { 0x8700, 0xa087, 0x2000 },
-  { 0x0700, 0xa086, 0x0000 },
-  { 0x0700, 0xa088, 0x0000 },
-  { 0x8700, 0xa08b, 0x2000 },
-  { 0x0700, 0xa08a, 0x0000 },
-  { 0x0700, 0xa08c, 0x0000 },
-  { 0x8700, 0xa0ad, 0x6000 },
-  { 0x8700, 0xa09d, 0x5000 },
-  { 0x8700, 0xa095, 0x4000 },
-  { 0x8700, 0xa091, 0x3000 },
-  { 0x8700, 0xa08f, 0x2000 },
-  { 0x0700, 0xa08e, 0x0000 },
-  { 0x0700, 0xa090, 0x0000 },
-  { 0x8700, 0xa093, 0x2000 },
-  { 0x0700, 0xa092, 0x0000 },
-  { 0x0700, 0xa094, 0x0000 },
-  { 0x8700, 0xa099, 0x3000 },
-  { 0x8700, 0xa097, 0x2000 },
-  { 0x0700, 0xa096, 0x0000 },
-  { 0x0700, 0xa098, 0x0000 },
-  { 0x8700, 0xa09b, 0x2000 },
-  { 0x0700, 0xa09a, 0x0000 },
-  { 0x0700, 0xa09c, 0x0000 },
-  { 0x8700, 0xa0a5, 0x4000 },
-  { 0x8700, 0xa0a1, 0x3000 },
-  { 0x8700, 0xa09f, 0x2000 },
-  { 0x0700, 0xa09e, 0x0000 },
-  { 0x0700, 0xa0a0, 0x0000 },
-  { 0x8700, 0xa0a3, 0x2000 },
-  { 0x0700, 0xa0a2, 0x0000 },
-  { 0x0700, 0xa0a4, 0x0000 },
-  { 0x8700, 0xa0a9, 0x3000 },
-  { 0x8700, 0xa0a7, 0x2000 },
-  { 0x0700, 0xa0a6, 0x0000 },
-  { 0x0700, 0xa0a8, 0x0000 },
-  { 0x8700, 0xa0ab, 0x2000 },
-  { 0x0700, 0xa0aa, 0x0000 },
-  { 0x0700, 0xa0ac, 0x0000 },
-  { 0x8700, 0xa0bd, 0x5000 },
-  { 0x8700, 0xa0b5, 0x4000 },
-  { 0x8700, 0xa0b1, 0x3000 },
-  { 0x8700, 0xa0af, 0x2000 },
-  { 0x0700, 0xa0ae, 0x0000 },
-  { 0x0700, 0xa0b0, 0x0000 },
-  { 0x8700, 0xa0b3, 0x2000 },
-  { 0x0700, 0xa0b2, 0x0000 },
-  { 0x0700, 0xa0b4, 0x0000 },
-  { 0x8700, 0xa0b9, 0x3000 },
-  { 0x8700, 0xa0b7, 0x2000 },
-  { 0x0700, 0xa0b6, 0x0000 },
-  { 0x0700, 0xa0b8, 0x0000 },
-  { 0x8700, 0xa0bb, 0x2000 },
-  { 0x0700, 0xa0ba, 0x0000 },
-  { 0x0700, 0xa0bc, 0x0000 },
-  { 0x8700, 0xa0c5, 0x4000 },
-  { 0x8700, 0xa0c1, 0x3000 },
-  { 0x8700, 0xa0bf, 0x2000 },
-  { 0x0700, 0xa0be, 0x0000 },
-  { 0x0700, 0xa0c0, 0x0000 },
-  { 0x8700, 0xa0c3, 0x2000 },
-  { 0x0700, 0xa0c2, 0x0000 },
-  { 0x0700, 0xa0c4, 0x0000 },
-  { 0x8700, 0xa0c9, 0x3000 },
-  { 0x8700, 0xa0c7, 0x2000 },
-  { 0x0700, 0xa0c6, 0x0000 },
-  { 0x0700, 0xa0c8, 0x0000 },
-  { 0x8700, 0xa0cb, 0x2000 },
-  { 0x0700, 0xa0ca, 0x0000 },
-  { 0x0700, 0xa0cc, 0x0000 },
-  { 0x8700, 0xa10d, 0x7000 },
-  { 0x8700, 0xa0ed, 0x6000 },
-  { 0x8700, 0xa0dd, 0x5000 },
-  { 0x8700, 0xa0d5, 0x4000 },
-  { 0x8700, 0xa0d1, 0x3000 },
-  { 0x8700, 0xa0cf, 0x2000 },
-  { 0x0700, 0xa0ce, 0x0000 },
-  { 0x0700, 0xa0d0, 0x0000 },
-  { 0x8700, 0xa0d3, 0x2000 },
-  { 0x0700, 0xa0d2, 0x0000 },
-  { 0x0700, 0xa0d4, 0x0000 },
-  { 0x8700, 0xa0d9, 0x3000 },
-  { 0x8700, 0xa0d7, 0x2000 },
-  { 0x0700, 0xa0d6, 0x0000 },
-  { 0x0700, 0xa0d8, 0x0000 },
-  { 0x8700, 0xa0db, 0x2000 },
-  { 0x0700, 0xa0da, 0x0000 },
-  { 0x0700, 0xa0dc, 0x0000 },
-  { 0x8700, 0xa0e5, 0x4000 },
-  { 0x8700, 0xa0e1, 0x3000 },
-  { 0x8700, 0xa0df, 0x2000 },
-  { 0x0700, 0xa0de, 0x0000 },
-  { 0x0700, 0xa0e0, 0x0000 },
-  { 0x8700, 0xa0e3, 0x2000 },
-  { 0x0700, 0xa0e2, 0x0000 },
-  { 0x0700, 0xa0e4, 0x0000 },
-  { 0x8700, 0xa0e9, 0x3000 },
-  { 0x8700, 0xa0e7, 0x2000 },
-  { 0x0700, 0xa0e6, 0x0000 },
-  { 0x0700, 0xa0e8, 0x0000 },
-  { 0x8700, 0xa0eb, 0x2000 },
-  { 0x0700, 0xa0ea, 0x0000 },
-  { 0x0700, 0xa0ec, 0x0000 },
-  { 0x8700, 0xa0fd, 0x5000 },
-  { 0x8700, 0xa0f5, 0x4000 },
-  { 0x8700, 0xa0f1, 0x3000 },
-  { 0x8700, 0xa0ef, 0x2000 },
-  { 0x0700, 0xa0ee, 0x0000 },
-  { 0x0700, 0xa0f0, 0x0000 },
-  { 0x8700, 0xa0f3, 0x2000 },
-  { 0x0700, 0xa0f2, 0x0000 },
-  { 0x0700, 0xa0f4, 0x0000 },
-  { 0x8700, 0xa0f9, 0x3000 },
-  { 0x8700, 0xa0f7, 0x2000 },
-  { 0x0700, 0xa0f6, 0x0000 },
-  { 0x0700, 0xa0f8, 0x0000 },
-  { 0x8700, 0xa0fb, 0x2000 },
-  { 0x0700, 0xa0fa, 0x0000 },
-  { 0x0700, 0xa0fc, 0x0000 },
-  { 0x8700, 0xa105, 0x4000 },
-  { 0x8700, 0xa101, 0x3000 },
-  { 0x8700, 0xa0ff, 0x2000 },
-  { 0x0700, 0xa0fe, 0x0000 },
-  { 0x0700, 0xa100, 0x0000 },
-  { 0x8700, 0xa103, 0x2000 },
-  { 0x0700, 0xa102, 0x0000 },
-  { 0x0700, 0xa104, 0x0000 },
-  { 0x8700, 0xa109, 0x3000 },
-  { 0x8700, 0xa107, 0x2000 },
-  { 0x0700, 0xa106, 0x0000 },
-  { 0x0700, 0xa108, 0x0000 },
-  { 0x8700, 0xa10b, 0x2000 },
-  { 0x0700, 0xa10a, 0x0000 },
-  { 0x0700, 0xa10c, 0x0000 },
-  { 0x8700, 0xa12d, 0x6000 },
-  { 0x8700, 0xa11d, 0x5000 },
-  { 0x8700, 0xa115, 0x4000 },
-  { 0x8700, 0xa111, 0x3000 },
-  { 0x8700, 0xa10f, 0x2000 },
-  { 0x0700, 0xa10e, 0x0000 },
-  { 0x0700, 0xa110, 0x0000 },
-  { 0x8700, 0xa113, 0x2000 },
-  { 0x0700, 0xa112, 0x0000 },
-  { 0x0700, 0xa114, 0x0000 },
-  { 0x8700, 0xa119, 0x3000 },
-  { 0x8700, 0xa117, 0x2000 },
-  { 0x0700, 0xa116, 0x0000 },
-  { 0x0700, 0xa118, 0x0000 },
-  { 0x8700, 0xa11b, 0x2000 },
-  { 0x0700, 0xa11a, 0x0000 },
-  { 0x0700, 0xa11c, 0x0000 },
-  { 0x8700, 0xa125, 0x4000 },
-  { 0x8700, 0xa121, 0x3000 },
-  { 0x8700, 0xa11f, 0x2000 },
-  { 0x0700, 0xa11e, 0x0000 },
-  { 0x0700, 0xa120, 0x0000 },
-  { 0x8700, 0xa123, 0x2000 },
-  { 0x0700, 0xa122, 0x0000 },
-  { 0x0700, 0xa124, 0x0000 },
-  { 0x8700, 0xa129, 0x3000 },
-  { 0x8700, 0xa127, 0x2000 },
-  { 0x0700, 0xa126, 0x0000 },
-  { 0x0700, 0xa128, 0x0000 },
-  { 0x8700, 0xa12b, 0x2000 },
-  { 0x0700, 0xa12a, 0x0000 },
-  { 0x0700, 0xa12c, 0x0000 },
-  { 0x8700, 0xa13d, 0x5000 },
-  { 0x8700, 0xa135, 0x4000 },
-  { 0x8700, 0xa131, 0x3000 },
-  { 0x8700, 0xa12f, 0x2000 },
-  { 0x0700, 0xa12e, 0x0000 },
-  { 0x0700, 0xa130, 0x0000 },
-  { 0x8700, 0xa133, 0x2000 },
-  { 0x0700, 0xa132, 0x0000 },
-  { 0x0700, 0xa134, 0x0000 },
-  { 0x8700, 0xa139, 0x3000 },
-  { 0x8700, 0xa137, 0x2000 },
-  { 0x0700, 0xa136, 0x0000 },
-  { 0x0700, 0xa138, 0x0000 },
-  { 0x8700, 0xa13b, 0x2000 },
-  { 0x0700, 0xa13a, 0x0000 },
-  { 0x0700, 0xa13c, 0x0000 },
-  { 0x8700, 0xa145, 0x4000 },
-  { 0x8700, 0xa141, 0x3000 },
-  { 0x8700, 0xa13f, 0x2000 },
-  { 0x0700, 0xa13e, 0x0000 },
-  { 0x0700, 0xa140, 0x0000 },
-  { 0x8700, 0xa143, 0x2000 },
-  { 0x0700, 0xa142, 0x0000 },
-  { 0x0700, 0xa144, 0x0000 },
-  { 0x8700, 0xa149, 0x3000 },
-  { 0x8700, 0xa147, 0x2000 },
-  { 0x0700, 0xa146, 0x0000 },
-  { 0x0700, 0xa148, 0x0000 },
-  { 0x8700, 0xa14b, 0x2000 },
-  { 0x0700, 0xa14a, 0x0000 },
-  { 0x0700, 0xa14c, 0x0000 },
-  { 0x8700, 0xa24d, 0x9000 },
-  { 0x8700, 0xa1cd, 0x8000 },
-  { 0x8700, 0xa18d, 0x7000 },
-  { 0x8700, 0xa16d, 0x6000 },
-  { 0x8700, 0xa15d, 0x5000 },
-  { 0x8700, 0xa155, 0x4000 },
-  { 0x8700, 0xa151, 0x3000 },
-  { 0x8700, 0xa14f, 0x2000 },
-  { 0x0700, 0xa14e, 0x0000 },
-  { 0x0700, 0xa150, 0x0000 },
-  { 0x8700, 0xa153, 0x2000 },
-  { 0x0700, 0xa152, 0x0000 },
-  { 0x0700, 0xa154, 0x0000 },
-  { 0x8700, 0xa159, 0x3000 },
-  { 0x8700, 0xa157, 0x2000 },
-  { 0x0700, 0xa156, 0x0000 },
-  { 0x0700, 0xa158, 0x0000 },
-  { 0x8700, 0xa15b, 0x2000 },
-  { 0x0700, 0xa15a, 0x0000 },
-  { 0x0700, 0xa15c, 0x0000 },
-  { 0x8700, 0xa165, 0x4000 },
-  { 0x8700, 0xa161, 0x3000 },
-  { 0x8700, 0xa15f, 0x2000 },
-  { 0x0700, 0xa15e, 0x0000 },
-  { 0x0700, 0xa160, 0x0000 },
-  { 0x8700, 0xa163, 0x2000 },
-  { 0x0700, 0xa162, 0x0000 },
-  { 0x0700, 0xa164, 0x0000 },
-  { 0x8700, 0xa169, 0x3000 },
-  { 0x8700, 0xa167, 0x2000 },
-  { 0x0700, 0xa166, 0x0000 },
-  { 0x0700, 0xa168, 0x0000 },
-  { 0x8700, 0xa16b, 0x2000 },
-  { 0x0700, 0xa16a, 0x0000 },
-  { 0x0700, 0xa16c, 0x0000 },
-  { 0x8700, 0xa17d, 0x5000 },
-  { 0x8700, 0xa175, 0x4000 },
-  { 0x8700, 0xa171, 0x3000 },
-  { 0x8700, 0xa16f, 0x2000 },
-  { 0x0700, 0xa16e, 0x0000 },
-  { 0x0700, 0xa170, 0x0000 },
-  { 0x8700, 0xa173, 0x2000 },
-  { 0x0700, 0xa172, 0x0000 },
-  { 0x0700, 0xa174, 0x0000 },
-  { 0x8700, 0xa179, 0x3000 },
-  { 0x8700, 0xa177, 0x2000 },
-  { 0x0700, 0xa176, 0x0000 },
-  { 0x0700, 0xa178, 0x0000 },
-  { 0x8700, 0xa17b, 0x2000 },
-  { 0x0700, 0xa17a, 0x0000 },
-  { 0x0700, 0xa17c, 0x0000 },
-  { 0x8700, 0xa185, 0x4000 },
-  { 0x8700, 0xa181, 0x3000 },
-  { 0x8700, 0xa17f, 0x2000 },
-  { 0x0700, 0xa17e, 0x0000 },
-  { 0x0700, 0xa180, 0x0000 },
-  { 0x8700, 0xa183, 0x2000 },
-  { 0x0700, 0xa182, 0x0000 },
-  { 0x0700, 0xa184, 0x0000 },
-  { 0x8700, 0xa189, 0x3000 },
-  { 0x8700, 0xa187, 0x2000 },
-  { 0x0700, 0xa186, 0x0000 },
-  { 0x0700, 0xa188, 0x0000 },
-  { 0x8700, 0xa18b, 0x2000 },
-  { 0x0700, 0xa18a, 0x0000 },
-  { 0x0700, 0xa18c, 0x0000 },
-  { 0x8700, 0xa1ad, 0x6000 },
-  { 0x8700, 0xa19d, 0x5000 },
-  { 0x8700, 0xa195, 0x4000 },
-  { 0x8700, 0xa191, 0x3000 },
-  { 0x8700, 0xa18f, 0x2000 },
-  { 0x0700, 0xa18e, 0x0000 },
-  { 0x0700, 0xa190, 0x0000 },
-  { 0x8700, 0xa193, 0x2000 },
-  { 0x0700, 0xa192, 0x0000 },
-  { 0x0700, 0xa194, 0x0000 },
-  { 0x8700, 0xa199, 0x3000 },
-  { 0x8700, 0xa197, 0x2000 },
-  { 0x0700, 0xa196, 0x0000 },
-  { 0x0700, 0xa198, 0x0000 },
-  { 0x8700, 0xa19b, 0x2000 },
-  { 0x0700, 0xa19a, 0x0000 },
-  { 0x0700, 0xa19c, 0x0000 },
-  { 0x8700, 0xa1a5, 0x4000 },
-  { 0x8700, 0xa1a1, 0x3000 },
-  { 0x8700, 0xa19f, 0x2000 },
-  { 0x0700, 0xa19e, 0x0000 },
-  { 0x0700, 0xa1a0, 0x0000 },
-  { 0x8700, 0xa1a3, 0x2000 },
-  { 0x0700, 0xa1a2, 0x0000 },
-  { 0x0700, 0xa1a4, 0x0000 },
-  { 0x8700, 0xa1a9, 0x3000 },
-  { 0x8700, 0xa1a7, 0x2000 },
-  { 0x0700, 0xa1a6, 0x0000 },
-  { 0x0700, 0xa1a8, 0x0000 },
-  { 0x8700, 0xa1ab, 0x2000 },
-  { 0x0700, 0xa1aa, 0x0000 },
-  { 0x0700, 0xa1ac, 0x0000 },
-  { 0x8700, 0xa1bd, 0x5000 },
-  { 0x8700, 0xa1b5, 0x4000 },
-  { 0x8700, 0xa1b1, 0x3000 },
-  { 0x8700, 0xa1af, 0x2000 },
-  { 0x0700, 0xa1ae, 0x0000 },
-  { 0x0700, 0xa1b0, 0x0000 },
-  { 0x8700, 0xa1b3, 0x2000 },
-  { 0x0700, 0xa1b2, 0x0000 },
-  { 0x0700, 0xa1b4, 0x0000 },
-  { 0x8700, 0xa1b9, 0x3000 },
-  { 0x8700, 0xa1b7, 0x2000 },
-  { 0x0700, 0xa1b6, 0x0000 },
-  { 0x0700, 0xa1b8, 0x0000 },
-  { 0x8700, 0xa1bb, 0x2000 },
-  { 0x0700, 0xa1ba, 0x0000 },
-  { 0x0700, 0xa1bc, 0x0000 },
-  { 0x8700, 0xa1c5, 0x4000 },
-  { 0x8700, 0xa1c1, 0x3000 },
-  { 0x8700, 0xa1bf, 0x2000 },
-  { 0x0700, 0xa1be, 0x0000 },
-  { 0x0700, 0xa1c0, 0x0000 },
-  { 0x8700, 0xa1c3, 0x2000 },
-  { 0x0700, 0xa1c2, 0x0000 },
-  { 0x0700, 0xa1c4, 0x0000 },
-  { 0x8700, 0xa1c9, 0x3000 },
-  { 0x8700, 0xa1c7, 0x2000 },
-  { 0x0700, 0xa1c6, 0x0000 },
-  { 0x0700, 0xa1c8, 0x0000 },
-  { 0x8700, 0xa1cb, 0x2000 },
-  { 0x0700, 0xa1ca, 0x0000 },
-  { 0x0700, 0xa1cc, 0x0000 },
-  { 0x8700, 0xa20d, 0x7000 },
-  { 0x8700, 0xa1ed, 0x6000 },
-  { 0x8700, 0xa1dd, 0x5000 },
-  { 0x8700, 0xa1d5, 0x4000 },
-  { 0x8700, 0xa1d1, 0x3000 },
-  { 0x8700, 0xa1cf, 0x2000 },
-  { 0x0700, 0xa1ce, 0x0000 },
-  { 0x0700, 0xa1d0, 0x0000 },
-  { 0x8700, 0xa1d3, 0x2000 },
-  { 0x0700, 0xa1d2, 0x0000 },
-  { 0x0700, 0xa1d4, 0x0000 },
-  { 0x8700, 0xa1d9, 0x3000 },
-  { 0x8700, 0xa1d7, 0x2000 },
-  { 0x0700, 0xa1d6, 0x0000 },
-  { 0x0700, 0xa1d8, 0x0000 },
-  { 0x8700, 0xa1db, 0x2000 },
-  { 0x0700, 0xa1da, 0x0000 },
-  { 0x0700, 0xa1dc, 0x0000 },
-  { 0x8700, 0xa1e5, 0x4000 },
-  { 0x8700, 0xa1e1, 0x3000 },
-  { 0x8700, 0xa1df, 0x2000 },
-  { 0x0700, 0xa1de, 0x0000 },
-  { 0x0700, 0xa1e0, 0x0000 },
-  { 0x8700, 0xa1e3, 0x2000 },
-  { 0x0700, 0xa1e2, 0x0000 },
-  { 0x0700, 0xa1e4, 0x0000 },
-  { 0x8700, 0xa1e9, 0x3000 },
-  { 0x8700, 0xa1e7, 0x2000 },
-  { 0x0700, 0xa1e6, 0x0000 },
-  { 0x0700, 0xa1e8, 0x0000 },
-  { 0x8700, 0xa1eb, 0x2000 },
-  { 0x0700, 0xa1ea, 0x0000 },
-  { 0x0700, 0xa1ec, 0x0000 },
-  { 0x8700, 0xa1fd, 0x5000 },
-  { 0x8700, 0xa1f5, 0x4000 },
-  { 0x8700, 0xa1f1, 0x3000 },
-  { 0x8700, 0xa1ef, 0x2000 },
-  { 0x0700, 0xa1ee, 0x0000 },
-  { 0x0700, 0xa1f0, 0x0000 },
-  { 0x8700, 0xa1f3, 0x2000 },
-  { 0x0700, 0xa1f2, 0x0000 },
-  { 0x0700, 0xa1f4, 0x0000 },
-  { 0x8700, 0xa1f9, 0x3000 },
-  { 0x8700, 0xa1f7, 0x2000 },
-  { 0x0700, 0xa1f6, 0x0000 },
-  { 0x0700, 0xa1f8, 0x0000 },
-  { 0x8700, 0xa1fb, 0x2000 },
-  { 0x0700, 0xa1fa, 0x0000 },
-  { 0x0700, 0xa1fc, 0x0000 },
-  { 0x8700, 0xa205, 0x4000 },
-  { 0x8700, 0xa201, 0x3000 },
-  { 0x8700, 0xa1ff, 0x2000 },
-  { 0x0700, 0xa1fe, 0x0000 },
-  { 0x0700, 0xa200, 0x0000 },
-  { 0x8700, 0xa203, 0x2000 },
-  { 0x0700, 0xa202, 0x0000 },
-  { 0x0700, 0xa204, 0x0000 },
-  { 0x8700, 0xa209, 0x3000 },
-  { 0x8700, 0xa207, 0x2000 },
-  { 0x0700, 0xa206, 0x0000 },
-  { 0x0700, 0xa208, 0x0000 },
-  { 0x8700, 0xa20b, 0x2000 },
-  { 0x0700, 0xa20a, 0x0000 },
-  { 0x0700, 0xa20c, 0x0000 },
-  { 0x8700, 0xa22d, 0x6000 },
-  { 0x8700, 0xa21d, 0x5000 },
-  { 0x8700, 0xa215, 0x4000 },
-  { 0x8700, 0xa211, 0x3000 },
-  { 0x8700, 0xa20f, 0x2000 },
-  { 0x0700, 0xa20e, 0x0000 },
-  { 0x0700, 0xa210, 0x0000 },
-  { 0x8700, 0xa213, 0x2000 },
-  { 0x0700, 0xa212, 0x0000 },
-  { 0x0700, 0xa214, 0x0000 },
-  { 0x8700, 0xa219, 0x3000 },
-  { 0x8700, 0xa217, 0x2000 },
-  { 0x0700, 0xa216, 0x0000 },
-  { 0x0700, 0xa218, 0x0000 },
-  { 0x8700, 0xa21b, 0x2000 },
-  { 0x0700, 0xa21a, 0x0000 },
-  { 0x0700, 0xa21c, 0x0000 },
-  { 0x8700, 0xa225, 0x4000 },
-  { 0x8700, 0xa221, 0x3000 },
-  { 0x8700, 0xa21f, 0x2000 },
-  { 0x0700, 0xa21e, 0x0000 },
-  { 0x0700, 0xa220, 0x0000 },
-  { 0x8700, 0xa223, 0x2000 },
-  { 0x0700, 0xa222, 0x0000 },
-  { 0x0700, 0xa224, 0x0000 },
-  { 0x8700, 0xa229, 0x3000 },
-  { 0x8700, 0xa227, 0x2000 },
-  { 0x0700, 0xa226, 0x0000 },
-  { 0x0700, 0xa228, 0x0000 },
-  { 0x8700, 0xa22b, 0x2000 },
-  { 0x0700, 0xa22a, 0x0000 },
-  { 0x0700, 0xa22c, 0x0000 },
-  { 0x8700, 0xa23d, 0x5000 },
-  { 0x8700, 0xa235, 0x4000 },
-  { 0x8700, 0xa231, 0x3000 },
-  { 0x8700, 0xa22f, 0x2000 },
-  { 0x0700, 0xa22e, 0x0000 },
-  { 0x0700, 0xa230, 0x0000 },
-  { 0x8700, 0xa233, 0x2000 },
-  { 0x0700, 0xa232, 0x0000 },
-  { 0x0700, 0xa234, 0x0000 },
-  { 0x8700, 0xa239, 0x3000 },
-  { 0x8700, 0xa237, 0x2000 },
-  { 0x0700, 0xa236, 0x0000 },
-  { 0x0700, 0xa238, 0x0000 },
-  { 0x8700, 0xa23b, 0x2000 },
-  { 0x0700, 0xa23a, 0x0000 },
-  { 0x0700, 0xa23c, 0x0000 },
-  { 0x8700, 0xa245, 0x4000 },
-  { 0x8700, 0xa241, 0x3000 },
-  { 0x8700, 0xa23f, 0x2000 },
-  { 0x0700, 0xa23e, 0x0000 },
-  { 0x0700, 0xa240, 0x0000 },
-  { 0x8700, 0xa243, 0x2000 },
-  { 0x0700, 0xa242, 0x0000 },
-  { 0x0700, 0xa244, 0x0000 },
-  { 0x8700, 0xa249, 0x3000 },
-  { 0x8700, 0xa247, 0x2000 },
-  { 0x0700, 0xa246, 0x0000 },
-  { 0x0700, 0xa248, 0x0000 },
-  { 0x8700, 0xa24b, 0x2000 },
-  { 0x0700, 0xa24a, 0x0000 },
-  { 0x0700, 0xa24c, 0x0000 },
-  { 0x8700, 0xa2cd, 0x8000 },
-  { 0x8700, 0xa28d, 0x7000 },
-  { 0x8700, 0xa26d, 0x6000 },
-  { 0x8700, 0xa25d, 0x5000 },
-  { 0x8700, 0xa255, 0x4000 },
-  { 0x8700, 0xa251, 0x3000 },
-  { 0x8700, 0xa24f, 0x2000 },
-  { 0x0700, 0xa24e, 0x0000 },
-  { 0x0700, 0xa250, 0x0000 },
-  { 0x8700, 0xa253, 0x2000 },
-  { 0x0700, 0xa252, 0x0000 },
-  { 0x0700, 0xa254, 0x0000 },
-  { 0x8700, 0xa259, 0x3000 },
-  { 0x8700, 0xa257, 0x2000 },
-  { 0x0700, 0xa256, 0x0000 },
-  { 0x0700, 0xa258, 0x0000 },
-  { 0x8700, 0xa25b, 0x2000 },
-  { 0x0700, 0xa25a, 0x0000 },
-  { 0x0700, 0xa25c, 0x0000 },
-  { 0x8700, 0xa265, 0x4000 },
-  { 0x8700, 0xa261, 0x3000 },
-  { 0x8700, 0xa25f, 0x2000 },
-  { 0x0700, 0xa25e, 0x0000 },
-  { 0x0700, 0xa260, 0x0000 },
-  { 0x8700, 0xa263, 0x2000 },
-  { 0x0700, 0xa262, 0x0000 },
-  { 0x0700, 0xa264, 0x0000 },
-  { 0x8700, 0xa269, 0x3000 },
-  { 0x8700, 0xa267, 0x2000 },
-  { 0x0700, 0xa266, 0x0000 },
-  { 0x0700, 0xa268, 0x0000 },
-  { 0x8700, 0xa26b, 0x2000 },
-  { 0x0700, 0xa26a, 0x0000 },
-  { 0x0700, 0xa26c, 0x0000 },
-  { 0x8700, 0xa27d, 0x5000 },
-  { 0x8700, 0xa275, 0x4000 },
-  { 0x8700, 0xa271, 0x3000 },
-  { 0x8700, 0xa26f, 0x2000 },
-  { 0x0700, 0xa26e, 0x0000 },
-  { 0x0700, 0xa270, 0x0000 },
-  { 0x8700, 0xa273, 0x2000 },
-  { 0x0700, 0xa272, 0x0000 },
-  { 0x0700, 0xa274, 0x0000 },
-  { 0x8700, 0xa279, 0x3000 },
-  { 0x8700, 0xa277, 0x2000 },
-  { 0x0700, 0xa276, 0x0000 },
-  { 0x0700, 0xa278, 0x0000 },
-  { 0x8700, 0xa27b, 0x2000 },
-  { 0x0700, 0xa27a, 0x0000 },
-  { 0x0700, 0xa27c, 0x0000 },
-  { 0x8700, 0xa285, 0x4000 },
-  { 0x8700, 0xa281, 0x3000 },
-  { 0x8700, 0xa27f, 0x2000 },
-  { 0x0700, 0xa27e, 0x0000 },
-  { 0x0700, 0xa280, 0x0000 },
-  { 0x8700, 0xa283, 0x2000 },
-  { 0x0700, 0xa282, 0x0000 },
-  { 0x0700, 0xa284, 0x0000 },
-  { 0x8700, 0xa289, 0x3000 },
-  { 0x8700, 0xa287, 0x2000 },
-  { 0x0700, 0xa286, 0x0000 },
-  { 0x0700, 0xa288, 0x0000 },
-  { 0x8700, 0xa28b, 0x2000 },
-  { 0x0700, 0xa28a, 0x0000 },
-  { 0x0700, 0xa28c, 0x0000 },
-  { 0x8700, 0xa2ad, 0x6000 },
-  { 0x8700, 0xa29d, 0x5000 },
-  { 0x8700, 0xa295, 0x4000 },
-  { 0x8700, 0xa291, 0x3000 },
-  { 0x8700, 0xa28f, 0x2000 },
-  { 0x0700, 0xa28e, 0x0000 },
-  { 0x0700, 0xa290, 0x0000 },
-  { 0x8700, 0xa293, 0x2000 },
-  { 0x0700, 0xa292, 0x0000 },
-  { 0x0700, 0xa294, 0x0000 },
-  { 0x8700, 0xa299, 0x3000 },
-  { 0x8700, 0xa297, 0x2000 },
-  { 0x0700, 0xa296, 0x0000 },
-  { 0x0700, 0xa298, 0x0000 },
-  { 0x8700, 0xa29b, 0x2000 },
-  { 0x0700, 0xa29a, 0x0000 },
-  { 0x0700, 0xa29c, 0x0000 },
-  { 0x8700, 0xa2a5, 0x4000 },
-  { 0x8700, 0xa2a1, 0x3000 },
-  { 0x8700, 0xa29f, 0x2000 },
-  { 0x0700, 0xa29e, 0x0000 },
-  { 0x0700, 0xa2a0, 0x0000 },
-  { 0x8700, 0xa2a3, 0x2000 },
-  { 0x0700, 0xa2a2, 0x0000 },
-  { 0x0700, 0xa2a4, 0x0000 },
-  { 0x8700, 0xa2a9, 0x3000 },
-  { 0x8700, 0xa2a7, 0x2000 },
-  { 0x0700, 0xa2a6, 0x0000 },
-  { 0x0700, 0xa2a8, 0x0000 },
-  { 0x8700, 0xa2ab, 0x2000 },
-  { 0x0700, 0xa2aa, 0x0000 },
-  { 0x0700, 0xa2ac, 0x0000 },
-  { 0x8700, 0xa2bd, 0x5000 },
-  { 0x8700, 0xa2b5, 0x4000 },
-  { 0x8700, 0xa2b1, 0x3000 },
-  { 0x8700, 0xa2af, 0x2000 },
-  { 0x0700, 0xa2ae, 0x0000 },
-  { 0x0700, 0xa2b0, 0x0000 },
-  { 0x8700, 0xa2b3, 0x2000 },
-  { 0x0700, 0xa2b2, 0x0000 },
-  { 0x0700, 0xa2b4, 0x0000 },
-  { 0x8700, 0xa2b9, 0x3000 },
-  { 0x8700, 0xa2b7, 0x2000 },
-  { 0x0700, 0xa2b6, 0x0000 },
-  { 0x0700, 0xa2b8, 0x0000 },
-  { 0x8700, 0xa2bb, 0x2000 },
-  { 0x0700, 0xa2ba, 0x0000 },
-  { 0x0700, 0xa2bc, 0x0000 },
-  { 0x8700, 0xa2c5, 0x4000 },
-  { 0x8700, 0xa2c1, 0x3000 },
-  { 0x8700, 0xa2bf, 0x2000 },
-  { 0x0700, 0xa2be, 0x0000 },
-  { 0x0700, 0xa2c0, 0x0000 },
-  { 0x8700, 0xa2c3, 0x2000 },
-  { 0x0700, 0xa2c2, 0x0000 },
-  { 0x0700, 0xa2c4, 0x0000 },
-  { 0x8700, 0xa2c9, 0x3000 },
-  { 0x8700, 0xa2c7, 0x2000 },
-  { 0x0700, 0xa2c6, 0x0000 },
-  { 0x0700, 0xa2c8, 0x0000 },
-  { 0x8700, 0xa2cb, 0x2000 },
-  { 0x0700, 0xa2ca, 0x0000 },
-  { 0x0700, 0xa2cc, 0x0000 },
-  { 0x8700, 0xa30d, 0x7000 },
-  { 0x8700, 0xa2ed, 0x6000 },
-  { 0x8700, 0xa2dd, 0x5000 },
-  { 0x8700, 0xa2d5, 0x4000 },
-  { 0x8700, 0xa2d1, 0x3000 },
-  { 0x8700, 0xa2cf, 0x2000 },
-  { 0x0700, 0xa2ce, 0x0000 },
-  { 0x0700, 0xa2d0, 0x0000 },
-  { 0x8700, 0xa2d3, 0x2000 },
-  { 0x0700, 0xa2d2, 0x0000 },
-  { 0x0700, 0xa2d4, 0x0000 },
-  { 0x8700, 0xa2d9, 0x3000 },
-  { 0x8700, 0xa2d7, 0x2000 },
-  { 0x0700, 0xa2d6, 0x0000 },
-  { 0x0700, 0xa2d8, 0x0000 },
-  { 0x8700, 0xa2db, 0x2000 },
-  { 0x0700, 0xa2da, 0x0000 },
-  { 0x0700, 0xa2dc, 0x0000 },
-  { 0x8700, 0xa2e5, 0x4000 },
-  { 0x8700, 0xa2e1, 0x3000 },
-  { 0x8700, 0xa2df, 0x2000 },
-  { 0x0700, 0xa2de, 0x0000 },
-  { 0x0700, 0xa2e0, 0x0000 },
-  { 0x8700, 0xa2e3, 0x2000 },
-  { 0x0700, 0xa2e2, 0x0000 },
-  { 0x0700, 0xa2e4, 0x0000 },
-  { 0x8700, 0xa2e9, 0x3000 },
-  { 0x8700, 0xa2e7, 0x2000 },
-  { 0x0700, 0xa2e6, 0x0000 },
-  { 0x0700, 0xa2e8, 0x0000 },
-  { 0x8700, 0xa2eb, 0x2000 },
-  { 0x0700, 0xa2ea, 0x0000 },
-  { 0x0700, 0xa2ec, 0x0000 },
-  { 0x8700, 0xa2fd, 0x5000 },
-  { 0x8700, 0xa2f5, 0x4000 },
-  { 0x8700, 0xa2f1, 0x3000 },
-  { 0x8700, 0xa2ef, 0x2000 },
-  { 0x0700, 0xa2ee, 0x0000 },
-  { 0x0700, 0xa2f0, 0x0000 },
-  { 0x8700, 0xa2f3, 0x2000 },
-  { 0x0700, 0xa2f2, 0x0000 },
-  { 0x0700, 0xa2f4, 0x0000 },
-  { 0x8700, 0xa2f9, 0x3000 },
-  { 0x8700, 0xa2f7, 0x2000 },
-  { 0x0700, 0xa2f6, 0x0000 },
-  { 0x0700, 0xa2f8, 0x0000 },
-  { 0x8700, 0xa2fb, 0x2000 },
-  { 0x0700, 0xa2fa, 0x0000 },
-  { 0x0700, 0xa2fc, 0x0000 },
-  { 0x8700, 0xa305, 0x4000 },
-  { 0x8700, 0xa301, 0x3000 },
-  { 0x8700, 0xa2ff, 0x2000 },
-  { 0x0700, 0xa2fe, 0x0000 },
-  { 0x0700, 0xa300, 0x0000 },
-  { 0x8700, 0xa303, 0x2000 },
-  { 0x0700, 0xa302, 0x0000 },
-  { 0x0700, 0xa304, 0x0000 },
-  { 0x8700, 0xa309, 0x3000 },
-  { 0x8700, 0xa307, 0x2000 },
-  { 0x0700, 0xa306, 0x0000 },
-  { 0x0700, 0xa308, 0x0000 },
-  { 0x8700, 0xa30b, 0x2000 },
-  { 0x0700, 0xa30a, 0x0000 },
-  { 0x0700, 0xa30c, 0x0000 },
-  { 0x8700, 0xa32d, 0x6000 },
-  { 0x8700, 0xa31d, 0x5000 },
-  { 0x8700, 0xa315, 0x4000 },
-  { 0x8700, 0xa311, 0x3000 },
-  { 0x8700, 0xa30f, 0x2000 },
-  { 0x0700, 0xa30e, 0x0000 },
-  { 0x0700, 0xa310, 0x0000 },
-  { 0x8700, 0xa313, 0x2000 },
-  { 0x0700, 0xa312, 0x0000 },
-  { 0x0700, 0xa314, 0x0000 },
-  { 0x8700, 0xa319, 0x3000 },
-  { 0x8700, 0xa317, 0x2000 },
-  { 0x0700, 0xa316, 0x0000 },
-  { 0x0700, 0xa318, 0x0000 },
-  { 0x8700, 0xa31b, 0x2000 },
-  { 0x0700, 0xa31a, 0x0000 },
-  { 0x0700, 0xa31c, 0x0000 },
-  { 0x8700, 0xa325, 0x4000 },
-  { 0x8700, 0xa321, 0x3000 },
-  { 0x8700, 0xa31f, 0x2000 },
-  { 0x0700, 0xa31e, 0x0000 },
-  { 0x0700, 0xa320, 0x0000 },
-  { 0x8700, 0xa323, 0x2000 },
-  { 0x0700, 0xa322, 0x0000 },
-  { 0x0700, 0xa324, 0x0000 },
-  { 0x8700, 0xa329, 0x3000 },
-  { 0x8700, 0xa327, 0x2000 },
-  { 0x0700, 0xa326, 0x0000 },
-  { 0x0700, 0xa328, 0x0000 },
-  { 0x8700, 0xa32b, 0x2000 },
-  { 0x0700, 0xa32a, 0x0000 },
-  { 0x0700, 0xa32c, 0x0000 },
-  { 0x8700, 0xa33d, 0x5000 },
-  { 0x8700, 0xa335, 0x4000 },
-  { 0x8700, 0xa331, 0x3000 },
-  { 0x8700, 0xa32f, 0x2000 },
-  { 0x0700, 0xa32e, 0x0000 },
-  { 0x0700, 0xa330, 0x0000 },
-  { 0x8700, 0xa333, 0x2000 },
-  { 0x0700, 0xa332, 0x0000 },
-  { 0x0700, 0xa334, 0x0000 },
-  { 0x8700, 0xa339, 0x3000 },
-  { 0x8700, 0xa337, 0x2000 },
-  { 0x0700, 0xa336, 0x0000 },
-  { 0x0700, 0xa338, 0x0000 },
-  { 0x8700, 0xa33b, 0x2000 },
-  { 0x0700, 0xa33a, 0x0000 },
-  { 0x0700, 0xa33c, 0x0000 },
-  { 0x8700, 0xa345, 0x4000 },
-  { 0x8700, 0xa341, 0x3000 },
-  { 0x8700, 0xa33f, 0x2000 },
-  { 0x0700, 0xa33e, 0x0000 },
-  { 0x0700, 0xa340, 0x0000 },
-  { 0x8700, 0xa343, 0x2000 },
-  { 0x0700, 0xa342, 0x0000 },
-  { 0x0700, 0xa344, 0x0000 },
-  { 0x8700, 0xa349, 0x3000 },
-  { 0x8700, 0xa347, 0x2000 },
-  { 0x0700, 0xa346, 0x0000 },
-  { 0x0700, 0xa348, 0x0000 },
-  { 0x8700, 0xa34b, 0x2000 },
-  { 0x0700, 0xa34a, 0x0000 },
-  { 0x0700, 0xa34c, 0x0000 },
-  { 0x8700, 0xfc4d, 0xb000 },
-  { 0x8700, 0xf97f, 0xa000 },
-  { 0x8700, 0xa44d, 0x9000 },
-  { 0x8700, 0xa3cd, 0x8000 },
-  { 0x8700, 0xa38d, 0x7000 },
-  { 0x8700, 0xa36d, 0x6000 },
-  { 0x8700, 0xa35d, 0x5000 },
-  { 0x8700, 0xa355, 0x4000 },
-  { 0x8700, 0xa351, 0x3000 },
-  { 0x8700, 0xa34f, 0x2000 },
-  { 0x0700, 0xa34e, 0x0000 },
-  { 0x0700, 0xa350, 0x0000 },
-  { 0x8700, 0xa353, 0x2000 },
-  { 0x0700, 0xa352, 0x0000 },
-  { 0x0700, 0xa354, 0x0000 },
-  { 0x8700, 0xa359, 0x3000 },
-  { 0x8700, 0xa357, 0x2000 },
-  { 0x0700, 0xa356, 0x0000 },
-  { 0x0700, 0xa358, 0x0000 },
-  { 0x8700, 0xa35b, 0x2000 },
-  { 0x0700, 0xa35a, 0x0000 },
-  { 0x0700, 0xa35c, 0x0000 },
-  { 0x8700, 0xa365, 0x4000 },
-  { 0x8700, 0xa361, 0x3000 },
-  { 0x8700, 0xa35f, 0x2000 },
-  { 0x0700, 0xa35e, 0x0000 },
-  { 0x0700, 0xa360, 0x0000 },
-  { 0x8700, 0xa363, 0x2000 },
-  { 0x0700, 0xa362, 0x0000 },
-  { 0x0700, 0xa364, 0x0000 },
-  { 0x8700, 0xa369, 0x3000 },
-  { 0x8700, 0xa367, 0x2000 },
-  { 0x0700, 0xa366, 0x0000 },
-  { 0x0700, 0xa368, 0x0000 },
-  { 0x8700, 0xa36b, 0x2000 },
-  { 0x0700, 0xa36a, 0x0000 },
-  { 0x0700, 0xa36c, 0x0000 },
-  { 0x8700, 0xa37d, 0x5000 },
-  { 0x8700, 0xa375, 0x4000 },
-  { 0x8700, 0xa371, 0x3000 },
-  { 0x8700, 0xa36f, 0x2000 },
-  { 0x0700, 0xa36e, 0x0000 },
-  { 0x0700, 0xa370, 0x0000 },
-  { 0x8700, 0xa373, 0x2000 },
-  { 0x0700, 0xa372, 0x0000 },
-  { 0x0700, 0xa374, 0x0000 },
-  { 0x8700, 0xa379, 0x3000 },
-  { 0x8700, 0xa377, 0x2000 },
-  { 0x0700, 0xa376, 0x0000 },
-  { 0x0700, 0xa378, 0x0000 },
-  { 0x8700, 0xa37b, 0x2000 },
-  { 0x0700, 0xa37a, 0x0000 },
-  { 0x0700, 0xa37c, 0x0000 },
-  { 0x8700, 0xa385, 0x4000 },
-  { 0x8700, 0xa381, 0x3000 },
-  { 0x8700, 0xa37f, 0x2000 },
-  { 0x0700, 0xa37e, 0x0000 },
-  { 0x0700, 0xa380, 0x0000 },
-  { 0x8700, 0xa383, 0x2000 },
-  { 0x0700, 0xa382, 0x0000 },
-  { 0x0700, 0xa384, 0x0000 },
-  { 0x8700, 0xa389, 0x3000 },
-  { 0x8700, 0xa387, 0x2000 },
-  { 0x0700, 0xa386, 0x0000 },
-  { 0x0700, 0xa388, 0x0000 },
-  { 0x8700, 0xa38b, 0x2000 },
-  { 0x0700, 0xa38a, 0x0000 },
-  { 0x0700, 0xa38c, 0x0000 },
-  { 0x8700, 0xa3ad, 0x6000 },
-  { 0x8700, 0xa39d, 0x5000 },
-  { 0x8700, 0xa395, 0x4000 },
-  { 0x8700, 0xa391, 0x3000 },
-  { 0x8700, 0xa38f, 0x2000 },
-  { 0x0700, 0xa38e, 0x0000 },
-  { 0x0700, 0xa390, 0x0000 },
-  { 0x8700, 0xa393, 0x2000 },
-  { 0x0700, 0xa392, 0x0000 },
-  { 0x0700, 0xa394, 0x0000 },
-  { 0x8700, 0xa399, 0x3000 },
-  { 0x8700, 0xa397, 0x2000 },
-  { 0x0700, 0xa396, 0x0000 },
-  { 0x0700, 0xa398, 0x0000 },
-  { 0x8700, 0xa39b, 0x2000 },
-  { 0x0700, 0xa39a, 0x0000 },
-  { 0x0700, 0xa39c, 0x0000 },
-  { 0x8700, 0xa3a5, 0x4000 },
-  { 0x8700, 0xa3a1, 0x3000 },
-  { 0x8700, 0xa39f, 0x2000 },
-  { 0x0700, 0xa39e, 0x0000 },
-  { 0x0700, 0xa3a0, 0x0000 },
-  { 0x8700, 0xa3a3, 0x2000 },
-  { 0x0700, 0xa3a2, 0x0000 },
-  { 0x0700, 0xa3a4, 0x0000 },
-  { 0x8700, 0xa3a9, 0x3000 },
-  { 0x8700, 0xa3a7, 0x2000 },
-  { 0x0700, 0xa3a6, 0x0000 },
-  { 0x0700, 0xa3a8, 0x0000 },
-  { 0x8700, 0xa3ab, 0x2000 },
-  { 0x0700, 0xa3aa, 0x0000 },
-  { 0x0700, 0xa3ac, 0x0000 },
-  { 0x8700, 0xa3bd, 0x5000 },
-  { 0x8700, 0xa3b5, 0x4000 },
-  { 0x8700, 0xa3b1, 0x3000 },
-  { 0x8700, 0xa3af, 0x2000 },
-  { 0x0700, 0xa3ae, 0x0000 },
-  { 0x0700, 0xa3b0, 0x0000 },
-  { 0x8700, 0xa3b3, 0x2000 },
-  { 0x0700, 0xa3b2, 0x0000 },
-  { 0x0700, 0xa3b4, 0x0000 },
-  { 0x8700, 0xa3b9, 0x3000 },
-  { 0x8700, 0xa3b7, 0x2000 },
-  { 0x0700, 0xa3b6, 0x0000 },
-  { 0x0700, 0xa3b8, 0x0000 },
-  { 0x8700, 0xa3bb, 0x2000 },
-  { 0x0700, 0xa3ba, 0x0000 },
-  { 0x0700, 0xa3bc, 0x0000 },
-  { 0x8700, 0xa3c5, 0x4000 },
-  { 0x8700, 0xa3c1, 0x3000 },
-  { 0x8700, 0xa3bf, 0x2000 },
-  { 0x0700, 0xa3be, 0x0000 },
-  { 0x0700, 0xa3c0, 0x0000 },
-  { 0x8700, 0xa3c3, 0x2000 },
-  { 0x0700, 0xa3c2, 0x0000 },
-  { 0x0700, 0xa3c4, 0x0000 },
-  { 0x8700, 0xa3c9, 0x3000 },
-  { 0x8700, 0xa3c7, 0x2000 },
-  { 0x0700, 0xa3c6, 0x0000 },
-  { 0x0700, 0xa3c8, 0x0000 },
-  { 0x8700, 0xa3cb, 0x2000 },
-  { 0x0700, 0xa3ca, 0x0000 },
-  { 0x0700, 0xa3cc, 0x0000 },
-  { 0x8700, 0xa40d, 0x7000 },
-  { 0x8700, 0xa3ed, 0x6000 },
-  { 0x8700, 0xa3dd, 0x5000 },
-  { 0x8700, 0xa3d5, 0x4000 },
-  { 0x8700, 0xa3d1, 0x3000 },
-  { 0x8700, 0xa3cf, 0x2000 },
-  { 0x0700, 0xa3ce, 0x0000 },
-  { 0x0700, 0xa3d0, 0x0000 },
-  { 0x8700, 0xa3d3, 0x2000 },
-  { 0x0700, 0xa3d2, 0x0000 },
-  { 0x0700, 0xa3d4, 0x0000 },
-  { 0x8700, 0xa3d9, 0x3000 },
-  { 0x8700, 0xa3d7, 0x2000 },
-  { 0x0700, 0xa3d6, 0x0000 },
-  { 0x0700, 0xa3d8, 0x0000 },
-  { 0x8700, 0xa3db, 0x2000 },
-  { 0x0700, 0xa3da, 0x0000 },
-  { 0x0700, 0xa3dc, 0x0000 },
-  { 0x8700, 0xa3e5, 0x4000 },
-  { 0x8700, 0xa3e1, 0x3000 },
-  { 0x8700, 0xa3df, 0x2000 },
-  { 0x0700, 0xa3de, 0x0000 },
-  { 0x0700, 0xa3e0, 0x0000 },
-  { 0x8700, 0xa3e3, 0x2000 },
-  { 0x0700, 0xa3e2, 0x0000 },
-  { 0x0700, 0xa3e4, 0x0000 },
-  { 0x8700, 0xa3e9, 0x3000 },
-  { 0x8700, 0xa3e7, 0x2000 },
-  { 0x0700, 0xa3e6, 0x0000 },
-  { 0x0700, 0xa3e8, 0x0000 },
-  { 0x8700, 0xa3eb, 0x2000 },
-  { 0x0700, 0xa3ea, 0x0000 },
-  { 0x0700, 0xa3ec, 0x0000 },
-  { 0x8700, 0xa3fd, 0x5000 },
-  { 0x8700, 0xa3f5, 0x4000 },
-  { 0x8700, 0xa3f1, 0x3000 },
-  { 0x8700, 0xa3ef, 0x2000 },
-  { 0x0700, 0xa3ee, 0x0000 },
-  { 0x0700, 0xa3f0, 0x0000 },
-  { 0x8700, 0xa3f3, 0x2000 },
-  { 0x0700, 0xa3f2, 0x0000 },
-  { 0x0700, 0xa3f4, 0x0000 },
-  { 0x8700, 0xa3f9, 0x3000 },
-  { 0x8700, 0xa3f7, 0x2000 },
-  { 0x0700, 0xa3f6, 0x0000 },
-  { 0x0700, 0xa3f8, 0x0000 },
-  { 0x8700, 0xa3fb, 0x2000 },
-  { 0x0700, 0xa3fa, 0x0000 },
-  { 0x0700, 0xa3fc, 0x0000 },
-  { 0x8700, 0xa405, 0x4000 },
-  { 0x8700, 0xa401, 0x3000 },
-  { 0x8700, 0xa3ff, 0x2000 },
-  { 0x0700, 0xa3fe, 0x0000 },
-  { 0x0700, 0xa400, 0x0000 },
-  { 0x8700, 0xa403, 0x2000 },
-  { 0x0700, 0xa402, 0x0000 },
-  { 0x0700, 0xa404, 0x0000 },
-  { 0x8700, 0xa409, 0x3000 },
-  { 0x8700, 0xa407, 0x2000 },
-  { 0x0700, 0xa406, 0x0000 },
-  { 0x0700, 0xa408, 0x0000 },
-  { 0x8700, 0xa40b, 0x2000 },
-  { 0x0700, 0xa40a, 0x0000 },
-  { 0x0700, 0xa40c, 0x0000 },
-  { 0x8700, 0xa42d, 0x6000 },
-  { 0x8700, 0xa41d, 0x5000 },
-  { 0x8700, 0xa415, 0x4000 },
-  { 0x8700, 0xa411, 0x3000 },
-  { 0x8700, 0xa40f, 0x2000 },
-  { 0x0700, 0xa40e, 0x0000 },
-  { 0x0700, 0xa410, 0x0000 },
-  { 0x8700, 0xa413, 0x2000 },
-  { 0x0700, 0xa412, 0x0000 },
-  { 0x0700, 0xa414, 0x0000 },
-  { 0x8700, 0xa419, 0x3000 },
-  { 0x8700, 0xa417, 0x2000 },
-  { 0x0700, 0xa416, 0x0000 },
-  { 0x0700, 0xa418, 0x0000 },
-  { 0x8700, 0xa41b, 0x2000 },
-  { 0x0700, 0xa41a, 0x0000 },
-  { 0x0700, 0xa41c, 0x0000 },
-  { 0x8700, 0xa425, 0x4000 },
-  { 0x8700, 0xa421, 0x3000 },
-  { 0x8700, 0xa41f, 0x2000 },
-  { 0x0700, 0xa41e, 0x0000 },
-  { 0x0700, 0xa420, 0x0000 },
-  { 0x8700, 0xa423, 0x2000 },
-  { 0x0700, 0xa422, 0x0000 },
-  { 0x0700, 0xa424, 0x0000 },
-  { 0x8700, 0xa429, 0x3000 },
-  { 0x8700, 0xa427, 0x2000 },
-  { 0x0700, 0xa426, 0x0000 },
-  { 0x0700, 0xa428, 0x0000 },
-  { 0x8700, 0xa42b, 0x2000 },
-  { 0x0700, 0xa42a, 0x0000 },
-  { 0x0700, 0xa42c, 0x0000 },
-  { 0x8700, 0xa43d, 0x5000 },
-  { 0x8700, 0xa435, 0x4000 },
-  { 0x8700, 0xa431, 0x3000 },
-  { 0x8700, 0xa42f, 0x2000 },
-  { 0x0700, 0xa42e, 0x0000 },
-  { 0x0700, 0xa430, 0x0000 },
-  { 0x8700, 0xa433, 0x2000 },
-  { 0x0700, 0xa432, 0x0000 },
-  { 0x0700, 0xa434, 0x0000 },
-  { 0x8700, 0xa439, 0x3000 },
-  { 0x8700, 0xa437, 0x2000 },
-  { 0x0700, 0xa436, 0x0000 },
-  { 0x0700, 0xa438, 0x0000 },
-  { 0x8700, 0xa43b, 0x2000 },
-  { 0x0700, 0xa43a, 0x0000 },
-  { 0x0700, 0xa43c, 0x0000 },
-  { 0x8700, 0xa445, 0x4000 },
-  { 0x8700, 0xa441, 0x3000 },
-  { 0x8700, 0xa43f, 0x2000 },
-  { 0x0700, 0xa43e, 0x0000 },
-  { 0x0700, 0xa440, 0x0000 },
-  { 0x8700, 0xa443, 0x2000 },
-  { 0x0700, 0xa442, 0x0000 },
-  { 0x0700, 0xa444, 0x0000 },
-  { 0x8700, 0xa449, 0x3000 },
-  { 0x8700, 0xa447, 0x2000 },
-  { 0x0700, 0xa446, 0x0000 },
-  { 0x0700, 0xa448, 0x0000 },
-  { 0x8700, 0xa44b, 0x2000 },
-  { 0x0700, 0xa44a, 0x0000 },
-  { 0x0700, 0xa44c, 0x0000 },
-  { 0x8300, 0xf8ff, 0x8000 },
-  { 0x9a00, 0xa490, 0x7000 },
-  { 0x8700, 0xa46d, 0x6000 },
-  { 0x8700, 0xa45d, 0x5000 },
-  { 0x8700, 0xa455, 0x4000 },
-  { 0x8700, 0xa451, 0x3000 },
-  { 0x8700, 0xa44f, 0x2000 },
-  { 0x0700, 0xa44e, 0x0000 },
-  { 0x0700, 0xa450, 0x0000 },
-  { 0x8700, 0xa453, 0x2000 },
-  { 0x0700, 0xa452, 0x0000 },
-  { 0x0700, 0xa454, 0x0000 },
-  { 0x8700, 0xa459, 0x3000 },
-  { 0x8700, 0xa457, 0x2000 },
-  { 0x0700, 0xa456, 0x0000 },
-  { 0x0700, 0xa458, 0x0000 },
-  { 0x8700, 0xa45b, 0x2000 },
-  { 0x0700, 0xa45a, 0x0000 },
-  { 0x0700, 0xa45c, 0x0000 },
-  { 0x8700, 0xa465, 0x4000 },
-  { 0x8700, 0xa461, 0x3000 },
-  { 0x8700, 0xa45f, 0x2000 },
-  { 0x0700, 0xa45e, 0x0000 },
-  { 0x0700, 0xa460, 0x0000 },
-  { 0x8700, 0xa463, 0x2000 },
-  { 0x0700, 0xa462, 0x0000 },
-  { 0x0700, 0xa464, 0x0000 },
-  { 0x8700, 0xa469, 0x3000 },
-  { 0x8700, 0xa467, 0x2000 },
-  { 0x0700, 0xa466, 0x0000 },
-  { 0x0700, 0xa468, 0x0000 },
-  { 0x8700, 0xa46b, 0x2000 },
-  { 0x0700, 0xa46a, 0x0000 },
-  { 0x0700, 0xa46c, 0x0000 },
-  { 0x8700, 0xa47d, 0x5000 },
-  { 0x8700, 0xa475, 0x4000 },
-  { 0x8700, 0xa471, 0x3000 },
-  { 0x8700, 0xa46f, 0x2000 },
-  { 0x0700, 0xa46e, 0x0000 },
-  { 0x0700, 0xa470, 0x0000 },
-  { 0x8700, 0xa473, 0x2000 },
-  { 0x0700, 0xa472, 0x0000 },
-  { 0x0700, 0xa474, 0x0000 },
-  { 0x8700, 0xa479, 0x3000 },
-  { 0x8700, 0xa477, 0x2000 },
-  { 0x0700, 0xa476, 0x0000 },
-  { 0x0700, 0xa478, 0x0000 },
-  { 0x8700, 0xa47b, 0x2000 },
-  { 0x0700, 0xa47a, 0x0000 },
-  { 0x0700, 0xa47c, 0x0000 },
-  { 0x8700, 0xa485, 0x4000 },
-  { 0x8700, 0xa481, 0x3000 },
-  { 0x8700, 0xa47f, 0x2000 },
-  { 0x0700, 0xa47e, 0x0000 },
-  { 0x0700, 0xa480, 0x0000 },
-  { 0x8700, 0xa483, 0x2000 },
-  { 0x0700, 0xa482, 0x0000 },
-  { 0x0700, 0xa484, 0x0000 },
-  { 0x8700, 0xa489, 0x3000 },
-  { 0x8700, 0xa487, 0x2000 },
-  { 0x0700, 0xa486, 0x0000 },
-  { 0x0700, 0xa488, 0x0000 },
-  { 0x8700, 0xa48b, 0x2000 },
-  { 0x0700, 0xa48a, 0x0000 },
-  { 0x0700, 0xa48c, 0x0000 },
-  { 0x9a00, 0xa4b0, 0x6000 },
-  { 0x9a00, 0xa4a0, 0x5000 },
-  { 0x9a00, 0xa498, 0x4000 },
-  { 0x9a00, 0xa494, 0x3000 },
-  { 0x9a00, 0xa492, 0x2000 },
-  { 0x1a00, 0xa491, 0x0000 },
-  { 0x1a00, 0xa493, 0x0000 },
-  { 0x9a00, 0xa496, 0x2000 },
-  { 0x1a00, 0xa495, 0x0000 },
-  { 0x1a00, 0xa497, 0x0000 },
-  { 0x9a00, 0xa49c, 0x3000 },
-  { 0x9a00, 0xa49a, 0x2000 },
-  { 0x1a00, 0xa499, 0x0000 },
-  { 0x1a00, 0xa49b, 0x0000 },
-  { 0x9a00, 0xa49e, 0x2000 },
-  { 0x1a00, 0xa49d, 0x0000 },
-  { 0x1a00, 0xa49f, 0x0000 },
-  { 0x9a00, 0xa4a8, 0x4000 },
-  { 0x9a00, 0xa4a4, 0x3000 },
-  { 0x9a00, 0xa4a2, 0x2000 },
-  { 0x1a00, 0xa4a1, 0x0000 },
-  { 0x1a00, 0xa4a3, 0x0000 },
-  { 0x9a00, 0xa4a6, 0x2000 },
-  { 0x1a00, 0xa4a5, 0x0000 },
-  { 0x1a00, 0xa4a7, 0x0000 },
-  { 0x9a00, 0xa4ac, 0x3000 },
-  { 0x9a00, 0xa4aa, 0x2000 },
-  { 0x1a00, 0xa4a9, 0x0000 },
-  { 0x1a00, 0xa4ab, 0x0000 },
-  { 0x9a00, 0xa4ae, 0x2000 },
-  { 0x1a00, 0xa4ad, 0x0000 },
-  { 0x1a00, 0xa4af, 0x0000 },
-  { 0x9a00, 0xa4c0, 0x5000 },
-  { 0x9a00, 0xa4b8, 0x4000 },
-  { 0x9a00, 0xa4b4, 0x3000 },
-  { 0x9a00, 0xa4b2, 0x2000 },
-  { 0x1a00, 0xa4b1, 0x0000 },
-  { 0x1a00, 0xa4b3, 0x0000 },
-  { 0x9a00, 0xa4b6, 0x2000 },
-  { 0x1a00, 0xa4b5, 0x0000 },
-  { 0x1a00, 0xa4b7, 0x0000 },
-  { 0x9a00, 0xa4bc, 0x3000 },
-  { 0x9a00, 0xa4ba, 0x2000 },
-  { 0x1a00, 0xa4b9, 0x0000 },
-  { 0x1a00, 0xa4bb, 0x0000 },
-  { 0x9a00, 0xa4be, 0x2000 },
-  { 0x1a00, 0xa4bd, 0x0000 },
-  { 0x1a00, 0xa4bf, 0x0000 },
-  { 0x8700, 0xd7a3, 0x4000 },
-  { 0x9a00, 0xa4c4, 0x3000 },
-  { 0x9a00, 0xa4c2, 0x2000 },
-  { 0x1a00, 0xa4c1, 0x0000 },
-  { 0x1a00, 0xa4c3, 0x0000 },
-  { 0x9a00, 0xa4c6, 0x2000 },
-  { 0x1a00, 0xa4c5, 0x0000 },
-  { 0x0700, 0xac00, 0x0000 },
-  { 0x8400, 0xdbff, 0x3000 },
-  { 0x8400, 0xdb7f, 0x2000 },
-  { 0x0400, 0xd800, 0x0000 },
-  { 0x0400, 0xdb80, 0x0000 },
-  { 0x8400, 0xdfff, 0x2000 },
-  { 0x0400, 0xdc00, 0x0000 },
-  { 0x0300, 0xe000, 0x0000 },
-  { 0x8700, 0xf93f, 0x7000 },
-  { 0x8700, 0xf91f, 0x6000 },
-  { 0x8700, 0xf90f, 0x5000 },
-  { 0x8700, 0xf907, 0x4000 },
-  { 0x8700, 0xf903, 0x3000 },
-  { 0x8700, 0xf901, 0x2000 },
-  { 0x0700, 0xf900, 0x0000 },
-  { 0x0700, 0xf902, 0x0000 },
-  { 0x8700, 0xf905, 0x2000 },
-  { 0x0700, 0xf904, 0x0000 },
-  { 0x0700, 0xf906, 0x0000 },
-  { 0x8700, 0xf90b, 0x3000 },
-  { 0x8700, 0xf909, 0x2000 },
-  { 0x0700, 0xf908, 0x0000 },
-  { 0x0700, 0xf90a, 0x0000 },
-  { 0x8700, 0xf90d, 0x2000 },
-  { 0x0700, 0xf90c, 0x0000 },
-  { 0x0700, 0xf90e, 0x0000 },
-  { 0x8700, 0xf917, 0x4000 },
-  { 0x8700, 0xf913, 0x3000 },
-  { 0x8700, 0xf911, 0x2000 },
-  { 0x0700, 0xf910, 0x0000 },
-  { 0x0700, 0xf912, 0x0000 },
-  { 0x8700, 0xf915, 0x2000 },
-  { 0x0700, 0xf914, 0x0000 },
-  { 0x0700, 0xf916, 0x0000 },
-  { 0x8700, 0xf91b, 0x3000 },
-  { 0x8700, 0xf919, 0x2000 },
-  { 0x0700, 0xf918, 0x0000 },
-  { 0x0700, 0xf91a, 0x0000 },
-  { 0x8700, 0xf91d, 0x2000 },
-  { 0x0700, 0xf91c, 0x0000 },
-  { 0x0700, 0xf91e, 0x0000 },
-  { 0x8700, 0xf92f, 0x5000 },
-  { 0x8700, 0xf927, 0x4000 },
-  { 0x8700, 0xf923, 0x3000 },
-  { 0x8700, 0xf921, 0x2000 },
-  { 0x0700, 0xf920, 0x0000 },
-  { 0x0700, 0xf922, 0x0000 },
-  { 0x8700, 0xf925, 0x2000 },
-  { 0x0700, 0xf924, 0x0000 },
-  { 0x0700, 0xf926, 0x0000 },
-  { 0x8700, 0xf92b, 0x3000 },
-  { 0x8700, 0xf929, 0x2000 },
-  { 0x0700, 0xf928, 0x0000 },
-  { 0x0700, 0xf92a, 0x0000 },
-  { 0x8700, 0xf92d, 0x2000 },
-  { 0x0700, 0xf92c, 0x0000 },
-  { 0x0700, 0xf92e, 0x0000 },
-  { 0x8700, 0xf937, 0x4000 },
-  { 0x8700, 0xf933, 0x3000 },
-  { 0x8700, 0xf931, 0x2000 },
-  { 0x0700, 0xf930, 0x0000 },
-  { 0x0700, 0xf932, 0x0000 },
-  { 0x8700, 0xf935, 0x2000 },
-  { 0x0700, 0xf934, 0x0000 },
-  { 0x0700, 0xf936, 0x0000 },
-  { 0x8700, 0xf93b, 0x3000 },
-  { 0x8700, 0xf939, 0x2000 },
-  { 0x0700, 0xf938, 0x0000 },
-  { 0x0700, 0xf93a, 0x0000 },
-  { 0x8700, 0xf93d, 0x2000 },
-  { 0x0700, 0xf93c, 0x0000 },
-  { 0x0700, 0xf93e, 0x0000 },
-  { 0x8700, 0xf95f, 0x6000 },
-  { 0x8700, 0xf94f, 0x5000 },
-  { 0x8700, 0xf947, 0x4000 },
-  { 0x8700, 0xf943, 0x3000 },
-  { 0x8700, 0xf941, 0x2000 },
-  { 0x0700, 0xf940, 0x0000 },
-  { 0x0700, 0xf942, 0x0000 },
-  { 0x8700, 0xf945, 0x2000 },
-  { 0x0700, 0xf944, 0x0000 },
-  { 0x0700, 0xf946, 0x0000 },
-  { 0x8700, 0xf94b, 0x3000 },
-  { 0x8700, 0xf949, 0x2000 },
-  { 0x0700, 0xf948, 0x0000 },
-  { 0x0700, 0xf94a, 0x0000 },
-  { 0x8700, 0xf94d, 0x2000 },
-  { 0x0700, 0xf94c, 0x0000 },
-  { 0x0700, 0xf94e, 0x0000 },
-  { 0x8700, 0xf957, 0x4000 },
-  { 0x8700, 0xf953, 0x3000 },
-  { 0x8700, 0xf951, 0x2000 },
-  { 0x0700, 0xf950, 0x0000 },
-  { 0x0700, 0xf952, 0x0000 },
-  { 0x8700, 0xf955, 0x2000 },
-  { 0x0700, 0xf954, 0x0000 },
-  { 0x0700, 0xf956, 0x0000 },
-  { 0x8700, 0xf95b, 0x3000 },
-  { 0x8700, 0xf959, 0x2000 },
-  { 0x0700, 0xf958, 0x0000 },
-  { 0x0700, 0xf95a, 0x0000 },
-  { 0x8700, 0xf95d, 0x2000 },
-  { 0x0700, 0xf95c, 0x0000 },
-  { 0x0700, 0xf95e, 0x0000 },
-  { 0x8700, 0xf96f, 0x5000 },
-  { 0x8700, 0xf967, 0x4000 },
-  { 0x8700, 0xf963, 0x3000 },
-  { 0x8700, 0xf961, 0x2000 },
-  { 0x0700, 0xf960, 0x0000 },
-  { 0x0700, 0xf962, 0x0000 },
-  { 0x8700, 0xf965, 0x2000 },
-  { 0x0700, 0xf964, 0x0000 },
-  { 0x0700, 0xf966, 0x0000 },
-  { 0x8700, 0xf96b, 0x3000 },
-  { 0x8700, 0xf969, 0x2000 },
-  { 0x0700, 0xf968, 0x0000 },
-  { 0x0700, 0xf96a, 0x0000 },
-  { 0x8700, 0xf96d, 0x2000 },
-  { 0x0700, 0xf96c, 0x0000 },
-  { 0x0700, 0xf96e, 0x0000 },
-  { 0x8700, 0xf977, 0x4000 },
-  { 0x8700, 0xf973, 0x3000 },
-  { 0x8700, 0xf971, 0x2000 },
-  { 0x0700, 0xf970, 0x0000 },
-  { 0x0700, 0xf972, 0x0000 },
-  { 0x8700, 0xf975, 0x2000 },
-  { 0x0700, 0xf974, 0x0000 },
-  { 0x0700, 0xf976, 0x0000 },
-  { 0x8700, 0xf97b, 0x3000 },
-  { 0x8700, 0xf979, 0x2000 },
-  { 0x0700, 0xf978, 0x0000 },
-  { 0x0700, 0xf97a, 0x0000 },
-  { 0x8700, 0xf97d, 0x2000 },
-  { 0x0700, 0xf97c, 0x0000 },
-  { 0x0700, 0xf97e, 0x0000 },
-  { 0x8700, 0xfb27, 0x9000 },
-  { 0x8700, 0xf9ff, 0x8000 },
-  { 0x8700, 0xf9bf, 0x7000 },
-  { 0x8700, 0xf99f, 0x6000 },
-  { 0x8700, 0xf98f, 0x5000 },
-  { 0x8700, 0xf987, 0x4000 },
-  { 0x8700, 0xf983, 0x3000 },
-  { 0x8700, 0xf981, 0x2000 },
-  { 0x0700, 0xf980, 0x0000 },
-  { 0x0700, 0xf982, 0x0000 },
-  { 0x8700, 0xf985, 0x2000 },
-  { 0x0700, 0xf984, 0x0000 },
-  { 0x0700, 0xf986, 0x0000 },
-  { 0x8700, 0xf98b, 0x3000 },
-  { 0x8700, 0xf989, 0x2000 },
-  { 0x0700, 0xf988, 0x0000 },
-  { 0x0700, 0xf98a, 0x0000 },
-  { 0x8700, 0xf98d, 0x2000 },
-  { 0x0700, 0xf98c, 0x0000 },
-  { 0x0700, 0xf98e, 0x0000 },
-  { 0x8700, 0xf997, 0x4000 },
-  { 0x8700, 0xf993, 0x3000 },
-  { 0x8700, 0xf991, 0x2000 },
-  { 0x0700, 0xf990, 0x0000 },
-  { 0x0700, 0xf992, 0x0000 },
-  { 0x8700, 0xf995, 0x2000 },
-  { 0x0700, 0xf994, 0x0000 },
-  { 0x0700, 0xf996, 0x0000 },
-  { 0x8700, 0xf99b, 0x3000 },
-  { 0x8700, 0xf999, 0x2000 },
-  { 0x0700, 0xf998, 0x0000 },
-  { 0x0700, 0xf99a, 0x0000 },
-  { 0x8700, 0xf99d, 0x2000 },
-  { 0x0700, 0xf99c, 0x0000 },
-  { 0x0700, 0xf99e, 0x0000 },
-  { 0x8700, 0xf9af, 0x5000 },
-  { 0x8700, 0xf9a7, 0x4000 },
-  { 0x8700, 0xf9a3, 0x3000 },
-  { 0x8700, 0xf9a1, 0x2000 },
-  { 0x0700, 0xf9a0, 0x0000 },
-  { 0x0700, 0xf9a2, 0x0000 },
-  { 0x8700, 0xf9a5, 0x2000 },
-  { 0x0700, 0xf9a4, 0x0000 },
-  { 0x0700, 0xf9a6, 0x0000 },
-  { 0x8700, 0xf9ab, 0x3000 },
-  { 0x8700, 0xf9a9, 0x2000 },
-  { 0x0700, 0xf9a8, 0x0000 },
-  { 0x0700, 0xf9aa, 0x0000 },
-  { 0x8700, 0xf9ad, 0x2000 },
-  { 0x0700, 0xf9ac, 0x0000 },
-  { 0x0700, 0xf9ae, 0x0000 },
-  { 0x8700, 0xf9b7, 0x4000 },
-  { 0x8700, 0xf9b3, 0x3000 },
-  { 0x8700, 0xf9b1, 0x2000 },
-  { 0x0700, 0xf9b0, 0x0000 },
-  { 0x0700, 0xf9b2, 0x0000 },
-  { 0x8700, 0xf9b5, 0x2000 },
-  { 0x0700, 0xf9b4, 0x0000 },
-  { 0x0700, 0xf9b6, 0x0000 },
-  { 0x8700, 0xf9bb, 0x3000 },
-  { 0x8700, 0xf9b9, 0x2000 },
-  { 0x0700, 0xf9b8, 0x0000 },
-  { 0x0700, 0xf9ba, 0x0000 },
-  { 0x8700, 0xf9bd, 0x2000 },
-  { 0x0700, 0xf9bc, 0x0000 },
-  { 0x0700, 0xf9be, 0x0000 },
-  { 0x8700, 0xf9df, 0x6000 },
-  { 0x8700, 0xf9cf, 0x5000 },
-  { 0x8700, 0xf9c7, 0x4000 },
-  { 0x8700, 0xf9c3, 0x3000 },
-  { 0x8700, 0xf9c1, 0x2000 },
-  { 0x0700, 0xf9c0, 0x0000 },
-  { 0x0700, 0xf9c2, 0x0000 },
-  { 0x8700, 0xf9c5, 0x2000 },
-  { 0x0700, 0xf9c4, 0x0000 },
-  { 0x0700, 0xf9c6, 0x0000 },
-  { 0x8700, 0xf9cb, 0x3000 },
-  { 0x8700, 0xf9c9, 0x2000 },
-  { 0x0700, 0xf9c8, 0x0000 },
-  { 0x0700, 0xf9ca, 0x0000 },
-  { 0x8700, 0xf9cd, 0x2000 },
-  { 0x0700, 0xf9cc, 0x0000 },
-  { 0x0700, 0xf9ce, 0x0000 },
-  { 0x8700, 0xf9d7, 0x4000 },
-  { 0x8700, 0xf9d3, 0x3000 },
-  { 0x8700, 0xf9d1, 0x2000 },
-  { 0x0700, 0xf9d0, 0x0000 },
-  { 0x0700, 0xf9d2, 0x0000 },
-  { 0x8700, 0xf9d5, 0x2000 },
-  { 0x0700, 0xf9d4, 0x0000 },
-  { 0x0700, 0xf9d6, 0x0000 },
-  { 0x8700, 0xf9db, 0x3000 },
-  { 0x8700, 0xf9d9, 0x2000 },
-  { 0x0700, 0xf9d8, 0x0000 },
-  { 0x0700, 0xf9da, 0x0000 },
-  { 0x8700, 0xf9dd, 0x2000 },
-  { 0x0700, 0xf9dc, 0x0000 },
-  { 0x0700, 0xf9de, 0x0000 },
-  { 0x8700, 0xf9ef, 0x5000 },
-  { 0x8700, 0xf9e7, 0x4000 },
-  { 0x8700, 0xf9e3, 0x3000 },
-  { 0x8700, 0xf9e1, 0x2000 },
-  { 0x0700, 0xf9e0, 0x0000 },
-  { 0x0700, 0xf9e2, 0x0000 },
-  { 0x8700, 0xf9e5, 0x2000 },
-  { 0x0700, 0xf9e4, 0x0000 },
-  { 0x0700, 0xf9e6, 0x0000 },
-  { 0x8700, 0xf9eb, 0x3000 },
-  { 0x8700, 0xf9e9, 0x2000 },
-  { 0x0700, 0xf9e8, 0x0000 },
-  { 0x0700, 0xf9ea, 0x0000 },
-  { 0x8700, 0xf9ed, 0x2000 },
-  { 0x0700, 0xf9ec, 0x0000 },
-  { 0x0700, 0xf9ee, 0x0000 },
-  { 0x8700, 0xf9f7, 0x4000 },
-  { 0x8700, 0xf9f3, 0x3000 },
-  { 0x8700, 0xf9f1, 0x2000 },
-  { 0x0700, 0xf9f0, 0x0000 },
-  { 0x0700, 0xf9f2, 0x0000 },
-  { 0x8700, 0xf9f5, 0x2000 },
-  { 0x0700, 0xf9f4, 0x0000 },
-  { 0x0700, 0xf9f6, 0x0000 },
-  { 0x8700, 0xf9fb, 0x3000 },
-  { 0x8700, 0xf9f9, 0x2000 },
-  { 0x0700, 0xf9f8, 0x0000 },
-  { 0x0700, 0xf9fa, 0x0000 },
-  { 0x8700, 0xf9fd, 0x2000 },
-  { 0x0700, 0xf9fc, 0x0000 },
-  { 0x0700, 0xf9fe, 0x0000 },
-  { 0x8700, 0xfa41, 0x7000 },
-  { 0x8700, 0xfa1f, 0x6000 },
-  { 0x8700, 0xfa0f, 0x5000 },
-  { 0x8700, 0xfa07, 0x4000 },
-  { 0x8700, 0xfa03, 0x3000 },
-  { 0x8700, 0xfa01, 0x2000 },
-  { 0x0700, 0xfa00, 0x0000 },
-  { 0x0700, 0xfa02, 0x0000 },
-  { 0x8700, 0xfa05, 0x2000 },
-  { 0x0700, 0xfa04, 0x0000 },
-  { 0x0700, 0xfa06, 0x0000 },
-  { 0x8700, 0xfa0b, 0x3000 },
-  { 0x8700, 0xfa09, 0x2000 },
-  { 0x0700, 0xfa08, 0x0000 },
-  { 0x0700, 0xfa0a, 0x0000 },
-  { 0x8700, 0xfa0d, 0x2000 },
-  { 0x0700, 0xfa0c, 0x0000 },
-  { 0x0700, 0xfa0e, 0x0000 },
-  { 0x8700, 0xfa17, 0x4000 },
-  { 0x8700, 0xfa13, 0x3000 },
-  { 0x8700, 0xfa11, 0x2000 },
-  { 0x0700, 0xfa10, 0x0000 },
-  { 0x0700, 0xfa12, 0x0000 },
-  { 0x8700, 0xfa15, 0x2000 },
-  { 0x0700, 0xfa14, 0x0000 },
-  { 0x0700, 0xfa16, 0x0000 },
-  { 0x8700, 0xfa1b, 0x3000 },
-  { 0x8700, 0xfa19, 0x2000 },
-  { 0x0700, 0xfa18, 0x0000 },
-  { 0x0700, 0xfa1a, 0x0000 },
-  { 0x8700, 0xfa1d, 0x2000 },
-  { 0x0700, 0xfa1c, 0x0000 },
-  { 0x0700, 0xfa1e, 0x0000 },
-  { 0x8700, 0xfa31, 0x5000 },
-  { 0x8700, 0xfa27, 0x4000 },
-  { 0x8700, 0xfa23, 0x3000 },
-  { 0x8700, 0xfa21, 0x2000 },
-  { 0x0700, 0xfa20, 0x0000 },
-  { 0x0700, 0xfa22, 0x0000 },
-  { 0x8700, 0xfa25, 0x2000 },
-  { 0x0700, 0xfa24, 0x0000 },
-  { 0x0700, 0xfa26, 0x0000 },
-  { 0x8700, 0xfa2b, 0x3000 },
-  { 0x8700, 0xfa29, 0x2000 },
-  { 0x0700, 0xfa28, 0x0000 },
-  { 0x0700, 0xfa2a, 0x0000 },
-  { 0x8700, 0xfa2d, 0x2000 },
-  { 0x0700, 0xfa2c, 0x0000 },
-  { 0x0700, 0xfa30, 0x0000 },
-  { 0x8700, 0xfa39, 0x4000 },
-  { 0x8700, 0xfa35, 0x3000 },
-  { 0x8700, 0xfa33, 0x2000 },
-  { 0x0700, 0xfa32, 0x0000 },
-  { 0x0700, 0xfa34, 0x0000 },
-  { 0x8700, 0xfa37, 0x2000 },
-  { 0x0700, 0xfa36, 0x0000 },
-  { 0x0700, 0xfa38, 0x0000 },
-  { 0x8700, 0xfa3d, 0x3000 },
-  { 0x8700, 0xfa3b, 0x2000 },
-  { 0x0700, 0xfa3a, 0x0000 },
-  { 0x0700, 0xfa3c, 0x0000 },
-  { 0x8700, 0xfa3f, 0x2000 },
-  { 0x0700, 0xfa3e, 0x0000 },
-  { 0x0700, 0xfa40, 0x0000 },
-  { 0x8700, 0xfa61, 0x6000 },
-  { 0x8700, 0xfa51, 0x5000 },
-  { 0x8700, 0xfa49, 0x4000 },
-  { 0x8700, 0xfa45, 0x3000 },
-  { 0x8700, 0xfa43, 0x2000 },
-  { 0x0700, 0xfa42, 0x0000 },
-  { 0x0700, 0xfa44, 0x0000 },
-  { 0x8700, 0xfa47, 0x2000 },
-  { 0x0700, 0xfa46, 0x0000 },
-  { 0x0700, 0xfa48, 0x0000 },
-  { 0x8700, 0xfa4d, 0x3000 },
-  { 0x8700, 0xfa4b, 0x2000 },
-  { 0x0700, 0xfa4a, 0x0000 },
-  { 0x0700, 0xfa4c, 0x0000 },
-  { 0x8700, 0xfa4f, 0x2000 },
-  { 0x0700, 0xfa4e, 0x0000 },
-  { 0x0700, 0xfa50, 0x0000 },
-  { 0x8700, 0xfa59, 0x4000 },
-  { 0x8700, 0xfa55, 0x3000 },
-  { 0x8700, 0xfa53, 0x2000 },
-  { 0x0700, 0xfa52, 0x0000 },
-  { 0x0700, 0xfa54, 0x0000 },
-  { 0x8700, 0xfa57, 0x2000 },
-  { 0x0700, 0xfa56, 0x0000 },
-  { 0x0700, 0xfa58, 0x0000 },
-  { 0x8700, 0xfa5d, 0x3000 },
-  { 0x8700, 0xfa5b, 0x2000 },
-  { 0x0700, 0xfa5a, 0x0000 },
-  { 0x0700, 0xfa5c, 0x0000 },
-  { 0x8700, 0xfa5f, 0x2000 },
-  { 0x0700, 0xfa5e, 0x0000 },
-  { 0x0700, 0xfa60, 0x0000 },
-  { 0x8500, 0xfb06, 0x5000 },
-  { 0x8700, 0xfa69, 0x4000 },
-  { 0x8700, 0xfa65, 0x3000 },
-  { 0x8700, 0xfa63, 0x2000 },
-  { 0x0700, 0xfa62, 0x0000 },
-  { 0x0700, 0xfa64, 0x0000 },
-  { 0x8700, 0xfa67, 0x2000 },
-  { 0x0700, 0xfa66, 0x0000 },
-  { 0x0700, 0xfa68, 0x0000 },
-  { 0x8500, 0xfb02, 0x3000 },
-  { 0x8500, 0xfb00, 0x2000 },
-  { 0x0700, 0xfa6a, 0x0000 },
-  { 0x0500, 0xfb01, 0x0000 },
-  { 0x8500, 0xfb04, 0x2000 },
-  { 0x0500, 0xfb03, 0x0000 },
-  { 0x0500, 0xfb05, 0x0000 },
-  { 0x8700, 0xfb1f, 0x4000 },
-  { 0x8500, 0xfb16, 0x3000 },
-  { 0x8500, 0xfb14, 0x2000 },
-  { 0x0500, 0xfb13, 0x0000 },
-  { 0x0500, 0xfb15, 0x0000 },
-  { 0x8700, 0xfb1d, 0x2000 },
-  { 0x0500, 0xfb17, 0x0000 },
-  { 0x0c00, 0xfb1e, 0x0000 },
-  { 0x8700, 0xfb23, 0x3000 },
-  { 0x8700, 0xfb21, 0x2000 },
-  { 0x0700, 0xfb20, 0x0000 },
-  { 0x0700, 0xfb22, 0x0000 },
-  { 0x8700, 0xfb25, 0x2000 },
-  { 0x0700, 0xfb24, 0x0000 },
-  { 0x0700, 0xfb26, 0x0000 },
-  { 0x8700, 0xfbac, 0x8000 },
-  { 0x8700, 0xfb6c, 0x7000 },
-  { 0x8700, 0xfb4c, 0x6000 },
-  { 0x8700, 0xfb38, 0x5000 },
-  { 0x8700, 0xfb2f, 0x4000 },
-  { 0x8700, 0xfb2b, 0x3000 },
-  { 0x9900, 0xfb29, 0x2000 },
-  { 0x0700, 0xfb28, 0x0000 },
-  { 0x0700, 0xfb2a, 0x0000 },
-  { 0x8700, 0xfb2d, 0x2000 },
-  { 0x0700, 0xfb2c, 0x0000 },
-  { 0x0700, 0xfb2e, 0x0000 },
-  { 0x8700, 0xfb33, 0x3000 },
-  { 0x8700, 0xfb31, 0x2000 },
-  { 0x0700, 0xfb30, 0x0000 },
-  { 0x0700, 0xfb32, 0x0000 },
-  { 0x8700, 0xfb35, 0x2000 },
-  { 0x0700, 0xfb34, 0x0000 },
-  { 0x0700, 0xfb36, 0x0000 },
-  { 0x8700, 0xfb43, 0x4000 },
-  { 0x8700, 0xfb3c, 0x3000 },
-  { 0x8700, 0xfb3a, 0x2000 },
-  { 0x0700, 0xfb39, 0x0000 },
-  { 0x0700, 0xfb3b, 0x0000 },
-  { 0x8700, 0xfb40, 0x2000 },
-  { 0x0700, 0xfb3e, 0x0000 },
-  { 0x0700, 0xfb41, 0x0000 },
-  { 0x8700, 0xfb48, 0x3000 },
-  { 0x8700, 0xfb46, 0x2000 },
-  { 0x0700, 0xfb44, 0x0000 },
-  { 0x0700, 0xfb47, 0x0000 },
-  { 0x8700, 0xfb4a, 0x2000 },
-  { 0x0700, 0xfb49, 0x0000 },
-  { 0x0700, 0xfb4b, 0x0000 },
-  { 0x8700, 0xfb5c, 0x5000 },
-  { 0x8700, 0xfb54, 0x4000 },
-  { 0x8700, 0xfb50, 0x3000 },
-  { 0x8700, 0xfb4e, 0x2000 },
-  { 0x0700, 0xfb4d, 0x0000 },
-  { 0x0700, 0xfb4f, 0x0000 },
-  { 0x8700, 0xfb52, 0x2000 },
-  { 0x0700, 0xfb51, 0x0000 },
-  { 0x0700, 0xfb53, 0x0000 },
-  { 0x8700, 0xfb58, 0x3000 },
-  { 0x8700, 0xfb56, 0x2000 },
-  { 0x0700, 0xfb55, 0x0000 },
-  { 0x0700, 0xfb57, 0x0000 },
-  { 0x8700, 0xfb5a, 0x2000 },
-  { 0x0700, 0xfb59, 0x0000 },
-  { 0x0700, 0xfb5b, 0x0000 },
-  { 0x8700, 0xfb64, 0x4000 },
-  { 0x8700, 0xfb60, 0x3000 },
-  { 0x8700, 0xfb5e, 0x2000 },
-  { 0x0700, 0xfb5d, 0x0000 },
-  { 0x0700, 0xfb5f, 0x0000 },
-  { 0x8700, 0xfb62, 0x2000 },
-  { 0x0700, 0xfb61, 0x0000 },
-  { 0x0700, 0xfb63, 0x0000 },
-  { 0x8700, 0xfb68, 0x3000 },
-  { 0x8700, 0xfb66, 0x2000 },
-  { 0x0700, 0xfb65, 0x0000 },
-  { 0x0700, 0xfb67, 0x0000 },
-  { 0x8700, 0xfb6a, 0x2000 },
-  { 0x0700, 0xfb69, 0x0000 },
-  { 0x0700, 0xfb6b, 0x0000 },
-  { 0x8700, 0xfb8c, 0x6000 },
-  { 0x8700, 0xfb7c, 0x5000 },
-  { 0x8700, 0xfb74, 0x4000 },
-  { 0x8700, 0xfb70, 0x3000 },
-  { 0x8700, 0xfb6e, 0x2000 },
-  { 0x0700, 0xfb6d, 0x0000 },
-  { 0x0700, 0xfb6f, 0x0000 },
-  { 0x8700, 0xfb72, 0x2000 },
-  { 0x0700, 0xfb71, 0x0000 },
-  { 0x0700, 0xfb73, 0x0000 },
-  { 0x8700, 0xfb78, 0x3000 },
-  { 0x8700, 0xfb76, 0x2000 },
-  { 0x0700, 0xfb75, 0x0000 },
-  { 0x0700, 0xfb77, 0x0000 },
-  { 0x8700, 0xfb7a, 0x2000 },
-  { 0x0700, 0xfb79, 0x0000 },
-  { 0x0700, 0xfb7b, 0x0000 },
-  { 0x8700, 0xfb84, 0x4000 },
-  { 0x8700, 0xfb80, 0x3000 },
-  { 0x8700, 0xfb7e, 0x2000 },
-  { 0x0700, 0xfb7d, 0x0000 },
-  { 0x0700, 0xfb7f, 0x0000 },
-  { 0x8700, 0xfb82, 0x2000 },
-  { 0x0700, 0xfb81, 0x0000 },
-  { 0x0700, 0xfb83, 0x0000 },
-  { 0x8700, 0xfb88, 0x3000 },
-  { 0x8700, 0xfb86, 0x2000 },
-  { 0x0700, 0xfb85, 0x0000 },
-  { 0x0700, 0xfb87, 0x0000 },
-  { 0x8700, 0xfb8a, 0x2000 },
-  { 0x0700, 0xfb89, 0x0000 },
-  { 0x0700, 0xfb8b, 0x0000 },
-  { 0x8700, 0xfb9c, 0x5000 },
-  { 0x8700, 0xfb94, 0x4000 },
-  { 0x8700, 0xfb90, 0x3000 },
-  { 0x8700, 0xfb8e, 0x2000 },
-  { 0x0700, 0xfb8d, 0x0000 },
-  { 0x0700, 0xfb8f, 0x0000 },
-  { 0x8700, 0xfb92, 0x2000 },
-  { 0x0700, 0xfb91, 0x0000 },
-  { 0x0700, 0xfb93, 0x0000 },
-  { 0x8700, 0xfb98, 0x3000 },
-  { 0x8700, 0xfb96, 0x2000 },
-  { 0x0700, 0xfb95, 0x0000 },
-  { 0x0700, 0xfb97, 0x0000 },
-  { 0x8700, 0xfb9a, 0x2000 },
-  { 0x0700, 0xfb99, 0x0000 },
-  { 0x0700, 0xfb9b, 0x0000 },
-  { 0x8700, 0xfba4, 0x4000 },
-  { 0x8700, 0xfba0, 0x3000 },
-  { 0x8700, 0xfb9e, 0x2000 },
-  { 0x0700, 0xfb9d, 0x0000 },
-  { 0x0700, 0xfb9f, 0x0000 },
-  { 0x8700, 0xfba2, 0x2000 },
-  { 0x0700, 0xfba1, 0x0000 },
-  { 0x0700, 0xfba3, 0x0000 },
-  { 0x8700, 0xfba8, 0x3000 },
-  { 0x8700, 0xfba6, 0x2000 },
-  { 0x0700, 0xfba5, 0x0000 },
-  { 0x0700, 0xfba7, 0x0000 },
-  { 0x8700, 0xfbaa, 0x2000 },
-  { 0x0700, 0xfba9, 0x0000 },
-  { 0x0700, 0xfbab, 0x0000 },
-  { 0x8700, 0xfc0d, 0x7000 },
-  { 0x8700, 0xfbed, 0x6000 },
-  { 0x8700, 0xfbdd, 0x5000 },
-  { 0x8700, 0xfbd5, 0x4000 },
-  { 0x8700, 0xfbb0, 0x3000 },
-  { 0x8700, 0xfbae, 0x2000 },
-  { 0x0700, 0xfbad, 0x0000 },
-  { 0x0700, 0xfbaf, 0x0000 },
-  { 0x8700, 0xfbd3, 0x2000 },
-  { 0x0700, 0xfbb1, 0x0000 },
-  { 0x0700, 0xfbd4, 0x0000 },
-  { 0x8700, 0xfbd9, 0x3000 },
-  { 0x8700, 0xfbd7, 0x2000 },
-  { 0x0700, 0xfbd6, 0x0000 },
-  { 0x0700, 0xfbd8, 0x0000 },
-  { 0x8700, 0xfbdb, 0x2000 },
-  { 0x0700, 0xfbda, 0x0000 },
-  { 0x0700, 0xfbdc, 0x0000 },
-  { 0x8700, 0xfbe5, 0x4000 },
-  { 0x8700, 0xfbe1, 0x3000 },
-  { 0x8700, 0xfbdf, 0x2000 },
-  { 0x0700, 0xfbde, 0x0000 },
-  { 0x0700, 0xfbe0, 0x0000 },
-  { 0x8700, 0xfbe3, 0x2000 },
-  { 0x0700, 0xfbe2, 0x0000 },
-  { 0x0700, 0xfbe4, 0x0000 },
-  { 0x8700, 0xfbe9, 0x3000 },
-  { 0x8700, 0xfbe7, 0x2000 },
-  { 0x0700, 0xfbe6, 0x0000 },
-  { 0x0700, 0xfbe8, 0x0000 },
-  { 0x8700, 0xfbeb, 0x2000 },
-  { 0x0700, 0xfbea, 0x0000 },
-  { 0x0700, 0xfbec, 0x0000 },
-  { 0x8700, 0xfbfd, 0x5000 },
-  { 0x8700, 0xfbf5, 0x4000 },
-  { 0x8700, 0xfbf1, 0x3000 },
-  { 0x8700, 0xfbef, 0x2000 },
-  { 0x0700, 0xfbee, 0x0000 },
-  { 0x0700, 0xfbf0, 0x0000 },
-  { 0x8700, 0xfbf3, 0x2000 },
-  { 0x0700, 0xfbf2, 0x0000 },
-  { 0x0700, 0xfbf4, 0x0000 },
-  { 0x8700, 0xfbf9, 0x3000 },
-  { 0x8700, 0xfbf7, 0x2000 },
-  { 0x0700, 0xfbf6, 0x0000 },
-  { 0x0700, 0xfbf8, 0x0000 },
-  { 0x8700, 0xfbfb, 0x2000 },
-  { 0x0700, 0xfbfa, 0x0000 },
-  { 0x0700, 0xfbfc, 0x0000 },
-  { 0x8700, 0xfc05, 0x4000 },
-  { 0x8700, 0xfc01, 0x3000 },
-  { 0x8700, 0xfbff, 0x2000 },
-  { 0x0700, 0xfbfe, 0x0000 },
-  { 0x0700, 0xfc00, 0x0000 },
-  { 0x8700, 0xfc03, 0x2000 },
-  { 0x0700, 0xfc02, 0x0000 },
-  { 0x0700, 0xfc04, 0x0000 },
-  { 0x8700, 0xfc09, 0x3000 },
-  { 0x8700, 0xfc07, 0x2000 },
-  { 0x0700, 0xfc06, 0x0000 },
-  { 0x0700, 0xfc08, 0x0000 },
-  { 0x8700, 0xfc0b, 0x2000 },
-  { 0x0700, 0xfc0a, 0x0000 },
-  { 0x0700, 0xfc0c, 0x0000 },
-  { 0x8700, 0xfc2d, 0x6000 },
-  { 0x8700, 0xfc1d, 0x5000 },
-  { 0x8700, 0xfc15, 0x4000 },
-  { 0x8700, 0xfc11, 0x3000 },
-  { 0x8700, 0xfc0f, 0x2000 },
-  { 0x0700, 0xfc0e, 0x0000 },
-  { 0x0700, 0xfc10, 0x0000 },
-  { 0x8700, 0xfc13, 0x2000 },
-  { 0x0700, 0xfc12, 0x0000 },
-  { 0x0700, 0xfc14, 0x0000 },
-  { 0x8700, 0xfc19, 0x3000 },
-  { 0x8700, 0xfc17, 0x2000 },
-  { 0x0700, 0xfc16, 0x0000 },
-  { 0x0700, 0xfc18, 0x0000 },
-  { 0x8700, 0xfc1b, 0x2000 },
-  { 0x0700, 0xfc1a, 0x0000 },
-  { 0x0700, 0xfc1c, 0x0000 },
-  { 0x8700, 0xfc25, 0x4000 },
-  { 0x8700, 0xfc21, 0x3000 },
-  { 0x8700, 0xfc1f, 0x2000 },
-  { 0x0700, 0xfc1e, 0x0000 },
-  { 0x0700, 0xfc20, 0x0000 },
-  { 0x8700, 0xfc23, 0x2000 },
-  { 0x0700, 0xfc22, 0x0000 },
-  { 0x0700, 0xfc24, 0x0000 },
-  { 0x8700, 0xfc29, 0x3000 },
-  { 0x8700, 0xfc27, 0x2000 },
-  { 0x0700, 0xfc26, 0x0000 },
-  { 0x0700, 0xfc28, 0x0000 },
-  { 0x8700, 0xfc2b, 0x2000 },
-  { 0x0700, 0xfc2a, 0x0000 },
-  { 0x0700, 0xfc2c, 0x0000 },
-  { 0x8700, 0xfc3d, 0x5000 },
-  { 0x8700, 0xfc35, 0x4000 },
-  { 0x8700, 0xfc31, 0x3000 },
-  { 0x8700, 0xfc2f, 0x2000 },
-  { 0x0700, 0xfc2e, 0x0000 },
-  { 0x0700, 0xfc30, 0x0000 },
-  { 0x8700, 0xfc33, 0x2000 },
-  { 0x0700, 0xfc32, 0x0000 },
-  { 0x0700, 0xfc34, 0x0000 },
-  { 0x8700, 0xfc39, 0x3000 },
-  { 0x8700, 0xfc37, 0x2000 },
-  { 0x0700, 0xfc36, 0x0000 },
-  { 0x0700, 0xfc38, 0x0000 },
-  { 0x8700, 0xfc3b, 0x2000 },
-  { 0x0700, 0xfc3a, 0x0000 },
-  { 0x0700, 0xfc3c, 0x0000 },
-  { 0x8700, 0xfc45, 0x4000 },
-  { 0x8700, 0xfc41, 0x3000 },
-  { 0x8700, 0xfc3f, 0x2000 },
-  { 0x0700, 0xfc3e, 0x0000 },
-  { 0x0700, 0xfc40, 0x0000 },
-  { 0x8700, 0xfc43, 0x2000 },
-  { 0x0700, 0xfc42, 0x0000 },
-  { 0x0700, 0xfc44, 0x0000 },
-  { 0x8700, 0xfc49, 0x3000 },
-  { 0x8700, 0xfc47, 0x2000 },
-  { 0x0700, 0xfc46, 0x0000 },
-  { 0x0700, 0xfc48, 0x0000 },
-  { 0x8700, 0xfc4b, 0x2000 },
-  { 0x0700, 0xfc4a, 0x0000 },
-  { 0x0700, 0xfc4c, 0x0000 },
-  { 0x8700, 0xfeac, 0xa000 },
-  { 0x8700, 0xfd5d, 0x9000 },
-  { 0x8700, 0xfccd, 0x8000 },
-  { 0x8700, 0xfc8d, 0x7000 },
-  { 0x8700, 0xfc6d, 0x6000 },
-  { 0x8700, 0xfc5d, 0x5000 },
-  { 0x8700, 0xfc55, 0x4000 },
-  { 0x8700, 0xfc51, 0x3000 },
-  { 0x8700, 0xfc4f, 0x2000 },
-  { 0x0700, 0xfc4e, 0x0000 },
-  { 0x0700, 0xfc50, 0x0000 },
-  { 0x8700, 0xfc53, 0x2000 },
-  { 0x0700, 0xfc52, 0x0000 },
-  { 0x0700, 0xfc54, 0x0000 },
-  { 0x8700, 0xfc59, 0x3000 },
-  { 0x8700, 0xfc57, 0x2000 },
-  { 0x0700, 0xfc56, 0x0000 },
-  { 0x0700, 0xfc58, 0x0000 },
-  { 0x8700, 0xfc5b, 0x2000 },
-  { 0x0700, 0xfc5a, 0x0000 },
-  { 0x0700, 0xfc5c, 0x0000 },
-  { 0x8700, 0xfc65, 0x4000 },
-  { 0x8700, 0xfc61, 0x3000 },
-  { 0x8700, 0xfc5f, 0x2000 },
-  { 0x0700, 0xfc5e, 0x0000 },
-  { 0x0700, 0xfc60, 0x0000 },
-  { 0x8700, 0xfc63, 0x2000 },
-  { 0x0700, 0xfc62, 0x0000 },
-  { 0x0700, 0xfc64, 0x0000 },
-  { 0x8700, 0xfc69, 0x3000 },
-  { 0x8700, 0xfc67, 0x2000 },
-  { 0x0700, 0xfc66, 0x0000 },
-  { 0x0700, 0xfc68, 0x0000 },
-  { 0x8700, 0xfc6b, 0x2000 },
-  { 0x0700, 0xfc6a, 0x0000 },
-  { 0x0700, 0xfc6c, 0x0000 },
-  { 0x8700, 0xfc7d, 0x5000 },
-  { 0x8700, 0xfc75, 0x4000 },
-  { 0x8700, 0xfc71, 0x3000 },
-  { 0x8700, 0xfc6f, 0x2000 },
-  { 0x0700, 0xfc6e, 0x0000 },
-  { 0x0700, 0xfc70, 0x0000 },
-  { 0x8700, 0xfc73, 0x2000 },
-  { 0x0700, 0xfc72, 0x0000 },
-  { 0x0700, 0xfc74, 0x0000 },
-  { 0x8700, 0xfc79, 0x3000 },
-  { 0x8700, 0xfc77, 0x2000 },
-  { 0x0700, 0xfc76, 0x0000 },
-  { 0x0700, 0xfc78, 0x0000 },
-  { 0x8700, 0xfc7b, 0x2000 },
-  { 0x0700, 0xfc7a, 0x0000 },
-  { 0x0700, 0xfc7c, 0x0000 },
-  { 0x8700, 0xfc85, 0x4000 },
-  { 0x8700, 0xfc81, 0x3000 },
-  { 0x8700, 0xfc7f, 0x2000 },
-  { 0x0700, 0xfc7e, 0x0000 },
-  { 0x0700, 0xfc80, 0x0000 },
-  { 0x8700, 0xfc83, 0x2000 },
-  { 0x0700, 0xfc82, 0x0000 },
-  { 0x0700, 0xfc84, 0x0000 },
-  { 0x8700, 0xfc89, 0x3000 },
-  { 0x8700, 0xfc87, 0x2000 },
-  { 0x0700, 0xfc86, 0x0000 },
-  { 0x0700, 0xfc88, 0x0000 },
-  { 0x8700, 0xfc8b, 0x2000 },
-  { 0x0700, 0xfc8a, 0x0000 },
-  { 0x0700, 0xfc8c, 0x0000 },
-  { 0x8700, 0xfcad, 0x6000 },
-  { 0x8700, 0xfc9d, 0x5000 },
-  { 0x8700, 0xfc95, 0x4000 },
-  { 0x8700, 0xfc91, 0x3000 },
-  { 0x8700, 0xfc8f, 0x2000 },
-  { 0x0700, 0xfc8e, 0x0000 },
-  { 0x0700, 0xfc90, 0x0000 },
-  { 0x8700, 0xfc93, 0x2000 },
-  { 0x0700, 0xfc92, 0x0000 },
-  { 0x0700, 0xfc94, 0x0000 },
-  { 0x8700, 0xfc99, 0x3000 },
-  { 0x8700, 0xfc97, 0x2000 },
-  { 0x0700, 0xfc96, 0x0000 },
-  { 0x0700, 0xfc98, 0x0000 },
-  { 0x8700, 0xfc9b, 0x2000 },
-  { 0x0700, 0xfc9a, 0x0000 },
-  { 0x0700, 0xfc9c, 0x0000 },
-  { 0x8700, 0xfca5, 0x4000 },
-  { 0x8700, 0xfca1, 0x3000 },
-  { 0x8700, 0xfc9f, 0x2000 },
-  { 0x0700, 0xfc9e, 0x0000 },
-  { 0x0700, 0xfca0, 0x0000 },
-  { 0x8700, 0xfca3, 0x2000 },
-  { 0x0700, 0xfca2, 0x0000 },
-  { 0x0700, 0xfca4, 0x0000 },
-  { 0x8700, 0xfca9, 0x3000 },
-  { 0x8700, 0xfca7, 0x2000 },
-  { 0x0700, 0xfca6, 0x0000 },
-  { 0x0700, 0xfca8, 0x0000 },
-  { 0x8700, 0xfcab, 0x2000 },
-  { 0x0700, 0xfcaa, 0x0000 },
-  { 0x0700, 0xfcac, 0x0000 },
-  { 0x8700, 0xfcbd, 0x5000 },
-  { 0x8700, 0xfcb5, 0x4000 },
-  { 0x8700, 0xfcb1, 0x3000 },
-  { 0x8700, 0xfcaf, 0x2000 },
-  { 0x0700, 0xfcae, 0x0000 },
-  { 0x0700, 0xfcb0, 0x0000 },
-  { 0x8700, 0xfcb3, 0x2000 },
-  { 0x0700, 0xfcb2, 0x0000 },
-  { 0x0700, 0xfcb4, 0x0000 },
-  { 0x8700, 0xfcb9, 0x3000 },
-  { 0x8700, 0xfcb7, 0x2000 },
-  { 0x0700, 0xfcb6, 0x0000 },
-  { 0x0700, 0xfcb8, 0x0000 },
-  { 0x8700, 0xfcbb, 0x2000 },
-  { 0x0700, 0xfcba, 0x0000 },
-  { 0x0700, 0xfcbc, 0x0000 },
-  { 0x8700, 0xfcc5, 0x4000 },
-  { 0x8700, 0xfcc1, 0x3000 },
-  { 0x8700, 0xfcbf, 0x2000 },
-  { 0x0700, 0xfcbe, 0x0000 },
-  { 0x0700, 0xfcc0, 0x0000 },
-  { 0x8700, 0xfcc3, 0x2000 },
-  { 0x0700, 0xfcc2, 0x0000 },
-  { 0x0700, 0xfcc4, 0x0000 },
-  { 0x8700, 0xfcc9, 0x3000 },
-  { 0x8700, 0xfcc7, 0x2000 },
-  { 0x0700, 0xfcc6, 0x0000 },
-  { 0x0700, 0xfcc8, 0x0000 },
-  { 0x8700, 0xfccb, 0x2000 },
-  { 0x0700, 0xfcca, 0x0000 },
-  { 0x0700, 0xfccc, 0x0000 },
-  { 0x8700, 0xfd0d, 0x7000 },
-  { 0x8700, 0xfced, 0x6000 },
-  { 0x8700, 0xfcdd, 0x5000 },
-  { 0x8700, 0xfcd5, 0x4000 },
-  { 0x8700, 0xfcd1, 0x3000 },
-  { 0x8700, 0xfccf, 0x2000 },
-  { 0x0700, 0xfcce, 0x0000 },
-  { 0x0700, 0xfcd0, 0x0000 },
-  { 0x8700, 0xfcd3, 0x2000 },
-  { 0x0700, 0xfcd2, 0x0000 },
-  { 0x0700, 0xfcd4, 0x0000 },
-  { 0x8700, 0xfcd9, 0x3000 },
-  { 0x8700, 0xfcd7, 0x2000 },
-  { 0x0700, 0xfcd6, 0x0000 },
-  { 0x0700, 0xfcd8, 0x0000 },
-  { 0x8700, 0xfcdb, 0x2000 },
-  { 0x0700, 0xfcda, 0x0000 },
-  { 0x0700, 0xfcdc, 0x0000 },
-  { 0x8700, 0xfce5, 0x4000 },
-  { 0x8700, 0xfce1, 0x3000 },
-  { 0x8700, 0xfcdf, 0x2000 },
-  { 0x0700, 0xfcde, 0x0000 },
-  { 0x0700, 0xfce0, 0x0000 },
-  { 0x8700, 0xfce3, 0x2000 },
-  { 0x0700, 0xfce2, 0x0000 },
-  { 0x0700, 0xfce4, 0x0000 },
-  { 0x8700, 0xfce9, 0x3000 },
-  { 0x8700, 0xfce7, 0x2000 },
-  { 0x0700, 0xfce6, 0x0000 },
-  { 0x0700, 0xfce8, 0x0000 },
-  { 0x8700, 0xfceb, 0x2000 },
-  { 0x0700, 0xfcea, 0x0000 },
-  { 0x0700, 0xfcec, 0x0000 },
-  { 0x8700, 0xfcfd, 0x5000 },
-  { 0x8700, 0xfcf5, 0x4000 },
-  { 0x8700, 0xfcf1, 0x3000 },
-  { 0x8700, 0xfcef, 0x2000 },
-  { 0x0700, 0xfcee, 0x0000 },
-  { 0x0700, 0xfcf0, 0x0000 },
-  { 0x8700, 0xfcf3, 0x2000 },
-  { 0x0700, 0xfcf2, 0x0000 },
-  { 0x0700, 0xfcf4, 0x0000 },
-  { 0x8700, 0xfcf9, 0x3000 },
-  { 0x8700, 0xfcf7, 0x2000 },
-  { 0x0700, 0xfcf6, 0x0000 },
-  { 0x0700, 0xfcf8, 0x0000 },
-  { 0x8700, 0xfcfb, 0x2000 },
-  { 0x0700, 0xfcfa, 0x0000 },
-  { 0x0700, 0xfcfc, 0x0000 },
-  { 0x8700, 0xfd05, 0x4000 },
-  { 0x8700, 0xfd01, 0x3000 },
-  { 0x8700, 0xfcff, 0x2000 },
-  { 0x0700, 0xfcfe, 0x0000 },
-  { 0x0700, 0xfd00, 0x0000 },
-  { 0x8700, 0xfd03, 0x2000 },
-  { 0x0700, 0xfd02, 0x0000 },
-  { 0x0700, 0xfd04, 0x0000 },
-  { 0x8700, 0xfd09, 0x3000 },
-  { 0x8700, 0xfd07, 0x2000 },
-  { 0x0700, 0xfd06, 0x0000 },
-  { 0x0700, 0xfd08, 0x0000 },
-  { 0x8700, 0xfd0b, 0x2000 },
-  { 0x0700, 0xfd0a, 0x0000 },
-  { 0x0700, 0xfd0c, 0x0000 },
-  { 0x8700, 0xfd2d, 0x6000 },
-  { 0x8700, 0xfd1d, 0x5000 },
-  { 0x8700, 0xfd15, 0x4000 },
-  { 0x8700, 0xfd11, 0x3000 },
-  { 0x8700, 0xfd0f, 0x2000 },
-  { 0x0700, 0xfd0e, 0x0000 },
-  { 0x0700, 0xfd10, 0x0000 },
-  { 0x8700, 0xfd13, 0x2000 },
-  { 0x0700, 0xfd12, 0x0000 },
-  { 0x0700, 0xfd14, 0x0000 },
-  { 0x8700, 0xfd19, 0x3000 },
-  { 0x8700, 0xfd17, 0x2000 },
-  { 0x0700, 0xfd16, 0x0000 },
-  { 0x0700, 0xfd18, 0x0000 },
-  { 0x8700, 0xfd1b, 0x2000 },
-  { 0x0700, 0xfd1a, 0x0000 },
-  { 0x0700, 0xfd1c, 0x0000 },
-  { 0x8700, 0xfd25, 0x4000 },
-  { 0x8700, 0xfd21, 0x3000 },
-  { 0x8700, 0xfd1f, 0x2000 },
-  { 0x0700, 0xfd1e, 0x0000 },
-  { 0x0700, 0xfd20, 0x0000 },
-  { 0x8700, 0xfd23, 0x2000 },
-  { 0x0700, 0xfd22, 0x0000 },
-  { 0x0700, 0xfd24, 0x0000 },
-  { 0x8700, 0xfd29, 0x3000 },
-  { 0x8700, 0xfd27, 0x2000 },
-  { 0x0700, 0xfd26, 0x0000 },
-  { 0x0700, 0xfd28, 0x0000 },
-  { 0x8700, 0xfd2b, 0x2000 },
-  { 0x0700, 0xfd2a, 0x0000 },
-  { 0x0700, 0xfd2c, 0x0000 },
-  { 0x8700, 0xfd3d, 0x5000 },
-  { 0x8700, 0xfd35, 0x4000 },
-  { 0x8700, 0xfd31, 0x3000 },
-  { 0x8700, 0xfd2f, 0x2000 },
-  { 0x0700, 0xfd2e, 0x0000 },
-  { 0x0700, 0xfd30, 0x0000 },
-  { 0x8700, 0xfd33, 0x2000 },
-  { 0x0700, 0xfd32, 0x0000 },
-  { 0x0700, 0xfd34, 0x0000 },
-  { 0x8700, 0xfd39, 0x3000 },
-  { 0x8700, 0xfd37, 0x2000 },
-  { 0x0700, 0xfd36, 0x0000 },
-  { 0x0700, 0xfd38, 0x0000 },
-  { 0x8700, 0xfd3b, 0x2000 },
-  { 0x0700, 0xfd3a, 0x0000 },
-  { 0x0700, 0xfd3c, 0x0000 },
-  { 0x8700, 0xfd55, 0x4000 },
-  { 0x8700, 0xfd51, 0x3000 },
-  { 0x9200, 0xfd3f, 0x2000 },
-  { 0x1600, 0xfd3e, 0x0000 },
-  { 0x0700, 0xfd50, 0x0000 },
-  { 0x8700, 0xfd53, 0x2000 },
-  { 0x0700, 0xfd52, 0x0000 },
-  { 0x0700, 0xfd54, 0x0000 },
-  { 0x8700, 0xfd59, 0x3000 },
-  { 0x8700, 0xfd57, 0x2000 },
-  { 0x0700, 0xfd56, 0x0000 },
-  { 0x0700, 0xfd58, 0x0000 },
-  { 0x8700, 0xfd5b, 0x2000 },
-  { 0x0700, 0xfd5a, 0x0000 },
-  { 0x0700, 0xfd5c, 0x0000 },
-  { 0x8c00, 0xfe09, 0x8000 },
-  { 0x8700, 0xfd9f, 0x7000 },
-  { 0x8700, 0xfd7d, 0x6000 },
-  { 0x8700, 0xfd6d, 0x5000 },
-  { 0x8700, 0xfd65, 0x4000 },
-  { 0x8700, 0xfd61, 0x3000 },
-  { 0x8700, 0xfd5f, 0x2000 },
-  { 0x0700, 0xfd5e, 0x0000 },
-  { 0x0700, 0xfd60, 0x0000 },
-  { 0x8700, 0xfd63, 0x2000 },
-  { 0x0700, 0xfd62, 0x0000 },
-  { 0x0700, 0xfd64, 0x0000 },
-  { 0x8700, 0xfd69, 0x3000 },
-  { 0x8700, 0xfd67, 0x2000 },
-  { 0x0700, 0xfd66, 0x0000 },
-  { 0x0700, 0xfd68, 0x0000 },
-  { 0x8700, 0xfd6b, 0x2000 },
-  { 0x0700, 0xfd6a, 0x0000 },
-  { 0x0700, 0xfd6c, 0x0000 },
-  { 0x8700, 0xfd75, 0x4000 },
-  { 0x8700, 0xfd71, 0x3000 },
-  { 0x8700, 0xfd6f, 0x2000 },
-  { 0x0700, 0xfd6e, 0x0000 },
-  { 0x0700, 0xfd70, 0x0000 },
-  { 0x8700, 0xfd73, 0x2000 },
-  { 0x0700, 0xfd72, 0x0000 },
-  { 0x0700, 0xfd74, 0x0000 },
-  { 0x8700, 0xfd79, 0x3000 },
-  { 0x8700, 0xfd77, 0x2000 },
-  { 0x0700, 0xfd76, 0x0000 },
-  { 0x0700, 0xfd78, 0x0000 },
-  { 0x8700, 0xfd7b, 0x2000 },
-  { 0x0700, 0xfd7a, 0x0000 },
-  { 0x0700, 0xfd7c, 0x0000 },
-  { 0x8700, 0xfd8d, 0x5000 },
-  { 0x8700, 0xfd85, 0x4000 },
-  { 0x8700, 0xfd81, 0x3000 },
-  { 0x8700, 0xfd7f, 0x2000 },
-  { 0x0700, 0xfd7e, 0x0000 },
-  { 0x0700, 0xfd80, 0x0000 },
-  { 0x8700, 0xfd83, 0x2000 },
-  { 0x0700, 0xfd82, 0x0000 },
-  { 0x0700, 0xfd84, 0x0000 },
-  { 0x8700, 0xfd89, 0x3000 },
-  { 0x8700, 0xfd87, 0x2000 },
-  { 0x0700, 0xfd86, 0x0000 },
-  { 0x0700, 0xfd88, 0x0000 },
-  { 0x8700, 0xfd8b, 0x2000 },
-  { 0x0700, 0xfd8a, 0x0000 },
-  { 0x0700, 0xfd8c, 0x0000 },
-  { 0x8700, 0xfd97, 0x4000 },
-  { 0x8700, 0xfd93, 0x3000 },
-  { 0x8700, 0xfd8f, 0x2000 },
-  { 0x0700, 0xfd8e, 0x0000 },
-  { 0x0700, 0xfd92, 0x0000 },
-  { 0x8700, 0xfd95, 0x2000 },
-  { 0x0700, 0xfd94, 0x0000 },
-  { 0x0700, 0xfd96, 0x0000 },
-  { 0x8700, 0xfd9b, 0x3000 },
-  { 0x8700, 0xfd99, 0x2000 },
-  { 0x0700, 0xfd98, 0x0000 },
-  { 0x0700, 0xfd9a, 0x0000 },
-  { 0x8700, 0xfd9d, 0x2000 },
-  { 0x0700, 0xfd9c, 0x0000 },
-  { 0x0700, 0xfd9e, 0x0000 },
-  { 0x8700, 0xfdbf, 0x6000 },
-  { 0x8700, 0xfdaf, 0x5000 },
-  { 0x8700, 0xfda7, 0x4000 },
-  { 0x8700, 0xfda3, 0x3000 },
-  { 0x8700, 0xfda1, 0x2000 },
-  { 0x0700, 0xfda0, 0x0000 },
-  { 0x0700, 0xfda2, 0x0000 },
-  { 0x8700, 0xfda5, 0x2000 },
-  { 0x0700, 0xfda4, 0x0000 },
-  { 0x0700, 0xfda6, 0x0000 },
-  { 0x8700, 0xfdab, 0x3000 },
-  { 0x8700, 0xfda9, 0x2000 },
-  { 0x0700, 0xfda8, 0x0000 },
-  { 0x0700, 0xfdaa, 0x0000 },
-  { 0x8700, 0xfdad, 0x2000 },
-  { 0x0700, 0xfdac, 0x0000 },
-  { 0x0700, 0xfdae, 0x0000 },
-  { 0x8700, 0xfdb7, 0x4000 },
-  { 0x8700, 0xfdb3, 0x3000 },
-  { 0x8700, 0xfdb1, 0x2000 },
-  { 0x0700, 0xfdb0, 0x0000 },
-  { 0x0700, 0xfdb2, 0x0000 },
-  { 0x8700, 0xfdb5, 0x2000 },
-  { 0x0700, 0xfdb4, 0x0000 },
-  { 0x0700, 0xfdb6, 0x0000 },
-  { 0x8700, 0xfdbb, 0x3000 },
-  { 0x8700, 0xfdb9, 0x2000 },
-  { 0x0700, 0xfdb8, 0x0000 },
-  { 0x0700, 0xfdba, 0x0000 },
-  { 0x8700, 0xfdbd, 0x2000 },
-  { 0x0700, 0xfdbc, 0x0000 },
-  { 0x0700, 0xfdbe, 0x0000 },
-  { 0x8700, 0xfdf7, 0x5000 },
-  { 0x8700, 0xfdc7, 0x4000 },
-  { 0x8700, 0xfdc3, 0x3000 },
-  { 0x8700, 0xfdc1, 0x2000 },
-  { 0x0700, 0xfdc0, 0x0000 },
-  { 0x0700, 0xfdc2, 0x0000 },
-  { 0x8700, 0xfdc5, 0x2000 },
-  { 0x0700, 0xfdc4, 0x0000 },
-  { 0x0700, 0xfdc6, 0x0000 },
-  { 0x8700, 0xfdf3, 0x3000 },
-  { 0x8700, 0xfdf1, 0x2000 },
-  { 0x0700, 0xfdf0, 0x0000 },
-  { 0x0700, 0xfdf2, 0x0000 },
-  { 0x8700, 0xfdf5, 0x2000 },
-  { 0x0700, 0xfdf4, 0x0000 },
-  { 0x0700, 0xfdf6, 0x0000 },
-  { 0x8c00, 0xfe01, 0x4000 },
-  { 0x8700, 0xfdfb, 0x3000 },
-  { 0x8700, 0xfdf9, 0x2000 },
-  { 0x0700, 0xfdf8, 0x0000 },
-  { 0x0700, 0xfdfa, 0x0000 },
-  { 0x9a00, 0xfdfd, 0x2000 },
-  { 0x1700, 0xfdfc, 0x0000 },
-  { 0x0c00, 0xfe00, 0x0000 },
-  { 0x8c00, 0xfe05, 0x3000 },
-  { 0x8c00, 0xfe03, 0x2000 },
-  { 0x0c00, 0xfe02, 0x0000 },
-  { 0x0c00, 0xfe04, 0x0000 },
-  { 0x8c00, 0xfe07, 0x2000 },
-  { 0x0c00, 0xfe06, 0x0000 },
-  { 0x0c00, 0xfe08, 0x0000 },
-  { 0x9900, 0xfe66, 0x7000 },
-  { 0x9500, 0xfe45, 0x6000 },
-  { 0x9600, 0xfe35, 0x5000 },
-  { 0x8c00, 0xfe21, 0x4000 },
-  { 0x8c00, 0xfe0d, 0x3000 },
-  { 0x8c00, 0xfe0b, 0x2000 },
-  { 0x0c00, 0xfe0a, 0x0000 },
-  { 0x0c00, 0xfe0c, 0x0000 },
-  { 0x8c00, 0xfe0f, 0x2000 },
-  { 0x0c00, 0xfe0e, 0x0000 },
-  { 0x0c00, 0xfe20, 0x0000 },
-  { 0x9100, 0xfe31, 0x3000 },
-  { 0x8c00, 0xfe23, 0x2000 },
-  { 0x0c00, 0xfe22, 0x0000 },
-  { 0x1500, 0xfe30, 0x0000 },
-  { 0x9000, 0xfe33, 0x2000 },
-  { 0x1100, 0xfe32, 0x0000 },
-  { 0x1000, 0xfe34, 0x0000 },
-  { 0x9600, 0xfe3d, 0x4000 },
-  { 0x9600, 0xfe39, 0x3000 },
-  { 0x9600, 0xfe37, 0x2000 },
-  { 0x1200, 0xfe36, 0x0000 },
-  { 0x1200, 0xfe38, 0x0000 },
-  { 0x9600, 0xfe3b, 0x2000 },
-  { 0x1200, 0xfe3a, 0x0000 },
-  { 0x1200, 0xfe3c, 0x0000 },
-  { 0x9600, 0xfe41, 0x3000 },
-  { 0x9600, 0xfe3f, 0x2000 },
-  { 0x1200, 0xfe3e, 0x0000 },
-  { 0x1200, 0xfe40, 0x0000 },
-  { 0x9600, 0xfe43, 0x2000 },
-  { 0x1200, 0xfe42, 0x0000 },
-  { 0x1200, 0xfe44, 0x0000 },
-  { 0x9500, 0xfe56, 0x5000 },
-  { 0x9000, 0xfe4d, 0x4000 },
-  { 0x9500, 0xfe49, 0x3000 },
-  { 0x9600, 0xfe47, 0x2000 },
-  { 0x1500, 0xfe46, 0x0000 },
-  { 0x1200, 0xfe48, 0x0000 },
-  { 0x9500, 0xfe4b, 0x2000 },
-  { 0x1500, 0xfe4a, 0x0000 },
-  { 0x1500, 0xfe4c, 0x0000 },
-  { 0x9500, 0xfe51, 0x3000 },
-  { 0x9000, 0xfe4f, 0x2000 },
-  { 0x1000, 0xfe4e, 0x0000 },
-  { 0x1500, 0xfe50, 0x0000 },
-  { 0x9500, 0xfe54, 0x2000 },
-  { 0x1500, 0xfe52, 0x0000 },
-  { 0x1500, 0xfe55, 0x0000 },
-  { 0x9200, 0xfe5e, 0x4000 },
-  { 0x9200, 0xfe5a, 0x3000 },
-  { 0x9100, 0xfe58, 0x2000 },
-  { 0x1500, 0xfe57, 0x0000 },
-  { 0x1600, 0xfe59, 0x0000 },
-  { 0x9200, 0xfe5c, 0x2000 },
-  { 0x1600, 0xfe5b, 0x0000 },
-  { 0x1600, 0xfe5d, 0x0000 },
-  { 0x9900, 0xfe62, 0x3000 },
-  { 0x9500, 0xfe60, 0x2000 },
-  { 0x1500, 0xfe5f, 0x0000 },
-  { 0x1500, 0xfe61, 0x0000 },
-  { 0x9900, 0xfe64, 0x2000 },
-  { 0x1100, 0xfe63, 0x0000 },
-  { 0x1900, 0xfe65, 0x0000 },
-  { 0x8700, 0xfe8c, 0x6000 },
-  { 0x8700, 0xfe7c, 0x5000 },
-  { 0x8700, 0xfe73, 0x4000 },
-  { 0x9500, 0xfe6b, 0x3000 },
-  { 0x9700, 0xfe69, 0x2000 },
-  { 0x1500, 0xfe68, 0x0000 },
-  { 0x1500, 0xfe6a, 0x0000 },
-  { 0x8700, 0xfe71, 0x2000 },
-  { 0x0700, 0xfe70, 0x0000 },
-  { 0x0700, 0xfe72, 0x0000 },
-  { 0x8700, 0xfe78, 0x3000 },
-  { 0x8700, 0xfe76, 0x2000 },
-  { 0x0700, 0xfe74, 0x0000 },
-  { 0x0700, 0xfe77, 0x0000 },
-  { 0x8700, 0xfe7a, 0x2000 },
-  { 0x0700, 0xfe79, 0x0000 },
-  { 0x0700, 0xfe7b, 0x0000 },
-  { 0x8700, 0xfe84, 0x4000 },
-  { 0x8700, 0xfe80, 0x3000 },
-  { 0x8700, 0xfe7e, 0x2000 },
-  { 0x0700, 0xfe7d, 0x0000 },
-  { 0x0700, 0xfe7f, 0x0000 },
-  { 0x8700, 0xfe82, 0x2000 },
-  { 0x0700, 0xfe81, 0x0000 },
-  { 0x0700, 0xfe83, 0x0000 },
-  { 0x8700, 0xfe88, 0x3000 },
-  { 0x8700, 0xfe86, 0x2000 },
-  { 0x0700, 0xfe85, 0x0000 },
-  { 0x0700, 0xfe87, 0x0000 },
-  { 0x8700, 0xfe8a, 0x2000 },
-  { 0x0700, 0xfe89, 0x0000 },
-  { 0x0700, 0xfe8b, 0x0000 },
-  { 0x8700, 0xfe9c, 0x5000 },
-  { 0x8700, 0xfe94, 0x4000 },
-  { 0x8700, 0xfe90, 0x3000 },
-  { 0x8700, 0xfe8e, 0x2000 },
-  { 0x0700, 0xfe8d, 0x0000 },
-  { 0x0700, 0xfe8f, 0x0000 },
-  { 0x8700, 0xfe92, 0x2000 },
-  { 0x0700, 0xfe91, 0x0000 },
-  { 0x0700, 0xfe93, 0x0000 },
-  { 0x8700, 0xfe98, 0x3000 },
-  { 0x8700, 0xfe96, 0x2000 },
-  { 0x0700, 0xfe95, 0x0000 },
-  { 0x0700, 0xfe97, 0x0000 },
-  { 0x8700, 0xfe9a, 0x2000 },
-  { 0x0700, 0xfe99, 0x0000 },
-  { 0x0700, 0xfe9b, 0x0000 },
-  { 0x8700, 0xfea4, 0x4000 },
-  { 0x8700, 0xfea0, 0x3000 },
-  { 0x8700, 0xfe9e, 0x2000 },
-  { 0x0700, 0xfe9d, 0x0000 },
-  { 0x0700, 0xfe9f, 0x0000 },
-  { 0x8700, 0xfea2, 0x2000 },
-  { 0x0700, 0xfea1, 0x0000 },
-  { 0x0700, 0xfea3, 0x0000 },
-  { 0x8700, 0xfea8, 0x3000 },
-  { 0x8700, 0xfea6, 0x2000 },
-  { 0x0700, 0xfea5, 0x0000 },
-  { 0x0700, 0xfea7, 0x0000 },
-  { 0x8700, 0xfeaa, 0x2000 },
-  { 0x0700, 0xfea9, 0x0000 },
-  { 0x0700, 0xfeab, 0x0000 },
-  { 0x8700, 0xffaf, 0x9000 },
-  { 0x8900, 0xff2f, 0x8020 },
-  { 0x8700, 0xfeec, 0x7000 },
-  { 0x8700, 0xfecc, 0x6000 },
-  { 0x8700, 0xfebc, 0x5000 },
-  { 0x8700, 0xfeb4, 0x4000 },
-  { 0x8700, 0xfeb0, 0x3000 },
-  { 0x8700, 0xfeae, 0x2000 },
-  { 0x0700, 0xfead, 0x0000 },
-  { 0x0700, 0xfeaf, 0x0000 },
-  { 0x8700, 0xfeb2, 0x2000 },
-  { 0x0700, 0xfeb1, 0x0000 },
-  { 0x0700, 0xfeb3, 0x0000 },
-  { 0x8700, 0xfeb8, 0x3000 },
-  { 0x8700, 0xfeb6, 0x2000 },
-  { 0x0700, 0xfeb5, 0x0000 },
-  { 0x0700, 0xfeb7, 0x0000 },
-  { 0x8700, 0xfeba, 0x2000 },
-  { 0x0700, 0xfeb9, 0x0000 },
-  { 0x0700, 0xfebb, 0x0000 },
-  { 0x8700, 0xfec4, 0x4000 },
-  { 0x8700, 0xfec0, 0x3000 },
-  { 0x8700, 0xfebe, 0x2000 },
-  { 0x0700, 0xfebd, 0x0000 },
-  { 0x0700, 0xfebf, 0x0000 },
-  { 0x8700, 0xfec2, 0x2000 },
-  { 0x0700, 0xfec1, 0x0000 },
-  { 0x0700, 0xfec3, 0x0000 },
-  { 0x8700, 0xfec8, 0x3000 },
-  { 0x8700, 0xfec6, 0x2000 },
-  { 0x0700, 0xfec5, 0x0000 },
-  { 0x0700, 0xfec7, 0x0000 },
-  { 0x8700, 0xfeca, 0x2000 },
-  { 0x0700, 0xfec9, 0x0000 },
-  { 0x0700, 0xfecb, 0x0000 },
-  { 0x8700, 0xfedc, 0x5000 },
-  { 0x8700, 0xfed4, 0x4000 },
-  { 0x8700, 0xfed0, 0x3000 },
-  { 0x8700, 0xfece, 0x2000 },
-  { 0x0700, 0xfecd, 0x0000 },
-  { 0x0700, 0xfecf, 0x0000 },
-  { 0x8700, 0xfed2, 0x2000 },
-  { 0x0700, 0xfed1, 0x0000 },
-  { 0x0700, 0xfed3, 0x0000 },
-  { 0x8700, 0xfed8, 0x3000 },
-  { 0x8700, 0xfed6, 0x2000 },
-  { 0x0700, 0xfed5, 0x0000 },
-  { 0x0700, 0xfed7, 0x0000 },
-  { 0x8700, 0xfeda, 0x2000 },
-  { 0x0700, 0xfed9, 0x0000 },
-  { 0x0700, 0xfedb, 0x0000 },
-  { 0x8700, 0xfee4, 0x4000 },
-  { 0x8700, 0xfee0, 0x3000 },
-  { 0x8700, 0xfede, 0x2000 },
-  { 0x0700, 0xfedd, 0x0000 },
-  { 0x0700, 0xfedf, 0x0000 },
-  { 0x8700, 0xfee2, 0x2000 },
-  { 0x0700, 0xfee1, 0x0000 },
-  { 0x0700, 0xfee3, 0x0000 },
-  { 0x8700, 0xfee8, 0x3000 },
-  { 0x8700, 0xfee6, 0x2000 },
-  { 0x0700, 0xfee5, 0x0000 },
-  { 0x0700, 0xfee7, 0x0000 },
-  { 0x8700, 0xfeea, 0x2000 },
-  { 0x0700, 0xfee9, 0x0000 },
-  { 0x0700, 0xfeeb, 0x0000 },
-  { 0x9500, 0xff0f, 0x6000 },
-  { 0x8700, 0xfefc, 0x5000 },
-  { 0x8700, 0xfef4, 0x4000 },
-  { 0x8700, 0xfef0, 0x3000 },
-  { 0x8700, 0xfeee, 0x2000 },
-  { 0x0700, 0xfeed, 0x0000 },
-  { 0x0700, 0xfeef, 0x0000 },
-  { 0x8700, 0xfef2, 0x2000 },
-  { 0x0700, 0xfef1, 0x0000 },
-  { 0x0700, 0xfef3, 0x0000 },
-  { 0x8700, 0xfef8, 0x3000 },
-  { 0x8700, 0xfef6, 0x2000 },
-  { 0x0700, 0xfef5, 0x0000 },
-  { 0x0700, 0xfef7, 0x0000 },
-  { 0x8700, 0xfefa, 0x2000 },
-  { 0x0700, 0xfef9, 0x0000 },
-  { 0x0700, 0xfefb, 0x0000 },
-  { 0x9500, 0xff07, 0x4000 },
-  { 0x9500, 0xff03, 0x3000 },
-  { 0x9500, 0xff01, 0x2000 },
-  { 0x0100, 0xfeff, 0x0000 },
-  { 0x1500, 0xff02, 0x0000 },
-  { 0x9500, 0xff05, 0x2000 },
-  { 0x1700, 0xff04, 0x0000 },
-  { 0x1500, 0xff06, 0x0000 },
-  { 0x9900, 0xff0b, 0x3000 },
-  { 0x9200, 0xff09, 0x2000 },
-  { 0x1600, 0xff08, 0x0000 },
-  { 0x1500, 0xff0a, 0x0000 },
-  { 0x9100, 0xff0d, 0x2000 },
-  { 0x1500, 0xff0c, 0x0000 },
-  { 0x1500, 0xff0e, 0x0000 },
-  { 0x9500, 0xff1f, 0x5000 },
-  { 0x8d00, 0xff17, 0x4000 },
-  { 0x8d00, 0xff13, 0x3000 },
-  { 0x8d00, 0xff11, 0x2000 },
-  { 0x0d00, 0xff10, 0x0000 },
-  { 0x0d00, 0xff12, 0x0000 },
-  { 0x8d00, 0xff15, 0x2000 },
-  { 0x0d00, 0xff14, 0x0000 },
-  { 0x0d00, 0xff16, 0x0000 },
-  { 0x9500, 0xff1b, 0x3000 },
-  { 0x8d00, 0xff19, 0x2000 },
-  { 0x0d00, 0xff18, 0x0000 },
-  { 0x1500, 0xff1a, 0x0000 },
-  { 0x9900, 0xff1d, 0x2000 },
-  { 0x1900, 0xff1c, 0x0000 },
-  { 0x1900, 0xff1e, 0x0000 },
-  { 0x8900, 0xff27, 0x4020 },
-  { 0x8900, 0xff23, 0x3020 },
-  { 0x8900, 0xff21, 0x2020 },
-  { 0x1500, 0xff20, 0x0000 },
-  { 0x0900, 0xff22, 0x0020 },
-  { 0x8900, 0xff25, 0x2020 },
-  { 0x0900, 0xff24, 0x0020 },
-  { 0x0900, 0xff26, 0x0020 },
-  { 0x8900, 0xff2b, 0x3020 },
-  { 0x8900, 0xff29, 0x2020 },
-  { 0x0900, 0xff28, 0x0020 },
-  { 0x0900, 0xff2a, 0x0020 },
-  { 0x8900, 0xff2d, 0x2020 },
-  { 0x0900, 0xff2c, 0x0020 },
-  { 0x0900, 0xff2e, 0x0020 },
-  { 0x8700, 0xff6f, 0x7000 },
-  { 0x8500, 0xff4f, 0x6fe0 },
-  { 0x9000, 0xff3f, 0x5000 },
-  { 0x8900, 0xff37, 0x4020 },
-  { 0x8900, 0xff33, 0x3020 },
-  { 0x8900, 0xff31, 0x2020 },
-  { 0x0900, 0xff30, 0x0020 },
-  { 0x0900, 0xff32, 0x0020 },
-  { 0x8900, 0xff35, 0x2020 },
-  { 0x0900, 0xff34, 0x0020 },
-  { 0x0900, 0xff36, 0x0020 },
-  { 0x9600, 0xff3b, 0x3000 },
-  { 0x8900, 0xff39, 0x2020 },
-  { 0x0900, 0xff38, 0x0020 },
-  { 0x0900, 0xff3a, 0x0020 },
-  { 0x9200, 0xff3d, 0x2000 },
-  { 0x1500, 0xff3c, 0x0000 },
-  { 0x1800, 0xff3e, 0x0000 },
-  { 0x8500, 0xff47, 0x4fe0 },
-  { 0x8500, 0xff43, 0x3fe0 },
-  { 0x8500, 0xff41, 0x2fe0 },
-  { 0x1800, 0xff40, 0x0000 },
-  { 0x0500, 0xff42, 0x0fe0 },
-  { 0x8500, 0xff45, 0x2fe0 },
-  { 0x0500, 0xff44, 0x0fe0 },
-  { 0x0500, 0xff46, 0x0fe0 },
-  { 0x8500, 0xff4b, 0x3fe0 },
-  { 0x8500, 0xff49, 0x2fe0 },
-  { 0x0500, 0xff48, 0x0fe0 },
-  { 0x0500, 0xff4a, 0x0fe0 },
-  { 0x8500, 0xff4d, 0x2fe0 },
-  { 0x0500, 0xff4c, 0x0fe0 },
-  { 0x0500, 0xff4e, 0x0fe0 },
-  { 0x9600, 0xff5f, 0x5000 },
-  { 0x8500, 0xff57, 0x4fe0 },
-  { 0x8500, 0xff53, 0x3fe0 },
-  { 0x8500, 0xff51, 0x2fe0 },
-  { 0x0500, 0xff50, 0x0fe0 },
-  { 0x0500, 0xff52, 0x0fe0 },
-  { 0x8500, 0xff55, 0x2fe0 },
-  { 0x0500, 0xff54, 0x0fe0 },
-  { 0x0500, 0xff56, 0x0fe0 },
-  { 0x9600, 0xff5b, 0x3000 },
-  { 0x8500, 0xff59, 0x2fe0 },
-  { 0x0500, 0xff58, 0x0fe0 },
-  { 0x0500, 0xff5a, 0x0fe0 },
-  { 0x9200, 0xff5d, 0x2000 },
-  { 0x1900, 0xff5c, 0x0000 },
-  { 0x1900, 0xff5e, 0x0000 },
-  { 0x8700, 0xff67, 0x4000 },
-  { 0x9200, 0xff63, 0x3000 },
-  { 0x9500, 0xff61, 0x2000 },
-  { 0x1200, 0xff60, 0x0000 },
-  { 0x1600, 0xff62, 0x0000 },
-  { 0x9000, 0xff65, 0x2000 },
-  { 0x1500, 0xff64, 0x0000 },
-  { 0x0700, 0xff66, 0x0000 },
-  { 0x8700, 0xff6b, 0x3000 },
-  { 0x8700, 0xff69, 0x2000 },
-  { 0x0700, 0xff68, 0x0000 },
-  { 0x0700, 0xff6a, 0x0000 },
-  { 0x8700, 0xff6d, 0x2000 },
-  { 0x0700, 0xff6c, 0x0000 },
-  { 0x0700, 0xff6e, 0x0000 },
-  { 0x8700, 0xff8f, 0x6000 },
-  { 0x8700, 0xff7f, 0x5000 },
-  { 0x8700, 0xff77, 0x4000 },
-  { 0x8700, 0xff73, 0x3000 },
-  { 0x8700, 0xff71, 0x2000 },
-  { 0x0600, 0xff70, 0x0000 },
-  { 0x0700, 0xff72, 0x0000 },
-  { 0x8700, 0xff75, 0x2000 },
-  { 0x0700, 0xff74, 0x0000 },
-  { 0x0700, 0xff76, 0x0000 },
-  { 0x8700, 0xff7b, 0x3000 },
-  { 0x8700, 0xff79, 0x2000 },
-  { 0x0700, 0xff78, 0x0000 },
-  { 0x0700, 0xff7a, 0x0000 },
-  { 0x8700, 0xff7d, 0x2000 },
-  { 0x0700, 0xff7c, 0x0000 },
-  { 0x0700, 0xff7e, 0x0000 },
-  { 0x8700, 0xff87, 0x4000 },
-  { 0x8700, 0xff83, 0x3000 },
-  { 0x8700, 0xff81, 0x2000 },
-  { 0x0700, 0xff80, 0x0000 },
-  { 0x0700, 0xff82, 0x0000 },
-  { 0x8700, 0xff85, 0x2000 },
-  { 0x0700, 0xff84, 0x0000 },
-  { 0x0700, 0xff86, 0x0000 },
-  { 0x8700, 0xff8b, 0x3000 },
-  { 0x8700, 0xff89, 0x2000 },
-  { 0x0700, 0xff88, 0x0000 },
-  { 0x0700, 0xff8a, 0x0000 },
-  { 0x8700, 0xff8d, 0x2000 },
-  { 0x0700, 0xff8c, 0x0000 },
-  { 0x0700, 0xff8e, 0x0000 },
-  { 0x8600, 0xff9f, 0x5000 },
-  { 0x8700, 0xff97, 0x4000 },
-  { 0x8700, 0xff93, 0x3000 },
-  { 0x8700, 0xff91, 0x2000 },
-  { 0x0700, 0xff90, 0x0000 },
-  { 0x0700, 0xff92, 0x0000 },
-  { 0x8700, 0xff95, 0x2000 },
-  { 0x0700, 0xff94, 0x0000 },
-  { 0x0700, 0xff96, 0x0000 },
-  { 0x8700, 0xff9b, 0x3000 },
-  { 0x8700, 0xff99, 0x2000 },
-  { 0x0700, 0xff98, 0x0000 },
-  { 0x0700, 0xff9a, 0x0000 },
-  { 0x8700, 0xff9d, 0x2000 },
-  { 0x0700, 0xff9c, 0x0000 },
-  { 0x0600, 0xff9e, 0x0000 },
-  { 0x8700, 0xffa7, 0x4000 },
-  { 0x8700, 0xffa3, 0x3000 },
-  { 0x8700, 0xffa1, 0x2000 },
-  { 0x0700, 0xffa0, 0x0000 },
-  { 0x0700, 0xffa2, 0x0000 },
-  { 0x8700, 0xffa5, 0x2000 },
-  { 0x0700, 0xffa4, 0x0000 },
-  { 0x0700, 0xffa6, 0x0000 },
-  { 0x8700, 0xffab, 0x3000 },
-  { 0x8700, 0xffa9, 0x2000 },
-  { 0x0700, 0xffa8, 0x0000 },
-  { 0x0700, 0xffaa, 0x0000 },
-  { 0x8700, 0xffad, 0x2000 },
-  { 0x0700, 0xffac, 0x0000 },
-  { 0x0700, 0xffae, 0x0000 },
-  { 0x8701, 0x004c, 0x8000 },
-  { 0x8701, 0x0008, 0x7000 },
-  { 0x8700, 0xffd6, 0x6000 },
-  { 0x8700, 0xffc2, 0x5000 },
-  { 0x8700, 0xffb7, 0x4000 },
-  { 0x8700, 0xffb3, 0x3000 },
-  { 0x8700, 0xffb1, 0x2000 },
-  { 0x0700, 0xffb0, 0x0000 },
-  { 0x0700, 0xffb2, 0x0000 },
-  { 0x8700, 0xffb5, 0x2000 },
-  { 0x0700, 0xffb4, 0x0000 },
-  { 0x0700, 0xffb6, 0x0000 },
-  { 0x8700, 0xffbb, 0x3000 },
-  { 0x8700, 0xffb9, 0x2000 },
-  { 0x0700, 0xffb8, 0x0000 },
-  { 0x0700, 0xffba, 0x0000 },
-  { 0x8700, 0xffbd, 0x2000 },
-  { 0x0700, 0xffbc, 0x0000 },
-  { 0x0700, 0xffbe, 0x0000 },
-  { 0x8700, 0xffcc, 0x4000 },
-  { 0x8700, 0xffc6, 0x3000 },
-  { 0x8700, 0xffc4, 0x2000 },
-  { 0x0700, 0xffc3, 0x0000 },
-  { 0x0700, 0xffc5, 0x0000 },
-  { 0x8700, 0xffca, 0x2000 },
-  { 0x0700, 0xffc7, 0x0000 },
-  { 0x0700, 0xffcb, 0x0000 },
-  { 0x8700, 0xffd2, 0x3000 },
-  { 0x8700, 0xffce, 0x2000 },
-  { 0x0700, 0xffcd, 0x0000 },
-  { 0x0700, 0xffcf, 0x0000 },
-  { 0x8700, 0xffd4, 0x2000 },
-  { 0x0700, 0xffd3, 0x0000 },
-  { 0x0700, 0xffd5, 0x0000 },
-  { 0x9900, 0xffec, 0x5000 },
-  { 0x9800, 0xffe3, 0x4000 },
-  { 0x8700, 0xffdc, 0x3000 },
-  { 0x8700, 0xffda, 0x2000 },
-  { 0x0700, 0xffd7, 0x0000 },
-  { 0x0700, 0xffdb, 0x0000 },
-  { 0x9700, 0xffe1, 0x2000 },
-  { 0x1700, 0xffe0, 0x0000 },
-  { 0x1900, 0xffe2, 0x0000 },
-  { 0x9a00, 0xffe8, 0x3000 },
-  { 0x9700, 0xffe5, 0x2000 },
-  { 0x1a00, 0xffe4, 0x0000 },
-  { 0x1700, 0xffe6, 0x0000 },
-  { 0x9900, 0xffea, 0x2000 },
-  { 0x1900, 0xffe9, 0x0000 },
-  { 0x1900, 0xffeb, 0x0000 },
-  { 0x8701, 0x0000, 0x4000 },
-  { 0x8100, 0xfffa, 0x3000 },
-  { 0x9a00, 0xffee, 0x2000 },
-  { 0x1a00, 0xffed, 0x0000 },
-  { 0x0100, 0xfff9, 0x0000 },
-  { 0x9a00, 0xfffc, 0x2000 },
-  { 0x0100, 0xfffb, 0x0000 },
-  { 0x1a00, 0xfffd, 0x0000 },
-  { 0x8701, 0x0004, 0x3000 },
-  { 0x8701, 0x0002, 0x2000 },
-  { 0x0701, 0x0001, 0x0000 },
-  { 0x0701, 0x0003, 0x0000 },
-  { 0x8701, 0x0006, 0x2000 },
-  { 0x0701, 0x0005, 0x0000 },
-  { 0x0701, 0x0007, 0x0000 },
-  { 0x8701, 0x002a, 0x6000 },
-  { 0x8701, 0x0019, 0x5000 },
-  { 0x8701, 0x0011, 0x4000 },
-  { 0x8701, 0x000d, 0x3000 },
-  { 0x8701, 0x000a, 0x2000 },
-  { 0x0701, 0x0009, 0x0000 },
-  { 0x0701, 0x000b, 0x0000 },
-  { 0x8701, 0x000f, 0x2000 },
-  { 0x0701, 0x000e, 0x0000 },
-  { 0x0701, 0x0010, 0x0000 },
-  { 0x8701, 0x0015, 0x3000 },
-  { 0x8701, 0x0013, 0x2000 },
-  { 0x0701, 0x0012, 0x0000 },
-  { 0x0701, 0x0014, 0x0000 },
-  { 0x8701, 0x0017, 0x2000 },
-  { 0x0701, 0x0016, 0x0000 },
-  { 0x0701, 0x0018, 0x0000 },
-  { 0x8701, 0x0021, 0x4000 },
-  { 0x8701, 0x001d, 0x3000 },
-  { 0x8701, 0x001b, 0x2000 },
-  { 0x0701, 0x001a, 0x0000 },
-  { 0x0701, 0x001c, 0x0000 },
-  { 0x8701, 0x001f, 0x2000 },
-  { 0x0701, 0x001e, 0x0000 },
-  { 0x0701, 0x0020, 0x0000 },
-  { 0x8701, 0x0025, 0x3000 },
-  { 0x8701, 0x0023, 0x2000 },
-  { 0x0701, 0x0022, 0x0000 },
-  { 0x0701, 0x0024, 0x0000 },
-  { 0x8701, 0x0028, 0x2000 },
-  { 0x0701, 0x0026, 0x0000 },
-  { 0x0701, 0x0029, 0x0000 },
-  { 0x8701, 0x003a, 0x5000 },
-  { 0x8701, 0x0032, 0x4000 },
-  { 0x8701, 0x002e, 0x3000 },
-  { 0x8701, 0x002c, 0x2000 },
-  { 0x0701, 0x002b, 0x0000 },
-  { 0x0701, 0x002d, 0x0000 },
-  { 0x8701, 0x0030, 0x2000 },
-  { 0x0701, 0x002f, 0x0000 },
-  { 0x0701, 0x0031, 0x0000 },
-  { 0x8701, 0x0036, 0x3000 },
-  { 0x8701, 0x0034, 0x2000 },
-  { 0x0701, 0x0033, 0x0000 },
-  { 0x0701, 0x0035, 0x0000 },
-  { 0x8701, 0x0038, 0x2000 },
-  { 0x0701, 0x0037, 0x0000 },
-  { 0x0701, 0x0039, 0x0000 },
-  { 0x8701, 0x0044, 0x4000 },
-  { 0x8701, 0x0040, 0x3000 },
-  { 0x8701, 0x003d, 0x2000 },
-  { 0x0701, 0x003c, 0x0000 },
-  { 0x0701, 0x003f, 0x0000 },
-  { 0x8701, 0x0042, 0x2000 },
-  { 0x0701, 0x0041, 0x0000 },
-  { 0x0701, 0x0043, 0x0000 },
-  { 0x8701, 0x0048, 0x3000 },
-  { 0x8701, 0x0046, 0x2000 },
-  { 0x0701, 0x0045, 0x0000 },
-  { 0x0701, 0x0047, 0x0000 },
-  { 0x8701, 0x004a, 0x2000 },
-  { 0x0701, 0x0049, 0x0000 },
-  { 0x0701, 0x004b, 0x0000 },
-  { 0x8701, 0x00b0, 0x7000 },
-  { 0x8701, 0x0090, 0x6000 },
-  { 0x8701, 0x0080, 0x5000 },
-  { 0x8701, 0x0056, 0x4000 },
-  { 0x8701, 0x0052, 0x3000 },
-  { 0x8701, 0x0050, 0x2000 },
-  { 0x0701, 0x004d, 0x0000 },
-  { 0x0701, 0x0051, 0x0000 },
-  { 0x8701, 0x0054, 0x2000 },
-  { 0x0701, 0x0053, 0x0000 },
-  { 0x0701, 0x0055, 0x0000 },
-  { 0x8701, 0x005a, 0x3000 },
-  { 0x8701, 0x0058, 0x2000 },
-  { 0x0701, 0x0057, 0x0000 },
-  { 0x0701, 0x0059, 0x0000 },
-  { 0x8701, 0x005c, 0x2000 },
-  { 0x0701, 0x005b, 0x0000 },
-  { 0x0701, 0x005d, 0x0000 },
-  { 0x8701, 0x0088, 0x4000 },
-  { 0x8701, 0x0084, 0x3000 },
-  { 0x8701, 0x0082, 0x2000 },
-  { 0x0701, 0x0081, 0x0000 },
-  { 0x0701, 0x0083, 0x0000 },
-  { 0x8701, 0x0086, 0x2000 },
-  { 0x0701, 0x0085, 0x0000 },
-  { 0x0701, 0x0087, 0x0000 },
-  { 0x8701, 0x008c, 0x3000 },
-  { 0x8701, 0x008a, 0x2000 },
-  { 0x0701, 0x0089, 0x0000 },
-  { 0x0701, 0x008b, 0x0000 },
-  { 0x8701, 0x008e, 0x2000 },
-  { 0x0701, 0x008d, 0x0000 },
-  { 0x0701, 0x008f, 0x0000 },
-  { 0x8701, 0x00a0, 0x5000 },
-  { 0x8701, 0x0098, 0x4000 },
-  { 0x8701, 0x0094, 0x3000 },
-  { 0x8701, 0x0092, 0x2000 },
-  { 0x0701, 0x0091, 0x0000 },
-  { 0x0701, 0x0093, 0x0000 },
-  { 0x8701, 0x0096, 0x2000 },
-  { 0x0701, 0x0095, 0x0000 },
-  { 0x0701, 0x0097, 0x0000 },
-  { 0x8701, 0x009c, 0x3000 },
-  { 0x8701, 0x009a, 0x2000 },
-  { 0x0701, 0x0099, 0x0000 },
-  { 0x0701, 0x009b, 0x0000 },
-  { 0x8701, 0x009e, 0x2000 },
-  { 0x0701, 0x009d, 0x0000 },
-  { 0x0701, 0x009f, 0x0000 },
-  { 0x8701, 0x00a8, 0x4000 },
-  { 0x8701, 0x00a4, 0x3000 },
-  { 0x8701, 0x00a2, 0x2000 },
-  { 0x0701, 0x00a1, 0x0000 },
-  { 0x0701, 0x00a3, 0x0000 },
-  { 0x8701, 0x00a6, 0x2000 },
-  { 0x0701, 0x00a5, 0x0000 },
-  { 0x0701, 0x00a7, 0x0000 },
-  { 0x8701, 0x00ac, 0x3000 },
-  { 0x8701, 0x00aa, 0x2000 },
-  { 0x0701, 0x00a9, 0x0000 },
-  { 0x0701, 0x00ab, 0x0000 },
-  { 0x8701, 0x00ae, 0x2000 },
-  { 0x0701, 0x00ad, 0x0000 },
-  { 0x0701, 0x00af, 0x0000 },
-  { 0x8701, 0x00d0, 0x6000 },
-  { 0x8701, 0x00c0, 0x5000 },
-  { 0x8701, 0x00b8, 0x4000 },
-  { 0x8701, 0x00b4, 0x3000 },
-  { 0x8701, 0x00b2, 0x2000 },
-  { 0x0701, 0x00b1, 0x0000 },
-  { 0x0701, 0x00b3, 0x0000 },
-  { 0x8701, 0x00b6, 0x2000 },
-  { 0x0701, 0x00b5, 0x0000 },
-  { 0x0701, 0x00b7, 0x0000 },
-  { 0x8701, 0x00bc, 0x3000 },
-  { 0x8701, 0x00ba, 0x2000 },
-  { 0x0701, 0x00b9, 0x0000 },
-  { 0x0701, 0x00bb, 0x0000 },
-  { 0x8701, 0x00be, 0x2000 },
-  { 0x0701, 0x00bd, 0x0000 },
-  { 0x0701, 0x00bf, 0x0000 },
-  { 0x8701, 0x00c8, 0x4000 },
-  { 0x8701, 0x00c4, 0x3000 },
-  { 0x8701, 0x00c2, 0x2000 },
-  { 0x0701, 0x00c1, 0x0000 },
-  { 0x0701, 0x00c3, 0x0000 },
-  { 0x8701, 0x00c6, 0x2000 },
-  { 0x0701, 0x00c5, 0x0000 },
-  { 0x0701, 0x00c7, 0x0000 },
-  { 0x8701, 0x00cc, 0x3000 },
-  { 0x8701, 0x00ca, 0x2000 },
-  { 0x0701, 0x00c9, 0x0000 },
-  { 0x0701, 0x00cb, 0x0000 },
-  { 0x8701, 0x00ce, 0x2000 },
-  { 0x0701, 0x00cd, 0x0000 },
-  { 0x0701, 0x00cf, 0x0000 },
-  { 0x8701, 0x00e0, 0x5000 },
-  { 0x8701, 0x00d8, 0x4000 },
-  { 0x8701, 0x00d4, 0x3000 },
-  { 0x8701, 0x00d2, 0x2000 },
-  { 0x0701, 0x00d1, 0x0000 },
-  { 0x0701, 0x00d3, 0x0000 },
-  { 0x8701, 0x00d6, 0x2000 },
-  { 0x0701, 0x00d5, 0x0000 },
-  { 0x0701, 0x00d7, 0x0000 },
-  { 0x8701, 0x00dc, 0x3000 },
-  { 0x8701, 0x00da, 0x2000 },
-  { 0x0701, 0x00d9, 0x0000 },
-  { 0x0701, 0x00db, 0x0000 },
-  { 0x8701, 0x00de, 0x2000 },
-  { 0x0701, 0x00dd, 0x0000 },
-  { 0x0701, 0x00df, 0x0000 },
-  { 0x8701, 0x00e8, 0x4000 },
-  { 0x8701, 0x00e4, 0x3000 },
-  { 0x8701, 0x00e2, 0x2000 },
-  { 0x0701, 0x00e1, 0x0000 },
-  { 0x0701, 0x00e3, 0x0000 },
-  { 0x8701, 0x00e6, 0x2000 },
-  { 0x0701, 0x00e5, 0x0000 },
-  { 0x0701, 0x00e7, 0x0000 },
-  { 0x8701, 0x00ec, 0x3000 },
-  { 0x8701, 0x00ea, 0x2000 },
-  { 0x0701, 0x00e9, 0x0000 },
-  { 0x0701, 0x00eb, 0x0000 },
-  { 0x8701, 0x00ee, 0x2000 },
-  { 0x0701, 0x00ed, 0x0000 },
-  { 0x0701, 0x00ef, 0x0000 },
-  { 0x8501, 0xd459, 0xb000 },
-  { 0x9a01, 0xd080, 0xa000 },
-  { 0x8701, 0x045f, 0x9000 },
-  { 0x8701, 0x0349, 0x8000 },
-  { 0x9a01, 0x013c, 0x7000 },
-  { 0x8f01, 0x0119, 0x6000 },
-  { 0x8f01, 0x0109, 0x5000 },
-  { 0x8701, 0x00f8, 0x4000 },
-  { 0x8701, 0x00f4, 0x3000 },
-  { 0x8701, 0x00f2, 0x2000 },
-  { 0x0701, 0x00f1, 0x0000 },
-  { 0x0701, 0x00f3, 0x0000 },
-  { 0x8701, 0x00f6, 0x2000 },
-  { 0x0701, 0x00f5, 0x0000 },
-  { 0x0701, 0x00f7, 0x0000 },
-  { 0x9501, 0x0101, 0x3000 },
-  { 0x8701, 0x00fa, 0x2000 },
-  { 0x0701, 0x00f9, 0x0000 },
-  { 0x1501, 0x0100, 0x0000 },
-  { 0x8f01, 0x0107, 0x2000 },
-  { 0x1a01, 0x0102, 0x0000 },
-  { 0x0f01, 0x0108, 0x0000 },
-  { 0x8f01, 0x0111, 0x4000 },
-  { 0x8f01, 0x010d, 0x3000 },
-  { 0x8f01, 0x010b, 0x2000 },
-  { 0x0f01, 0x010a, 0x0000 },
-  { 0x0f01, 0x010c, 0x0000 },
-  { 0x8f01, 0x010f, 0x2000 },
-  { 0x0f01, 0x010e, 0x0000 },
-  { 0x0f01, 0x0110, 0x0000 },
-  { 0x8f01, 0x0115, 0x3000 },
-  { 0x8f01, 0x0113, 0x2000 },
-  { 0x0f01, 0x0112, 0x0000 },
-  { 0x0f01, 0x0114, 0x0000 },
-  { 0x8f01, 0x0117, 0x2000 },
-  { 0x0f01, 0x0116, 0x0000 },
-  { 0x0f01, 0x0118, 0x0000 },
-  { 0x8f01, 0x0129, 0x5000 },
-  { 0x8f01, 0x0121, 0x4000 },
-  { 0x8f01, 0x011d, 0x3000 },
-  { 0x8f01, 0x011b, 0x2000 },
-  { 0x0f01, 0x011a, 0x0000 },
-  { 0x0f01, 0x011c, 0x0000 },
-  { 0x8f01, 0x011f, 0x2000 },
-  { 0x0f01, 0x011e, 0x0000 },
-  { 0x0f01, 0x0120, 0x0000 },
-  { 0x8f01, 0x0125, 0x3000 },
-  { 0x8f01, 0x0123, 0x2000 },
-  { 0x0f01, 0x0122, 0x0000 },
-  { 0x0f01, 0x0124, 0x0000 },
-  { 0x8f01, 0x0127, 0x2000 },
-  { 0x0f01, 0x0126, 0x0000 },
-  { 0x0f01, 0x0128, 0x0000 },
-  { 0x8f01, 0x0131, 0x4000 },
-  { 0x8f01, 0x012d, 0x3000 },
-  { 0x8f01, 0x012b, 0x2000 },
-  { 0x0f01, 0x012a, 0x0000 },
-  { 0x0f01, 0x012c, 0x0000 },
-  { 0x8f01, 0x012f, 0x2000 },
-  { 0x0f01, 0x012e, 0x0000 },
-  { 0x0f01, 0x0130, 0x0000 },
-  { 0x9a01, 0x0138, 0x3000 },
-  { 0x8f01, 0x0133, 0x2000 },
-  { 0x0f01, 0x0132, 0x0000 },
-  { 0x1a01, 0x0137, 0x0000 },
-  { 0x9a01, 0x013a, 0x2000 },
-  { 0x1a01, 0x0139, 0x0000 },
-  { 0x1a01, 0x013b, 0x0000 },
-  { 0x8701, 0x031c, 0x6000 },
-  { 0x8701, 0x030c, 0x5000 },
-  { 0x8701, 0x0304, 0x4000 },
-  { 0x8701, 0x0300, 0x3000 },
-  { 0x9a01, 0x013e, 0x2000 },
-  { 0x1a01, 0x013d, 0x0000 },
-  { 0x1a01, 0x013f, 0x0000 },
-  { 0x8701, 0x0302, 0x2000 },
-  { 0x0701, 0x0301, 0x0000 },
-  { 0x0701, 0x0303, 0x0000 },
-  { 0x8701, 0x0308, 0x3000 },
-  { 0x8701, 0x0306, 0x2000 },
-  { 0x0701, 0x0305, 0x0000 },
-  { 0x0701, 0x0307, 0x0000 },
-  { 0x8701, 0x030a, 0x2000 },
-  { 0x0701, 0x0309, 0x0000 },
-  { 0x0701, 0x030b, 0x0000 },
-  { 0x8701, 0x0314, 0x4000 },
-  { 0x8701, 0x0310, 0x3000 },
-  { 0x8701, 0x030e, 0x2000 },
-  { 0x0701, 0x030d, 0x0000 },
-  { 0x0701, 0x030f, 0x0000 },
-  { 0x8701, 0x0312, 0x2000 },
-  { 0x0701, 0x0311, 0x0000 },
-  { 0x0701, 0x0313, 0x0000 },
-  { 0x8701, 0x0318, 0x3000 },
-  { 0x8701, 0x0316, 0x2000 },
-  { 0x0701, 0x0315, 0x0000 },
-  { 0x0701, 0x0317, 0x0000 },
-  { 0x8701, 0x031a, 0x2000 },
-  { 0x0701, 0x0319, 0x0000 },
-  { 0x0701, 0x031b, 0x0000 },
-  { 0x8701, 0x0339, 0x5000 },
-  { 0x8701, 0x0331, 0x4000 },
-  { 0x8f01, 0x0321, 0x3000 },
-  { 0x8701, 0x031e, 0x2000 },
-  { 0x0701, 0x031d, 0x0000 },
-  { 0x0f01, 0x0320, 0x0000 },
-  { 0x8f01, 0x0323, 0x2000 },
-  { 0x0f01, 0x0322, 0x0000 },
-  { 0x0701, 0x0330, 0x0000 },
-  { 0x8701, 0x0335, 0x3000 },
-  { 0x8701, 0x0333, 0x2000 },
-  { 0x0701, 0x0332, 0x0000 },
-  { 0x0701, 0x0334, 0x0000 },
-  { 0x8701, 0x0337, 0x2000 },
-  { 0x0701, 0x0336, 0x0000 },
-  { 0x0701, 0x0338, 0x0000 },
-  { 0x8701, 0x0341, 0x4000 },
-  { 0x8701, 0x033d, 0x3000 },
-  { 0x8701, 0x033b, 0x2000 },
-  { 0x0701, 0x033a, 0x0000 },
-  { 0x0701, 0x033c, 0x0000 },
-  { 0x8701, 0x033f, 0x2000 },
-  { 0x0701, 0x033e, 0x0000 },
-  { 0x0701, 0x0340, 0x0000 },
-  { 0x8701, 0x0345, 0x3000 },
-  { 0x8701, 0x0343, 0x2000 },
-  { 0x0701, 0x0342, 0x0000 },
-  { 0x0701, 0x0344, 0x0000 },
-  { 0x8701, 0x0347, 0x2000 },
-  { 0x0701, 0x0346, 0x0000 },
-  { 0x0701, 0x0348, 0x0000 },
-  { 0x8901, 0x041f, 0x7028 },
-  { 0x9501, 0x039f, 0x6000 },
-  { 0x8701, 0x038e, 0x5000 },
-  { 0x8701, 0x0386, 0x4000 },
-  { 0x8701, 0x0382, 0x3000 },
-  { 0x8701, 0x0380, 0x2000 },
-  { 0x0e01, 0x034a, 0x0000 },
-  { 0x0701, 0x0381, 0x0000 },
-  { 0x8701, 0x0384, 0x2000 },
-  { 0x0701, 0x0383, 0x0000 },
-  { 0x0701, 0x0385, 0x0000 },
-  { 0x8701, 0x038a, 0x3000 },
-  { 0x8701, 0x0388, 0x2000 },
-  { 0x0701, 0x0387, 0x0000 },
-  { 0x0701, 0x0389, 0x0000 },
-  { 0x8701, 0x038c, 0x2000 },
-  { 0x0701, 0x038b, 0x0000 },
-  { 0x0701, 0x038d, 0x0000 },
-  { 0x8701, 0x0396, 0x4000 },
-  { 0x8701, 0x0392, 0x3000 },
-  { 0x8701, 0x0390, 0x2000 },
-  { 0x0701, 0x038f, 0x0000 },
-  { 0x0701, 0x0391, 0x0000 },
-  { 0x8701, 0x0394, 0x2000 },
-  { 0x0701, 0x0393, 0x0000 },
-  { 0x0701, 0x0395, 0x0000 },
-  { 0x8701, 0x039a, 0x3000 },
-  { 0x8701, 0x0398, 0x2000 },
-  { 0x0701, 0x0397, 0x0000 },
-  { 0x0701, 0x0399, 0x0000 },
-  { 0x8701, 0x039c, 0x2000 },
-  { 0x0701, 0x039b, 0x0000 },
-  { 0x0701, 0x039d, 0x0000 },
-  { 0x8901, 0x040f, 0x5028 },
-  { 0x8901, 0x0407, 0x4028 },
-  { 0x8901, 0x0403, 0x3028 },
-  { 0x8901, 0x0401, 0x2028 },
-  { 0x0901, 0x0400, 0x0028 },
-  { 0x0901, 0x0402, 0x0028 },
-  { 0x8901, 0x0405, 0x2028 },
-  { 0x0901, 0x0404, 0x0028 },
-  { 0x0901, 0x0406, 0x0028 },
-  { 0x8901, 0x040b, 0x3028 },
-  { 0x8901, 0x0409, 0x2028 },
-  { 0x0901, 0x0408, 0x0028 },
-  { 0x0901, 0x040a, 0x0028 },
-  { 0x8901, 0x040d, 0x2028 },
-  { 0x0901, 0x040c, 0x0028 },
-  { 0x0901, 0x040e, 0x0028 },
-  { 0x8901, 0x0417, 0x4028 },
-  { 0x8901, 0x0413, 0x3028 },
-  { 0x8901, 0x0411, 0x2028 },
-  { 0x0901, 0x0410, 0x0028 },
-  { 0x0901, 0x0412, 0x0028 },
-  { 0x8901, 0x0415, 0x2028 },
-  { 0x0901, 0x0414, 0x0028 },
-  { 0x0901, 0x0416, 0x0028 },
-  { 0x8901, 0x041b, 0x3028 },
-  { 0x8901, 0x0419, 0x2028 },
-  { 0x0901, 0x0418, 0x0028 },
-  { 0x0901, 0x041a, 0x0028 },
-  { 0x8901, 0x041d, 0x2028 },
-  { 0x0901, 0x041c, 0x0028 },
-  { 0x0901, 0x041e, 0x0028 },
-  { 0x8501, 0x043f, 0x6fd8 },
-  { 0x8501, 0x042f, 0x5fd8 },
-  { 0x8901, 0x0427, 0x4028 },
-  { 0x8901, 0x0423, 0x3028 },
-  { 0x8901, 0x0421, 0x2028 },
-  { 0x0901, 0x0420, 0x0028 },
-  { 0x0901, 0x0422, 0x0028 },
-  { 0x8901, 0x0425, 0x2028 },
-  { 0x0901, 0x0424, 0x0028 },
-  { 0x0901, 0x0426, 0x0028 },
-  { 0x8501, 0x042b, 0x3fd8 },
-  { 0x8501, 0x0429, 0x2fd8 },
-  { 0x0501, 0x0428, 0x0fd8 },
-  { 0x0501, 0x042a, 0x0fd8 },
-  { 0x8501, 0x042d, 0x2fd8 },
-  { 0x0501, 0x042c, 0x0fd8 },
-  { 0x0501, 0x042e, 0x0fd8 },
-  { 0x8501, 0x0437, 0x4fd8 },
-  { 0x8501, 0x0433, 0x3fd8 },
-  { 0x8501, 0x0431, 0x2fd8 },
-  { 0x0501, 0x0430, 0x0fd8 },
-  { 0x0501, 0x0432, 0x0fd8 },
-  { 0x8501, 0x0435, 0x2fd8 },
-  { 0x0501, 0x0434, 0x0fd8 },
-  { 0x0501, 0x0436, 0x0fd8 },
-  { 0x8501, 0x043b, 0x3fd8 },
-  { 0x8501, 0x0439, 0x2fd8 },
-  { 0x0501, 0x0438, 0x0fd8 },
-  { 0x0501, 0x043a, 0x0fd8 },
-  { 0x8501, 0x043d, 0x2fd8 },
-  { 0x0501, 0x043c, 0x0fd8 },
-  { 0x0501, 0x043e, 0x0fd8 },
-  { 0x8501, 0x044f, 0x5fd8 },
-  { 0x8501, 0x0447, 0x4fd8 },
-  { 0x8501, 0x0443, 0x3fd8 },
-  { 0x8501, 0x0441, 0x2fd8 },
-  { 0x0501, 0x0440, 0x0fd8 },
-  { 0x0501, 0x0442, 0x0fd8 },
-  { 0x8501, 0x0445, 0x2fd8 },
-  { 0x0501, 0x0444, 0x0fd8 },
-  { 0x0501, 0x0446, 0x0fd8 },
-  { 0x8501, 0x044b, 0x3fd8 },
-  { 0x8501, 0x0449, 0x2fd8 },
-  { 0x0501, 0x0448, 0x0fd8 },
-  { 0x0501, 0x044a, 0x0fd8 },
-  { 0x8501, 0x044d, 0x2fd8 },
-  { 0x0501, 0x044c, 0x0fd8 },
-  { 0x0501, 0x044e, 0x0fd8 },
-  { 0x8701, 0x0457, 0x4000 },
-  { 0x8701, 0x0453, 0x3000 },
-  { 0x8701, 0x0451, 0x2000 },
-  { 0x0701, 0x0450, 0x0000 },
-  { 0x0701, 0x0452, 0x0000 },
-  { 0x8701, 0x0455, 0x2000 },
-  { 0x0701, 0x0454, 0x0000 },
-  { 0x0701, 0x0456, 0x0000 },
-  { 0x8701, 0x045b, 0x3000 },
-  { 0x8701, 0x0459, 0x2000 },
-  { 0x0701, 0x0458, 0x0000 },
-  { 0x0701, 0x045a, 0x0000 },
-  { 0x8701, 0x045d, 0x2000 },
-  { 0x0701, 0x045c, 0x0000 },
-  { 0x0701, 0x045e, 0x0000 },
-  { 0x9a01, 0xd000, 0x8000 },
-  { 0x8d01, 0x04a1, 0x7000 },
-  { 0x8701, 0x047f, 0x6000 },
-  { 0x8701, 0x046f, 0x5000 },
-  { 0x8701, 0x0467, 0x4000 },
-  { 0x8701, 0x0463, 0x3000 },
-  { 0x8701, 0x0461, 0x2000 },
-  { 0x0701, 0x0460, 0x0000 },
-  { 0x0701, 0x0462, 0x0000 },
-  { 0x8701, 0x0465, 0x2000 },
-  { 0x0701, 0x0464, 0x0000 },
-  { 0x0701, 0x0466, 0x0000 },
-  { 0x8701, 0x046b, 0x3000 },
-  { 0x8701, 0x0469, 0x2000 },
-  { 0x0701, 0x0468, 0x0000 },
-  { 0x0701, 0x046a, 0x0000 },
-  { 0x8701, 0x046d, 0x2000 },
-  { 0x0701, 0x046c, 0x0000 },
-  { 0x0701, 0x046e, 0x0000 },
-  { 0x8701, 0x0477, 0x4000 },
-  { 0x8701, 0x0473, 0x3000 },
-  { 0x8701, 0x0471, 0x2000 },
-  { 0x0701, 0x0470, 0x0000 },
-  { 0x0701, 0x0472, 0x0000 },
-  { 0x8701, 0x0475, 0x2000 },
-  { 0x0701, 0x0474, 0x0000 },
-  { 0x0701, 0x0476, 0x0000 },
-  { 0x8701, 0x047b, 0x3000 },
-  { 0x8701, 0x0479, 0x2000 },
-  { 0x0701, 0x0478, 0x0000 },
-  { 0x0701, 0x047a, 0x0000 },
-  { 0x8701, 0x047d, 0x2000 },
-  { 0x0701, 0x047c, 0x0000 },
-  { 0x0701, 0x047e, 0x0000 },
-  { 0x8701, 0x048f, 0x5000 },
-  { 0x8701, 0x0487, 0x4000 },
-  { 0x8701, 0x0483, 0x3000 },
-  { 0x8701, 0x0481, 0x2000 },
-  { 0x0701, 0x0480, 0x0000 },
-  { 0x0701, 0x0482, 0x0000 },
-  { 0x8701, 0x0485, 0x2000 },
-  { 0x0701, 0x0484, 0x0000 },
-  { 0x0701, 0x0486, 0x0000 },
-  { 0x8701, 0x048b, 0x3000 },
-  { 0x8701, 0x0489, 0x2000 },
-  { 0x0701, 0x0488, 0x0000 },
-  { 0x0701, 0x048a, 0x0000 },
-  { 0x8701, 0x048d, 0x2000 },
-  { 0x0701, 0x048c, 0x0000 },
-  { 0x0701, 0x048e, 0x0000 },
-  { 0x8701, 0x0497, 0x4000 },
-  { 0x8701, 0x0493, 0x3000 },
-  { 0x8701, 0x0491, 0x2000 },
-  { 0x0701, 0x0490, 0x0000 },
-  { 0x0701, 0x0492, 0x0000 },
-  { 0x8701, 0x0495, 0x2000 },
-  { 0x0701, 0x0494, 0x0000 },
-  { 0x0701, 0x0496, 0x0000 },
-  { 0x8701, 0x049b, 0x3000 },
-  { 0x8701, 0x0499, 0x2000 },
-  { 0x0701, 0x0498, 0x0000 },
-  { 0x0701, 0x049a, 0x0000 },
-  { 0x8701, 0x049d, 0x2000 },
-  { 0x0701, 0x049c, 0x0000 },
-  { 0x0d01, 0x04a0, 0x0000 },
-  { 0x8701, 0x081a, 0x6000 },
-  { 0x8701, 0x080a, 0x5000 },
-  { 0x8d01, 0x04a9, 0x4000 },
-  { 0x8d01, 0x04a5, 0x3000 },
-  { 0x8d01, 0x04a3, 0x2000 },
-  { 0x0d01, 0x04a2, 0x0000 },
-  { 0x0d01, 0x04a4, 0x0000 },
-  { 0x8d01, 0x04a7, 0x2000 },
-  { 0x0d01, 0x04a6, 0x0000 },
-  { 0x0d01, 0x04a8, 0x0000 },
-  { 0x8701, 0x0803, 0x3000 },
-  { 0x8701, 0x0801, 0x2000 },
-  { 0x0701, 0x0800, 0x0000 },
-  { 0x0701, 0x0802, 0x0000 },
-  { 0x8701, 0x0805, 0x2000 },
-  { 0x0701, 0x0804, 0x0000 },
-  { 0x0701, 0x0808, 0x0000 },
-  { 0x8701, 0x0812, 0x4000 },
-  { 0x8701, 0x080e, 0x3000 },
-  { 0x8701, 0x080c, 0x2000 },
-  { 0x0701, 0x080b, 0x0000 },
-  { 0x0701, 0x080d, 0x0000 },
-  { 0x8701, 0x0810, 0x2000 },
-  { 0x0701, 0x080f, 0x0000 },
-  { 0x0701, 0x0811, 0x0000 },
-  { 0x8701, 0x0816, 0x3000 },
-  { 0x8701, 0x0814, 0x2000 },
-  { 0x0701, 0x0813, 0x0000 },
-  { 0x0701, 0x0815, 0x0000 },
-  { 0x8701, 0x0818, 0x2000 },
-  { 0x0701, 0x0817, 0x0000 },
-  { 0x0701, 0x0819, 0x0000 },
-  { 0x8701, 0x082a, 0x5000 },
-  { 0x8701, 0x0822, 0x4000 },
-  { 0x8701, 0x081e, 0x3000 },
-  { 0x8701, 0x081c, 0x2000 },
-  { 0x0701, 0x081b, 0x0000 },
-  { 0x0701, 0x081d, 0x0000 },
-  { 0x8701, 0x0820, 0x2000 },
-  { 0x0701, 0x081f, 0x0000 },
-  { 0x0701, 0x0821, 0x0000 },
-  { 0x8701, 0x0826, 0x3000 },
-  { 0x8701, 0x0824, 0x2000 },
-  { 0x0701, 0x0823, 0x0000 },
-  { 0x0701, 0x0825, 0x0000 },
-  { 0x8701, 0x0828, 0x2000 },
-  { 0x0701, 0x0827, 0x0000 },
-  { 0x0701, 0x0829, 0x0000 },
-  { 0x8701, 0x0832, 0x4000 },
-  { 0x8701, 0x082e, 0x3000 },
-  { 0x8701, 0x082c, 0x2000 },
-  { 0x0701, 0x082b, 0x0000 },
-  { 0x0701, 0x082d, 0x0000 },
-  { 0x8701, 0x0830, 0x2000 },
-  { 0x0701, 0x082f, 0x0000 },
-  { 0x0701, 0x0831, 0x0000 },
-  { 0x8701, 0x0837, 0x3000 },
-  { 0x8701, 0x0834, 0x2000 },
-  { 0x0701, 0x0833, 0x0000 },
-  { 0x0701, 0x0835, 0x0000 },
-  { 0x8701, 0x083c, 0x2000 },
-  { 0x0701, 0x0838, 0x0000 },
-  { 0x0701, 0x083f, 0x0000 },
-  { 0x9a01, 0xd040, 0x7000 },
-  { 0x9a01, 0xd020, 0x6000 },
-  { 0x9a01, 0xd010, 0x5000 },
-  { 0x9a01, 0xd008, 0x4000 },
-  { 0x9a01, 0xd004, 0x3000 },
-  { 0x9a01, 0xd002, 0x2000 },
-  { 0x1a01, 0xd001, 0x0000 },
-  { 0x1a01, 0xd003, 0x0000 },
-  { 0x9a01, 0xd006, 0x2000 },
-  { 0x1a01, 0xd005, 0x0000 },
-  { 0x1a01, 0xd007, 0x0000 },
-  { 0x9a01, 0xd00c, 0x3000 },
-  { 0x9a01, 0xd00a, 0x2000 },
-  { 0x1a01, 0xd009, 0x0000 },
-  { 0x1a01, 0xd00b, 0x0000 },
-  { 0x9a01, 0xd00e, 0x2000 },
-  { 0x1a01, 0xd00d, 0x0000 },
-  { 0x1a01, 0xd00f, 0x0000 },
-  { 0x9a01, 0xd018, 0x4000 },
-  { 0x9a01, 0xd014, 0x3000 },
-  { 0x9a01, 0xd012, 0x2000 },
-  { 0x1a01, 0xd011, 0x0000 },
-  { 0x1a01, 0xd013, 0x0000 },
-  { 0x9a01, 0xd016, 0x2000 },
-  { 0x1a01, 0xd015, 0x0000 },
-  { 0x1a01, 0xd017, 0x0000 },
-  { 0x9a01, 0xd01c, 0x3000 },
-  { 0x9a01, 0xd01a, 0x2000 },
-  { 0x1a01, 0xd019, 0x0000 },
-  { 0x1a01, 0xd01b, 0x0000 },
-  { 0x9a01, 0xd01e, 0x2000 },
-  { 0x1a01, 0xd01d, 0x0000 },
-  { 0x1a01, 0xd01f, 0x0000 },
-  { 0x9a01, 0xd030, 0x5000 },
-  { 0x9a01, 0xd028, 0x4000 },
-  { 0x9a01, 0xd024, 0x3000 },
-  { 0x9a01, 0xd022, 0x2000 },
-  { 0x1a01, 0xd021, 0x0000 },
-  { 0x1a01, 0xd023, 0x0000 },
-  { 0x9a01, 0xd026, 0x2000 },
-  { 0x1a01, 0xd025, 0x0000 },
-  { 0x1a01, 0xd027, 0x0000 },
-  { 0x9a01, 0xd02c, 0x3000 },
-  { 0x9a01, 0xd02a, 0x2000 },
-  { 0x1a01, 0xd029, 0x0000 },
-  { 0x1a01, 0xd02b, 0x0000 },
-  { 0x9a01, 0xd02e, 0x2000 },
-  { 0x1a01, 0xd02d, 0x0000 },
-  { 0x1a01, 0xd02f, 0x0000 },
-  { 0x9a01, 0xd038, 0x4000 },
-  { 0x9a01, 0xd034, 0x3000 },
-  { 0x9a01, 0xd032, 0x2000 },
-  { 0x1a01, 0xd031, 0x0000 },
-  { 0x1a01, 0xd033, 0x0000 },
-  { 0x9a01, 0xd036, 0x2000 },
-  { 0x1a01, 0xd035, 0x0000 },
-  { 0x1a01, 0xd037, 0x0000 },
-  { 0x9a01, 0xd03c, 0x3000 },
-  { 0x9a01, 0xd03a, 0x2000 },
-  { 0x1a01, 0xd039, 0x0000 },
-  { 0x1a01, 0xd03b, 0x0000 },
-  { 0x9a01, 0xd03e, 0x2000 },
-  { 0x1a01, 0xd03d, 0x0000 },
-  { 0x1a01, 0xd03f, 0x0000 },
-  { 0x9a01, 0xd060, 0x6000 },
-  { 0x9a01, 0xd050, 0x5000 },
-  { 0x9a01, 0xd048, 0x4000 },
-  { 0x9a01, 0xd044, 0x3000 },
-  { 0x9a01, 0xd042, 0x2000 },
-  { 0x1a01, 0xd041, 0x0000 },
-  { 0x1a01, 0xd043, 0x0000 },
-  { 0x9a01, 0xd046, 0x2000 },
-  { 0x1a01, 0xd045, 0x0000 },
-  { 0x1a01, 0xd047, 0x0000 },
-  { 0x9a01, 0xd04c, 0x3000 },
-  { 0x9a01, 0xd04a, 0x2000 },
-  { 0x1a01, 0xd049, 0x0000 },
-  { 0x1a01, 0xd04b, 0x0000 },
-  { 0x9a01, 0xd04e, 0x2000 },
-  { 0x1a01, 0xd04d, 0x0000 },
-  { 0x1a01, 0xd04f, 0x0000 },
-  { 0x9a01, 0xd058, 0x4000 },
-  { 0x9a01, 0xd054, 0x3000 },
-  { 0x9a01, 0xd052, 0x2000 },
-  { 0x1a01, 0xd051, 0x0000 },
-  { 0x1a01, 0xd053, 0x0000 },
-  { 0x9a01, 0xd056, 0x2000 },
-  { 0x1a01, 0xd055, 0x0000 },
-  { 0x1a01, 0xd057, 0x0000 },
-  { 0x9a01, 0xd05c, 0x3000 },
-  { 0x9a01, 0xd05a, 0x2000 },
-  { 0x1a01, 0xd059, 0x0000 },
-  { 0x1a01, 0xd05b, 0x0000 },
-  { 0x9a01, 0xd05e, 0x2000 },
-  { 0x1a01, 0xd05d, 0x0000 },
-  { 0x1a01, 0xd05f, 0x0000 },
-  { 0x9a01, 0xd070, 0x5000 },
-  { 0x9a01, 0xd068, 0x4000 },
-  { 0x9a01, 0xd064, 0x3000 },
-  { 0x9a01, 0xd062, 0x2000 },
-  { 0x1a01, 0xd061, 0x0000 },
-  { 0x1a01, 0xd063, 0x0000 },
-  { 0x9a01, 0xd066, 0x2000 },
-  { 0x1a01, 0xd065, 0x0000 },
-  { 0x1a01, 0xd067, 0x0000 },
-  { 0x9a01, 0xd06c, 0x3000 },
-  { 0x9a01, 0xd06a, 0x2000 },
-  { 0x1a01, 0xd069, 0x0000 },
-  { 0x1a01, 0xd06b, 0x0000 },
-  { 0x9a01, 0xd06e, 0x2000 },
-  { 0x1a01, 0xd06d, 0x0000 },
-  { 0x1a01, 0xd06f, 0x0000 },
-  { 0x9a01, 0xd078, 0x4000 },
-  { 0x9a01, 0xd074, 0x3000 },
-  { 0x9a01, 0xd072, 0x2000 },
-  { 0x1a01, 0xd071, 0x0000 },
-  { 0x1a01, 0xd073, 0x0000 },
-  { 0x9a01, 0xd076, 0x2000 },
-  { 0x1a01, 0xd075, 0x0000 },
-  { 0x1a01, 0xd077, 0x0000 },
-  { 0x9a01, 0xd07c, 0x3000 },
-  { 0x9a01, 0xd07a, 0x2000 },
-  { 0x1a01, 0xd079, 0x0000 },
-  { 0x1a01, 0xd07b, 0x0000 },
-  { 0x9a01, 0xd07e, 0x2000 },
-  { 0x1a01, 0xd07d, 0x0000 },
-  { 0x1a01, 0xd07f, 0x0000 },
-  { 0x9a01, 0xd18d, 0x9000 },
-  { 0x9a01, 0xd10a, 0x8000 },
-  { 0x9a01, 0xd0c0, 0x7000 },
-  { 0x9a01, 0xd0a0, 0x6000 },
-  { 0x9a01, 0xd090, 0x5000 },
-  { 0x9a01, 0xd088, 0x4000 },
-  { 0x9a01, 0xd084, 0x3000 },
-  { 0x9a01, 0xd082, 0x2000 },
-  { 0x1a01, 0xd081, 0x0000 },
-  { 0x1a01, 0xd083, 0x0000 },
-  { 0x9a01, 0xd086, 0x2000 },
-  { 0x1a01, 0xd085, 0x0000 },
-  { 0x1a01, 0xd087, 0x0000 },
-  { 0x9a01, 0xd08c, 0x3000 },
-  { 0x9a01, 0xd08a, 0x2000 },
-  { 0x1a01, 0xd089, 0x0000 },
-  { 0x1a01, 0xd08b, 0x0000 },
-  { 0x9a01, 0xd08e, 0x2000 },
-  { 0x1a01, 0xd08d, 0x0000 },
-  { 0x1a01, 0xd08f, 0x0000 },
-  { 0x9a01, 0xd098, 0x4000 },
-  { 0x9a01, 0xd094, 0x3000 },
-  { 0x9a01, 0xd092, 0x2000 },
-  { 0x1a01, 0xd091, 0x0000 },
-  { 0x1a01, 0xd093, 0x0000 },
-  { 0x9a01, 0xd096, 0x2000 },
-  { 0x1a01, 0xd095, 0x0000 },
-  { 0x1a01, 0xd097, 0x0000 },
-  { 0x9a01, 0xd09c, 0x3000 },
-  { 0x9a01, 0xd09a, 0x2000 },
-  { 0x1a01, 0xd099, 0x0000 },
-  { 0x1a01, 0xd09b, 0x0000 },
-  { 0x9a01, 0xd09e, 0x2000 },
-  { 0x1a01, 0xd09d, 0x0000 },
-  { 0x1a01, 0xd09f, 0x0000 },
-  { 0x9a01, 0xd0b0, 0x5000 },
-  { 0x9a01, 0xd0a8, 0x4000 },
-  { 0x9a01, 0xd0a4, 0x3000 },
-  { 0x9a01, 0xd0a2, 0x2000 },
-  { 0x1a01, 0xd0a1, 0x0000 },
-  { 0x1a01, 0xd0a3, 0x0000 },
-  { 0x9a01, 0xd0a6, 0x2000 },
-  { 0x1a01, 0xd0a5, 0x0000 },
-  { 0x1a01, 0xd0a7, 0x0000 },
-  { 0x9a01, 0xd0ac, 0x3000 },
-  { 0x9a01, 0xd0aa, 0x2000 },
-  { 0x1a01, 0xd0a9, 0x0000 },
-  { 0x1a01, 0xd0ab, 0x0000 },
-  { 0x9a01, 0xd0ae, 0x2000 },
-  { 0x1a01, 0xd0ad, 0x0000 },
-  { 0x1a01, 0xd0af, 0x0000 },
-  { 0x9a01, 0xd0b8, 0x4000 },
-  { 0x9a01, 0xd0b4, 0x3000 },
-  { 0x9a01, 0xd0b2, 0x2000 },
-  { 0x1a01, 0xd0b1, 0x0000 },
-  { 0x1a01, 0xd0b3, 0x0000 },
-  { 0x9a01, 0xd0b6, 0x2000 },
-  { 0x1a01, 0xd0b5, 0x0000 },
-  { 0x1a01, 0xd0b7, 0x0000 },
-  { 0x9a01, 0xd0bc, 0x3000 },
-  { 0x9a01, 0xd0ba, 0x2000 },
-  { 0x1a01, 0xd0b9, 0x0000 },
-  { 0x1a01, 0xd0bb, 0x0000 },
-  { 0x9a01, 0xd0be, 0x2000 },
-  { 0x1a01, 0xd0bd, 0x0000 },
-  { 0x1a01, 0xd0bf, 0x0000 },
-  { 0x9a01, 0xd0e0, 0x6000 },
-  { 0x9a01, 0xd0d0, 0x5000 },
-  { 0x9a01, 0xd0c8, 0x4000 },
-  { 0x9a01, 0xd0c4, 0x3000 },
-  { 0x9a01, 0xd0c2, 0x2000 },
-  { 0x1a01, 0xd0c1, 0x0000 },
-  { 0x1a01, 0xd0c3, 0x0000 },
-  { 0x9a01, 0xd0c6, 0x2000 },
-  { 0x1a01, 0xd0c5, 0x0000 },
-  { 0x1a01, 0xd0c7, 0x0000 },
-  { 0x9a01, 0xd0cc, 0x3000 },
-  { 0x9a01, 0xd0ca, 0x2000 },
-  { 0x1a01, 0xd0c9, 0x0000 },
-  { 0x1a01, 0xd0cb, 0x0000 },
-  { 0x9a01, 0xd0ce, 0x2000 },
-  { 0x1a01, 0xd0cd, 0x0000 },
-  { 0x1a01, 0xd0cf, 0x0000 },
-  { 0x9a01, 0xd0d8, 0x4000 },
-  { 0x9a01, 0xd0d4, 0x3000 },
-  { 0x9a01, 0xd0d2, 0x2000 },
-  { 0x1a01, 0xd0d1, 0x0000 },
-  { 0x1a01, 0xd0d3, 0x0000 },
-  { 0x9a01, 0xd0d6, 0x2000 },
-  { 0x1a01, 0xd0d5, 0x0000 },
-  { 0x1a01, 0xd0d7, 0x0000 },
-  { 0x9a01, 0xd0dc, 0x3000 },
-  { 0x9a01, 0xd0da, 0x2000 },
-  { 0x1a01, 0xd0d9, 0x0000 },
-  { 0x1a01, 0xd0db, 0x0000 },
-  { 0x9a01, 0xd0de, 0x2000 },
-  { 0x1a01, 0xd0dd, 0x0000 },
-  { 0x1a01, 0xd0df, 0x0000 },
-  { 0x9a01, 0xd0f0, 0x5000 },
-  { 0x9a01, 0xd0e8, 0x4000 },
-  { 0x9a01, 0xd0e4, 0x3000 },
-  { 0x9a01, 0xd0e2, 0x2000 },
-  { 0x1a01, 0xd0e1, 0x0000 },
-  { 0x1a01, 0xd0e3, 0x0000 },
-  { 0x9a01, 0xd0e6, 0x2000 },
-  { 0x1a01, 0xd0e5, 0x0000 },
-  { 0x1a01, 0xd0e7, 0x0000 },
-  { 0x9a01, 0xd0ec, 0x3000 },
-  { 0x9a01, 0xd0ea, 0x2000 },
-  { 0x1a01, 0xd0e9, 0x0000 },
-  { 0x1a01, 0xd0eb, 0x0000 },
-  { 0x9a01, 0xd0ee, 0x2000 },
-  { 0x1a01, 0xd0ed, 0x0000 },
-  { 0x1a01, 0xd0ef, 0x0000 },
-  { 0x9a01, 0xd102, 0x4000 },
-  { 0x9a01, 0xd0f4, 0x3000 },
-  { 0x9a01, 0xd0f2, 0x2000 },
-  { 0x1a01, 0xd0f1, 0x0000 },
-  { 0x1a01, 0xd0f3, 0x0000 },
-  { 0x9a01, 0xd100, 0x2000 },
-  { 0x1a01, 0xd0f5, 0x0000 },
-  { 0x1a01, 0xd101, 0x0000 },
-  { 0x9a01, 0xd106, 0x3000 },
-  { 0x9a01, 0xd104, 0x2000 },
-  { 0x1a01, 0xd103, 0x0000 },
-  { 0x1a01, 0xd105, 0x0000 },
-  { 0x9a01, 0xd108, 0x2000 },
-  { 0x1a01, 0xd107, 0x0000 },
-  { 0x1a01, 0xd109, 0x0000 },
-  { 0x9a01, 0xd14d, 0x7000 },
-  { 0x9a01, 0xd12d, 0x6000 },
-  { 0x9a01, 0xd11a, 0x5000 },
-  { 0x9a01, 0xd112, 0x4000 },
-  { 0x9a01, 0xd10e, 0x3000 },
-  { 0x9a01, 0xd10c, 0x2000 },
-  { 0x1a01, 0xd10b, 0x0000 },
-  { 0x1a01, 0xd10d, 0x0000 },
-  { 0x9a01, 0xd110, 0x2000 },
-  { 0x1a01, 0xd10f, 0x0000 },
-  { 0x1a01, 0xd111, 0x0000 },
-  { 0x9a01, 0xd116, 0x3000 },
-  { 0x9a01, 0xd114, 0x2000 },
-  { 0x1a01, 0xd113, 0x0000 },
-  { 0x1a01, 0xd115, 0x0000 },
-  { 0x9a01, 0xd118, 0x2000 },
-  { 0x1a01, 0xd117, 0x0000 },
-  { 0x1a01, 0xd119, 0x0000 },
-  { 0x9a01, 0xd122, 0x4000 },
-  { 0x9a01, 0xd11e, 0x3000 },
-  { 0x9a01, 0xd11c, 0x2000 },
-  { 0x1a01, 0xd11b, 0x0000 },
-  { 0x1a01, 0xd11d, 0x0000 },
-  { 0x9a01, 0xd120, 0x2000 },
-  { 0x1a01, 0xd11f, 0x0000 },
-  { 0x1a01, 0xd121, 0x0000 },
-  { 0x9a01, 0xd126, 0x3000 },
-  { 0x9a01, 0xd124, 0x2000 },
-  { 0x1a01, 0xd123, 0x0000 },
-  { 0x1a01, 0xd125, 0x0000 },
-  { 0x9a01, 0xd12b, 0x2000 },
-  { 0x1a01, 0xd12a, 0x0000 },
-  { 0x1a01, 0xd12c, 0x0000 },
-  { 0x9a01, 0xd13d, 0x5000 },
-  { 0x9a01, 0xd135, 0x4000 },
-  { 0x9a01, 0xd131, 0x3000 },
-  { 0x9a01, 0xd12f, 0x2000 },
-  { 0x1a01, 0xd12e, 0x0000 },
-  { 0x1a01, 0xd130, 0x0000 },
-  { 0x9a01, 0xd133, 0x2000 },
-  { 0x1a01, 0xd132, 0x0000 },
-  { 0x1a01, 0xd134, 0x0000 },
-  { 0x9a01, 0xd139, 0x3000 },
-  { 0x9a01, 0xd137, 0x2000 },
-  { 0x1a01, 0xd136, 0x0000 },
-  { 0x1a01, 0xd138, 0x0000 },
-  { 0x9a01, 0xd13b, 0x2000 },
-  { 0x1a01, 0xd13a, 0x0000 },
-  { 0x1a01, 0xd13c, 0x0000 },
-  { 0x9a01, 0xd145, 0x4000 },
-  { 0x9a01, 0xd141, 0x3000 },
-  { 0x9a01, 0xd13f, 0x2000 },
-  { 0x1a01, 0xd13e, 0x0000 },
-  { 0x1a01, 0xd140, 0x0000 },
-  { 0x9a01, 0xd143, 0x2000 },
-  { 0x1a01, 0xd142, 0x0000 },
-  { 0x1a01, 0xd144, 0x0000 },
-  { 0x9a01, 0xd149, 0x3000 },
-  { 0x9a01, 0xd147, 0x2000 },
-  { 0x1a01, 0xd146, 0x0000 },
-  { 0x1a01, 0xd148, 0x0000 },
-  { 0x9a01, 0xd14b, 0x2000 },
-  { 0x1a01, 0xd14a, 0x0000 },
-  { 0x1a01, 0xd14c, 0x0000 },
-  { 0x8a01, 0xd16d, 0x6000 },
-  { 0x9a01, 0xd15d, 0x5000 },
-  { 0x9a01, 0xd155, 0x4000 },
-  { 0x9a01, 0xd151, 0x3000 },
-  { 0x9a01, 0xd14f, 0x2000 },
-  { 0x1a01, 0xd14e, 0x0000 },
-  { 0x1a01, 0xd150, 0x0000 },
-  { 0x9a01, 0xd153, 0x2000 },
-  { 0x1a01, 0xd152, 0x0000 },
-  { 0x1a01, 0xd154, 0x0000 },
-  { 0x9a01, 0xd159, 0x3000 },
-  { 0x9a01, 0xd157, 0x2000 },
-  { 0x1a01, 0xd156, 0x0000 },
-  { 0x1a01, 0xd158, 0x0000 },
-  { 0x9a01, 0xd15b, 0x2000 },
-  { 0x1a01, 0xd15a, 0x0000 },
-  { 0x1a01, 0xd15c, 0x0000 },
-  { 0x8a01, 0xd165, 0x4000 },
-  { 0x9a01, 0xd161, 0x3000 },
-  { 0x9a01, 0xd15f, 0x2000 },
-  { 0x1a01, 0xd15e, 0x0000 },
-  { 0x1a01, 0xd160, 0x0000 },
-  { 0x9a01, 0xd163, 0x2000 },
-  { 0x1a01, 0xd162, 0x0000 },
-  { 0x1a01, 0xd164, 0x0000 },
-  { 0x8c01, 0xd169, 0x3000 },
-  { 0x8c01, 0xd167, 0x2000 },
-  { 0x0a01, 0xd166, 0x0000 },
-  { 0x0c01, 0xd168, 0x0000 },
-  { 0x9a01, 0xd16b, 0x2000 },
-  { 0x1a01, 0xd16a, 0x0000 },
-  { 0x1a01, 0xd16c, 0x0000 },
-  { 0x8c01, 0xd17d, 0x5000 },
-  { 0x8101, 0xd175, 0x4000 },
-  { 0x8a01, 0xd171, 0x3000 },
-  { 0x8a01, 0xd16f, 0x2000 },
-  { 0x0a01, 0xd16e, 0x0000 },
-  { 0x0a01, 0xd170, 0x0000 },
-  { 0x8101, 0xd173, 0x2000 },
-  { 0x0a01, 0xd172, 0x0000 },
-  { 0x0101, 0xd174, 0x0000 },
-  { 0x8101, 0xd179, 0x3000 },
-  { 0x8101, 0xd177, 0x2000 },
-  { 0x0101, 0xd176, 0x0000 },
-  { 0x0101, 0xd178, 0x0000 },
-  { 0x8c01, 0xd17b, 0x2000 },
-  { 0x0101, 0xd17a, 0x0000 },
-  { 0x0c01, 0xd17c, 0x0000 },
-  { 0x8c01, 0xd185, 0x4000 },
-  { 0x8c01, 0xd181, 0x3000 },
-  { 0x8c01, 0xd17f, 0x2000 },
-  { 0x0c01, 0xd17e, 0x0000 },
-  { 0x0c01, 0xd180, 0x0000 },
-  { 0x9a01, 0xd183, 0x2000 },
-  { 0x0c01, 0xd182, 0x0000 },
-  { 0x1a01, 0xd184, 0x0000 },
-  { 0x8c01, 0xd189, 0x3000 },
-  { 0x8c01, 0xd187, 0x2000 },
-  { 0x0c01, 0xd186, 0x0000 },
-  { 0x0c01, 0xd188, 0x0000 },
-  { 0x8c01, 0xd18b, 0x2000 },
-  { 0x0c01, 0xd18a, 0x0000 },
-  { 0x1a01, 0xd18c, 0x0000 },
-  { 0x9a01, 0xd32f, 0x8000 },
-  { 0x9a01, 0xd1cd, 0x7000 },
-  { 0x8c01, 0xd1ad, 0x6000 },
-  { 0x9a01, 0xd19d, 0x5000 },
-  { 0x9a01, 0xd195, 0x4000 },
-  { 0x9a01, 0xd191, 0x3000 },
-  { 0x9a01, 0xd18f, 0x2000 },
-  { 0x1a01, 0xd18e, 0x0000 },
-  { 0x1a01, 0xd190, 0x0000 },
-  { 0x9a01, 0xd193, 0x2000 },
-  { 0x1a01, 0xd192, 0x0000 },
-  { 0x1a01, 0xd194, 0x0000 },
-  { 0x9a01, 0xd199, 0x3000 },
-  { 0x9a01, 0xd197, 0x2000 },
-  { 0x1a01, 0xd196, 0x0000 },
-  { 0x1a01, 0xd198, 0x0000 },
-  { 0x9a01, 0xd19b, 0x2000 },
-  { 0x1a01, 0xd19a, 0x0000 },
-  { 0x1a01, 0xd19c, 0x0000 },
-  { 0x9a01, 0xd1a5, 0x4000 },
-  { 0x9a01, 0xd1a1, 0x3000 },
-  { 0x9a01, 0xd19f, 0x2000 },
-  { 0x1a01, 0xd19e, 0x0000 },
-  { 0x1a01, 0xd1a0, 0x0000 },
-  { 0x9a01, 0xd1a3, 0x2000 },
-  { 0x1a01, 0xd1a2, 0x0000 },
-  { 0x1a01, 0xd1a4, 0x0000 },
-  { 0x9a01, 0xd1a9, 0x3000 },
-  { 0x9a01, 0xd1a7, 0x2000 },
-  { 0x1a01, 0xd1a6, 0x0000 },
-  { 0x1a01, 0xd1a8, 0x0000 },
-  { 0x8c01, 0xd1ab, 0x2000 },
-  { 0x0c01, 0xd1aa, 0x0000 },
-  { 0x0c01, 0xd1ac, 0x0000 },
-  { 0x9a01, 0xd1bd, 0x5000 },
-  { 0x9a01, 0xd1b5, 0x4000 },
-  { 0x9a01, 0xd1b1, 0x3000 },
-  { 0x9a01, 0xd1af, 0x2000 },
-  { 0x1a01, 0xd1ae, 0x0000 },
-  { 0x1a01, 0xd1b0, 0x0000 },
-  { 0x9a01, 0xd1b3, 0x2000 },
-  { 0x1a01, 0xd1b2, 0x0000 },
-  { 0x1a01, 0xd1b4, 0x0000 },
-  { 0x9a01, 0xd1b9, 0x3000 },
-  { 0x9a01, 0xd1b7, 0x2000 },
-  { 0x1a01, 0xd1b6, 0x0000 },
-  { 0x1a01, 0xd1b8, 0x0000 },
-  { 0x9a01, 0xd1bb, 0x2000 },
-  { 0x1a01, 0xd1ba, 0x0000 },
-  { 0x1a01, 0xd1bc, 0x0000 },
-  { 0x9a01, 0xd1c5, 0x4000 },
-  { 0x9a01, 0xd1c1, 0x3000 },
-  { 0x9a01, 0xd1bf, 0x2000 },
-  { 0x1a01, 0xd1be, 0x0000 },
-  { 0x1a01, 0xd1c0, 0x0000 },
-  { 0x9a01, 0xd1c3, 0x2000 },
-  { 0x1a01, 0xd1c2, 0x0000 },
-  { 0x1a01, 0xd1c4, 0x0000 },
-  { 0x9a01, 0xd1c9, 0x3000 },
-  { 0x9a01, 0xd1c7, 0x2000 },
-  { 0x1a01, 0xd1c6, 0x0000 },
-  { 0x1a01, 0xd1c8, 0x0000 },
-  { 0x9a01, 0xd1cb, 0x2000 },
-  { 0x1a01, 0xd1ca, 0x0000 },
-  { 0x1a01, 0xd1cc, 0x0000 },
-  { 0x9a01, 0xd30f, 0x6000 },
-  { 0x9a01, 0xd1dd, 0x5000 },
-  { 0x9a01, 0xd1d5, 0x4000 },
-  { 0x9a01, 0xd1d1, 0x3000 },
-  { 0x9a01, 0xd1cf, 0x2000 },
-  { 0x1a01, 0xd1ce, 0x0000 },
-  { 0x1a01, 0xd1d0, 0x0000 },
-  { 0x9a01, 0xd1d3, 0x2000 },
-  { 0x1a01, 0xd1d2, 0x0000 },
-  { 0x1a01, 0xd1d4, 0x0000 },
-  { 0x9a01, 0xd1d9, 0x3000 },
-  { 0x9a01, 0xd1d7, 0x2000 },
-  { 0x1a01, 0xd1d6, 0x0000 },
-  { 0x1a01, 0xd1d8, 0x0000 },
-  { 0x9a01, 0xd1db, 0x2000 },
-  { 0x1a01, 0xd1da, 0x0000 },
-  { 0x1a01, 0xd1dc, 0x0000 },
-  { 0x9a01, 0xd307, 0x4000 },
-  { 0x9a01, 0xd303, 0x3000 },
-  { 0x9a01, 0xd301, 0x2000 },
-  { 0x1a01, 0xd300, 0x0000 },
-  { 0x1a01, 0xd302, 0x0000 },
-  { 0x9a01, 0xd305, 0x2000 },
-  { 0x1a01, 0xd304, 0x0000 },
-  { 0x1a01, 0xd306, 0x0000 },
-  { 0x9a01, 0xd30b, 0x3000 },
-  { 0x9a01, 0xd309, 0x2000 },
-  { 0x1a01, 0xd308, 0x0000 },
-  { 0x1a01, 0xd30a, 0x0000 },
-  { 0x9a01, 0xd30d, 0x2000 },
-  { 0x1a01, 0xd30c, 0x0000 },
-  { 0x1a01, 0xd30e, 0x0000 },
-  { 0x9a01, 0xd31f, 0x5000 },
-  { 0x9a01, 0xd317, 0x4000 },
-  { 0x9a01, 0xd313, 0x3000 },
-  { 0x9a01, 0xd311, 0x2000 },
-  { 0x1a01, 0xd310, 0x0000 },
-  { 0x1a01, 0xd312, 0x0000 },
-  { 0x9a01, 0xd315, 0x2000 },
-  { 0x1a01, 0xd314, 0x0000 },
-  { 0x1a01, 0xd316, 0x0000 },
-  { 0x9a01, 0xd31b, 0x3000 },
-  { 0x9a01, 0xd319, 0x2000 },
-  { 0x1a01, 0xd318, 0x0000 },
-  { 0x1a01, 0xd31a, 0x0000 },
-  { 0x9a01, 0xd31d, 0x2000 },
-  { 0x1a01, 0xd31c, 0x0000 },
-  { 0x1a01, 0xd31e, 0x0000 },
-  { 0x9a01, 0xd327, 0x4000 },
-  { 0x9a01, 0xd323, 0x3000 },
-  { 0x9a01, 0xd321, 0x2000 },
-  { 0x1a01, 0xd320, 0x0000 },
-  { 0x1a01, 0xd322, 0x0000 },
-  { 0x9a01, 0xd325, 0x2000 },
-  { 0x1a01, 0xd324, 0x0000 },
-  { 0x1a01, 0xd326, 0x0000 },
-  { 0x9a01, 0xd32b, 0x3000 },
-  { 0x9a01, 0xd329, 0x2000 },
-  { 0x1a01, 0xd328, 0x0000 },
-  { 0x1a01, 0xd32a, 0x0000 },
-  { 0x9a01, 0xd32d, 0x2000 },
-  { 0x1a01, 0xd32c, 0x0000 },
-  { 0x1a01, 0xd32e, 0x0000 },
-  { 0x8901, 0xd418, 0x7000 },
-  { 0x9a01, 0xd34f, 0x6000 },
-  { 0x9a01, 0xd33f, 0x5000 },
-  { 0x9a01, 0xd337, 0x4000 },
-  { 0x9a01, 0xd333, 0x3000 },
-  { 0x9a01, 0xd331, 0x2000 },
-  { 0x1a01, 0xd330, 0x0000 },
-  { 0x1a01, 0xd332, 0x0000 },
-  { 0x9a01, 0xd335, 0x2000 },
-  { 0x1a01, 0xd334, 0x0000 },
-  { 0x1a01, 0xd336, 0x0000 },
-  { 0x9a01, 0xd33b, 0x3000 },
-  { 0x9a01, 0xd339, 0x2000 },
-  { 0x1a01, 0xd338, 0x0000 },
-  { 0x1a01, 0xd33a, 0x0000 },
-  { 0x9a01, 0xd33d, 0x2000 },
-  { 0x1a01, 0xd33c, 0x0000 },
-  { 0x1a01, 0xd33e, 0x0000 },
-  { 0x9a01, 0xd347, 0x4000 },
-  { 0x9a01, 0xd343, 0x3000 },
-  { 0x9a01, 0xd341, 0x2000 },
-  { 0x1a01, 0xd340, 0x0000 },
-  { 0x1a01, 0xd342, 0x0000 },
-  { 0x9a01, 0xd345, 0x2000 },
-  { 0x1a01, 0xd344, 0x0000 },
-  { 0x1a01, 0xd346, 0x0000 },
-  { 0x9a01, 0xd34b, 0x3000 },
-  { 0x9a01, 0xd349, 0x2000 },
-  { 0x1a01, 0xd348, 0x0000 },
-  { 0x1a01, 0xd34a, 0x0000 },
-  { 0x9a01, 0xd34d, 0x2000 },
-  { 0x1a01, 0xd34c, 0x0000 },
-  { 0x1a01, 0xd34e, 0x0000 },
-  { 0x8901, 0xd408, 0x5000 },
-  { 0x8901, 0xd400, 0x4000 },
-  { 0x9a01, 0xd353, 0x3000 },
-  { 0x9a01, 0xd351, 0x2000 },
-  { 0x1a01, 0xd350, 0x0000 },
-  { 0x1a01, 0xd352, 0x0000 },
-  { 0x9a01, 0xd355, 0x2000 },
-  { 0x1a01, 0xd354, 0x0000 },
-  { 0x1a01, 0xd356, 0x0000 },
-  { 0x8901, 0xd404, 0x3000 },
-  { 0x8901, 0xd402, 0x2000 },
-  { 0x0901, 0xd401, 0x0000 },
-  { 0x0901, 0xd403, 0x0000 },
-  { 0x8901, 0xd406, 0x2000 },
-  { 0x0901, 0xd405, 0x0000 },
-  { 0x0901, 0xd407, 0x0000 },
-  { 0x8901, 0xd410, 0x4000 },
-  { 0x8901, 0xd40c, 0x3000 },
-  { 0x8901, 0xd40a, 0x2000 },
-  { 0x0901, 0xd409, 0x0000 },
-  { 0x0901, 0xd40b, 0x0000 },
-  { 0x8901, 0xd40e, 0x2000 },
-  { 0x0901, 0xd40d, 0x0000 },
-  { 0x0901, 0xd40f, 0x0000 },
-  { 0x8901, 0xd414, 0x3000 },
-  { 0x8901, 0xd412, 0x2000 },
-  { 0x0901, 0xd411, 0x0000 },
-  { 0x0901, 0xd413, 0x0000 },
-  { 0x8901, 0xd416, 0x2000 },
-  { 0x0901, 0xd415, 0x0000 },
-  { 0x0901, 0xd417, 0x0000 },
-  { 0x8901, 0xd438, 0x6000 },
-  { 0x8501, 0xd428, 0x5000 },
-  { 0x8501, 0xd420, 0x4000 },
-  { 0x8501, 0xd41c, 0x3000 },
-  { 0x8501, 0xd41a, 0x2000 },
-  { 0x0901, 0xd419, 0x0000 },
-  { 0x0501, 0xd41b, 0x0000 },
-  { 0x8501, 0xd41e, 0x2000 },
-  { 0x0501, 0xd41d, 0x0000 },
-  { 0x0501, 0xd41f, 0x0000 },
-  { 0x8501, 0xd424, 0x3000 },
-  { 0x8501, 0xd422, 0x2000 },
-  { 0x0501, 0xd421, 0x0000 },
-  { 0x0501, 0xd423, 0x0000 },
-  { 0x8501, 0xd426, 0x2000 },
-  { 0x0501, 0xd425, 0x0000 },
-  { 0x0501, 0xd427, 0x0000 },
-  { 0x8501, 0xd430, 0x4000 },
-  { 0x8501, 0xd42c, 0x3000 },
-  { 0x8501, 0xd42a, 0x2000 },
-  { 0x0501, 0xd429, 0x0000 },
-  { 0x0501, 0xd42b, 0x0000 },
-  { 0x8501, 0xd42e, 0x2000 },
-  { 0x0501, 0xd42d, 0x0000 },
-  { 0x0501, 0xd42f, 0x0000 },
-  { 0x8901, 0xd434, 0x3000 },
-  { 0x8501, 0xd432, 0x2000 },
-  { 0x0501, 0xd431, 0x0000 },
-  { 0x0501, 0xd433, 0x0000 },
-  { 0x8901, 0xd436, 0x2000 },
-  { 0x0901, 0xd435, 0x0000 },
-  { 0x0901, 0xd437, 0x0000 },
-  { 0x8901, 0xd448, 0x5000 },
-  { 0x8901, 0xd440, 0x4000 },
-  { 0x8901, 0xd43c, 0x3000 },
-  { 0x8901, 0xd43a, 0x2000 },
-  { 0x0901, 0xd439, 0x0000 },
-  { 0x0901, 0xd43b, 0x0000 },
-  { 0x8901, 0xd43e, 0x2000 },
-  { 0x0901, 0xd43d, 0x0000 },
-  { 0x0901, 0xd43f, 0x0000 },
-  { 0x8901, 0xd444, 0x3000 },
-  { 0x8901, 0xd442, 0x2000 },
-  { 0x0901, 0xd441, 0x0000 },
-  { 0x0901, 0xd443, 0x0000 },
-  { 0x8901, 0xd446, 0x2000 },
-  { 0x0901, 0xd445, 0x0000 },
-  { 0x0901, 0xd447, 0x0000 },
-  { 0x8501, 0xd450, 0x4000 },
-  { 0x8901, 0xd44c, 0x3000 },
-  { 0x8901, 0xd44a, 0x2000 },
-  { 0x0901, 0xd449, 0x0000 },
-  { 0x0901, 0xd44b, 0x0000 },
-  { 0x8501, 0xd44e, 0x2000 },
-  { 0x0901, 0xd44d, 0x0000 },
-  { 0x0501, 0xd44f, 0x0000 },
-  { 0x8501, 0xd454, 0x3000 },
-  { 0x8501, 0xd452, 0x2000 },
-  { 0x0501, 0xd451, 0x0000 },
-  { 0x0501, 0xd453, 0x0000 },
-  { 0x8501, 0xd457, 0x2000 },
-  { 0x0501, 0xd456, 0x0000 },
-  { 0x0501, 0xd458, 0x0000 },
-  { 0x8702, 0xf876, 0xb000 },
-  { 0x8901, 0xd670, 0xa000 },
-  { 0x8901, 0xd570, 0x9000 },
-  { 0x8901, 0xd4e4, 0x8000 },
-  { 0x8501, 0xd499, 0x7000 },
-  { 0x8901, 0xd479, 0x6000 },
-  { 0x8901, 0xd469, 0x5000 },
-  { 0x8501, 0xd461, 0x4000 },
-  { 0x8501, 0xd45d, 0x3000 },
-  { 0x8501, 0xd45b, 0x2000 },
-  { 0x0501, 0xd45a, 0x0000 },
-  { 0x0501, 0xd45c, 0x0000 },
-  { 0x8501, 0xd45f, 0x2000 },
-  { 0x0501, 0xd45e, 0x0000 },
-  { 0x0501, 0xd460, 0x0000 },
-  { 0x8501, 0xd465, 0x3000 },
-  { 0x8501, 0xd463, 0x2000 },
-  { 0x0501, 0xd462, 0x0000 },
-  { 0x0501, 0xd464, 0x0000 },
-  { 0x8501, 0xd467, 0x2000 },
-  { 0x0501, 0xd466, 0x0000 },
-  { 0x0901, 0xd468, 0x0000 },
-  { 0x8901, 0xd471, 0x4000 },
-  { 0x8901, 0xd46d, 0x3000 },
-  { 0x8901, 0xd46b, 0x2000 },
-  { 0x0901, 0xd46a, 0x0000 },
-  { 0x0901, 0xd46c, 0x0000 },
-  { 0x8901, 0xd46f, 0x2000 },
-  { 0x0901, 0xd46e, 0x0000 },
-  { 0x0901, 0xd470, 0x0000 },
-  { 0x8901, 0xd475, 0x3000 },
-  { 0x8901, 0xd473, 0x2000 },
-  { 0x0901, 0xd472, 0x0000 },
-  { 0x0901, 0xd474, 0x0000 },
-  { 0x8901, 0xd477, 0x2000 },
-  { 0x0901, 0xd476, 0x0000 },
-  { 0x0901, 0xd478, 0x0000 },
-  { 0x8501, 0xd489, 0x5000 },
-  { 0x8901, 0xd481, 0x4000 },
-  { 0x8901, 0xd47d, 0x3000 },
-  { 0x8901, 0xd47b, 0x2000 },
-  { 0x0901, 0xd47a, 0x0000 },
-  { 0x0901, 0xd47c, 0x0000 },
-  { 0x8901, 0xd47f, 0x2000 },
-  { 0x0901, 0xd47e, 0x0000 },
-  { 0x0901, 0xd480, 0x0000 },
-  { 0x8501, 0xd485, 0x3000 },
-  { 0x8501, 0xd483, 0x2000 },
-  { 0x0501, 0xd482, 0x0000 },
-  { 0x0501, 0xd484, 0x0000 },
-  { 0x8501, 0xd487, 0x2000 },
-  { 0x0501, 0xd486, 0x0000 },
-  { 0x0501, 0xd488, 0x0000 },
-  { 0x8501, 0xd491, 0x4000 },
-  { 0x8501, 0xd48d, 0x3000 },
-  { 0x8501, 0xd48b, 0x2000 },
-  { 0x0501, 0xd48a, 0x0000 },
-  { 0x0501, 0xd48c, 0x0000 },
-  { 0x8501, 0xd48f, 0x2000 },
-  { 0x0501, 0xd48e, 0x0000 },
-  { 0x0501, 0xd490, 0x0000 },
-  { 0x8501, 0xd495, 0x3000 },
-  { 0x8501, 0xd493, 0x2000 },
-  { 0x0501, 0xd492, 0x0000 },
-  { 0x0501, 0xd494, 0x0000 },
-  { 0x8501, 0xd497, 0x2000 },
-  { 0x0501, 0xd496, 0x0000 },
-  { 0x0501, 0xd498, 0x0000 },
-  { 0x8501, 0xd4c3, 0x6000 },
-  { 0x8901, 0xd4b1, 0x5000 },
-  { 0x8901, 0xd4a6, 0x4000 },
-  { 0x8901, 0xd49e, 0x3000 },
-  { 0x8501, 0xd49b, 0x2000 },
-  { 0x0501, 0xd49a, 0x0000 },
-  { 0x0901, 0xd49c, 0x0000 },
-  { 0x8901, 0xd4a2, 0x2000 },
-  { 0x0901, 0xd49f, 0x0000 },
-  { 0x0901, 0xd4a5, 0x0000 },
-  { 0x8901, 0xd4ac, 0x3000 },
-  { 0x8901, 0xd4aa, 0x2000 },
-  { 0x0901, 0xd4a9, 0x0000 },
-  { 0x0901, 0xd4ab, 0x0000 },
-  { 0x8901, 0xd4af, 0x2000 },
-  { 0x0901, 0xd4ae, 0x0000 },
-  { 0x0901, 0xd4b0, 0x0000 },
-  { 0x8501, 0xd4b9, 0x4000 },
-  { 0x8901, 0xd4b5, 0x3000 },
-  { 0x8901, 0xd4b3, 0x2000 },
-  { 0x0901, 0xd4b2, 0x0000 },
-  { 0x0901, 0xd4b4, 0x0000 },
-  { 0x8501, 0xd4b7, 0x2000 },
-  { 0x0501, 0xd4b6, 0x0000 },
-  { 0x0501, 0xd4b8, 0x0000 },
-  { 0x8501, 0xd4bf, 0x3000 },
-  { 0x8501, 0xd4bd, 0x2000 },
-  { 0x0501, 0xd4bb, 0x0000 },
-  { 0x0501, 0xd4be, 0x0000 },
-  { 0x8501, 0xd4c1, 0x2000 },
-  { 0x0501, 0xd4c0, 0x0000 },
-  { 0x0501, 0xd4c2, 0x0000 },
-  { 0x8901, 0xd4d4, 0x5000 },
-  { 0x8501, 0xd4cc, 0x4000 },
-  { 0x8501, 0xd4c8, 0x3000 },
-  { 0x8501, 0xd4c6, 0x2000 },
-  { 0x0501, 0xd4c5, 0x0000 },
-  { 0x0501, 0xd4c7, 0x0000 },
-  { 0x8501, 0xd4ca, 0x2000 },
-  { 0x0501, 0xd4c9, 0x0000 },
-  { 0x0501, 0xd4cb, 0x0000 },
-  { 0x8901, 0xd4d0, 0x3000 },
-  { 0x8501, 0xd4ce, 0x2000 },
-  { 0x0501, 0xd4cd, 0x0000 },
-  { 0x0501, 0xd4cf, 0x0000 },
-  { 0x8901, 0xd4d2, 0x2000 },
-  { 0x0901, 0xd4d1, 0x0000 },
-  { 0x0901, 0xd4d3, 0x0000 },
-  { 0x8901, 0xd4dc, 0x4000 },
-  { 0x8901, 0xd4d8, 0x3000 },
-  { 0x8901, 0xd4d6, 0x2000 },
-  { 0x0901, 0xd4d5, 0x0000 },
-  { 0x0901, 0xd4d7, 0x0000 },
-  { 0x8901, 0xd4da, 0x2000 },
-  { 0x0901, 0xd4d9, 0x0000 },
-  { 0x0901, 0xd4db, 0x0000 },
-  { 0x8901, 0xd4e0, 0x3000 },
-  { 0x8901, 0xd4de, 0x2000 },
-  { 0x0901, 0xd4dd, 0x0000 },
-  { 0x0901, 0xd4df, 0x0000 },
-  { 0x8901, 0xd4e2, 0x2000 },
-  { 0x0901, 0xd4e1, 0x0000 },
-  { 0x0901, 0xd4e3, 0x0000 },
-  { 0x8501, 0xd529, 0x7000 },
-  { 0x8901, 0xd504, 0x6000 },
-  { 0x8501, 0xd4f4, 0x5000 },
-  { 0x8501, 0xd4ec, 0x4000 },
-  { 0x8901, 0xd4e8, 0x3000 },
-  { 0x8901, 0xd4e6, 0x2000 },
-  { 0x0901, 0xd4e5, 0x0000 },
-  { 0x0901, 0xd4e7, 0x0000 },
-  { 0x8501, 0xd4ea, 0x2000 },
-  { 0x0901, 0xd4e9, 0x0000 },
-  { 0x0501, 0xd4eb, 0x0000 },
-  { 0x8501, 0xd4f0, 0x3000 },
-  { 0x8501, 0xd4ee, 0x2000 },
-  { 0x0501, 0xd4ed, 0x0000 },
-  { 0x0501, 0xd4ef, 0x0000 },
-  { 0x8501, 0xd4f2, 0x2000 },
-  { 0x0501, 0xd4f1, 0x0000 },
-  { 0x0501, 0xd4f3, 0x0000 },
-  { 0x8501, 0xd4fc, 0x4000 },
-  { 0x8501, 0xd4f8, 0x3000 },
-  { 0x8501, 0xd4f6, 0x2000 },
-  { 0x0501, 0xd4f5, 0x0000 },
-  { 0x0501, 0xd4f7, 0x0000 },
-  { 0x8501, 0xd4fa, 0x2000 },
-  { 0x0501, 0xd4f9, 0x0000 },
-  { 0x0501, 0xd4fb, 0x0000 },
-  { 0x8501, 0xd500, 0x3000 },
-  { 0x8501, 0xd4fe, 0x2000 },
-  { 0x0501, 0xd4fd, 0x0000 },
-  { 0x0501, 0xd4ff, 0x0000 },
-  { 0x8501, 0xd502, 0x2000 },
-  { 0x0501, 0xd501, 0x0000 },
-  { 0x0501, 0xd503, 0x0000 },
-  { 0x8901, 0xd518, 0x5000 },
-  { 0x8901, 0xd50f, 0x4000 },
-  { 0x8901, 0xd509, 0x3000 },
-  { 0x8901, 0xd507, 0x2000 },
-  { 0x0901, 0xd505, 0x0000 },
-  { 0x0901, 0xd508, 0x0000 },
-  { 0x8901, 0xd50d, 0x2000 },
-  { 0x0901, 0xd50a, 0x0000 },
-  { 0x0901, 0xd50e, 0x0000 },
-  { 0x8901, 0xd513, 0x3000 },
-  { 0x8901, 0xd511, 0x2000 },
-  { 0x0901, 0xd510, 0x0000 },
-  { 0x0901, 0xd512, 0x0000 },
-  { 0x8901, 0xd516, 0x2000 },
-  { 0x0901, 0xd514, 0x0000 },
-  { 0x0901, 0xd517, 0x0000 },
-  { 0x8501, 0xd521, 0x4000 },
-  { 0x8901, 0xd51c, 0x3000 },
-  { 0x8901, 0xd51a, 0x2000 },
-  { 0x0901, 0xd519, 0x0000 },
-  { 0x0901, 0xd51b, 0x0000 },
-  { 0x8501, 0xd51f, 0x2000 },
-  { 0x0501, 0xd51e, 0x0000 },
-  { 0x0501, 0xd520, 0x0000 },
-  { 0x8501, 0xd525, 0x3000 },
-  { 0x8501, 0xd523, 0x2000 },
-  { 0x0501, 0xd522, 0x0000 },
-  { 0x0501, 0xd524, 0x0000 },
-  { 0x8501, 0xd527, 0x2000 },
-  { 0x0501, 0xd526, 0x0000 },
-  { 0x0501, 0xd528, 0x0000 },
-  { 0x8901, 0xd54f, 0x6000 },
-  { 0x8901, 0xd539, 0x5000 },
-  { 0x8501, 0xd531, 0x4000 },
-  { 0x8501, 0xd52d, 0x3000 },
-  { 0x8501, 0xd52b, 0x2000 },
-  { 0x0501, 0xd52a, 0x0000 },
-  { 0x0501, 0xd52c, 0x0000 },
-  { 0x8501, 0xd52f, 0x2000 },
-  { 0x0501, 0xd52e, 0x0000 },
-  { 0x0501, 0xd530, 0x0000 },
-  { 0x8501, 0xd535, 0x3000 },
-  { 0x8501, 0xd533, 0x2000 },
-  { 0x0501, 0xd532, 0x0000 },
-  { 0x0501, 0xd534, 0x0000 },
-  { 0x8501, 0xd537, 0x2000 },
-  { 0x0501, 0xd536, 0x0000 },
-  { 0x0901, 0xd538, 0x0000 },
-  { 0x8901, 0xd543, 0x4000 },
-  { 0x8901, 0xd53e, 0x3000 },
-  { 0x8901, 0xd53c, 0x2000 },
-  { 0x0901, 0xd53b, 0x0000 },
-  { 0x0901, 0xd53d, 0x0000 },
-  { 0x8901, 0xd541, 0x2000 },
-  { 0x0901, 0xd540, 0x0000 },
-  { 0x0901, 0xd542, 0x0000 },
-  { 0x8901, 0xd54b, 0x3000 },
-  { 0x8901, 0xd546, 0x2000 },
-  { 0x0901, 0xd544, 0x0000 },
-  { 0x0901, 0xd54a, 0x0000 },
-  { 0x8901, 0xd54d, 0x2000 },
-  { 0x0901, 0xd54c, 0x0000 },
-  { 0x0901, 0xd54e, 0x0000 },
-  { 0x8501, 0xd560, 0x5000 },
-  { 0x8501, 0xd558, 0x4000 },
-  { 0x8501, 0xd554, 0x3000 },
-  { 0x8501, 0xd552, 0x2000 },
-  { 0x0901, 0xd550, 0x0000 },
-  { 0x0501, 0xd553, 0x0000 },
-  { 0x8501, 0xd556, 0x2000 },
-  { 0x0501, 0xd555, 0x0000 },
-  { 0x0501, 0xd557, 0x0000 },
-  { 0x8501, 0xd55c, 0x3000 },
-  { 0x8501, 0xd55a, 0x2000 },
-  { 0x0501, 0xd559, 0x0000 },
-  { 0x0501, 0xd55b, 0x0000 },
-  { 0x8501, 0xd55e, 0x2000 },
-  { 0x0501, 0xd55d, 0x0000 },
-  { 0x0501, 0xd55f, 0x0000 },
-  { 0x8501, 0xd568, 0x4000 },
-  { 0x8501, 0xd564, 0x3000 },
-  { 0x8501, 0xd562, 0x2000 },
-  { 0x0501, 0xd561, 0x0000 },
-  { 0x0501, 0xd563, 0x0000 },
-  { 0x8501, 0xd566, 0x2000 },
-  { 0x0501, 0xd565, 0x0000 },
-  { 0x0501, 0xd567, 0x0000 },
-  { 0x8901, 0xd56c, 0x3000 },
-  { 0x8501, 0xd56a, 0x2000 },
-  { 0x0501, 0xd569, 0x0000 },
-  { 0x0501, 0xd56b, 0x0000 },
-  { 0x8901, 0xd56e, 0x2000 },
-  { 0x0901, 0xd56d, 0x0000 },
-  { 0x0901, 0xd56f, 0x0000 },
-  { 0x8501, 0xd5f0, 0x8000 },
-  { 0x8901, 0xd5b0, 0x7000 },
-  { 0x8501, 0xd590, 0x6000 },
-  { 0x8901, 0xd580, 0x5000 },
-  { 0x8901, 0xd578, 0x4000 },
-  { 0x8901, 0xd574, 0x3000 },
-  { 0x8901, 0xd572, 0x2000 },
-  { 0x0901, 0xd571, 0x0000 },
-  { 0x0901, 0xd573, 0x0000 },
-  { 0x8901, 0xd576, 0x2000 },
-  { 0x0901, 0xd575, 0x0000 },
-  { 0x0901, 0xd577, 0x0000 },
-  { 0x8901, 0xd57c, 0x3000 },
-  { 0x8901, 0xd57a, 0x2000 },
-  { 0x0901, 0xd579, 0x0000 },
-  { 0x0901, 0xd57b, 0x0000 },
-  { 0x8901, 0xd57e, 0x2000 },
-  { 0x0901, 0xd57d, 0x0000 },
-  { 0x0901, 0xd57f, 0x0000 },
-  { 0x8501, 0xd588, 0x4000 },
-  { 0x8901, 0xd584, 0x3000 },
-  { 0x8901, 0xd582, 0x2000 },
-  { 0x0901, 0xd581, 0x0000 },
-  { 0x0901, 0xd583, 0x0000 },
-  { 0x8501, 0xd586, 0x2000 },
-  { 0x0901, 0xd585, 0x0000 },
-  { 0x0501, 0xd587, 0x0000 },
-  { 0x8501, 0xd58c, 0x3000 },
-  { 0x8501, 0xd58a, 0x2000 },
-  { 0x0501, 0xd589, 0x0000 },
-  { 0x0501, 0xd58b, 0x0000 },
-  { 0x8501, 0xd58e, 0x2000 },
-  { 0x0501, 0xd58d, 0x0000 },
-  { 0x0501, 0xd58f, 0x0000 },
-  { 0x8901, 0xd5a0, 0x5000 },
-  { 0x8501, 0xd598, 0x4000 },
-  { 0x8501, 0xd594, 0x3000 },
-  { 0x8501, 0xd592, 0x2000 },
-  { 0x0501, 0xd591, 0x0000 },
-  { 0x0501, 0xd593, 0x0000 },
-  { 0x8501, 0xd596, 0x2000 },
-  { 0x0501, 0xd595, 0x0000 },
-  { 0x0501, 0xd597, 0x0000 },
-  { 0x8501, 0xd59c, 0x3000 },
-  { 0x8501, 0xd59a, 0x2000 },
-  { 0x0501, 0xd599, 0x0000 },
-  { 0x0501, 0xd59b, 0x0000 },
-  { 0x8501, 0xd59e, 0x2000 },
-  { 0x0501, 0xd59d, 0x0000 },
-  { 0x0501, 0xd59f, 0x0000 },
-  { 0x8901, 0xd5a8, 0x4000 },
-  { 0x8901, 0xd5a4, 0x3000 },
-  { 0x8901, 0xd5a2, 0x2000 },
-  { 0x0901, 0xd5a1, 0x0000 },
-  { 0x0901, 0xd5a3, 0x0000 },
-  { 0x8901, 0xd5a6, 0x2000 },
-  { 0x0901, 0xd5a5, 0x0000 },
-  { 0x0901, 0xd5a7, 0x0000 },
-  { 0x8901, 0xd5ac, 0x3000 },
-  { 0x8901, 0xd5aa, 0x2000 },
-  { 0x0901, 0xd5a9, 0x0000 },
-  { 0x0901, 0xd5ab, 0x0000 },
-  { 0x8901, 0xd5ae, 0x2000 },
-  { 0x0901, 0xd5ad, 0x0000 },
-  { 0x0901, 0xd5af, 0x0000 },
-  { 0x8501, 0xd5d0, 0x6000 },
-  { 0x8501, 0xd5c0, 0x5000 },
-  { 0x8901, 0xd5b8, 0x4000 },
-  { 0x8901, 0xd5b4, 0x3000 },
-  { 0x8901, 0xd5b2, 0x2000 },
-  { 0x0901, 0xd5b1, 0x0000 },
-  { 0x0901, 0xd5b3, 0x0000 },
-  { 0x8901, 0xd5b6, 0x2000 },
-  { 0x0901, 0xd5b5, 0x0000 },
-  { 0x0901, 0xd5b7, 0x0000 },
-  { 0x8501, 0xd5bc, 0x3000 },
-  { 0x8501, 0xd5ba, 0x2000 },
-  { 0x0901, 0xd5b9, 0x0000 },
-  { 0x0501, 0xd5bb, 0x0000 },
-  { 0x8501, 0xd5be, 0x2000 },
-  { 0x0501, 0xd5bd, 0x0000 },
-  { 0x0501, 0xd5bf, 0x0000 },
-  { 0x8501, 0xd5c8, 0x4000 },
-  { 0x8501, 0xd5c4, 0x3000 },
-  { 0x8501, 0xd5c2, 0x2000 },
-  { 0x0501, 0xd5c1, 0x0000 },
-  { 0x0501, 0xd5c3, 0x0000 },
-  { 0x8501, 0xd5c6, 0x2000 },
-  { 0x0501, 0xd5c5, 0x0000 },
-  { 0x0501, 0xd5c7, 0x0000 },
-  { 0x8501, 0xd5cc, 0x3000 },
-  { 0x8501, 0xd5ca, 0x2000 },
-  { 0x0501, 0xd5c9, 0x0000 },
-  { 0x0501, 0xd5cb, 0x0000 },
-  { 0x8501, 0xd5ce, 0x2000 },
-  { 0x0501, 0xd5cd, 0x0000 },
-  { 0x0501, 0xd5cf, 0x0000 },
-  { 0x8901, 0xd5e0, 0x5000 },
-  { 0x8901, 0xd5d8, 0x4000 },
-  { 0x8901, 0xd5d4, 0x3000 },
-  { 0x8501, 0xd5d2, 0x2000 },
-  { 0x0501, 0xd5d1, 0x0000 },
-  { 0x0501, 0xd5d3, 0x0000 },
-  { 0x8901, 0xd5d6, 0x2000 },
-  { 0x0901, 0xd5d5, 0x0000 },
-  { 0x0901, 0xd5d7, 0x0000 },
-  { 0x8901, 0xd5dc, 0x3000 },
-  { 0x8901, 0xd5da, 0x2000 },
-  { 0x0901, 0xd5d9, 0x0000 },
-  { 0x0901, 0xd5db, 0x0000 },
-  { 0x8901, 0xd5de, 0x2000 },
-  { 0x0901, 0xd5dd, 0x0000 },
-  { 0x0901, 0xd5df, 0x0000 },
-  { 0x8901, 0xd5e8, 0x4000 },
-  { 0x8901, 0xd5e4, 0x3000 },
-  { 0x8901, 0xd5e2, 0x2000 },
-  { 0x0901, 0xd5e1, 0x0000 },
-  { 0x0901, 0xd5e3, 0x0000 },
-  { 0x8901, 0xd5e6, 0x2000 },
-  { 0x0901, 0xd5e5, 0x0000 },
-  { 0x0901, 0xd5e7, 0x0000 },
-  { 0x8901, 0xd5ec, 0x3000 },
-  { 0x8901, 0xd5ea, 0x2000 },
-  { 0x0901, 0xd5e9, 0x0000 },
-  { 0x0901, 0xd5eb, 0x0000 },
-  { 0x8501, 0xd5ee, 0x2000 },
-  { 0x0901, 0xd5ed, 0x0000 },
-  { 0x0501, 0xd5ef, 0x0000 },
-  { 0x8501, 0xd630, 0x7000 },
-  { 0x8901, 0xd610, 0x6000 },
-  { 0x8501, 0xd600, 0x5000 },
-  { 0x8501, 0xd5f8, 0x4000 },
-  { 0x8501, 0xd5f4, 0x3000 },
-  { 0x8501, 0xd5f2, 0x2000 },
-  { 0x0501, 0xd5f1, 0x0000 },
-  { 0x0501, 0xd5f3, 0x0000 },
-  { 0x8501, 0xd5f6, 0x2000 },
-  { 0x0501, 0xd5f5, 0x0000 },
-  { 0x0501, 0xd5f7, 0x0000 },
-  { 0x8501, 0xd5fc, 0x3000 },
-  { 0x8501, 0xd5fa, 0x2000 },
-  { 0x0501, 0xd5f9, 0x0000 },
-  { 0x0501, 0xd5fb, 0x0000 },
-  { 0x8501, 0xd5fe, 0x2000 },
-  { 0x0501, 0xd5fd, 0x0000 },
-  { 0x0501, 0xd5ff, 0x0000 },
-  { 0x8901, 0xd608, 0x4000 },
-  { 0x8501, 0xd604, 0x3000 },
-  { 0x8501, 0xd602, 0x2000 },
-  { 0x0501, 0xd601, 0x0000 },
-  { 0x0501, 0xd603, 0x0000 },
-  { 0x8501, 0xd606, 0x2000 },
-  { 0x0501, 0xd605, 0x0000 },
-  { 0x0501, 0xd607, 0x0000 },
-  { 0x8901, 0xd60c, 0x3000 },
-  { 0x8901, 0xd60a, 0x2000 },
-  { 0x0901, 0xd609, 0x0000 },
-  { 0x0901, 0xd60b, 0x0000 },
-  { 0x8901, 0xd60e, 0x2000 },
-  { 0x0901, 0xd60d, 0x0000 },
-  { 0x0901, 0xd60f, 0x0000 },
-  { 0x8901, 0xd620, 0x5000 },
-  { 0x8901, 0xd618, 0x4000 },
-  { 0x8901, 0xd614, 0x3000 },
-  { 0x8901, 0xd612, 0x2000 },
-  { 0x0901, 0xd611, 0x0000 },
-  { 0x0901, 0xd613, 0x0000 },
-  { 0x8901, 0xd616, 0x2000 },
-  { 0x0901, 0xd615, 0x0000 },
-  { 0x0901, 0xd617, 0x0000 },
-  { 0x8901, 0xd61c, 0x3000 },
-  { 0x8901, 0xd61a, 0x2000 },
-  { 0x0901, 0xd619, 0x0000 },
-  { 0x0901, 0xd61b, 0x0000 },
-  { 0x8901, 0xd61e, 0x2000 },
-  { 0x0901, 0xd61d, 0x0000 },
-  { 0x0901, 0xd61f, 0x0000 },
-  { 0x8501, 0xd628, 0x4000 },
-  { 0x8501, 0xd624, 0x3000 },
-  { 0x8501, 0xd622, 0x2000 },
-  { 0x0901, 0xd621, 0x0000 },
-  { 0x0501, 0xd623, 0x0000 },
-  { 0x8501, 0xd626, 0x2000 },
-  { 0x0501, 0xd625, 0x0000 },
-  { 0x0501, 0xd627, 0x0000 },
-  { 0x8501, 0xd62c, 0x3000 },
-  { 0x8501, 0xd62a, 0x2000 },
-  { 0x0501, 0xd629, 0x0000 },
-  { 0x0501, 0xd62b, 0x0000 },
-  { 0x8501, 0xd62e, 0x2000 },
-  { 0x0501, 0xd62d, 0x0000 },
-  { 0x0501, 0xd62f, 0x0000 },
-  { 0x8901, 0xd650, 0x6000 },
-  { 0x8901, 0xd640, 0x5000 },
-  { 0x8501, 0xd638, 0x4000 },
-  { 0x8501, 0xd634, 0x3000 },
-  { 0x8501, 0xd632, 0x2000 },
-  { 0x0501, 0xd631, 0x0000 },
-  { 0x0501, 0xd633, 0x0000 },
-  { 0x8501, 0xd636, 0x2000 },
-  { 0x0501, 0xd635, 0x0000 },
-  { 0x0501, 0xd637, 0x0000 },
-  { 0x8901, 0xd63c, 0x3000 },
-  { 0x8501, 0xd63a, 0x2000 },
-  { 0x0501, 0xd639, 0x0000 },
-  { 0x0501, 0xd63b, 0x0000 },
-  { 0x8901, 0xd63e, 0x2000 },
-  { 0x0901, 0xd63d, 0x0000 },
-  { 0x0901, 0xd63f, 0x0000 },
-  { 0x8901, 0xd648, 0x4000 },
-  { 0x8901, 0xd644, 0x3000 },
-  { 0x8901, 0xd642, 0x2000 },
-  { 0x0901, 0xd641, 0x0000 },
-  { 0x0901, 0xd643, 0x0000 },
-  { 0x8901, 0xd646, 0x2000 },
-  { 0x0901, 0xd645, 0x0000 },
-  { 0x0901, 0xd647, 0x0000 },
-  { 0x8901, 0xd64c, 0x3000 },
-  { 0x8901, 0xd64a, 0x2000 },
-  { 0x0901, 0xd649, 0x0000 },
-  { 0x0901, 0xd64b, 0x0000 },
-  { 0x8901, 0xd64e, 0x2000 },
-  { 0x0901, 0xd64d, 0x0000 },
-  { 0x0901, 0xd64f, 0x0000 },
-  { 0x8501, 0xd660, 0x5000 },
-  { 0x8501, 0xd658, 0x4000 },
-  { 0x8901, 0xd654, 0x3000 },
-  { 0x8901, 0xd652, 0x2000 },
-  { 0x0901, 0xd651, 0x0000 },
-  { 0x0901, 0xd653, 0x0000 },
-  { 0x8501, 0xd656, 0x2000 },
-  { 0x0901, 0xd655, 0x0000 },
-  { 0x0501, 0xd657, 0x0000 },
-  { 0x8501, 0xd65c, 0x3000 },
-  { 0x8501, 0xd65a, 0x2000 },
-  { 0x0501, 0xd659, 0x0000 },
-  { 0x0501, 0xd65b, 0x0000 },
-  { 0x8501, 0xd65e, 0x2000 },
-  { 0x0501, 0xd65d, 0x0000 },
-  { 0x0501, 0xd65f, 0x0000 },
-  { 0x8501, 0xd668, 0x4000 },
-  { 0x8501, 0xd664, 0x3000 },
-  { 0x8501, 0xd662, 0x2000 },
-  { 0x0501, 0xd661, 0x0000 },
-  { 0x0501, 0xd663, 0x0000 },
-  { 0x8501, 0xd666, 0x2000 },
-  { 0x0501, 0xd665, 0x0000 },
-  { 0x0501, 0xd667, 0x0000 },
-  { 0x8501, 0xd66c, 0x3000 },
-  { 0x8501, 0xd66a, 0x2000 },
-  { 0x0501, 0xd669, 0x0000 },
-  { 0x0501, 0xd66b, 0x0000 },
-  { 0x8501, 0xd66e, 0x2000 },
-  { 0x0501, 0xd66d, 0x0000 },
-  { 0x0501, 0xd66f, 0x0000 },
-  { 0x8501, 0xd774, 0x9000 },
-  { 0x8901, 0xd6f4, 0x8000 },
-  { 0x8901, 0xd6b4, 0x7000 },
-  { 0x8501, 0xd690, 0x6000 },
-  { 0x8901, 0xd680, 0x5000 },
-  { 0x8901, 0xd678, 0x4000 },
-  { 0x8901, 0xd674, 0x3000 },
-  { 0x8901, 0xd672, 0x2000 },
-  { 0x0901, 0xd671, 0x0000 },
-  { 0x0901, 0xd673, 0x0000 },
-  { 0x8901, 0xd676, 0x2000 },
-  { 0x0901, 0xd675, 0x0000 },
-  { 0x0901, 0xd677, 0x0000 },
-  { 0x8901, 0xd67c, 0x3000 },
-  { 0x8901, 0xd67a, 0x2000 },
-  { 0x0901, 0xd679, 0x0000 },
-  { 0x0901, 0xd67b, 0x0000 },
-  { 0x8901, 0xd67e, 0x2000 },
-  { 0x0901, 0xd67d, 0x0000 },
-  { 0x0901, 0xd67f, 0x0000 },
-  { 0x8901, 0xd688, 0x4000 },
-  { 0x8901, 0xd684, 0x3000 },
-  { 0x8901, 0xd682, 0x2000 },
-  { 0x0901, 0xd681, 0x0000 },
-  { 0x0901, 0xd683, 0x0000 },
-  { 0x8901, 0xd686, 0x2000 },
-  { 0x0901, 0xd685, 0x0000 },
-  { 0x0901, 0xd687, 0x0000 },
-  { 0x8501, 0xd68c, 0x3000 },
-  { 0x8501, 0xd68a, 0x2000 },
-  { 0x0901, 0xd689, 0x0000 },
-  { 0x0501, 0xd68b, 0x0000 },
-  { 0x8501, 0xd68e, 0x2000 },
-  { 0x0501, 0xd68d, 0x0000 },
-  { 0x0501, 0xd68f, 0x0000 },
-  { 0x8501, 0xd6a0, 0x5000 },
-  { 0x8501, 0xd698, 0x4000 },
-  { 0x8501, 0xd694, 0x3000 },
-  { 0x8501, 0xd692, 0x2000 },
-  { 0x0501, 0xd691, 0x0000 },
-  { 0x0501, 0xd693, 0x0000 },
-  { 0x8501, 0xd696, 0x2000 },
-  { 0x0501, 0xd695, 0x0000 },
-  { 0x0501, 0xd697, 0x0000 },
-  { 0x8501, 0xd69c, 0x3000 },
-  { 0x8501, 0xd69a, 0x2000 },
-  { 0x0501, 0xd699, 0x0000 },
-  { 0x0501, 0xd69b, 0x0000 },
-  { 0x8501, 0xd69e, 0x2000 },
-  { 0x0501, 0xd69d, 0x0000 },
-  { 0x0501, 0xd69f, 0x0000 },
-  { 0x8901, 0xd6ac, 0x4000 },
-  { 0x8901, 0xd6a8, 0x3000 },
-  { 0x8501, 0xd6a2, 0x2000 },
-  { 0x0501, 0xd6a1, 0x0000 },
-  { 0x0501, 0xd6a3, 0x0000 },
-  { 0x8901, 0xd6aa, 0x2000 },
-  { 0x0901, 0xd6a9, 0x0000 },
-  { 0x0901, 0xd6ab, 0x0000 },
-  { 0x8901, 0xd6b0, 0x3000 },
-  { 0x8901, 0xd6ae, 0x2000 },
-  { 0x0901, 0xd6ad, 0x0000 },
-  { 0x0901, 0xd6af, 0x0000 },
-  { 0x8901, 0xd6b2, 0x2000 },
-  { 0x0901, 0xd6b1, 0x0000 },
-  { 0x0901, 0xd6b3, 0x0000 },
-  { 0x8501, 0xd6d4, 0x6000 },
-  { 0x8501, 0xd6c4, 0x5000 },
-  { 0x8901, 0xd6bc, 0x4000 },
-  { 0x8901, 0xd6b8, 0x3000 },
-  { 0x8901, 0xd6b6, 0x2000 },
-  { 0x0901, 0xd6b5, 0x0000 },
-  { 0x0901, 0xd6b7, 0x0000 },
-  { 0x8901, 0xd6ba, 0x2000 },
-  { 0x0901, 0xd6b9, 0x0000 },
-  { 0x0901, 0xd6bb, 0x0000 },
-  { 0x8901, 0xd6c0, 0x3000 },
-  { 0x8901, 0xd6be, 0x2000 },
-  { 0x0901, 0xd6bd, 0x0000 },
-  { 0x0901, 0xd6bf, 0x0000 },
-  { 0x8501, 0xd6c2, 0x2000 },
-  { 0x1901, 0xd6c1, 0x0000 },
-  { 0x0501, 0xd6c3, 0x0000 },
-  { 0x8501, 0xd6cc, 0x4000 },
-  { 0x8501, 0xd6c8, 0x3000 },
-  { 0x8501, 0xd6c6, 0x2000 },
-  { 0x0501, 0xd6c5, 0x0000 },
-  { 0x0501, 0xd6c7, 0x0000 },
-  { 0x8501, 0xd6ca, 0x2000 },
-  { 0x0501, 0xd6c9, 0x0000 },
-  { 0x0501, 0xd6cb, 0x0000 },
-  { 0x8501, 0xd6d0, 0x3000 },
-  { 0x8501, 0xd6ce, 0x2000 },
-  { 0x0501, 0xd6cd, 0x0000 },
-  { 0x0501, 0xd6cf, 0x0000 },
-  { 0x8501, 0xd6d2, 0x2000 },
-  { 0x0501, 0xd6d1, 0x0000 },
-  { 0x0501, 0xd6d3, 0x0000 },
-  { 0x8901, 0xd6e4, 0x5000 },
-  { 0x8501, 0xd6dc, 0x4000 },
-  { 0x8501, 0xd6d8, 0x3000 },
-  { 0x8501, 0xd6d6, 0x2000 },
-  { 0x0501, 0xd6d5, 0x0000 },
-  { 0x0501, 0xd6d7, 0x0000 },
-  { 0x8501, 0xd6da, 0x2000 },
-  { 0x0501, 0xd6d9, 0x0000 },
-  { 0x1901, 0xd6db, 0x0000 },
-  { 0x8501, 0xd6e0, 0x3000 },
-  { 0x8501, 0xd6de, 0x2000 },
-  { 0x0501, 0xd6dd, 0x0000 },
-  { 0x0501, 0xd6df, 0x0000 },
-  { 0x8901, 0xd6e2, 0x2000 },
-  { 0x0501, 0xd6e1, 0x0000 },
-  { 0x0901, 0xd6e3, 0x0000 },
-  { 0x8901, 0xd6ec, 0x4000 },
-  { 0x8901, 0xd6e8, 0x3000 },
-  { 0x8901, 0xd6e6, 0x2000 },
-  { 0x0901, 0xd6e5, 0x0000 },
-  { 0x0901, 0xd6e7, 0x0000 },
-  { 0x8901, 0xd6ea, 0x2000 },
-  { 0x0901, 0xd6e9, 0x0000 },
-  { 0x0901, 0xd6eb, 0x0000 },
-  { 0x8901, 0xd6f0, 0x3000 },
-  { 0x8901, 0xd6ee, 0x2000 },
-  { 0x0901, 0xd6ed, 0x0000 },
-  { 0x0901, 0xd6ef, 0x0000 },
-  { 0x8901, 0xd6f2, 0x2000 },
-  { 0x0901, 0xd6f1, 0x0000 },
-  { 0x0901, 0xd6f3, 0x0000 },
-  { 0x8901, 0xd734, 0x7000 },
-  { 0x8501, 0xd714, 0x6000 },
-  { 0x8501, 0xd704, 0x5000 },
-  { 0x8501, 0xd6fc, 0x4000 },
-  { 0x8901, 0xd6f8, 0x3000 },
-  { 0x8901, 0xd6f6, 0x2000 },
-  { 0x0901, 0xd6f5, 0x0000 },
-  { 0x0901, 0xd6f7, 0x0000 },
-  { 0x8901, 0xd6fa, 0x2000 },
-  { 0x0901, 0xd6f9, 0x0000 },
-  { 0x1901, 0xd6fb, 0x0000 },
-  { 0x8501, 0xd700, 0x3000 },
-  { 0x8501, 0xd6fe, 0x2000 },
-  { 0x0501, 0xd6fd, 0x0000 },
-  { 0x0501, 0xd6ff, 0x0000 },
-  { 0x8501, 0xd702, 0x2000 },
-  { 0x0501, 0xd701, 0x0000 },
-  { 0x0501, 0xd703, 0x0000 },
-  { 0x8501, 0xd70c, 0x4000 },
-  { 0x8501, 0xd708, 0x3000 },
-  { 0x8501, 0xd706, 0x2000 },
-  { 0x0501, 0xd705, 0x0000 },
-  { 0x0501, 0xd707, 0x0000 },
-  { 0x8501, 0xd70a, 0x2000 },
-  { 0x0501, 0xd709, 0x0000 },
-  { 0x0501, 0xd70b, 0x0000 },
-  { 0x8501, 0xd710, 0x3000 },
-  { 0x8501, 0xd70e, 0x2000 },
-  { 0x0501, 0xd70d, 0x0000 },
-  { 0x0501, 0xd70f, 0x0000 },
-  { 0x8501, 0xd712, 0x2000 },
-  { 0x0501, 0xd711, 0x0000 },
-  { 0x0501, 0xd713, 0x0000 },
-  { 0x8901, 0xd724, 0x5000 },
-  { 0x8901, 0xd71c, 0x4000 },
-  { 0x8501, 0xd718, 0x3000 },
-  { 0x8501, 0xd716, 0x2000 },
-  { 0x1901, 0xd715, 0x0000 },
-  { 0x0501, 0xd717, 0x0000 },
-  { 0x8501, 0xd71a, 0x2000 },
-  { 0x0501, 0xd719, 0x0000 },
-  { 0x0501, 0xd71b, 0x0000 },
-  { 0x8901, 0xd720, 0x3000 },
-  { 0x8901, 0xd71e, 0x2000 },
-  { 0x0901, 0xd71d, 0x0000 },
-  { 0x0901, 0xd71f, 0x0000 },
-  { 0x8901, 0xd722, 0x2000 },
-  { 0x0901, 0xd721, 0x0000 },
-  { 0x0901, 0xd723, 0x0000 },
-  { 0x8901, 0xd72c, 0x4000 },
-  { 0x8901, 0xd728, 0x3000 },
-  { 0x8901, 0xd726, 0x2000 },
-  { 0x0901, 0xd725, 0x0000 },
-  { 0x0901, 0xd727, 0x0000 },
-  { 0x8901, 0xd72a, 0x2000 },
-  { 0x0901, 0xd729, 0x0000 },
-  { 0x0901, 0xd72b, 0x0000 },
-  { 0x8901, 0xd730, 0x3000 },
-  { 0x8901, 0xd72e, 0x2000 },
-  { 0x0901, 0xd72d, 0x0000 },
-  { 0x0901, 0xd72f, 0x0000 },
-  { 0x8901, 0xd732, 0x2000 },
-  { 0x0901, 0xd731, 0x0000 },
-  { 0x0901, 0xd733, 0x0000 },
-  { 0x8501, 0xd754, 0x6000 },
-  { 0x8501, 0xd744, 0x5000 },
-  { 0x8501, 0xd73c, 0x4000 },
-  { 0x8501, 0xd738, 0x3000 },
-  { 0x8501, 0xd736, 0x2000 },
-  { 0x1901, 0xd735, 0x0000 },
-  { 0x0501, 0xd737, 0x0000 },
-  { 0x8501, 0xd73a, 0x2000 },
-  { 0x0501, 0xd739, 0x0000 },
-  { 0x0501, 0xd73b, 0x0000 },
-  { 0x8501, 0xd740, 0x3000 },
-  { 0x8501, 0xd73e, 0x2000 },
-  { 0x0501, 0xd73d, 0x0000 },
-  { 0x0501, 0xd73f, 0x0000 },
-  { 0x8501, 0xd742, 0x2000 },
-  { 0x0501, 0xd741, 0x0000 },
-  { 0x0501, 0xd743, 0x0000 },
-  { 0x8501, 0xd74c, 0x4000 },
-  { 0x8501, 0xd748, 0x3000 },
-  { 0x8501, 0xd746, 0x2000 },
-  { 0x0501, 0xd745, 0x0000 },
-  { 0x0501, 0xd747, 0x0000 },
-  { 0x8501, 0xd74a, 0x2000 },
-  { 0x0501, 0xd749, 0x0000 },
-  { 0x0501, 0xd74b, 0x0000 },
-  { 0x8501, 0xd750, 0x3000 },
-  { 0x8501, 0xd74e, 0x2000 },
-  { 0x0501, 0xd74d, 0x0000 },
-  { 0x1901, 0xd74f, 0x0000 },
-  { 0x8501, 0xd752, 0x2000 },
-  { 0x0501, 0xd751, 0x0000 },
-  { 0x0501, 0xd753, 0x0000 },
-  { 0x8901, 0xd764, 0x5000 },
-  { 0x8901, 0xd75c, 0x4000 },
-  { 0x8901, 0xd758, 0x3000 },
-  { 0x8901, 0xd756, 0x2000 },
-  { 0x0501, 0xd755, 0x0000 },
-  { 0x0901, 0xd757, 0x0000 },
-  { 0x8901, 0xd75a, 0x2000 },
-  { 0x0901, 0xd759, 0x0000 },
-  { 0x0901, 0xd75b, 0x0000 },
-  { 0x8901, 0xd760, 0x3000 },
-  { 0x8901, 0xd75e, 0x2000 },
-  { 0x0901, 0xd75d, 0x0000 },
-  { 0x0901, 0xd75f, 0x0000 },
-  { 0x8901, 0xd762, 0x2000 },
-  { 0x0901, 0xd761, 0x0000 },
-  { 0x0901, 0xd763, 0x0000 },
-  { 0x8901, 0xd76c, 0x4000 },
-  { 0x8901, 0xd768, 0x3000 },
-  { 0x8901, 0xd766, 0x2000 },
-  { 0x0901, 0xd765, 0x0000 },
-  { 0x0901, 0xd767, 0x0000 },
-  { 0x8901, 0xd76a, 0x2000 },
-  { 0x0901, 0xd769, 0x0000 },
-  { 0x0901, 0xd76b, 0x0000 },
-  { 0x8501, 0xd770, 0x3000 },
-  { 0x8901, 0xd76e, 0x2000 },
-  { 0x0901, 0xd76d, 0x0000 },
-  { 0x1901, 0xd76f, 0x0000 },
-  { 0x8501, 0xd772, 0x2000 },
-  { 0x0501, 0xd771, 0x0000 },
-  { 0x0501, 0xd773, 0x0000 },
-  { 0x8d01, 0xd7f8, 0x8000 },
-  { 0x8501, 0xd7b4, 0x7000 },
-  { 0x8901, 0xd794, 0x6000 },
-  { 0x8501, 0xd784, 0x5000 },
-  { 0x8501, 0xd77c, 0x4000 },
-  { 0x8501, 0xd778, 0x3000 },
-  { 0x8501, 0xd776, 0x2000 },
-  { 0x0501, 0xd775, 0x0000 },
-  { 0x0501, 0xd777, 0x0000 },
-  { 0x8501, 0xd77a, 0x2000 },
-  { 0x0501, 0xd779, 0x0000 },
-  { 0x0501, 0xd77b, 0x0000 },
-  { 0x8501, 0xd780, 0x3000 },
-  { 0x8501, 0xd77e, 0x2000 },
-  { 0x0501, 0xd77d, 0x0000 },
-  { 0x0501, 0xd77f, 0x0000 },
-  { 0x8501, 0xd782, 0x2000 },
-  { 0x0501, 0xd781, 0x0000 },
-  { 0x0501, 0xd783, 0x0000 },
-  { 0x8501, 0xd78c, 0x4000 },
-  { 0x8501, 0xd788, 0x3000 },
-  { 0x8501, 0xd786, 0x2000 },
-  { 0x0501, 0xd785, 0x0000 },
-  { 0x0501, 0xd787, 0x0000 },
-  { 0x8501, 0xd78a, 0x2000 },
-  { 0x1901, 0xd789, 0x0000 },
-  { 0x0501, 0xd78b, 0x0000 },
-  { 0x8901, 0xd790, 0x3000 },
-  { 0x8501, 0xd78e, 0x2000 },
-  { 0x0501, 0xd78d, 0x0000 },
-  { 0x0501, 0xd78f, 0x0000 },
-  { 0x8901, 0xd792, 0x2000 },
-  { 0x0901, 0xd791, 0x0000 },
-  { 0x0901, 0xd793, 0x0000 },
-  { 0x8901, 0xd7a4, 0x5000 },
-  { 0x8901, 0xd79c, 0x4000 },
-  { 0x8901, 0xd798, 0x3000 },
-  { 0x8901, 0xd796, 0x2000 },
-  { 0x0901, 0xd795, 0x0000 },
-  { 0x0901, 0xd797, 0x0000 },
-  { 0x8901, 0xd79a, 0x2000 },
-  { 0x0901, 0xd799, 0x0000 },
-  { 0x0901, 0xd79b, 0x0000 },
-  { 0x8901, 0xd7a0, 0x3000 },
-  { 0x8901, 0xd79e, 0x2000 },
-  { 0x0901, 0xd79d, 0x0000 },
-  { 0x0901, 0xd79f, 0x0000 },
-  { 0x8901, 0xd7a2, 0x2000 },
-  { 0x0901, 0xd7a1, 0x0000 },
-  { 0x0901, 0xd7a3, 0x0000 },
-  { 0x8501, 0xd7ac, 0x4000 },
-  { 0x8901, 0xd7a8, 0x3000 },
-  { 0x8901, 0xd7a6, 0x2000 },
-  { 0x0901, 0xd7a5, 0x0000 },
-  { 0x0901, 0xd7a7, 0x0000 },
-  { 0x8501, 0xd7aa, 0x2000 },
-  { 0x1901, 0xd7a9, 0x0000 },
-  { 0x0501, 0xd7ab, 0x0000 },
-  { 0x8501, 0xd7b0, 0x3000 },
-  { 0x8501, 0xd7ae, 0x2000 },
-  { 0x0501, 0xd7ad, 0x0000 },
-  { 0x0501, 0xd7af, 0x0000 },
-  { 0x8501, 0xd7b2, 0x2000 },
-  { 0x0501, 0xd7b1, 0x0000 },
-  { 0x0501, 0xd7b3, 0x0000 },
-  { 0x8d01, 0xd7d8, 0x6000 },
-  { 0x8501, 0xd7c4, 0x5000 },
-  { 0x8501, 0xd7bc, 0x4000 },
-  { 0x8501, 0xd7b8, 0x3000 },
-  { 0x8501, 0xd7b6, 0x2000 },
-  { 0x0501, 0xd7b5, 0x0000 },
-  { 0x0501, 0xd7b7, 0x0000 },
-  { 0x8501, 0xd7ba, 0x2000 },
-  { 0x0501, 0xd7b9, 0x0000 },
-  { 0x0501, 0xd7bb, 0x0000 },
-  { 0x8501, 0xd7c0, 0x3000 },
-  { 0x8501, 0xd7be, 0x2000 },
-  { 0x0501, 0xd7bd, 0x0000 },
-  { 0x0501, 0xd7bf, 0x0000 },
-  { 0x8501, 0xd7c2, 0x2000 },
-  { 0x0501, 0xd7c1, 0x0000 },
-  { 0x1901, 0xd7c3, 0x0000 },
-  { 0x8d01, 0xd7d0, 0x4000 },
-  { 0x8501, 0xd7c8, 0x3000 },
-  { 0x8501, 0xd7c6, 0x2000 },
-  { 0x0501, 0xd7c5, 0x0000 },
-  { 0x0501, 0xd7c7, 0x0000 },
-  { 0x8d01, 0xd7ce, 0x2000 },
-  { 0x0501, 0xd7c9, 0x0000 },
-  { 0x0d01, 0xd7cf, 0x0000 },
-  { 0x8d01, 0xd7d4, 0x3000 },
-  { 0x8d01, 0xd7d2, 0x2000 },
-  { 0x0d01, 0xd7d1, 0x0000 },
-  { 0x0d01, 0xd7d3, 0x0000 },
-  { 0x8d01, 0xd7d6, 0x2000 },
-  { 0x0d01, 0xd7d5, 0x0000 },
-  { 0x0d01, 0xd7d7, 0x0000 },
-  { 0x8d01, 0xd7e8, 0x5000 },
-  { 0x8d01, 0xd7e0, 0x4000 },
-  { 0x8d01, 0xd7dc, 0x3000 },
-  { 0x8d01, 0xd7da, 0x2000 },
-  { 0x0d01, 0xd7d9, 0x0000 },
-  { 0x0d01, 0xd7db, 0x0000 },
-  { 0x8d01, 0xd7de, 0x2000 },
-  { 0x0d01, 0xd7dd, 0x0000 },
-  { 0x0d01, 0xd7df, 0x0000 },
-  { 0x8d01, 0xd7e4, 0x3000 },
-  { 0x8d01, 0xd7e2, 0x2000 },
-  { 0x0d01, 0xd7e1, 0x0000 },
-  { 0x0d01, 0xd7e3, 0x0000 },
-  { 0x8d01, 0xd7e6, 0x2000 },
-  { 0x0d01, 0xd7e5, 0x0000 },
-  { 0x0d01, 0xd7e7, 0x0000 },
-  { 0x8d01, 0xd7f0, 0x4000 },
-  { 0x8d01, 0xd7ec, 0x3000 },
-  { 0x8d01, 0xd7ea, 0x2000 },
-  { 0x0d01, 0xd7e9, 0x0000 },
-  { 0x0d01, 0xd7eb, 0x0000 },
-  { 0x8d01, 0xd7ee, 0x2000 },
-  { 0x0d01, 0xd7ed, 0x0000 },
-  { 0x0d01, 0xd7ef, 0x0000 },
-  { 0x8d01, 0xd7f4, 0x3000 },
-  { 0x8d01, 0xd7f2, 0x2000 },
-  { 0x0d01, 0xd7f1, 0x0000 },
-  { 0x0d01, 0xd7f3, 0x0000 },
-  { 0x8d01, 0xd7f6, 0x2000 },
-  { 0x0d01, 0xd7f5, 0x0000 },
-  { 0x0d01, 0xd7f7, 0x0000 },
-  { 0x8702, 0xf836, 0x7000 },
-  { 0x8702, 0xf816, 0x6000 },
-  { 0x8702, 0xf806, 0x5000 },
-  { 0x8702, 0x0000, 0x4000 },
-  { 0x8d01, 0xd7fc, 0x3000 },
-  { 0x8d01, 0xd7fa, 0x2000 },
-  { 0x0d01, 0xd7f9, 0x0000 },
-  { 0x0d01, 0xd7fb, 0x0000 },
-  { 0x8d01, 0xd7fe, 0x2000 },
-  { 0x0d01, 0xd7fd, 0x0000 },
-  { 0x0d01, 0xd7ff, 0x0000 },
-  { 0x8702, 0xf802, 0x3000 },
-  { 0x8702, 0xf800, 0x2000 },
-  { 0x0702, 0xa6d6, 0x0000 },
-  { 0x0702, 0xf801, 0x0000 },
-  { 0x8702, 0xf804, 0x2000 },
-  { 0x0702, 0xf803, 0x0000 },
-  { 0x0702, 0xf805, 0x0000 },
-  { 0x8702, 0xf80e, 0x4000 },
-  { 0x8702, 0xf80a, 0x3000 },
-  { 0x8702, 0xf808, 0x2000 },
-  { 0x0702, 0xf807, 0x0000 },
-  { 0x0702, 0xf809, 0x0000 },
-  { 0x8702, 0xf80c, 0x2000 },
-  { 0x0702, 0xf80b, 0x0000 },
-  { 0x0702, 0xf80d, 0x0000 },
-  { 0x8702, 0xf812, 0x3000 },
-  { 0x8702, 0xf810, 0x2000 },
-  { 0x0702, 0xf80f, 0x0000 },
-  { 0x0702, 0xf811, 0x0000 },
-  { 0x8702, 0xf814, 0x2000 },
-  { 0x0702, 0xf813, 0x0000 },
-  { 0x0702, 0xf815, 0x0000 },
-  { 0x8702, 0xf826, 0x5000 },
-  { 0x8702, 0xf81e, 0x4000 },
-  { 0x8702, 0xf81a, 0x3000 },
-  { 0x8702, 0xf818, 0x2000 },
-  { 0x0702, 0xf817, 0x0000 },
-  { 0x0702, 0xf819, 0x0000 },
-  { 0x8702, 0xf81c, 0x2000 },
-  { 0x0702, 0xf81b, 0x0000 },
-  { 0x0702, 0xf81d, 0x0000 },
-  { 0x8702, 0xf822, 0x3000 },
-  { 0x8702, 0xf820, 0x2000 },
-  { 0x0702, 0xf81f, 0x0000 },
-  { 0x0702, 0xf821, 0x0000 },
-  { 0x8702, 0xf824, 0x2000 },
-  { 0x0702, 0xf823, 0x0000 },
-  { 0x0702, 0xf825, 0x0000 },
-  { 0x8702, 0xf82e, 0x4000 },
-  { 0x8702, 0xf82a, 0x3000 },
-  { 0x8702, 0xf828, 0x2000 },
-  { 0x0702, 0xf827, 0x0000 },
-  { 0x0702, 0xf829, 0x0000 },
-  { 0x8702, 0xf82c, 0x2000 },
-  { 0x0702, 0xf82b, 0x0000 },
-  { 0x0702, 0xf82d, 0x0000 },
-  { 0x8702, 0xf832, 0x3000 },
-  { 0x8702, 0xf830, 0x2000 },
-  { 0x0702, 0xf82f, 0x0000 },
-  { 0x0702, 0xf831, 0x0000 },
-  { 0x8702, 0xf834, 0x2000 },
-  { 0x0702, 0xf833, 0x0000 },
-  { 0x0702, 0xf835, 0x0000 },
-  { 0x8702, 0xf856, 0x6000 },
-  { 0x8702, 0xf846, 0x5000 },
-  { 0x8702, 0xf83e, 0x4000 },
-  { 0x8702, 0xf83a, 0x3000 },
-  { 0x8702, 0xf838, 0x2000 },
-  { 0x0702, 0xf837, 0x0000 },
-  { 0x0702, 0xf839, 0x0000 },
-  { 0x8702, 0xf83c, 0x2000 },
-  { 0x0702, 0xf83b, 0x0000 },
-  { 0x0702, 0xf83d, 0x0000 },
-  { 0x8702, 0xf842, 0x3000 },
-  { 0x8702, 0xf840, 0x2000 },
-  { 0x0702, 0xf83f, 0x0000 },
-  { 0x0702, 0xf841, 0x0000 },
-  { 0x8702, 0xf844, 0x2000 },
-  { 0x0702, 0xf843, 0x0000 },
-  { 0x0702, 0xf845, 0x0000 },
-  { 0x8702, 0xf84e, 0x4000 },
-  { 0x8702, 0xf84a, 0x3000 },
-  { 0x8702, 0xf848, 0x2000 },
-  { 0x0702, 0xf847, 0x0000 },
-  { 0x0702, 0xf849, 0x0000 },
-  { 0x8702, 0xf84c, 0x2000 },
-  { 0x0702, 0xf84b, 0x0000 },
-  { 0x0702, 0xf84d, 0x0000 },
-  { 0x8702, 0xf852, 0x3000 },
-  { 0x8702, 0xf850, 0x2000 },
-  { 0x0702, 0xf84f, 0x0000 },
-  { 0x0702, 0xf851, 0x0000 },
-  { 0x8702, 0xf854, 0x2000 },
-  { 0x0702, 0xf853, 0x0000 },
-  { 0x0702, 0xf855, 0x0000 },
-  { 0x8702, 0xf866, 0x5000 },
-  { 0x8702, 0xf85e, 0x4000 },
-  { 0x8702, 0xf85a, 0x3000 },
-  { 0x8702, 0xf858, 0x2000 },
-  { 0x0702, 0xf857, 0x0000 },
-  { 0x0702, 0xf859, 0x0000 },
-  { 0x8702, 0xf85c, 0x2000 },
-  { 0x0702, 0xf85b, 0x0000 },
-  { 0x0702, 0xf85d, 0x0000 },
-  { 0x8702, 0xf862, 0x3000 },
-  { 0x8702, 0xf860, 0x2000 },
-  { 0x0702, 0xf85f, 0x0000 },
-  { 0x0702, 0xf861, 0x0000 },
-  { 0x8702, 0xf864, 0x2000 },
-  { 0x0702, 0xf863, 0x0000 },
-  { 0x0702, 0xf865, 0x0000 },
-  { 0x8702, 0xf86e, 0x4000 },
-  { 0x8702, 0xf86a, 0x3000 },
-  { 0x8702, 0xf868, 0x2000 },
-  { 0x0702, 0xf867, 0x0000 },
-  { 0x0702, 0xf869, 0x0000 },
-  { 0x8702, 0xf86c, 0x2000 },
-  { 0x0702, 0xf86b, 0x0000 },
-  { 0x0702, 0xf86d, 0x0000 },
-  { 0x8702, 0xf872, 0x3000 },
-  { 0x8702, 0xf870, 0x2000 },
-  { 0x0702, 0xf86f, 0x0000 },
-  { 0x0702, 0xf871, 0x0000 },
-  { 0x8702, 0xf874, 0x2000 },
-  { 0x0702, 0xf873, 0x0000 },
-  { 0x0702, 0xf875, 0x0000 },
-  { 0x8702, 0xf976, 0x9000 },
-  { 0x8702, 0xf8f6, 0x8000 },
-  { 0x8702, 0xf8b6, 0x7000 },
-  { 0x8702, 0xf896, 0x6000 },
-  { 0x8702, 0xf886, 0x5000 },
-  { 0x8702, 0xf87e, 0x4000 },
-  { 0x8702, 0xf87a, 0x3000 },
-  { 0x8702, 0xf878, 0x2000 },
-  { 0x0702, 0xf877, 0x0000 },
-  { 0x0702, 0xf879, 0x0000 },
-  { 0x8702, 0xf87c, 0x2000 },
-  { 0x0702, 0xf87b, 0x0000 },
-  { 0x0702, 0xf87d, 0x0000 },
-  { 0x8702, 0xf882, 0x3000 },
-  { 0x8702, 0xf880, 0x2000 },
-  { 0x0702, 0xf87f, 0x0000 },
-  { 0x0702, 0xf881, 0x0000 },
-  { 0x8702, 0xf884, 0x2000 },
-  { 0x0702, 0xf883, 0x0000 },
-  { 0x0702, 0xf885, 0x0000 },
-  { 0x8702, 0xf88e, 0x4000 },
-  { 0x8702, 0xf88a, 0x3000 },
-  { 0x8702, 0xf888, 0x2000 },
-  { 0x0702, 0xf887, 0x0000 },
-  { 0x0702, 0xf889, 0x0000 },
-  { 0x8702, 0xf88c, 0x2000 },
-  { 0x0702, 0xf88b, 0x0000 },
-  { 0x0702, 0xf88d, 0x0000 },
-  { 0x8702, 0xf892, 0x3000 },
-  { 0x8702, 0xf890, 0x2000 },
-  { 0x0702, 0xf88f, 0x0000 },
-  { 0x0702, 0xf891, 0x0000 },
-  { 0x8702, 0xf894, 0x2000 },
-  { 0x0702, 0xf893, 0x0000 },
-  { 0x0702, 0xf895, 0x0000 },
-  { 0x8702, 0xf8a6, 0x5000 },
-  { 0x8702, 0xf89e, 0x4000 },
-  { 0x8702, 0xf89a, 0x3000 },
-  { 0x8702, 0xf898, 0x2000 },
-  { 0x0702, 0xf897, 0x0000 },
-  { 0x0702, 0xf899, 0x0000 },
-  { 0x8702, 0xf89c, 0x2000 },
-  { 0x0702, 0xf89b, 0x0000 },
-  { 0x0702, 0xf89d, 0x0000 },
-  { 0x8702, 0xf8a2, 0x3000 },
-  { 0x8702, 0xf8a0, 0x2000 },
-  { 0x0702, 0xf89f, 0x0000 },
-  { 0x0702, 0xf8a1, 0x0000 },
-  { 0x8702, 0xf8a4, 0x2000 },
-  { 0x0702, 0xf8a3, 0x0000 },
-  { 0x0702, 0xf8a5, 0x0000 },
-  { 0x8702, 0xf8ae, 0x4000 },
-  { 0x8702, 0xf8aa, 0x3000 },
-  { 0x8702, 0xf8a8, 0x2000 },
-  { 0x0702, 0xf8a7, 0x0000 },
-  { 0x0702, 0xf8a9, 0x0000 },
-  { 0x8702, 0xf8ac, 0x2000 },
-  { 0x0702, 0xf8ab, 0x0000 },
-  { 0x0702, 0xf8ad, 0x0000 },
-  { 0x8702, 0xf8b2, 0x3000 },
-  { 0x8702, 0xf8b0, 0x2000 },
-  { 0x0702, 0xf8af, 0x0000 },
-  { 0x0702, 0xf8b1, 0x0000 },
-  { 0x8702, 0xf8b4, 0x2000 },
-  { 0x0702, 0xf8b3, 0x0000 },
-  { 0x0702, 0xf8b5, 0x0000 },
-  { 0x8702, 0xf8d6, 0x6000 },
-  { 0x8702, 0xf8c6, 0x5000 },
-  { 0x8702, 0xf8be, 0x4000 },
-  { 0x8702, 0xf8ba, 0x3000 },
-  { 0x8702, 0xf8b8, 0x2000 },
-  { 0x0702, 0xf8b7, 0x0000 },
-  { 0x0702, 0xf8b9, 0x0000 },
-  { 0x8702, 0xf8bc, 0x2000 },
-  { 0x0702, 0xf8bb, 0x0000 },
-  { 0x0702, 0xf8bd, 0x0000 },
-  { 0x8702, 0xf8c2, 0x3000 },
-  { 0x8702, 0xf8c0, 0x2000 },
-  { 0x0702, 0xf8bf, 0x0000 },
-  { 0x0702, 0xf8c1, 0x0000 },
-  { 0x8702, 0xf8c4, 0x2000 },
-  { 0x0702, 0xf8c3, 0x0000 },
-  { 0x0702, 0xf8c5, 0x0000 },
-  { 0x8702, 0xf8ce, 0x4000 },
-  { 0x8702, 0xf8ca, 0x3000 },
-  { 0x8702, 0xf8c8, 0x2000 },
-  { 0x0702, 0xf8c7, 0x0000 },
-  { 0x0702, 0xf8c9, 0x0000 },
-  { 0x8702, 0xf8cc, 0x2000 },
-  { 0x0702, 0xf8cb, 0x0000 },
-  { 0x0702, 0xf8cd, 0x0000 },
-  { 0x8702, 0xf8d2, 0x3000 },
-  { 0x8702, 0xf8d0, 0x2000 },
-  { 0x0702, 0xf8cf, 0x0000 },
-  { 0x0702, 0xf8d1, 0x0000 },
-  { 0x8702, 0xf8d4, 0x2000 },
-  { 0x0702, 0xf8d3, 0x0000 },
-  { 0x0702, 0xf8d5, 0x0000 },
-  { 0x8702, 0xf8e6, 0x5000 },
-  { 0x8702, 0xf8de, 0x4000 },
-  { 0x8702, 0xf8da, 0x3000 },
-  { 0x8702, 0xf8d8, 0x2000 },
-  { 0x0702, 0xf8d7, 0x0000 },
-  { 0x0702, 0xf8d9, 0x0000 },
-  { 0x8702, 0xf8dc, 0x2000 },
-  { 0x0702, 0xf8db, 0x0000 },
-  { 0x0702, 0xf8dd, 0x0000 },
-  { 0x8702, 0xf8e2, 0x3000 },
-  { 0x8702, 0xf8e0, 0x2000 },
-  { 0x0702, 0xf8df, 0x0000 },
-  { 0x0702, 0xf8e1, 0x0000 },
-  { 0x8702, 0xf8e4, 0x2000 },
-  { 0x0702, 0xf8e3, 0x0000 },
-  { 0x0702, 0xf8e5, 0x0000 },
-  { 0x8702, 0xf8ee, 0x4000 },
-  { 0x8702, 0xf8ea, 0x3000 },
-  { 0x8702, 0xf8e8, 0x2000 },
-  { 0x0702, 0xf8e7, 0x0000 },
-  { 0x0702, 0xf8e9, 0x0000 },
-  { 0x8702, 0xf8ec, 0x2000 },
-  { 0x0702, 0xf8eb, 0x0000 },
-  { 0x0702, 0xf8ed, 0x0000 },
-  { 0x8702, 0xf8f2, 0x3000 },
-  { 0x8702, 0xf8f0, 0x2000 },
-  { 0x0702, 0xf8ef, 0x0000 },
-  { 0x0702, 0xf8f1, 0x0000 },
-  { 0x8702, 0xf8f4, 0x2000 },
-  { 0x0702, 0xf8f3, 0x0000 },
-  { 0x0702, 0xf8f5, 0x0000 },
-  { 0x8702, 0xf936, 0x7000 },
-  { 0x8702, 0xf916, 0x6000 },
-  { 0x8702, 0xf906, 0x5000 },
-  { 0x8702, 0xf8fe, 0x4000 },
-  { 0x8702, 0xf8fa, 0x3000 },
-  { 0x8702, 0xf8f8, 0x2000 },
-  { 0x0702, 0xf8f7, 0x0000 },
-  { 0x0702, 0xf8f9, 0x0000 },
-  { 0x8702, 0xf8fc, 0x2000 },
-  { 0x0702, 0xf8fb, 0x0000 },
-  { 0x0702, 0xf8fd, 0x0000 },
-  { 0x8702, 0xf902, 0x3000 },
-  { 0x8702, 0xf900, 0x2000 },
-  { 0x0702, 0xf8ff, 0x0000 },
-  { 0x0702, 0xf901, 0x0000 },
-  { 0x8702, 0xf904, 0x2000 },
-  { 0x0702, 0xf903, 0x0000 },
-  { 0x0702, 0xf905, 0x0000 },
-  { 0x8702, 0xf90e, 0x4000 },
-  { 0x8702, 0xf90a, 0x3000 },
-  { 0x8702, 0xf908, 0x2000 },
-  { 0x0702, 0xf907, 0x0000 },
-  { 0x0702, 0xf909, 0x0000 },
-  { 0x8702, 0xf90c, 0x2000 },
-  { 0x0702, 0xf90b, 0x0000 },
-  { 0x0702, 0xf90d, 0x0000 },
-  { 0x8702, 0xf912, 0x3000 },
-  { 0x8702, 0xf910, 0x2000 },
-  { 0x0702, 0xf90f, 0x0000 },
-  { 0x0702, 0xf911, 0x0000 },
-  { 0x8702, 0xf914, 0x2000 },
-  { 0x0702, 0xf913, 0x0000 },
-  { 0x0702, 0xf915, 0x0000 },
-  { 0x8702, 0xf926, 0x5000 },
-  { 0x8702, 0xf91e, 0x4000 },
-  { 0x8702, 0xf91a, 0x3000 },
-  { 0x8702, 0xf918, 0x2000 },
-  { 0x0702, 0xf917, 0x0000 },
-  { 0x0702, 0xf919, 0x0000 },
-  { 0x8702, 0xf91c, 0x2000 },
-  { 0x0702, 0xf91b, 0x0000 },
-  { 0x0702, 0xf91d, 0x0000 },
-  { 0x8702, 0xf922, 0x3000 },
-  { 0x8702, 0xf920, 0x2000 },
-  { 0x0702, 0xf91f, 0x0000 },
-  { 0x0702, 0xf921, 0x0000 },
-  { 0x8702, 0xf924, 0x2000 },
-  { 0x0702, 0xf923, 0x0000 },
-  { 0x0702, 0xf925, 0x0000 },
-  { 0x8702, 0xf92e, 0x4000 },
-  { 0x8702, 0xf92a, 0x3000 },
-  { 0x8702, 0xf928, 0x2000 },
-  { 0x0702, 0xf927, 0x0000 },
-  { 0x0702, 0xf929, 0x0000 },
-  { 0x8702, 0xf92c, 0x2000 },
-  { 0x0702, 0xf92b, 0x0000 },
-  { 0x0702, 0xf92d, 0x0000 },
-  { 0x8702, 0xf932, 0x3000 },
-  { 0x8702, 0xf930, 0x2000 },
-  { 0x0702, 0xf92f, 0x0000 },
-  { 0x0702, 0xf931, 0x0000 },
-  { 0x8702, 0xf934, 0x2000 },
-  { 0x0702, 0xf933, 0x0000 },
-  { 0x0702, 0xf935, 0x0000 },
-  { 0x8702, 0xf956, 0x6000 },
-  { 0x8702, 0xf946, 0x5000 },
-  { 0x8702, 0xf93e, 0x4000 },
-  { 0x8702, 0xf93a, 0x3000 },
-  { 0x8702, 0xf938, 0x2000 },
-  { 0x0702, 0xf937, 0x0000 },
-  { 0x0702, 0xf939, 0x0000 },
-  { 0x8702, 0xf93c, 0x2000 },
-  { 0x0702, 0xf93b, 0x0000 },
-  { 0x0702, 0xf93d, 0x0000 },
-  { 0x8702, 0xf942, 0x3000 },
-  { 0x8702, 0xf940, 0x2000 },
-  { 0x0702, 0xf93f, 0x0000 },
-  { 0x0702, 0xf941, 0x0000 },
-  { 0x8702, 0xf944, 0x2000 },
-  { 0x0702, 0xf943, 0x0000 },
-  { 0x0702, 0xf945, 0x0000 },
-  { 0x8702, 0xf94e, 0x4000 },
-  { 0x8702, 0xf94a, 0x3000 },
-  { 0x8702, 0xf948, 0x2000 },
-  { 0x0702, 0xf947, 0x0000 },
-  { 0x0702, 0xf949, 0x0000 },
-  { 0x8702, 0xf94c, 0x2000 },
-  { 0x0702, 0xf94b, 0x0000 },
-  { 0x0702, 0xf94d, 0x0000 },
-  { 0x8702, 0xf952, 0x3000 },
-  { 0x8702, 0xf950, 0x2000 },
-  { 0x0702, 0xf94f, 0x0000 },
-  { 0x0702, 0xf951, 0x0000 },
-  { 0x8702, 0xf954, 0x2000 },
-  { 0x0702, 0xf953, 0x0000 },
-  { 0x0702, 0xf955, 0x0000 },
-  { 0x8702, 0xf966, 0x5000 },
-  { 0x8702, 0xf95e, 0x4000 },
-  { 0x8702, 0xf95a, 0x3000 },
-  { 0x8702, 0xf958, 0x2000 },
-  { 0x0702, 0xf957, 0x0000 },
-  { 0x0702, 0xf959, 0x0000 },
-  { 0x8702, 0xf95c, 0x2000 },
-  { 0x0702, 0xf95b, 0x0000 },
-  { 0x0702, 0xf95d, 0x0000 },
-  { 0x8702, 0xf962, 0x3000 },
-  { 0x8702, 0xf960, 0x2000 },
-  { 0x0702, 0xf95f, 0x0000 },
-  { 0x0702, 0xf961, 0x0000 },
-  { 0x8702, 0xf964, 0x2000 },
-  { 0x0702, 0xf963, 0x0000 },
-  { 0x0702, 0xf965, 0x0000 },
-  { 0x8702, 0xf96e, 0x4000 },
-  { 0x8702, 0xf96a, 0x3000 },
-  { 0x8702, 0xf968, 0x2000 },
-  { 0x0702, 0xf967, 0x0000 },
-  { 0x0702, 0xf969, 0x0000 },
-  { 0x8702, 0xf96c, 0x2000 },
-  { 0x0702, 0xf96b, 0x0000 },
-  { 0x0702, 0xf96d, 0x0000 },
-  { 0x8702, 0xf972, 0x3000 },
-  { 0x8702, 0xf970, 0x2000 },
-  { 0x0702, 0xf96f, 0x0000 },
-  { 0x0702, 0xf971, 0x0000 },
-  { 0x8702, 0xf974, 0x2000 },
-  { 0x0702, 0xf973, 0x0000 },
-  { 0x0702, 0xf975, 0x0000 },
-  { 0x810e, 0x0077, 0x9000 },
-  { 0x8702, 0xf9f6, 0x8000 },
-  { 0x8702, 0xf9b6, 0x7000 },
-  { 0x8702, 0xf996, 0x6000 },
-  { 0x8702, 0xf986, 0x5000 },
-  { 0x8702, 0xf97e, 0x4000 },
-  { 0x8702, 0xf97a, 0x3000 },
-  { 0x8702, 0xf978, 0x2000 },
-  { 0x0702, 0xf977, 0x0000 },
-  { 0x0702, 0xf979, 0x0000 },
-  { 0x8702, 0xf97c, 0x2000 },
-  { 0x0702, 0xf97b, 0x0000 },
-  { 0x0702, 0xf97d, 0x0000 },
-  { 0x8702, 0xf982, 0x3000 },
-  { 0x8702, 0xf980, 0x2000 },
-  { 0x0702, 0xf97f, 0x0000 },
-  { 0x0702, 0xf981, 0x0000 },
-  { 0x8702, 0xf984, 0x2000 },
-  { 0x0702, 0xf983, 0x0000 },
-  { 0x0702, 0xf985, 0x0000 },
-  { 0x8702, 0xf98e, 0x4000 },
-  { 0x8702, 0xf98a, 0x3000 },
-  { 0x8702, 0xf988, 0x2000 },
-  { 0x0702, 0xf987, 0x0000 },
-  { 0x0702, 0xf989, 0x0000 },
-  { 0x8702, 0xf98c, 0x2000 },
-  { 0x0702, 0xf98b, 0x0000 },
-  { 0x0702, 0xf98d, 0x0000 },
-  { 0x8702, 0xf992, 0x3000 },
-  { 0x8702, 0xf990, 0x2000 },
-  { 0x0702, 0xf98f, 0x0000 },
-  { 0x0702, 0xf991, 0x0000 },
-  { 0x8702, 0xf994, 0x2000 },
-  { 0x0702, 0xf993, 0x0000 },
-  { 0x0702, 0xf995, 0x0000 },
-  { 0x8702, 0xf9a6, 0x5000 },
-  { 0x8702, 0xf99e, 0x4000 },
-  { 0x8702, 0xf99a, 0x3000 },
-  { 0x8702, 0xf998, 0x2000 },
-  { 0x0702, 0xf997, 0x0000 },
-  { 0x0702, 0xf999, 0x0000 },
-  { 0x8702, 0xf99c, 0x2000 },
-  { 0x0702, 0xf99b, 0x0000 },
-  { 0x0702, 0xf99d, 0x0000 },
-  { 0x8702, 0xf9a2, 0x3000 },
-  { 0x8702, 0xf9a0, 0x2000 },
-  { 0x0702, 0xf99f, 0x0000 },
-  { 0x0702, 0xf9a1, 0x0000 },
-  { 0x8702, 0xf9a4, 0x2000 },
-  { 0x0702, 0xf9a3, 0x0000 },
-  { 0x0702, 0xf9a5, 0x0000 },
-  { 0x8702, 0xf9ae, 0x4000 },
-  { 0x8702, 0xf9aa, 0x3000 },
-  { 0x8702, 0xf9a8, 0x2000 },
-  { 0x0702, 0xf9a7, 0x0000 },
-  { 0x0702, 0xf9a9, 0x0000 },
-  { 0x8702, 0xf9ac, 0x2000 },
-  { 0x0702, 0xf9ab, 0x0000 },
-  { 0x0702, 0xf9ad, 0x0000 },
-  { 0x8702, 0xf9b2, 0x3000 },
-  { 0x8702, 0xf9b0, 0x2000 },
-  { 0x0702, 0xf9af, 0x0000 },
-  { 0x0702, 0xf9b1, 0x0000 },
-  { 0x8702, 0xf9b4, 0x2000 },
-  { 0x0702, 0xf9b3, 0x0000 },
-  { 0x0702, 0xf9b5, 0x0000 },
-  { 0x8702, 0xf9d6, 0x6000 },
-  { 0x8702, 0xf9c6, 0x5000 },
-  { 0x8702, 0xf9be, 0x4000 },
-  { 0x8702, 0xf9ba, 0x3000 },
-  { 0x8702, 0xf9b8, 0x2000 },
-  { 0x0702, 0xf9b7, 0x0000 },
-  { 0x0702, 0xf9b9, 0x0000 },
-  { 0x8702, 0xf9bc, 0x2000 },
-  { 0x0702, 0xf9bb, 0x0000 },
-  { 0x0702, 0xf9bd, 0x0000 },
-  { 0x8702, 0xf9c2, 0x3000 },
-  { 0x8702, 0xf9c0, 0x2000 },
-  { 0x0702, 0xf9bf, 0x0000 },
-  { 0x0702, 0xf9c1, 0x0000 },
-  { 0x8702, 0xf9c4, 0x2000 },
-  { 0x0702, 0xf9c3, 0x0000 },
-  { 0x0702, 0xf9c5, 0x0000 },
-  { 0x8702, 0xf9ce, 0x4000 },
-  { 0x8702, 0xf9ca, 0x3000 },
-  { 0x8702, 0xf9c8, 0x2000 },
-  { 0x0702, 0xf9c7, 0x0000 },
-  { 0x0702, 0xf9c9, 0x0000 },
-  { 0x8702, 0xf9cc, 0x2000 },
-  { 0x0702, 0xf9cb, 0x0000 },
-  { 0x0702, 0xf9cd, 0x0000 },
-  { 0x8702, 0xf9d2, 0x3000 },
-  { 0x8702, 0xf9d0, 0x2000 },
-  { 0x0702, 0xf9cf, 0x0000 },
-  { 0x0702, 0xf9d1, 0x0000 },
-  { 0x8702, 0xf9d4, 0x2000 },
-  { 0x0702, 0xf9d3, 0x0000 },
-  { 0x0702, 0xf9d5, 0x0000 },
-  { 0x8702, 0xf9e6, 0x5000 },
-  { 0x8702, 0xf9de, 0x4000 },
-  { 0x8702, 0xf9da, 0x3000 },
-  { 0x8702, 0xf9d8, 0x2000 },
-  { 0x0702, 0xf9d7, 0x0000 },
-  { 0x0702, 0xf9d9, 0x0000 },
-  { 0x8702, 0xf9dc, 0x2000 },
-  { 0x0702, 0xf9db, 0x0000 },
-  { 0x0702, 0xf9dd, 0x0000 },
-  { 0x8702, 0xf9e2, 0x3000 },
-  { 0x8702, 0xf9e0, 0x2000 },
-  { 0x0702, 0xf9df, 0x0000 },
-  { 0x0702, 0xf9e1, 0x0000 },
-  { 0x8702, 0xf9e4, 0x2000 },
-  { 0x0702, 0xf9e3, 0x0000 },
-  { 0x0702, 0xf9e5, 0x0000 },
-  { 0x8702, 0xf9ee, 0x4000 },
-  { 0x8702, 0xf9ea, 0x3000 },
-  { 0x8702, 0xf9e8, 0x2000 },
-  { 0x0702, 0xf9e7, 0x0000 },
-  { 0x0702, 0xf9e9, 0x0000 },
-  { 0x8702, 0xf9ec, 0x2000 },
-  { 0x0702, 0xf9eb, 0x0000 },
-  { 0x0702, 0xf9ed, 0x0000 },
-  { 0x8702, 0xf9f2, 0x3000 },
-  { 0x8702, 0xf9f0, 0x2000 },
-  { 0x0702, 0xf9ef, 0x0000 },
-  { 0x0702, 0xf9f1, 0x0000 },
-  { 0x8702, 0xf9f4, 0x2000 },
-  { 0x0702, 0xf9f3, 0x0000 },
-  { 0x0702, 0xf9f5, 0x0000 },
-  { 0x810e, 0x0037, 0x7000 },
-  { 0x8702, 0xfa16, 0x6000 },
-  { 0x8702, 0xfa06, 0x5000 },
-  { 0x8702, 0xf9fe, 0x4000 },
-  { 0x8702, 0xf9fa, 0x3000 },
-  { 0x8702, 0xf9f8, 0x2000 },
-  { 0x0702, 0xf9f7, 0x0000 },
-  { 0x0702, 0xf9f9, 0x0000 },
-  { 0x8702, 0xf9fc, 0x2000 },
-  { 0x0702, 0xf9fb, 0x0000 },
-  { 0x0702, 0xf9fd, 0x0000 },
-  { 0x8702, 0xfa02, 0x3000 },
-  { 0x8702, 0xfa00, 0x2000 },
-  { 0x0702, 0xf9ff, 0x0000 },
-  { 0x0702, 0xfa01, 0x0000 },
-  { 0x8702, 0xfa04, 0x2000 },
-  { 0x0702, 0xfa03, 0x0000 },
-  { 0x0702, 0xfa05, 0x0000 },
-  { 0x8702, 0xfa0e, 0x4000 },
-  { 0x8702, 0xfa0a, 0x3000 },
-  { 0x8702, 0xfa08, 0x2000 },
-  { 0x0702, 0xfa07, 0x0000 },
-  { 0x0702, 0xfa09, 0x0000 },
-  { 0x8702, 0xfa0c, 0x2000 },
-  { 0x0702, 0xfa0b, 0x0000 },
-  { 0x0702, 0xfa0d, 0x0000 },
-  { 0x8702, 0xfa12, 0x3000 },
-  { 0x8702, 0xfa10, 0x2000 },
-  { 0x0702, 0xfa0f, 0x0000 },
-  { 0x0702, 0xfa11, 0x0000 },
-  { 0x8702, 0xfa14, 0x2000 },
-  { 0x0702, 0xfa13, 0x0000 },
-  { 0x0702, 0xfa15, 0x0000 },
-  { 0x810e, 0x0027, 0x5000 },
-  { 0x810e, 0x0001, 0x4000 },
-  { 0x8702, 0xfa1a, 0x3000 },
-  { 0x8702, 0xfa18, 0x2000 },
-  { 0x0702, 0xfa17, 0x0000 },
-  { 0x0702, 0xfa19, 0x0000 },
-  { 0x8702, 0xfa1c, 0x2000 },
-  { 0x0702, 0xfa1b, 0x0000 },
-  { 0x0702, 0xfa1d, 0x0000 },
-  { 0x810e, 0x0023, 0x3000 },
-  { 0x810e, 0x0021, 0x2000 },
-  { 0x010e, 0x0020, 0x0000 },
-  { 0x010e, 0x0022, 0x0000 },
-  { 0x810e, 0x0025, 0x2000 },
-  { 0x010e, 0x0024, 0x0000 },
-  { 0x010e, 0x0026, 0x0000 },
-  { 0x810e, 0x002f, 0x4000 },
-  { 0x810e, 0x002b, 0x3000 },
-  { 0x810e, 0x0029, 0x2000 },
-  { 0x010e, 0x0028, 0x0000 },
-  { 0x010e, 0x002a, 0x0000 },
-  { 0x810e, 0x002d, 0x2000 },
-  { 0x010e, 0x002c, 0x0000 },
-  { 0x010e, 0x002e, 0x0000 },
-  { 0x810e, 0x0033, 0x3000 },
-  { 0x810e, 0x0031, 0x2000 },
-  { 0x010e, 0x0030, 0x0000 },
-  { 0x010e, 0x0032, 0x0000 },
-  { 0x810e, 0x0035, 0x2000 },
-  { 0x010e, 0x0034, 0x0000 },
-  { 0x010e, 0x0036, 0x0000 },
-  { 0x810e, 0x0057, 0x6000 },
-  { 0x810e, 0x0047, 0x5000 },
-  { 0x810e, 0x003f, 0x4000 },
-  { 0x810e, 0x003b, 0x3000 },
-  { 0x810e, 0x0039, 0x2000 },
-  { 0x010e, 0x0038, 0x0000 },
-  { 0x010e, 0x003a, 0x0000 },
-  { 0x810e, 0x003d, 0x2000 },
-  { 0x010e, 0x003c, 0x0000 },
-  { 0x010e, 0x003e, 0x0000 },
-  { 0x810e, 0x0043, 0x3000 },
-  { 0x810e, 0x0041, 0x2000 },
-  { 0x010e, 0x0040, 0x0000 },
-  { 0x010e, 0x0042, 0x0000 },
-  { 0x810e, 0x0045, 0x2000 },
-  { 0x010e, 0x0044, 0x0000 },
-  { 0x010e, 0x0046, 0x0000 },
-  { 0x810e, 0x004f, 0x4000 },
-  { 0x810e, 0x004b, 0x3000 },
-  { 0x810e, 0x0049, 0x2000 },
-  { 0x010e, 0x0048, 0x0000 },
-  { 0x010e, 0x004a, 0x0000 },
-  { 0x810e, 0x004d, 0x2000 },
-  { 0x010e, 0x004c, 0x0000 },
-  { 0x010e, 0x004e, 0x0000 },
-  { 0x810e, 0x0053, 0x3000 },
-  { 0x810e, 0x0051, 0x2000 },
-  { 0x010e, 0x0050, 0x0000 },
-  { 0x010e, 0x0052, 0x0000 },
-  { 0x810e, 0x0055, 0x2000 },
-  { 0x010e, 0x0054, 0x0000 },
-  { 0x010e, 0x0056, 0x0000 },
-  { 0x810e, 0x0067, 0x5000 },
-  { 0x810e, 0x005f, 0x4000 },
-  { 0x810e, 0x005b, 0x3000 },
-  { 0x810e, 0x0059, 0x2000 },
-  { 0x010e, 0x0058, 0x0000 },
-  { 0x010e, 0x005a, 0x0000 },
-  { 0x810e, 0x005d, 0x2000 },
-  { 0x010e, 0x005c, 0x0000 },
-  { 0x010e, 0x005e, 0x0000 },
-  { 0x810e, 0x0063, 0x3000 },
-  { 0x810e, 0x0061, 0x2000 },
-  { 0x010e, 0x0060, 0x0000 },
-  { 0x010e, 0x0062, 0x0000 },
-  { 0x810e, 0x0065, 0x2000 },
-  { 0x010e, 0x0064, 0x0000 },
-  { 0x010e, 0x0066, 0x0000 },
-  { 0x810e, 0x006f, 0x4000 },
-  { 0x810e, 0x006b, 0x3000 },
-  { 0x810e, 0x0069, 0x2000 },
-  { 0x010e, 0x0068, 0x0000 },
-  { 0x010e, 0x006a, 0x0000 },
-  { 0x810e, 0x006d, 0x2000 },
-  { 0x010e, 0x006c, 0x0000 },
-  { 0x010e, 0x006e, 0x0000 },
-  { 0x810e, 0x0073, 0x3000 },
-  { 0x810e, 0x0071, 0x2000 },
-  { 0x010e, 0x0070, 0x0000 },
-  { 0x010e, 0x0072, 0x0000 },
-  { 0x810e, 0x0075, 0x2000 },
-  { 0x010e, 0x0074, 0x0000 },
-  { 0x010e, 0x0076, 0x0000 },
-  { 0x8c0e, 0x0177, 0x8000 },
-  { 0x8c0e, 0x0137, 0x7000 },
-  { 0x8c0e, 0x0117, 0x6000 },
-  { 0x8c0e, 0x0107, 0x5000 },
-  { 0x810e, 0x007f, 0x4000 },
-  { 0x810e, 0x007b, 0x3000 },
-  { 0x810e, 0x0079, 0x2000 },
-  { 0x010e, 0x0078, 0x0000 },
-  { 0x010e, 0x007a, 0x0000 },
-  { 0x810e, 0x007d, 0x2000 },
-  { 0x010e, 0x007c, 0x0000 },
-  { 0x010e, 0x007e, 0x0000 },
-  { 0x8c0e, 0x0103, 0x3000 },
-  { 0x8c0e, 0x0101, 0x2000 },
-  { 0x0c0e, 0x0100, 0x0000 },
-  { 0x0c0e, 0x0102, 0x0000 },
-  { 0x8c0e, 0x0105, 0x2000 },
-  { 0x0c0e, 0x0104, 0x0000 },
-  { 0x0c0e, 0x0106, 0x0000 },
-  { 0x8c0e, 0x010f, 0x4000 },
-  { 0x8c0e, 0x010b, 0x3000 },
-  { 0x8c0e, 0x0109, 0x2000 },
-  { 0x0c0e, 0x0108, 0x0000 },
-  { 0x0c0e, 0x010a, 0x0000 },
-  { 0x8c0e, 0x010d, 0x2000 },
-  { 0x0c0e, 0x010c, 0x0000 },
-  { 0x0c0e, 0x010e, 0x0000 },
-  { 0x8c0e, 0x0113, 0x3000 },
-  { 0x8c0e, 0x0111, 0x2000 },
-  { 0x0c0e, 0x0110, 0x0000 },
-  { 0x0c0e, 0x0112, 0x0000 },
-  { 0x8c0e, 0x0115, 0x2000 },
-  { 0x0c0e, 0x0114, 0x0000 },
-  { 0x0c0e, 0x0116, 0x0000 },
-  { 0x8c0e, 0x0127, 0x5000 },
-  { 0x8c0e, 0x011f, 0x4000 },
-  { 0x8c0e, 0x011b, 0x3000 },
-  { 0x8c0e, 0x0119, 0x2000 },
-  { 0x0c0e, 0x0118, 0x0000 },
-  { 0x0c0e, 0x011a, 0x0000 },
-  { 0x8c0e, 0x011d, 0x2000 },
-  { 0x0c0e, 0x011c, 0x0000 },
-  { 0x0c0e, 0x011e, 0x0000 },
-  { 0x8c0e, 0x0123, 0x3000 },
-  { 0x8c0e, 0x0121, 0x2000 },
-  { 0x0c0e, 0x0120, 0x0000 },
-  { 0x0c0e, 0x0122, 0x0000 },
-  { 0x8c0e, 0x0125, 0x2000 },
-  { 0x0c0e, 0x0124, 0x0000 },
-  { 0x0c0e, 0x0126, 0x0000 },
-  { 0x8c0e, 0x012f, 0x4000 },
-  { 0x8c0e, 0x012b, 0x3000 },
-  { 0x8c0e, 0x0129, 0x2000 },
-  { 0x0c0e, 0x0128, 0x0000 },
-  { 0x0c0e, 0x012a, 0x0000 },
-  { 0x8c0e, 0x012d, 0x2000 },
-  { 0x0c0e, 0x012c, 0x0000 },
-  { 0x0c0e, 0x012e, 0x0000 },
-  { 0x8c0e, 0x0133, 0x3000 },
-  { 0x8c0e, 0x0131, 0x2000 },
-  { 0x0c0e, 0x0130, 0x0000 },
-  { 0x0c0e, 0x0132, 0x0000 },
-  { 0x8c0e, 0x0135, 0x2000 },
-  { 0x0c0e, 0x0134, 0x0000 },
-  { 0x0c0e, 0x0136, 0x0000 },
-  { 0x8c0e, 0x0157, 0x6000 },
-  { 0x8c0e, 0x0147, 0x5000 },
-  { 0x8c0e, 0x013f, 0x4000 },
-  { 0x8c0e, 0x013b, 0x3000 },
-  { 0x8c0e, 0x0139, 0x2000 },
-  { 0x0c0e, 0x0138, 0x0000 },
-  { 0x0c0e, 0x013a, 0x0000 },
-  { 0x8c0e, 0x013d, 0x2000 },
-  { 0x0c0e, 0x013c, 0x0000 },
-  { 0x0c0e, 0x013e, 0x0000 },
-  { 0x8c0e, 0x0143, 0x3000 },
-  { 0x8c0e, 0x0141, 0x2000 },
-  { 0x0c0e, 0x0140, 0x0000 },
-  { 0x0c0e, 0x0142, 0x0000 },
-  { 0x8c0e, 0x0145, 0x2000 },
-  { 0x0c0e, 0x0144, 0x0000 },
-  { 0x0c0e, 0x0146, 0x0000 },
-  { 0x8c0e, 0x014f, 0x4000 },
-  { 0x8c0e, 0x014b, 0x3000 },
-  { 0x8c0e, 0x0149, 0x2000 },
-  { 0x0c0e, 0x0148, 0x0000 },
-  { 0x0c0e, 0x014a, 0x0000 },
-  { 0x8c0e, 0x014d, 0x2000 },
-  { 0x0c0e, 0x014c, 0x0000 },
-  { 0x0c0e, 0x014e, 0x0000 },
-  { 0x8c0e, 0x0153, 0x3000 },
-  { 0x8c0e, 0x0151, 0x2000 },
-  { 0x0c0e, 0x0150, 0x0000 },
-  { 0x0c0e, 0x0152, 0x0000 },
-  { 0x8c0e, 0x0155, 0x2000 },
-  { 0x0c0e, 0x0154, 0x0000 },
-  { 0x0c0e, 0x0156, 0x0000 },
-  { 0x8c0e, 0x0167, 0x5000 },
-  { 0x8c0e, 0x015f, 0x4000 },
-  { 0x8c0e, 0x015b, 0x3000 },
-  { 0x8c0e, 0x0159, 0x2000 },
-  { 0x0c0e, 0x0158, 0x0000 },
-  { 0x0c0e, 0x015a, 0x0000 },
-  { 0x8c0e, 0x015d, 0x2000 },
-  { 0x0c0e, 0x015c, 0x0000 },
-  { 0x0c0e, 0x015e, 0x0000 },
-  { 0x8c0e, 0x0163, 0x3000 },
-  { 0x8c0e, 0x0161, 0x2000 },
-  { 0x0c0e, 0x0160, 0x0000 },
-  { 0x0c0e, 0x0162, 0x0000 },
-  { 0x8c0e, 0x0165, 0x2000 },
-  { 0x0c0e, 0x0164, 0x0000 },
-  { 0x0c0e, 0x0166, 0x0000 },
-  { 0x8c0e, 0x016f, 0x4000 },
-  { 0x8c0e, 0x016b, 0x3000 },
-  { 0x8c0e, 0x0169, 0x2000 },
-  { 0x0c0e, 0x0168, 0x0000 },
-  { 0x0c0e, 0x016a, 0x0000 },
-  { 0x8c0e, 0x016d, 0x2000 },
-  { 0x0c0e, 0x016c, 0x0000 },
-  { 0x0c0e, 0x016e, 0x0000 },
-  { 0x8c0e, 0x0173, 0x3000 },
-  { 0x8c0e, 0x0171, 0x2000 },
-  { 0x0c0e, 0x0170, 0x0000 },
-  { 0x0c0e, 0x0172, 0x0000 },
-  { 0x8c0e, 0x0175, 0x2000 },
-  { 0x0c0e, 0x0174, 0x0000 },
-  { 0x0c0e, 0x0176, 0x0000 },
-  { 0x8c0e, 0x01b7, 0x7000 },
-  { 0x8c0e, 0x0197, 0x6000 },
-  { 0x8c0e, 0x0187, 0x5000 },
-  { 0x8c0e, 0x017f, 0x4000 },
-  { 0x8c0e, 0x017b, 0x3000 },
-  { 0x8c0e, 0x0179, 0x2000 },
-  { 0x0c0e, 0x0178, 0x0000 },
-  { 0x0c0e, 0x017a, 0x0000 },
-  { 0x8c0e, 0x017d, 0x2000 },
-  { 0x0c0e, 0x017c, 0x0000 },
-  { 0x0c0e, 0x017e, 0x0000 },
-  { 0x8c0e, 0x0183, 0x3000 },
-  { 0x8c0e, 0x0181, 0x2000 },
-  { 0x0c0e, 0x0180, 0x0000 },
-  { 0x0c0e, 0x0182, 0x0000 },
-  { 0x8c0e, 0x0185, 0x2000 },
-  { 0x0c0e, 0x0184, 0x0000 },
-  { 0x0c0e, 0x0186, 0x0000 },
-  { 0x8c0e, 0x018f, 0x4000 },
-  { 0x8c0e, 0x018b, 0x3000 },
-  { 0x8c0e, 0x0189, 0x2000 },
-  { 0x0c0e, 0x0188, 0x0000 },
-  { 0x0c0e, 0x018a, 0x0000 },
-  { 0x8c0e, 0x018d, 0x2000 },
-  { 0x0c0e, 0x018c, 0x0000 },
-  { 0x0c0e, 0x018e, 0x0000 },
-  { 0x8c0e, 0x0193, 0x3000 },
-  { 0x8c0e, 0x0191, 0x2000 },
-  { 0x0c0e, 0x0190, 0x0000 },
-  { 0x0c0e, 0x0192, 0x0000 },
-  { 0x8c0e, 0x0195, 0x2000 },
-  { 0x0c0e, 0x0194, 0x0000 },
-  { 0x0c0e, 0x0196, 0x0000 },
-  { 0x8c0e, 0x01a7, 0x5000 },
-  { 0x8c0e, 0x019f, 0x4000 },
-  { 0x8c0e, 0x019b, 0x3000 },
-  { 0x8c0e, 0x0199, 0x2000 },
-  { 0x0c0e, 0x0198, 0x0000 },
-  { 0x0c0e, 0x019a, 0x0000 },
-  { 0x8c0e, 0x019d, 0x2000 },
-  { 0x0c0e, 0x019c, 0x0000 },
-  { 0x0c0e, 0x019e, 0x0000 },
-  { 0x8c0e, 0x01a3, 0x3000 },
-  { 0x8c0e, 0x01a1, 0x2000 },
-  { 0x0c0e, 0x01a0, 0x0000 },
-  { 0x0c0e, 0x01a2, 0x0000 },
-  { 0x8c0e, 0x01a5, 0x2000 },
-  { 0x0c0e, 0x01a4, 0x0000 },
-  { 0x0c0e, 0x01a6, 0x0000 },
-  { 0x8c0e, 0x01af, 0x4000 },
-  { 0x8c0e, 0x01ab, 0x3000 },
-  { 0x8c0e, 0x01a9, 0x2000 },
-  { 0x0c0e, 0x01a8, 0x0000 },
-  { 0x0c0e, 0x01aa, 0x0000 },
-  { 0x8c0e, 0x01ad, 0x2000 },
-  { 0x0c0e, 0x01ac, 0x0000 },
-  { 0x0c0e, 0x01ae, 0x0000 },
-  { 0x8c0e, 0x01b3, 0x3000 },
-  { 0x8c0e, 0x01b1, 0x2000 },
-  { 0x0c0e, 0x01b0, 0x0000 },
-  { 0x0c0e, 0x01b2, 0x0000 },
-  { 0x8c0e, 0x01b5, 0x2000 },
-  { 0x0c0e, 0x01b4, 0x0000 },
-  { 0x0c0e, 0x01b6, 0x0000 },
-  { 0x8c0e, 0x01d7, 0x6000 },
-  { 0x8c0e, 0x01c7, 0x5000 },
-  { 0x8c0e, 0x01bf, 0x4000 },
-  { 0x8c0e, 0x01bb, 0x3000 },
-  { 0x8c0e, 0x01b9, 0x2000 },
-  { 0x0c0e, 0x01b8, 0x0000 },
-  { 0x0c0e, 0x01ba, 0x0000 },
-  { 0x8c0e, 0x01bd, 0x2000 },
-  { 0x0c0e, 0x01bc, 0x0000 },
-  { 0x0c0e, 0x01be, 0x0000 },
-  { 0x8c0e, 0x01c3, 0x3000 },
-  { 0x8c0e, 0x01c1, 0x2000 },
-  { 0x0c0e, 0x01c0, 0x0000 },
-  { 0x0c0e, 0x01c2, 0x0000 },
-  { 0x8c0e, 0x01c5, 0x2000 },
-  { 0x0c0e, 0x01c4, 0x0000 },
-  { 0x0c0e, 0x01c6, 0x0000 },
-  { 0x8c0e, 0x01cf, 0x4000 },
-  { 0x8c0e, 0x01cb, 0x3000 },
-  { 0x8c0e, 0x01c9, 0x2000 },
-  { 0x0c0e, 0x01c8, 0x0000 },
-  { 0x0c0e, 0x01ca, 0x0000 },
-  { 0x8c0e, 0x01cd, 0x2000 },
-  { 0x0c0e, 0x01cc, 0x0000 },
-  { 0x0c0e, 0x01ce, 0x0000 },
-  { 0x8c0e, 0x01d3, 0x3000 },
-  { 0x8c0e, 0x01d1, 0x2000 },
-  { 0x0c0e, 0x01d0, 0x0000 },
-  { 0x0c0e, 0x01d2, 0x0000 },
-  { 0x8c0e, 0x01d5, 0x2000 },
-  { 0x0c0e, 0x01d4, 0x0000 },
-  { 0x0c0e, 0x01d6, 0x0000 },
-  { 0x8c0e, 0x01e7, 0x5000 },
-  { 0x8c0e, 0x01df, 0x4000 },
-  { 0x8c0e, 0x01db, 0x3000 },
-  { 0x8c0e, 0x01d9, 0x2000 },
-  { 0x0c0e, 0x01d8, 0x0000 },
-  { 0x0c0e, 0x01da, 0x0000 },
-  { 0x8c0e, 0x01dd, 0x2000 },
-  { 0x0c0e, 0x01dc, 0x0000 },
-  { 0x0c0e, 0x01de, 0x0000 },
-  { 0x8c0e, 0x01e3, 0x3000 },
-  { 0x8c0e, 0x01e1, 0x2000 },
-  { 0x0c0e, 0x01e0, 0x0000 },
-  { 0x0c0e, 0x01e2, 0x0000 },
-  { 0x8c0e, 0x01e5, 0x2000 },
-  { 0x0c0e, 0x01e4, 0x0000 },
-  { 0x0c0e, 0x01e6, 0x0000 },
-  { 0x8c0e, 0x01ef, 0x4000 },
-  { 0x8c0e, 0x01eb, 0x3000 },
-  { 0x8c0e, 0x01e9, 0x2000 },
-  { 0x0c0e, 0x01e8, 0x0000 },
-  { 0x0c0e, 0x01ea, 0x0000 },
-  { 0x8c0e, 0x01ed, 0x2000 },
-  { 0x0c0e, 0x01ec, 0x0000 },
-  { 0x0c0e, 0x01ee, 0x0000 },
-  { 0x830f, 0xfffd, 0x2000 },
-  { 0x030f, 0x0000, 0x0000 },
-  { 0x0310, 0x0000, 0x1000 },
-  { 0x0310, 0xfffd, 0x0000 },
+  { 0x09800000, 0x0000001f },
+  { 0x09000020, 0x74000000 },
+  { 0x09800021, 0x54000002 },
+  { 0x09000024, 0x5c000000 },
+  { 0x09800025, 0x54000002 },
+  { 0x09000028, 0x58000000 },
+  { 0x09000029, 0x48000000 },
+  { 0x0900002a, 0x54000000 },
+  { 0x0900002b, 0x64000000 },
+  { 0x0900002c, 0x54000000 },
+  { 0x0900002d, 0x44000000 },
+  { 0x0980002e, 0x54000001 },
+  { 0x09800030, 0x34000009 },
+  { 0x0980003a, 0x54000001 },
+  { 0x0980003c, 0x64000002 },
+  { 0x0980003f, 0x54000001 },
+  { 0x21000041, 0x24000020 },
+  { 0x21000042, 0x24000020 },
+  { 0x21000043, 0x24000020 },
+  { 0x21000044, 0x24000020 },
+  { 0x21000045, 0x24000020 },
+  { 0x21000046, 0x24000020 },
+  { 0x21000047, 0x24000020 },
+  { 0x21000048, 0x24000020 },
+  { 0x21000049, 0x24000020 },
+  { 0x2100004a, 0x24000020 },
+  { 0x2100004b, 0x24000020 },
+  { 0x2100004c, 0x24000020 },
+  { 0x2100004d, 0x24000020 },
+  { 0x2100004e, 0x24000020 },
+  { 0x2100004f, 0x24000020 },
+  { 0x21000050, 0x24000020 },
+  { 0x21000051, 0x24000020 },
+  { 0x21000052, 0x24000020 },
+  { 0x21000053, 0x24000020 },
+  { 0x21000054, 0x24000020 },
+  { 0x21000055, 0x24000020 },
+  { 0x21000056, 0x24000020 },
+  { 0x21000057, 0x24000020 },
+  { 0x21000058, 0x24000020 },
+  { 0x21000059, 0x24000020 },
+  { 0x2100005a, 0x24000020 },
+  { 0x0900005b, 0x58000000 },
+  { 0x0900005c, 0x54000000 },
+  { 0x0900005d, 0x48000000 },
+  { 0x0900005e, 0x60000000 },
+  { 0x0900005f, 0x40000000 },
+  { 0x09000060, 0x60000000 },
+  { 0x21000061, 0x1400ffe0 },
+  { 0x21000062, 0x1400ffe0 },
+  { 0x21000063, 0x1400ffe0 },
+  { 0x21000064, 0x1400ffe0 },
+  { 0x21000065, 0x1400ffe0 },
+  { 0x21000066, 0x1400ffe0 },
+  { 0x21000067, 0x1400ffe0 },
+  { 0x21000068, 0x1400ffe0 },
+  { 0x21000069, 0x1400ffe0 },
+  { 0x2100006a, 0x1400ffe0 },
+  { 0x2100006b, 0x1400ffe0 },
+  { 0x2100006c, 0x1400ffe0 },
+  { 0x2100006d, 0x1400ffe0 },
+  { 0x2100006e, 0x1400ffe0 },
+  { 0x2100006f, 0x1400ffe0 },
+  { 0x21000070, 0x1400ffe0 },
+  { 0x21000071, 0x1400ffe0 },
+  { 0x21000072, 0x1400ffe0 },
+  { 0x21000073, 0x1400ffe0 },
+  { 0x21000074, 0x1400ffe0 },
+  { 0x21000075, 0x1400ffe0 },
+  { 0x21000076, 0x1400ffe0 },
+  { 0x21000077, 0x1400ffe0 },
+  { 0x21000078, 0x1400ffe0 },
+  { 0x21000079, 0x1400ffe0 },
+  { 0x2100007a, 0x1400ffe0 },
+  { 0x0900007b, 0x58000000 },
+  { 0x0900007c, 0x64000000 },
+  { 0x0900007d, 0x48000000 },
+  { 0x0900007e, 0x64000000 },
+  { 0x0980007f, 0x00000020 },
+  { 0x090000a0, 0x74000000 },
+  { 0x090000a1, 0x54000000 },
+  { 0x098000a2, 0x5c000003 },
+  { 0x098000a6, 0x68000001 },
+  { 0x090000a8, 0x60000000 },
+  { 0x090000a9, 0x68000000 },
+  { 0x210000aa, 0x14000000 },
+  { 0x090000ab, 0x50000000 },
+  { 0x090000ac, 0x64000000 },
+  { 0x090000ad, 0x04000000 },
+  { 0x090000ae, 0x68000000 },
+  { 0x090000af, 0x60000000 },
+  { 0x090000b0, 0x68000000 },
+  { 0x090000b1, 0x64000000 },
+  { 0x098000b2, 0x3c000001 },
+  { 0x090000b4, 0x60000000 },
+  { 0x090000b5, 0x140002e7 },
+  { 0x090000b6, 0x68000000 },
+  { 0x090000b7, 0x54000000 },
+  { 0x090000b8, 0x60000000 },
+  { 0x090000b9, 0x3c000000 },
+  { 0x210000ba, 0x14000000 },
+  { 0x090000bb, 0x4c000000 },
+  { 0x098000bc, 0x3c000002 },
+  { 0x090000bf, 0x54000000 },
+  { 0x210000c0, 0x24000020 },
+  { 0x210000c1, 0x24000020 },
+  { 0x210000c2, 0x24000020 },
+  { 0x210000c3, 0x24000020 },
+  { 0x210000c4, 0x24000020 },
+  { 0x210000c5, 0x24000020 },
+  { 0x210000c6, 0x24000020 },
+  { 0x210000c7, 0x24000020 },
+  { 0x210000c8, 0x24000020 },
+  { 0x210000c9, 0x24000020 },
+  { 0x210000ca, 0x24000020 },
+  { 0x210000cb, 0x24000020 },
+  { 0x210000cc, 0x24000020 },
+  { 0x210000cd, 0x24000020 },
+  { 0x210000ce, 0x24000020 },
+  { 0x210000cf, 0x24000020 },
+  { 0x210000d0, 0x24000020 },
+  { 0x210000d1, 0x24000020 },
+  { 0x210000d2, 0x24000020 },
+  { 0x210000d3, 0x24000020 },
+  { 0x210000d4, 0x24000020 },
+  { 0x210000d5, 0x24000020 },
+  { 0x210000d6, 0x24000020 },
+  { 0x090000d7, 0x64000000 },
+  { 0x210000d8, 0x24000020 },
+  { 0x210000d9, 0x24000020 },
+  { 0x210000da, 0x24000020 },
+  { 0x210000db, 0x24000020 },
+  { 0x210000dc, 0x24000020 },
+  { 0x210000dd, 0x24000020 },
+  { 0x210000de, 0x24000020 },
+  { 0x210000df, 0x14000000 },
+  { 0x210000e0, 0x1400ffe0 },
+  { 0x210000e1, 0x1400ffe0 },
+  { 0x210000e2, 0x1400ffe0 },
+  { 0x210000e3, 0x1400ffe0 },
+  { 0x210000e4, 0x1400ffe0 },
+  { 0x210000e5, 0x1400ffe0 },
+  { 0x210000e6, 0x1400ffe0 },
+  { 0x210000e7, 0x1400ffe0 },
+  { 0x210000e8, 0x1400ffe0 },
+  { 0x210000e9, 0x1400ffe0 },
+  { 0x210000ea, 0x1400ffe0 },
+  { 0x210000eb, 0x1400ffe0 },
+  { 0x210000ec, 0x1400ffe0 },
+  { 0x210000ed, 0x1400ffe0 },
+  { 0x210000ee, 0x1400ffe0 },
+  { 0x210000ef, 0x1400ffe0 },
+  { 0x210000f0, 0x1400ffe0 },
+  { 0x210000f1, 0x1400ffe0 },
+  { 0x210000f2, 0x1400ffe0 },
+  { 0x210000f3, 0x1400ffe0 },
+  { 0x210000f4, 0x1400ffe0 },
+  { 0x210000f5, 0x1400ffe0 },
+  { 0x210000f6, 0x1400ffe0 },
+  { 0x090000f7, 0x64000000 },
+  { 0x210000f8, 0x1400ffe0 },
+  { 0x210000f9, 0x1400ffe0 },
+  { 0x210000fa, 0x1400ffe0 },
+  { 0x210000fb, 0x1400ffe0 },
+  { 0x210000fc, 0x1400ffe0 },
+  { 0x210000fd, 0x1400ffe0 },
+  { 0x210000fe, 0x1400ffe0 },
+  { 0x210000ff, 0x14000079 },
+  { 0x21000100, 0x24000001 },
+  { 0x21000101, 0x1400ffff },
+  { 0x21000102, 0x24000001 },
+  { 0x21000103, 0x1400ffff },
+  { 0x21000104, 0x24000001 },
+  { 0x21000105, 0x1400ffff },
+  { 0x21000106, 0x24000001 },
+  { 0x21000107, 0x1400ffff },
+  { 0x21000108, 0x24000001 },
+  { 0x21000109, 0x1400ffff },
+  { 0x2100010a, 0x24000001 },
+  { 0x2100010b, 0x1400ffff },
+  { 0x2100010c, 0x24000001 },
+  { 0x2100010d, 0x1400ffff },
+  { 0x2100010e, 0x24000001 },
+  { 0x2100010f, 0x1400ffff },
+  { 0x21000110, 0x24000001 },
+  { 0x21000111, 0x1400ffff },
+  { 0x21000112, 0x24000001 },
+  { 0x21000113, 0x1400ffff },
+  { 0x21000114, 0x24000001 },
+  { 0x21000115, 0x1400ffff },
+  { 0x21000116, 0x24000001 },
+  { 0x21000117, 0x1400ffff },
+  { 0x21000118, 0x24000001 },
+  { 0x21000119, 0x1400ffff },
+  { 0x2100011a, 0x24000001 },
+  { 0x2100011b, 0x1400ffff },
+  { 0x2100011c, 0x24000001 },
+  { 0x2100011d, 0x1400ffff },
+  { 0x2100011e, 0x24000001 },
+  { 0x2100011f, 0x1400ffff },
+  { 0x21000120, 0x24000001 },
+  { 0x21000121, 0x1400ffff },
+  { 0x21000122, 0x24000001 },
+  { 0x21000123, 0x1400ffff },
+  { 0x21000124, 0x24000001 },
+  { 0x21000125, 0x1400ffff },
+  { 0x21000126, 0x24000001 },
+  { 0x21000127, 0x1400ffff },
+  { 0x21000128, 0x24000001 },
+  { 0x21000129, 0x1400ffff },
+  { 0x2100012a, 0x24000001 },
+  { 0x2100012b, 0x1400ffff },
+  { 0x2100012c, 0x24000001 },
+  { 0x2100012d, 0x1400ffff },
+  { 0x2100012e, 0x24000001 },
+  { 0x2100012f, 0x1400ffff },
+  { 0x21000130, 0x2400ff39 },
+  { 0x21000131, 0x1400ff18 },
+  { 0x21000132, 0x24000001 },
+  { 0x21000133, 0x1400ffff },
+  { 0x21000134, 0x24000001 },
+  { 0x21000135, 0x1400ffff },
+  { 0x21000136, 0x24000001 },
+  { 0x21000137, 0x1400ffff },
+  { 0x21000138, 0x14000000 },
+  { 0x21000139, 0x24000001 },
+  { 0x2100013a, 0x1400ffff },
+  { 0x2100013b, 0x24000001 },
+  { 0x2100013c, 0x1400ffff },
+  { 0x2100013d, 0x24000001 },
+  { 0x2100013e, 0x1400ffff },
+  { 0x2100013f, 0x24000001 },
+  { 0x21000140, 0x1400ffff },
+  { 0x21000141, 0x24000001 },
+  { 0x21000142, 0x1400ffff },
+  { 0x21000143, 0x24000001 },
+  { 0x21000144, 0x1400ffff },
+  { 0x21000145, 0x24000001 },
+  { 0x21000146, 0x1400ffff },
+  { 0x21000147, 0x24000001 },
+  { 0x21000148, 0x1400ffff },
+  { 0x21000149, 0x14000000 },
+  { 0x2100014a, 0x24000001 },
+  { 0x2100014b, 0x1400ffff },
+  { 0x2100014c, 0x24000001 },
+  { 0x2100014d, 0x1400ffff },
+  { 0x2100014e, 0x24000001 },
+  { 0x2100014f, 0x1400ffff },
+  { 0x21000150, 0x24000001 },
+  { 0x21000151, 0x1400ffff },
+  { 0x21000152, 0x24000001 },
+  { 0x21000153, 0x1400ffff },
+  { 0x21000154, 0x24000001 },
+  { 0x21000155, 0x1400ffff },
+  { 0x21000156, 0x24000001 },
+  { 0x21000157, 0x1400ffff },
+  { 0x21000158, 0x24000001 },
+  { 0x21000159, 0x1400ffff },
+  { 0x2100015a, 0x24000001 },
+  { 0x2100015b, 0x1400ffff },
+  { 0x2100015c, 0x24000001 },
+  { 0x2100015d, 0x1400ffff },
+  { 0x2100015e, 0x24000001 },
+  { 0x2100015f, 0x1400ffff },
+  { 0x21000160, 0x24000001 },
+  { 0x21000161, 0x1400ffff },
+  { 0x21000162, 0x24000001 },
+  { 0x21000163, 0x1400ffff },
+  { 0x21000164, 0x24000001 },
+  { 0x21000165, 0x1400ffff },
+  { 0x21000166, 0x24000001 },
+  { 0x21000167, 0x1400ffff },
+  { 0x21000168, 0x24000001 },
+  { 0x21000169, 0x1400ffff },
+  { 0x2100016a, 0x24000001 },
+  { 0x2100016b, 0x1400ffff },
+  { 0x2100016c, 0x24000001 },
+  { 0x2100016d, 0x1400ffff },
+  { 0x2100016e, 0x24000001 },
+  { 0x2100016f, 0x1400ffff },
+  { 0x21000170, 0x24000001 },
+  { 0x21000171, 0x1400ffff },
+  { 0x21000172, 0x24000001 },
+  { 0x21000173, 0x1400ffff },
+  { 0x21000174, 0x24000001 },
+  { 0x21000175, 0x1400ffff },
+  { 0x21000176, 0x24000001 },
+  { 0x21000177, 0x1400ffff },
+  { 0x21000178, 0x2400ff87 },
+  { 0x21000179, 0x24000001 },
+  { 0x2100017a, 0x1400ffff },
+  { 0x2100017b, 0x24000001 },
+  { 0x2100017c, 0x1400ffff },
+  { 0x2100017d, 0x24000001 },
+  { 0x2100017e, 0x1400ffff },
+  { 0x2100017f, 0x1400fed4 },
+  { 0x21000180, 0x14000000 },
+  { 0x21000181, 0x240000d2 },
+  { 0x21000182, 0x24000001 },
+  { 0x21000183, 0x1400ffff },
+  { 0x21000184, 0x24000001 },
+  { 0x21000185, 0x1400ffff },
+  { 0x21000186, 0x240000ce },
+  { 0x21000187, 0x24000001 },
+  { 0x21000188, 0x1400ffff },
+  { 0x21000189, 0x240000cd },
+  { 0x2100018a, 0x240000cd },
+  { 0x2100018b, 0x24000001 },
+  { 0x2100018c, 0x1400ffff },
+  { 0x2100018d, 0x14000000 },
+  { 0x2100018e, 0x2400004f },
+  { 0x2100018f, 0x240000ca },
+  { 0x21000190, 0x240000cb },
+  { 0x21000191, 0x24000001 },
+  { 0x21000192, 0x1400ffff },
+  { 0x21000193, 0x240000cd },
+  { 0x21000194, 0x240000cf },
+  { 0x21000195, 0x14000061 },
+  { 0x21000196, 0x240000d3 },
+  { 0x21000197, 0x240000d1 },
+  { 0x21000198, 0x24000001 },
+  { 0x21000199, 0x1400ffff },
+  { 0x2100019a, 0x140000a3 },
+  { 0x2100019b, 0x14000000 },
+  { 0x2100019c, 0x240000d3 },
+  { 0x2100019d, 0x240000d5 },
+  { 0x2100019e, 0x14000082 },
+  { 0x2100019f, 0x240000d6 },
+  { 0x210001a0, 0x24000001 },
+  { 0x210001a1, 0x1400ffff },
+  { 0x210001a2, 0x24000001 },
+  { 0x210001a3, 0x1400ffff },
+  { 0x210001a4, 0x24000001 },
+  { 0x210001a5, 0x1400ffff },
+  { 0x210001a6, 0x240000da },
+  { 0x210001a7, 0x24000001 },
+  { 0x210001a8, 0x1400ffff },
+  { 0x210001a9, 0x240000da },
+  { 0x218001aa, 0x14000001 },
+  { 0x210001ac, 0x24000001 },
+  { 0x210001ad, 0x1400ffff },
+  { 0x210001ae, 0x240000da },
+  { 0x210001af, 0x24000001 },
+  { 0x210001b0, 0x1400ffff },
+  { 0x210001b1, 0x240000d9 },
+  { 0x210001b2, 0x240000d9 },
+  { 0x210001b3, 0x24000001 },
+  { 0x210001b4, 0x1400ffff },
+  { 0x210001b5, 0x24000001 },
+  { 0x210001b6, 0x1400ffff },
+  { 0x210001b7, 0x240000db },
+  { 0x210001b8, 0x24000001 },
+  { 0x210001b9, 0x1400ffff },
+  { 0x210001ba, 0x14000000 },
+  { 0x210001bb, 0x1c000000 },
+  { 0x210001bc, 0x24000001 },
+  { 0x210001bd, 0x1400ffff },
+  { 0x210001be, 0x14000000 },
+  { 0x210001bf, 0x14000038 },
+  { 0x218001c0, 0x1c000003 },
+  { 0x210001c4, 0x24000002 },
+  { 0x210001c5, 0x2000ffff },
+  { 0x210001c6, 0x1400fffe },
+  { 0x210001c7, 0x24000002 },
+  { 0x210001c8, 0x2000ffff },
+  { 0x210001c9, 0x1400fffe },
+  { 0x210001ca, 0x24000002 },
+  { 0x210001cb, 0x2000ffff },
+  { 0x210001cc, 0x1400fffe },
+  { 0x210001cd, 0x24000001 },
+  { 0x210001ce, 0x1400ffff },
+  { 0x210001cf, 0x24000001 },
+  { 0x210001d0, 0x1400ffff },
+  { 0x210001d1, 0x24000001 },
+  { 0x210001d2, 0x1400ffff },
+  { 0x210001d3, 0x24000001 },
+  { 0x210001d4, 0x1400ffff },
+  { 0x210001d5, 0x24000001 },
+  { 0x210001d6, 0x1400ffff },
+  { 0x210001d7, 0x24000001 },
+  { 0x210001d8, 0x1400ffff },
+  { 0x210001d9, 0x24000001 },
+  { 0x210001da, 0x1400ffff },
+  { 0x210001db, 0x24000001 },
+  { 0x210001dc, 0x1400ffff },
+  { 0x210001dd, 0x1400ffb1 },
+  { 0x210001de, 0x24000001 },
+  { 0x210001df, 0x1400ffff },
+  { 0x210001e0, 0x24000001 },
+  { 0x210001e1, 0x1400ffff },
+  { 0x210001e2, 0x24000001 },
+  { 0x210001e3, 0x1400ffff },
+  { 0x210001e4, 0x24000001 },
+  { 0x210001e5, 0x1400ffff },
+  { 0x210001e6, 0x24000001 },
+  { 0x210001e7, 0x1400ffff },
+  { 0x210001e8, 0x24000001 },
+  { 0x210001e9, 0x1400ffff },
+  { 0x210001ea, 0x24000001 },
+  { 0x210001eb, 0x1400ffff },
+  { 0x210001ec, 0x24000001 },
+  { 0x210001ed, 0x1400ffff },
+  { 0x210001ee, 0x24000001 },
+  { 0x210001ef, 0x1400ffff },
+  { 0x210001f0, 0x14000000 },
+  { 0x210001f1, 0x24000002 },
+  { 0x210001f2, 0x2000ffff },
+  { 0x210001f3, 0x1400fffe },
+  { 0x210001f4, 0x24000001 },
+  { 0x210001f5, 0x1400ffff },
+  { 0x210001f6, 0x2400ff9f },
+  { 0x210001f7, 0x2400ffc8 },
+  { 0x210001f8, 0x24000001 },
+  { 0x210001f9, 0x1400ffff },
+  { 0x210001fa, 0x24000001 },
+  { 0x210001fb, 0x1400ffff },
+  { 0x210001fc, 0x24000001 },
+  { 0x210001fd, 0x1400ffff },
+  { 0x210001fe, 0x24000001 },
+  { 0x210001ff, 0x1400ffff },
+  { 0x21000200, 0x24000001 },
+  { 0x21000201, 0x1400ffff },
+  { 0x21000202, 0x24000001 },
+  { 0x21000203, 0x1400ffff },
+  { 0x21000204, 0x24000001 },
+  { 0x21000205, 0x1400ffff },
+  { 0x21000206, 0x24000001 },
+  { 0x21000207, 0x1400ffff },
+  { 0x21000208, 0x24000001 },
+  { 0x21000209, 0x1400ffff },
+  { 0x2100020a, 0x24000001 },
+  { 0x2100020b, 0x1400ffff },
+  { 0x2100020c, 0x24000001 },
+  { 0x2100020d, 0x1400ffff },
+  { 0x2100020e, 0x24000001 },
+  { 0x2100020f, 0x1400ffff },
+  { 0x21000210, 0x24000001 },
+  { 0x21000211, 0x1400ffff },
+  { 0x21000212, 0x24000001 },
+  { 0x21000213, 0x1400ffff },
+  { 0x21000214, 0x24000001 },
+  { 0x21000215, 0x1400ffff },
+  { 0x21000216, 0x24000001 },
+  { 0x21000217, 0x1400ffff },
+  { 0x21000218, 0x24000001 },
+  { 0x21000219, 0x1400ffff },
+  { 0x2100021a, 0x24000001 },
+  { 0x2100021b, 0x1400ffff },
+  { 0x2100021c, 0x24000001 },
+  { 0x2100021d, 0x1400ffff },
+  { 0x2100021e, 0x24000001 },
+  { 0x2100021f, 0x1400ffff },
+  { 0x21000220, 0x2400ff7e },
+  { 0x21000221, 0x14000000 },
+  { 0x21000222, 0x24000001 },
+  { 0x21000223, 0x1400ffff },
+  { 0x21000224, 0x24000001 },
+  { 0x21000225, 0x1400ffff },
+  { 0x21000226, 0x24000001 },
+  { 0x21000227, 0x1400ffff },
+  { 0x21000228, 0x24000001 },
+  { 0x21000229, 0x1400ffff },
+  { 0x2100022a, 0x24000001 },
+  { 0x2100022b, 0x1400ffff },
+  { 0x2100022c, 0x24000001 },
+  { 0x2100022d, 0x1400ffff },
+  { 0x2100022e, 0x24000001 },
+  { 0x2100022f, 0x1400ffff },
+  { 0x21000230, 0x24000001 },
+  { 0x21000231, 0x1400ffff },
+  { 0x21000232, 0x24000001 },
+  { 0x21000233, 0x1400ffff },
+  { 0x21800234, 0x14000005 },
+  { 0x2100023a, 0x24000000 },
+  { 0x2100023b, 0x24000001 },
+  { 0x2100023c, 0x1400ffff },
+  { 0x2100023d, 0x2400ff5d },
+  { 0x2100023e, 0x24000000 },
+  { 0x2180023f, 0x14000001 },
+  { 0x21000241, 0x24000053 },
+  { 0x21800250, 0x14000002 },
+  { 0x21000253, 0x1400ff2e },
+  { 0x21000254, 0x1400ff32 },
+  { 0x21000255, 0x14000000 },
+  { 0x21000256, 0x1400ff33 },
+  { 0x21000257, 0x1400ff33 },
+  { 0x21000258, 0x14000000 },
+  { 0x21000259, 0x1400ff36 },
+  { 0x2100025a, 0x14000000 },
+  { 0x2100025b, 0x1400ff35 },
+  { 0x2180025c, 0x14000003 },
+  { 0x21000260, 0x1400ff33 },
+  { 0x21800261, 0x14000001 },
+  { 0x21000263, 0x1400ff31 },
+  { 0x21800264, 0x14000003 },
+  { 0x21000268, 0x1400ff2f },
+  { 0x21000269, 0x1400ff2d },
+  { 0x2180026a, 0x14000004 },
+  { 0x2100026f, 0x1400ff2d },
+  { 0x21800270, 0x14000001 },
+  { 0x21000272, 0x1400ff2b },
+  { 0x21800273, 0x14000001 },
+  { 0x21000275, 0x1400ff2a },
+  { 0x21800276, 0x14000009 },
+  { 0x21000280, 0x1400ff26 },
+  { 0x21800281, 0x14000001 },
+  { 0x21000283, 0x1400ff26 },
+  { 0x21800284, 0x14000003 },
+  { 0x21000288, 0x1400ff26 },
+  { 0x21000289, 0x14000000 },
+  { 0x2100028a, 0x1400ff27 },
+  { 0x2100028b, 0x1400ff27 },
+  { 0x2180028c, 0x14000005 },
+  { 0x21000292, 0x1400ff25 },
+  { 0x21000293, 0x14000000 },
+  { 0x21000294, 0x1400ffad },
+  { 0x21800295, 0x1400001a },
+  { 0x218002b0, 0x18000011 },
+  { 0x098002c2, 0x60000003 },
+  { 0x098002c6, 0x1800000b },
+  { 0x098002d2, 0x6000000d },
+  { 0x218002e0, 0x18000004 },
+  { 0x098002e5, 0x60000008 },
+  { 0x090002ee, 0x18000000 },
+  { 0x098002ef, 0x60000010 },
+  { 0x1b800300, 0x30000044 },
+  { 0x1b000345, 0x30000054 },
+  { 0x1b800346, 0x30000029 },
+  { 0x13800374, 0x60000001 },
+  { 0x1300037a, 0x18000000 },
+  { 0x0900037e, 0x54000000 },
+  { 0x13800384, 0x60000001 },
+  { 0x13000386, 0x24000026 },
+  { 0x09000387, 0x54000000 },
+  { 0x13000388, 0x24000025 },
+  { 0x13000389, 0x24000025 },
+  { 0x1300038a, 0x24000025 },
+  { 0x1300038c, 0x24000040 },
+  { 0x1300038e, 0x2400003f },
+  { 0x1300038f, 0x2400003f },
+  { 0x13000390, 0x14000000 },
+  { 0x13000391, 0x24000020 },
+  { 0x13000392, 0x24000020 },
+  { 0x13000393, 0x24000020 },
+  { 0x13000394, 0x24000020 },
+  { 0x13000395, 0x24000020 },
+  { 0x13000396, 0x24000020 },
+  { 0x13000397, 0x24000020 },
+  { 0x13000398, 0x24000020 },
+  { 0x13000399, 0x24000020 },
+  { 0x1300039a, 0x24000020 },
+  { 0x1300039b, 0x24000020 },
+  { 0x1300039c, 0x24000020 },
+  { 0x1300039d, 0x24000020 },
+  { 0x1300039e, 0x24000020 },
+  { 0x1300039f, 0x24000020 },
+  { 0x130003a0, 0x24000020 },
+  { 0x130003a1, 0x24000020 },
+  { 0x130003a3, 0x24000020 },
+  { 0x130003a4, 0x24000020 },
+  { 0x130003a5, 0x24000020 },
+  { 0x130003a6, 0x24000020 },
+  { 0x130003a7, 0x24000020 },
+  { 0x130003a8, 0x24000020 },
+  { 0x130003a9, 0x24000020 },
+  { 0x130003aa, 0x24000020 },
+  { 0x130003ab, 0x24000020 },
+  { 0x130003ac, 0x1400ffda },
+  { 0x130003ad, 0x1400ffdb },
+  { 0x130003ae, 0x1400ffdb },
+  { 0x130003af, 0x1400ffdb },
+  { 0x130003b0, 0x14000000 },
+  { 0x130003b1, 0x1400ffe0 },
+  { 0x130003b2, 0x1400ffe0 },
+  { 0x130003b3, 0x1400ffe0 },
+  { 0x130003b4, 0x1400ffe0 },
+  { 0x130003b5, 0x1400ffe0 },
+  { 0x130003b6, 0x1400ffe0 },
+  { 0x130003b7, 0x1400ffe0 },
+  { 0x130003b8, 0x1400ffe0 },
+  { 0x130003b9, 0x1400ffe0 },
+  { 0x130003ba, 0x1400ffe0 },
+  { 0x130003bb, 0x1400ffe0 },
+  { 0x130003bc, 0x1400ffe0 },
+  { 0x130003bd, 0x1400ffe0 },
+  { 0x130003be, 0x1400ffe0 },
+  { 0x130003bf, 0x1400ffe0 },
+  { 0x130003c0, 0x1400ffe0 },
+  { 0x130003c1, 0x1400ffe0 },
+  { 0x130003c2, 0x1400ffe1 },
+  { 0x130003c3, 0x1400ffe0 },
+  { 0x130003c4, 0x1400ffe0 },
+  { 0x130003c5, 0x1400ffe0 },
+  { 0x130003c6, 0x1400ffe0 },
+  { 0x130003c7, 0x1400ffe0 },
+  { 0x130003c8, 0x1400ffe0 },
+  { 0x130003c9, 0x1400ffe0 },
+  { 0x130003ca, 0x1400ffe0 },
+  { 0x130003cb, 0x1400ffe0 },
+  { 0x130003cc, 0x1400ffc0 },
+  { 0x130003cd, 0x1400ffc1 },
+  { 0x130003ce, 0x1400ffc1 },
+  { 0x130003d0, 0x1400ffc2 },
+  { 0x130003d1, 0x1400ffc7 },
+  { 0x138003d2, 0x24000002 },
+  { 0x130003d5, 0x1400ffd1 },
+  { 0x130003d6, 0x1400ffca },
+  { 0x130003d7, 0x14000000 },
+  { 0x130003d8, 0x24000001 },
+  { 0x130003d9, 0x1400ffff },
+  { 0x130003da, 0x24000001 },
+  { 0x130003db, 0x1400ffff },
+  { 0x130003dc, 0x24000001 },
+  { 0x130003dd, 0x1400ffff },
+  { 0x130003de, 0x24000001 },
+  { 0x130003df, 0x1400ffff },
+  { 0x130003e0, 0x24000001 },
+  { 0x130003e1, 0x1400ffff },
+  { 0x0a0003e2, 0x24000001 },
+  { 0x0a0003e3, 0x1400ffff },
+  { 0x0a0003e4, 0x24000001 },
+  { 0x0a0003e5, 0x1400ffff },
+  { 0x0a0003e6, 0x24000001 },
+  { 0x0a0003e7, 0x1400ffff },
+  { 0x0a0003e8, 0x24000001 },
+  { 0x0a0003e9, 0x1400ffff },
+  { 0x0a0003ea, 0x24000001 },
+  { 0x0a0003eb, 0x1400ffff },
+  { 0x0a0003ec, 0x24000001 },
+  { 0x0a0003ed, 0x1400ffff },
+  { 0x0a0003ee, 0x24000001 },
+  { 0x0a0003ef, 0x1400ffff },
+  { 0x130003f0, 0x1400ffaa },
+  { 0x130003f1, 0x1400ffb0 },
+  { 0x130003f2, 0x14000007 },
+  { 0x130003f3, 0x14000000 },
+  { 0x130003f4, 0x2400ffc4 },
+  { 0x130003f5, 0x1400ffa0 },
+  { 0x130003f6, 0x64000000 },
+  { 0x130003f7, 0x24000001 },
+  { 0x130003f8, 0x1400ffff },
+  { 0x130003f9, 0x2400fff9 },
+  { 0x130003fa, 0x24000001 },
+  { 0x130003fb, 0x1400ffff },
+  { 0x130003fc, 0x14000000 },
+  { 0x138003fd, 0x24000002 },
+  { 0x0c000400, 0x24000050 },
+  { 0x0c000401, 0x24000050 },
+  { 0x0c000402, 0x24000050 },
+  { 0x0c000403, 0x24000050 },
+  { 0x0c000404, 0x24000050 },
+  { 0x0c000405, 0x24000050 },
+  { 0x0c000406, 0x24000050 },
+  { 0x0c000407, 0x24000050 },
+  { 0x0c000408, 0x24000050 },
+  { 0x0c000409, 0x24000050 },
+  { 0x0c00040a, 0x24000050 },
+  { 0x0c00040b, 0x24000050 },
+  { 0x0c00040c, 0x24000050 },
+  { 0x0c00040d, 0x24000050 },
+  { 0x0c00040e, 0x24000050 },
+  { 0x0c00040f, 0x24000050 },
+  { 0x0c000410, 0x24000020 },
+  { 0x0c000411, 0x24000020 },
+  { 0x0c000412, 0x24000020 },
+  { 0x0c000413, 0x24000020 },
+  { 0x0c000414, 0x24000020 },
+  { 0x0c000415, 0x24000020 },
+  { 0x0c000416, 0x24000020 },
+  { 0x0c000417, 0x24000020 },
+  { 0x0c000418, 0x24000020 },
+  { 0x0c000419, 0x24000020 },
+  { 0x0c00041a, 0x24000020 },
+  { 0x0c00041b, 0x24000020 },
+  { 0x0c00041c, 0x24000020 },
+  { 0x0c00041d, 0x24000020 },
+  { 0x0c00041e, 0x24000020 },
+  { 0x0c00041f, 0x24000020 },
+  { 0x0c000420, 0x24000020 },
+  { 0x0c000421, 0x24000020 },
+  { 0x0c000422, 0x24000020 },
+  { 0x0c000423, 0x24000020 },
+  { 0x0c000424, 0x24000020 },
+  { 0x0c000425, 0x24000020 },
+  { 0x0c000426, 0x24000020 },
+  { 0x0c000427, 0x24000020 },
+  { 0x0c000428, 0x24000020 },
+  { 0x0c000429, 0x24000020 },
+  { 0x0c00042a, 0x24000020 },
+  { 0x0c00042b, 0x24000020 },
+  { 0x0c00042c, 0x24000020 },
+  { 0x0c00042d, 0x24000020 },
+  { 0x0c00042e, 0x24000020 },
+  { 0x0c00042f, 0x24000020 },
+  { 0x0c000430, 0x1400ffe0 },
+  { 0x0c000431, 0x1400ffe0 },
+  { 0x0c000432, 0x1400ffe0 },
+  { 0x0c000433, 0x1400ffe0 },
+  { 0x0c000434, 0x1400ffe0 },
+  { 0x0c000435, 0x1400ffe0 },
+  { 0x0c000436, 0x1400ffe0 },
+  { 0x0c000437, 0x1400ffe0 },
+  { 0x0c000438, 0x1400ffe0 },
+  { 0x0c000439, 0x1400ffe0 },
+  { 0x0c00043a, 0x1400ffe0 },
+  { 0x0c00043b, 0x1400ffe0 },
+  { 0x0c00043c, 0x1400ffe0 },
+  { 0x0c00043d, 0x1400ffe0 },
+  { 0x0c00043e, 0x1400ffe0 },
+  { 0x0c00043f, 0x1400ffe0 },
+  { 0x0c000440, 0x1400ffe0 },
+  { 0x0c000441, 0x1400ffe0 },
+  { 0x0c000442, 0x1400ffe0 },
+  { 0x0c000443, 0x1400ffe0 },
+  { 0x0c000444, 0x1400ffe0 },
+  { 0x0c000445, 0x1400ffe0 },
+  { 0x0c000446, 0x1400ffe0 },
+  { 0x0c000447, 0x1400ffe0 },
+  { 0x0c000448, 0x1400ffe0 },
+  { 0x0c000449, 0x1400ffe0 },
+  { 0x0c00044a, 0x1400ffe0 },
+  { 0x0c00044b, 0x1400ffe0 },
+  { 0x0c00044c, 0x1400ffe0 },
+  { 0x0c00044d, 0x1400ffe0 },
+  { 0x0c00044e, 0x1400ffe0 },
+  { 0x0c00044f, 0x1400ffe0 },
+  { 0x0c000450, 0x1400ffb0 },
+  { 0x0c000451, 0x1400ffb0 },
+  { 0x0c000452, 0x1400ffb0 },
+  { 0x0c000453, 0x1400ffb0 },
+  { 0x0c000454, 0x1400ffb0 },
+  { 0x0c000455, 0x1400ffb0 },
+  { 0x0c000456, 0x1400ffb0 },
+  { 0x0c000457, 0x1400ffb0 },
+  { 0x0c000458, 0x1400ffb0 },
+  { 0x0c000459, 0x1400ffb0 },
+  { 0x0c00045a, 0x1400ffb0 },
+  { 0x0c00045b, 0x1400ffb0 },
+  { 0x0c00045c, 0x1400ffb0 },
+  { 0x0c00045d, 0x1400ffb0 },
+  { 0x0c00045e, 0x1400ffb0 },
+  { 0x0c00045f, 0x1400ffb0 },
+  { 0x0c000460, 0x24000001 },
+  { 0x0c000461, 0x1400ffff },
+  { 0x0c000462, 0x24000001 },
+  { 0x0c000463, 0x1400ffff },
+  { 0x0c000464, 0x24000001 },
+  { 0x0c000465, 0x1400ffff },
+  { 0x0c000466, 0x24000001 },
+  { 0x0c000467, 0x1400ffff },
+  { 0x0c000468, 0x24000001 },
+  { 0x0c000469, 0x1400ffff },
+  { 0x0c00046a, 0x24000001 },
+  { 0x0c00046b, 0x1400ffff },
+  { 0x0c00046c, 0x24000001 },
+  { 0x0c00046d, 0x1400ffff },
+  { 0x0c00046e, 0x24000001 },
+  { 0x0c00046f, 0x1400ffff },
+  { 0x0c000470, 0x24000001 },
+  { 0x0c000471, 0x1400ffff },
+  { 0x0c000472, 0x24000001 },
+  { 0x0c000473, 0x1400ffff },
+  { 0x0c000474, 0x24000001 },
+  { 0x0c000475, 0x1400ffff },
+  { 0x0c000476, 0x24000001 },
+  { 0x0c000477, 0x1400ffff },
+  { 0x0c000478, 0x24000001 },
+  { 0x0c000479, 0x1400ffff },
+  { 0x0c00047a, 0x24000001 },
+  { 0x0c00047b, 0x1400ffff },
+  { 0x0c00047c, 0x24000001 },
+  { 0x0c00047d, 0x1400ffff },
+  { 0x0c00047e, 0x24000001 },
+  { 0x0c00047f, 0x1400ffff },
+  { 0x0c000480, 0x24000001 },
+  { 0x0c000481, 0x1400ffff },
+  { 0x0c000482, 0x68000000 },
+  { 0x0c800483, 0x30000003 },
+  { 0x0c800488, 0x2c000001 },
+  { 0x0c00048a, 0x24000001 },
+  { 0x0c00048b, 0x1400ffff },
+  { 0x0c00048c, 0x24000001 },
+  { 0x0c00048d, 0x1400ffff },
+  { 0x0c00048e, 0x24000001 },
+  { 0x0c00048f, 0x1400ffff },
+  { 0x0c000490, 0x24000001 },
+  { 0x0c000491, 0x1400ffff },
+  { 0x0c000492, 0x24000001 },
+  { 0x0c000493, 0x1400ffff },
+  { 0x0c000494, 0x24000001 },
+  { 0x0c000495, 0x1400ffff },
+  { 0x0c000496, 0x24000001 },
+  { 0x0c000497, 0x1400ffff },
+  { 0x0c000498, 0x24000001 },
+  { 0x0c000499, 0x1400ffff },
+  { 0x0c00049a, 0x24000001 },
+  { 0x0c00049b, 0x1400ffff },
+  { 0x0c00049c, 0x24000001 },
+  { 0x0c00049d, 0x1400ffff },
+  { 0x0c00049e, 0x24000001 },
+  { 0x0c00049f, 0x1400ffff },
+  { 0x0c0004a0, 0x24000001 },
+  { 0x0c0004a1, 0x1400ffff },
+  { 0x0c0004a2, 0x24000001 },
+  { 0x0c0004a3, 0x1400ffff },
+  { 0x0c0004a4, 0x24000001 },
+  { 0x0c0004a5, 0x1400ffff },
+  { 0x0c0004a6, 0x24000001 },
+  { 0x0c0004a7, 0x1400ffff },
+  { 0x0c0004a8, 0x24000001 },
+  { 0x0c0004a9, 0x1400ffff },
+  { 0x0c0004aa, 0x24000001 },
+  { 0x0c0004ab, 0x1400ffff },
+  { 0x0c0004ac, 0x24000001 },
+  { 0x0c0004ad, 0x1400ffff },
+  { 0x0c0004ae, 0x24000001 },
+  { 0x0c0004af, 0x1400ffff },
+  { 0x0c0004b0, 0x24000001 },
+  { 0x0c0004b1, 0x1400ffff },
+  { 0x0c0004b2, 0x24000001 },
+  { 0x0c0004b3, 0x1400ffff },
+  { 0x0c0004b4, 0x24000001 },
+  { 0x0c0004b5, 0x1400ffff },
+  { 0x0c0004b6, 0x24000001 },
+  { 0x0c0004b7, 0x1400ffff },
+  { 0x0c0004b8, 0x24000001 },
+  { 0x0c0004b9, 0x1400ffff },
+  { 0x0c0004ba, 0x24000001 },
+  { 0x0c0004bb, 0x1400ffff },
+  { 0x0c0004bc, 0x24000001 },
+  { 0x0c0004bd, 0x1400ffff },
+  { 0x0c0004be, 0x24000001 },
+  { 0x0c0004bf, 0x1400ffff },
+  { 0x0c0004c0, 0x24000000 },
+  { 0x0c0004c1, 0x24000001 },
+  { 0x0c0004c2, 0x1400ffff },
+  { 0x0c0004c3, 0x24000001 },
+  { 0x0c0004c4, 0x1400ffff },
+  { 0x0c0004c5, 0x24000001 },
+  { 0x0c0004c6, 0x1400ffff },
+  { 0x0c0004c7, 0x24000001 },
+  { 0x0c0004c8, 0x1400ffff },
+  { 0x0c0004c9, 0x24000001 },
+  { 0x0c0004ca, 0x1400ffff },
+  { 0x0c0004cb, 0x24000001 },
+  { 0x0c0004cc, 0x1400ffff },
+  { 0x0c0004cd, 0x24000001 },
+  { 0x0c0004ce, 0x1400ffff },
+  { 0x0c0004d0, 0x24000001 },
+  { 0x0c0004d1, 0x1400ffff },
+  { 0x0c0004d2, 0x24000001 },
+  { 0x0c0004d3, 0x1400ffff },
+  { 0x0c0004d4, 0x24000001 },
+  { 0x0c0004d5, 0x1400ffff },
+  { 0x0c0004d6, 0x24000001 },
+  { 0x0c0004d7, 0x1400ffff },
+  { 0x0c0004d8, 0x24000001 },
+  { 0x0c0004d9, 0x1400ffff },
+  { 0x0c0004da, 0x24000001 },
+  { 0x0c0004db, 0x1400ffff },
+  { 0x0c0004dc, 0x24000001 },
+  { 0x0c0004dd, 0x1400ffff },
+  { 0x0c0004de, 0x24000001 },
+  { 0x0c0004df, 0x1400ffff },
+  { 0x0c0004e0, 0x24000001 },
+  { 0x0c0004e1, 0x1400ffff },
+  { 0x0c0004e2, 0x24000001 },
+  { 0x0c0004e3, 0x1400ffff },
+  { 0x0c0004e4, 0x24000001 },
+  { 0x0c0004e5, 0x1400ffff },
+  { 0x0c0004e6, 0x24000001 },
+  { 0x0c0004e7, 0x1400ffff },
+  { 0x0c0004e8, 0x24000001 },
+  { 0x0c0004e9, 0x1400ffff },
+  { 0x0c0004ea, 0x24000001 },
+  { 0x0c0004eb, 0x1400ffff },
+  { 0x0c0004ec, 0x24000001 },
+  { 0x0c0004ed, 0x1400ffff },
+  { 0x0c0004ee, 0x24000001 },
+  { 0x0c0004ef, 0x1400ffff },
+  { 0x0c0004f0, 0x24000001 },
+  { 0x0c0004f1, 0x1400ffff },
+  { 0x0c0004f2, 0x24000001 },
+  { 0x0c0004f3, 0x1400ffff },
+  { 0x0c0004f4, 0x24000001 },
+  { 0x0c0004f5, 0x1400ffff },
+  { 0x0c0004f6, 0x24000001 },
+  { 0x0c0004f7, 0x1400ffff },
+  { 0x0c0004f8, 0x24000001 },
+  { 0x0c0004f9, 0x1400ffff },
+  { 0x0c000500, 0x24000001 },
+  { 0x0c000501, 0x1400ffff },
+  { 0x0c000502, 0x24000001 },
+  { 0x0c000503, 0x1400ffff },
+  { 0x0c000504, 0x24000001 },
+  { 0x0c000505, 0x1400ffff },
+  { 0x0c000506, 0x24000001 },
+  { 0x0c000507, 0x1400ffff },
+  { 0x0c000508, 0x24000001 },
+  { 0x0c000509, 0x1400ffff },
+  { 0x0c00050a, 0x24000001 },
+  { 0x0c00050b, 0x1400ffff },
+  { 0x0c00050c, 0x24000001 },
+  { 0x0c00050d, 0x1400ffff },
+  { 0x0c00050e, 0x24000001 },
+  { 0x0c00050f, 0x1400ffff },
+  { 0x01000531, 0x24000030 },
+  { 0x01000532, 0x24000030 },
+  { 0x01000533, 0x24000030 },
+  { 0x01000534, 0x24000030 },
+  { 0x01000535, 0x24000030 },
+  { 0x01000536, 0x24000030 },
+  { 0x01000537, 0x24000030 },
+  { 0x01000538, 0x24000030 },
+  { 0x01000539, 0x24000030 },
+  { 0x0100053a, 0x24000030 },
+  { 0x0100053b, 0x24000030 },
+  { 0x0100053c, 0x24000030 },
+  { 0x0100053d, 0x24000030 },
+  { 0x0100053e, 0x24000030 },
+  { 0x0100053f, 0x24000030 },
+  { 0x01000540, 0x24000030 },
+  { 0x01000541, 0x24000030 },
+  { 0x01000542, 0x24000030 },
+  { 0x01000543, 0x24000030 },
+  { 0x01000544, 0x24000030 },
+  { 0x01000545, 0x24000030 },
+  { 0x01000546, 0x24000030 },
+  { 0x01000547, 0x24000030 },
+  { 0x01000548, 0x24000030 },
+  { 0x01000549, 0x24000030 },
+  { 0x0100054a, 0x24000030 },
+  { 0x0100054b, 0x24000030 },
+  { 0x0100054c, 0x24000030 },
+  { 0x0100054d, 0x24000030 },
+  { 0x0100054e, 0x24000030 },
+  { 0x0100054f, 0x24000030 },
+  { 0x01000550, 0x24000030 },
+  { 0x01000551, 0x24000030 },
+  { 0x01000552, 0x24000030 },
+  { 0x01000553, 0x24000030 },
+  { 0x01000554, 0x24000030 },
+  { 0x01000555, 0x24000030 },
+  { 0x01000556, 0x24000030 },
+  { 0x01000559, 0x18000000 },
+  { 0x0180055a, 0x54000005 },
+  { 0x01000561, 0x1400ffd0 },
+  { 0x01000562, 0x1400ffd0 },
+  { 0x01000563, 0x1400ffd0 },
+  { 0x01000564, 0x1400ffd0 },
+  { 0x01000565, 0x1400ffd0 },
+  { 0x01000566, 0x1400ffd0 },
+  { 0x01000567, 0x1400ffd0 },
+  { 0x01000568, 0x1400ffd0 },
+  { 0x01000569, 0x1400ffd0 },
+  { 0x0100056a, 0x1400ffd0 },
+  { 0x0100056b, 0x1400ffd0 },
+  { 0x0100056c, 0x1400ffd0 },
+  { 0x0100056d, 0x1400ffd0 },
+  { 0x0100056e, 0x1400ffd0 },
+  { 0x0100056f, 0x1400ffd0 },
+  { 0x01000570, 0x1400ffd0 },
+  { 0x01000571, 0x1400ffd0 },
+  { 0x01000572, 0x1400ffd0 },
+  { 0x01000573, 0x1400ffd0 },
+  { 0x01000574, 0x1400ffd0 },
+  { 0x01000575, 0x1400ffd0 },
+  { 0x01000576, 0x1400ffd0 },
+  { 0x01000577, 0x1400ffd0 },
+  { 0x01000578, 0x1400ffd0 },
+  { 0x01000579, 0x1400ffd0 },
+  { 0x0100057a, 0x1400ffd0 },
+  { 0x0100057b, 0x1400ffd0 },
+  { 0x0100057c, 0x1400ffd0 },
+  { 0x0100057d, 0x1400ffd0 },
+  { 0x0100057e, 0x1400ffd0 },
+  { 0x0100057f, 0x1400ffd0 },
+  { 0x01000580, 0x1400ffd0 },
+  { 0x01000581, 0x1400ffd0 },
+  { 0x01000582, 0x1400ffd0 },
+  { 0x01000583, 0x1400ffd0 },
+  { 0x01000584, 0x1400ffd0 },
+  { 0x01000585, 0x1400ffd0 },
+  { 0x01000586, 0x1400ffd0 },
+  { 0x01000587, 0x14000000 },
+  { 0x09000589, 0x54000000 },
+  { 0x0100058a, 0x44000000 },
+  { 0x19800591, 0x30000028 },
+  { 0x198005bb, 0x30000002 },
+  { 0x190005be, 0x54000000 },
+  { 0x190005bf, 0x30000000 },
+  { 0x190005c0, 0x54000000 },
+  { 0x198005c1, 0x30000001 },
+  { 0x190005c3, 0x54000000 },
+  { 0x198005c4, 0x30000001 },
+  { 0x190005c6, 0x54000000 },
+  { 0x190005c7, 0x30000000 },
+  { 0x198005d0, 0x1c00001a },
+  { 0x198005f0, 0x1c000002 },
+  { 0x198005f3, 0x54000001 },
+  { 0x09800600, 0x04000003 },
+  { 0x0000060b, 0x5c000000 },
+  { 0x0980060c, 0x54000001 },
+  { 0x0080060e, 0x68000001 },
+  { 0x00800610, 0x30000005 },
+  { 0x0900061b, 0x54000000 },
+  { 0x0080061e, 0x54000001 },
+  { 0x00800621, 0x1c000019 },
+  { 0x09000640, 0x18000000 },
+  { 0x00800641, 0x1c000009 },
+  { 0x1b80064b, 0x30000013 },
+  { 0x09800660, 0x34000009 },
+  { 0x0080066a, 0x54000003 },
+  { 0x0080066e, 0x1c000001 },
+  { 0x1b000670, 0x30000000 },
+  { 0x00800671, 0x1c000062 },
+  { 0x000006d4, 0x54000000 },
+  { 0x000006d5, 0x1c000000 },
+  { 0x008006d6, 0x30000006 },
+  { 0x090006dd, 0x04000000 },
+  { 0x000006de, 0x2c000000 },
+  { 0x008006df, 0x30000005 },
+  { 0x008006e5, 0x18000001 },
+  { 0x008006e7, 0x30000001 },
+  { 0x000006e9, 0x68000000 },
+  { 0x008006ea, 0x30000003 },
+  { 0x008006ee, 0x1c000001 },
+  { 0x008006f0, 0x34000009 },
+  { 0x008006fa, 0x1c000002 },
+  { 0x008006fd, 0x68000001 },
+  { 0x000006ff, 0x1c000000 },
+  { 0x31800700, 0x5400000d },
+  { 0x3100070f, 0x04000000 },
+  { 0x31000710, 0x1c000000 },
+  { 0x31000711, 0x30000000 },
+  { 0x31800712, 0x1c00001d },
+  { 0x31800730, 0x3000001a },
+  { 0x3180074d, 0x1c000020 },
+  { 0x37800780, 0x1c000025 },
+  { 0x378007a6, 0x3000000a },
+  { 0x370007b1, 0x1c000000 },
+  { 0x0e800901, 0x30000001 },
+  { 0x0e000903, 0x28000000 },
+  { 0x0e800904, 0x1c000035 },
+  { 0x0e00093c, 0x30000000 },
+  { 0x0e00093d, 0x1c000000 },
+  { 0x0e80093e, 0x28000002 },
+  { 0x0e800941, 0x30000007 },
+  { 0x0e800949, 0x28000003 },
+  { 0x0e00094d, 0x30000000 },
+  { 0x0e000950, 0x1c000000 },
+  { 0x0e800951, 0x30000003 },
+  { 0x0e800958, 0x1c000009 },
+  { 0x0e800962, 0x30000001 },
+  { 0x09800964, 0x54000001 },
+  { 0x0e800966, 0x34000009 },
+  { 0x09000970, 0x54000000 },
+  { 0x0e00097d, 0x1c000000 },
+  { 0x02000981, 0x30000000 },
+  { 0x02800982, 0x28000001 },
+  { 0x02800985, 0x1c000007 },
+  { 0x0280098f, 0x1c000001 },
+  { 0x02800993, 0x1c000015 },
+  { 0x028009aa, 0x1c000006 },
+  { 0x020009b2, 0x1c000000 },
+  { 0x028009b6, 0x1c000003 },
+  { 0x020009bc, 0x30000000 },
+  { 0x020009bd, 0x1c000000 },
+  { 0x028009be, 0x28000002 },
+  { 0x028009c1, 0x30000003 },
+  { 0x028009c7, 0x28000001 },
+  { 0x028009cb, 0x28000001 },
+  { 0x020009cd, 0x30000000 },
+  { 0x020009ce, 0x1c000000 },
+  { 0x020009d7, 0x28000000 },
+  { 0x028009dc, 0x1c000001 },
+  { 0x028009df, 0x1c000002 },
+  { 0x028009e2, 0x30000001 },
+  { 0x028009e6, 0x34000009 },
+  { 0x028009f0, 0x1c000001 },
+  { 0x028009f2, 0x5c000001 },
+  { 0x028009f4, 0x3c000005 },
+  { 0x020009fa, 0x68000000 },
+  { 0x15800a01, 0x30000001 },
+  { 0x15000a03, 0x28000000 },
+  { 0x15800a05, 0x1c000005 },
+  { 0x15800a0f, 0x1c000001 },
+  { 0x15800a13, 0x1c000015 },
+  { 0x15800a2a, 0x1c000006 },
+  { 0x15800a32, 0x1c000001 },
+  { 0x15800a35, 0x1c000001 },
+  { 0x15800a38, 0x1c000001 },
+  { 0x15000a3c, 0x30000000 },
+  { 0x15800a3e, 0x28000002 },
+  { 0x15800a41, 0x30000001 },
+  { 0x15800a47, 0x30000001 },
+  { 0x15800a4b, 0x30000002 },
+  { 0x15800a59, 0x1c000003 },
+  { 0x15000a5e, 0x1c000000 },
+  { 0x15800a66, 0x34000009 },
+  { 0x15800a70, 0x30000001 },
+  { 0x15800a72, 0x1c000002 },
+  { 0x14800a81, 0x30000001 },
+  { 0x14000a83, 0x28000000 },
+  { 0x14800a85, 0x1c000008 },
+  { 0x14800a8f, 0x1c000002 },
+  { 0x14800a93, 0x1c000015 },
+  { 0x14800aaa, 0x1c000006 },
+  { 0x14800ab2, 0x1c000001 },
+  { 0x14800ab5, 0x1c000004 },
+  { 0x14000abc, 0x30000000 },
+  { 0x14000abd, 0x1c000000 },
+  { 0x14800abe, 0x28000002 },
+  { 0x14800ac1, 0x30000004 },
+  { 0x14800ac7, 0x30000001 },
+  { 0x14000ac9, 0x28000000 },
+  { 0x14800acb, 0x28000001 },
+  { 0x14000acd, 0x30000000 },
+  { 0x14000ad0, 0x1c000000 },
+  { 0x14800ae0, 0x1c000001 },
+  { 0x14800ae2, 0x30000001 },
+  { 0x14800ae6, 0x34000009 },
+  { 0x14000af1, 0x5c000000 },
+  { 0x2b000b01, 0x30000000 },
+  { 0x2b800b02, 0x28000001 },
+  { 0x2b800b05, 0x1c000007 },
+  { 0x2b800b0f, 0x1c000001 },
+  { 0x2b800b13, 0x1c000015 },
+  { 0x2b800b2a, 0x1c000006 },
+  { 0x2b800b32, 0x1c000001 },
+  { 0x2b800b35, 0x1c000004 },
+  { 0x2b000b3c, 0x30000000 },
+  { 0x2b000b3d, 0x1c000000 },
+  { 0x2b000b3e, 0x28000000 },
+  { 0x2b000b3f, 0x30000000 },
+  { 0x2b000b40, 0x28000000 },
+  { 0x2b800b41, 0x30000002 },
+  { 0x2b800b47, 0x28000001 },
+  { 0x2b800b4b, 0x28000001 },
+  { 0x2b000b4d, 0x30000000 },
+  { 0x2b000b56, 0x30000000 },
+  { 0x2b000b57, 0x28000000 },
+  { 0x2b800b5c, 0x1c000001 },
+  { 0x2b800b5f, 0x1c000002 },
+  { 0x2b800b66, 0x34000009 },
+  { 0x2b000b70, 0x68000000 },
+  { 0x2b000b71, 0x1c000000 },
+  { 0x35000b82, 0x30000000 },
+  { 0x35000b83, 0x1c000000 },
+  { 0x35800b85, 0x1c000005 },
+  { 0x35800b8e, 0x1c000002 },
+  { 0x35800b92, 0x1c000003 },
+  { 0x35800b99, 0x1c000001 },
+  { 0x35000b9c, 0x1c000000 },
+  { 0x35800b9e, 0x1c000001 },
+  { 0x35800ba3, 0x1c000001 },
+  { 0x35800ba8, 0x1c000002 },
+  { 0x35800bae, 0x1c00000b },
+  { 0x35800bbe, 0x28000001 },
+  { 0x35000bc0, 0x30000000 },
+  { 0x35800bc1, 0x28000001 },
+  { 0x35800bc6, 0x28000002 },
+  { 0x35800bca, 0x28000002 },
+  { 0x35000bcd, 0x30000000 },
+  { 0x35000bd7, 0x28000000 },
+  { 0x35800be6, 0x34000009 },
+  { 0x35800bf0, 0x3c000002 },
+  { 0x35800bf3, 0x68000005 },
+  { 0x35000bf9, 0x5c000000 },
+  { 0x35000bfa, 0x68000000 },
+  { 0x36800c01, 0x28000002 },
+  { 0x36800c05, 0x1c000007 },
+  { 0x36800c0e, 0x1c000002 },
+  { 0x36800c12, 0x1c000016 },
+  { 0x36800c2a, 0x1c000009 },
+  { 0x36800c35, 0x1c000004 },
+  { 0x36800c3e, 0x30000002 },
+  { 0x36800c41, 0x28000003 },
+  { 0x36800c46, 0x30000002 },
+  { 0x36800c4a, 0x30000003 },
+  { 0x36800c55, 0x30000001 },
+  { 0x36800c60, 0x1c000001 },
+  { 0x36800c66, 0x34000009 },
+  { 0x1c800c82, 0x28000001 },
+  { 0x1c800c85, 0x1c000007 },
+  { 0x1c800c8e, 0x1c000002 },
+  { 0x1c800c92, 0x1c000016 },
+  { 0x1c800caa, 0x1c000009 },
+  { 0x1c800cb5, 0x1c000004 },
+  { 0x1c000cbc, 0x30000000 },
+  { 0x1c000cbd, 0x1c000000 },
+  { 0x1c000cbe, 0x28000000 },
+  { 0x1c000cbf, 0x30000000 },
+  { 0x1c800cc0, 0x28000004 },
+  { 0x1c000cc6, 0x30000000 },
+  { 0x1c800cc7, 0x28000001 },
+  { 0x1c800cca, 0x28000001 },
+  { 0x1c800ccc, 0x30000001 },
+  { 0x1c800cd5, 0x28000001 },
+  { 0x1c000cde, 0x1c000000 },
+  { 0x1c800ce0, 0x1c000001 },
+  { 0x1c800ce6, 0x34000009 },
+  { 0x24800d02, 0x28000001 },
+  { 0x24800d05, 0x1c000007 },
+  { 0x24800d0e, 0x1c000002 },
+  { 0x24800d12, 0x1c000016 },
+  { 0x24800d2a, 0x1c00000f },
+  { 0x24800d3e, 0x28000002 },
+  { 0x24800d41, 0x30000002 },
+  { 0x24800d46, 0x28000002 },
+  { 0x24800d4a, 0x28000002 },
+  { 0x24000d4d, 0x30000000 },
+  { 0x24000d57, 0x28000000 },
+  { 0x24800d60, 0x1c000001 },
+  { 0x24800d66, 0x34000009 },
+  { 0x2f800d82, 0x28000001 },
+  { 0x2f800d85, 0x1c000011 },
+  { 0x2f800d9a, 0x1c000017 },
+  { 0x2f800db3, 0x1c000008 },
+  { 0x2f000dbd, 0x1c000000 },
+  { 0x2f800dc0, 0x1c000006 },
+  { 0x2f000dca, 0x30000000 },
+  { 0x2f800dcf, 0x28000002 },
+  { 0x2f800dd2, 0x30000002 },
+  { 0x2f000dd6, 0x30000000 },
+  { 0x2f800dd8, 0x28000007 },
+  { 0x2f800df2, 0x28000001 },
+  { 0x2f000df4, 0x54000000 },
+  { 0x38800e01, 0x1c00002f },
+  { 0x38000e31, 0x30000000 },
+  { 0x38800e32, 0x1c000001 },
+  { 0x38800e34, 0x30000006 },
+  { 0x09000e3f, 0x5c000000 },
+  { 0x38800e40, 0x1c000005 },
+  { 0x38000e46, 0x18000000 },
+  { 0x38800e47, 0x30000007 },
+  { 0x38000e4f, 0x54000000 },
+  { 0x38800e50, 0x34000009 },
+  { 0x38800e5a, 0x54000001 },
+  { 0x20800e81, 0x1c000001 },
+  { 0x20000e84, 0x1c000000 },
+  { 0x20800e87, 0x1c000001 },
+  { 0x20000e8a, 0x1c000000 },
+  { 0x20000e8d, 0x1c000000 },
+  { 0x20800e94, 0x1c000003 },
+  { 0x20800e99, 0x1c000006 },
+  { 0x20800ea1, 0x1c000002 },
+  { 0x20000ea5, 0x1c000000 },
+  { 0x20000ea7, 0x1c000000 },
+  { 0x20800eaa, 0x1c000001 },
+  { 0x20800ead, 0x1c000003 },
+  { 0x20000eb1, 0x30000000 },
+  { 0x20800eb2, 0x1c000001 },
+  { 0x20800eb4, 0x30000005 },
+  { 0x20800ebb, 0x30000001 },
+  { 0x20000ebd, 0x1c000000 },
+  { 0x20800ec0, 0x1c000004 },
+  { 0x20000ec6, 0x18000000 },
+  { 0x20800ec8, 0x30000005 },
+  { 0x20800ed0, 0x34000009 },
+  { 0x20800edc, 0x1c000001 },
+  { 0x39000f00, 0x1c000000 },
+  { 0x39800f01, 0x68000002 },
+  { 0x39800f04, 0x5400000e },
+  { 0x39800f13, 0x68000004 },
+  { 0x39800f18, 0x30000001 },
+  { 0x39800f1a, 0x68000005 },
+  { 0x39800f20, 0x34000009 },
+  { 0x39800f2a, 0x3c000009 },
+  { 0x39000f34, 0x68000000 },
+  { 0x39000f35, 0x30000000 },
+  { 0x39000f36, 0x68000000 },
+  { 0x39000f37, 0x30000000 },
+  { 0x39000f38, 0x68000000 },
+  { 0x39000f39, 0x30000000 },
+  { 0x39000f3a, 0x58000000 },
+  { 0x39000f3b, 0x48000000 },
+  { 0x39000f3c, 0x58000000 },
+  { 0x39000f3d, 0x48000000 },
+  { 0x39800f3e, 0x28000001 },
+  { 0x39800f40, 0x1c000007 },
+  { 0x39800f49, 0x1c000021 },
+  { 0x39800f71, 0x3000000d },
+  { 0x39000f7f, 0x28000000 },
+  { 0x39800f80, 0x30000004 },
+  { 0x39000f85, 0x54000000 },
+  { 0x39800f86, 0x30000001 },
+  { 0x39800f88, 0x1c000003 },
+  { 0x39800f90, 0x30000007 },
+  { 0x39800f99, 0x30000023 },
+  { 0x39800fbe, 0x68000007 },
+  { 0x39000fc6, 0x30000000 },
+  { 0x39800fc7, 0x68000005 },
+  { 0x39000fcf, 0x68000000 },
+  { 0x39800fd0, 0x54000001 },
+  { 0x26801000, 0x1c000021 },
+  { 0x26801023, 0x1c000004 },
+  { 0x26801029, 0x1c000001 },
+  { 0x2600102c, 0x28000000 },
+  { 0x2680102d, 0x30000003 },
+  { 0x26001031, 0x28000000 },
+  { 0x26001032, 0x30000000 },
+  { 0x26801036, 0x30000001 },
+  { 0x26001038, 0x28000000 },
+  { 0x26001039, 0x30000000 },
+  { 0x26801040, 0x34000009 },
+  { 0x2680104a, 0x54000005 },
+  { 0x26801050, 0x1c000005 },
+  { 0x26801056, 0x28000001 },
+  { 0x26801058, 0x30000001 },
+  { 0x100010a0, 0x24001c60 },
+  { 0x100010a1, 0x24001c60 },
+  { 0x100010a2, 0x24001c60 },
+  { 0x100010a3, 0x24001c60 },
+  { 0x100010a4, 0x24001c60 },
+  { 0x100010a5, 0x24001c60 },
+  { 0x100010a6, 0x24001c60 },
+  { 0x100010a7, 0x24001c60 },
+  { 0x100010a8, 0x24001c60 },
+  { 0x100010a9, 0x24001c60 },
+  { 0x100010aa, 0x24001c60 },
+  { 0x100010ab, 0x24001c60 },
+  { 0x100010ac, 0x24001c60 },
+  { 0x100010ad, 0x24001c60 },
+  { 0x100010ae, 0x24001c60 },
+  { 0x100010af, 0x24001c60 },
+  { 0x100010b0, 0x24001c60 },
+  { 0x100010b1, 0x24001c60 },
+  { 0x100010b2, 0x24001c60 },
+  { 0x100010b3, 0x24001c60 },
+  { 0x100010b4, 0x24001c60 },
+  { 0x100010b5, 0x24001c60 },
+  { 0x100010b6, 0x24001c60 },
+  { 0x100010b7, 0x24001c60 },
+  { 0x100010b8, 0x24001c60 },
+  { 0x100010b9, 0x24001c60 },
+  { 0x100010ba, 0x24001c60 },
+  { 0x100010bb, 0x24001c60 },
+  { 0x100010bc, 0x24001c60 },
+  { 0x100010bd, 0x24001c60 },
+  { 0x100010be, 0x24001c60 },
+  { 0x100010bf, 0x24001c60 },
+  { 0x100010c0, 0x24001c60 },
+  { 0x100010c1, 0x24001c60 },
+  { 0x100010c2, 0x24001c60 },
+  { 0x100010c3, 0x24001c60 },
+  { 0x100010c4, 0x24001c60 },
+  { 0x100010c5, 0x24001c60 },
+  { 0x108010d0, 0x1c00002a },
+  { 0x090010fb, 0x54000000 },
+  { 0x100010fc, 0x18000000 },
+  { 0x17801100, 0x1c000059 },
+  { 0x1780115f, 0x1c000043 },
+  { 0x178011a8, 0x1c000051 },
+  { 0x0f801200, 0x1c000048 },
+  { 0x0f80124a, 0x1c000003 },
+  { 0x0f801250, 0x1c000006 },
+  { 0x0f001258, 0x1c000000 },
+  { 0x0f80125a, 0x1c000003 },
+  { 0x0f801260, 0x1c000028 },
+  { 0x0f80128a, 0x1c000003 },
+  { 0x0f801290, 0x1c000020 },
+  { 0x0f8012b2, 0x1c000003 },
+  { 0x0f8012b8, 0x1c000006 },
+  { 0x0f0012c0, 0x1c000000 },
+  { 0x0f8012c2, 0x1c000003 },
+  { 0x0f8012c8, 0x1c00000e },
+  { 0x0f8012d8, 0x1c000038 },
+  { 0x0f801312, 0x1c000003 },
+  { 0x0f801318, 0x1c000042 },
+  { 0x0f00135f, 0x30000000 },
+  { 0x0f001360, 0x68000000 },
+  { 0x0f801361, 0x54000007 },
+  { 0x0f801369, 0x3c000013 },
+  { 0x0f801380, 0x1c00000f },
+  { 0x0f801390, 0x68000009 },
+  { 0x088013a0, 0x1c000054 },
+  { 0x07801401, 0x1c00026b },
+  { 0x0780166d, 0x54000001 },
+  { 0x0780166f, 0x1c000007 },
+  { 0x28001680, 0x74000000 },
+  { 0x28801681, 0x1c000019 },
+  { 0x2800169b, 0x58000000 },
+  { 0x2800169c, 0x48000000 },
+  { 0x2d8016a0, 0x1c00004a },
+  { 0x098016eb, 0x54000002 },
+  { 0x2d8016ee, 0x38000002 },
+  { 0x32801700, 0x1c00000c },
+  { 0x3280170e, 0x1c000003 },
+  { 0x32801712, 0x30000002 },
+  { 0x18801720, 0x1c000011 },
+  { 0x18801732, 0x30000002 },
+  { 0x09801735, 0x54000001 },
+  { 0x06801740, 0x1c000011 },
+  { 0x06801752, 0x30000001 },
+  { 0x33801760, 0x1c00000c },
+  { 0x3380176e, 0x1c000002 },
+  { 0x33801772, 0x30000001 },
+  { 0x1f801780, 0x1c000033 },
+  { 0x1f8017b4, 0x04000001 },
+  { 0x1f0017b6, 0x28000000 },
+  { 0x1f8017b7, 0x30000006 },
+  { 0x1f8017be, 0x28000007 },
+  { 0x1f0017c6, 0x30000000 },
+  { 0x1f8017c7, 0x28000001 },
+  { 0x1f8017c9, 0x3000000a },
+  { 0x1f8017d4, 0x54000002 },
+  { 0x1f0017d7, 0x18000000 },
+  { 0x1f8017d8, 0x54000002 },
+  { 0x1f0017db, 0x5c000000 },
+  { 0x1f0017dc, 0x1c000000 },
+  { 0x1f0017dd, 0x30000000 },
+  { 0x1f8017e0, 0x34000009 },
+  { 0x1f8017f0, 0x3c000009 },
+  { 0x25801800, 0x54000005 },
+  { 0x25001806, 0x44000000 },
+  { 0x25801807, 0x54000003 },
+  { 0x2580180b, 0x30000002 },
+  { 0x2500180e, 0x74000000 },
+  { 0x25801810, 0x34000009 },
+  { 0x25801820, 0x1c000022 },
+  { 0x25001843, 0x18000000 },
+  { 0x25801844, 0x1c000033 },
+  { 0x25801880, 0x1c000028 },
+  { 0x250018a9, 0x30000000 },
+  { 0x22801900, 0x1c00001c },
+  { 0x22801920, 0x30000002 },
+  { 0x22801923, 0x28000003 },
+  { 0x22801927, 0x30000001 },
+  { 0x22801929, 0x28000002 },
+  { 0x22801930, 0x28000001 },
+  { 0x22001932, 0x30000000 },
+  { 0x22801933, 0x28000005 },
+  { 0x22801939, 0x30000002 },
+  { 0x22001940, 0x68000000 },
+  { 0x22801944, 0x54000001 },
+  { 0x22801946, 0x34000009 },
+  { 0x34801950, 0x1c00001d },
+  { 0x34801970, 0x1c000004 },
+  { 0x27801980, 0x1c000029 },
+  { 0x278019b0, 0x28000010 },
+  { 0x278019c1, 0x1c000006 },
+  { 0x278019c8, 0x28000001 },
+  { 0x278019d0, 0x34000009 },
+  { 0x278019de, 0x54000001 },
+  { 0x1f8019e0, 0x6800001f },
+  { 0x05801a00, 0x1c000016 },
+  { 0x05801a17, 0x30000001 },
+  { 0x05801a19, 0x28000002 },
+  { 0x05801a1e, 0x54000001 },
+  { 0x21801d00, 0x1400002b },
+  { 0x21801d2c, 0x18000035 },
+  { 0x21801d62, 0x14000015 },
+  { 0x0c001d78, 0x18000000 },
+  { 0x21801d79, 0x14000021 },
+  { 0x21801d9b, 0x18000024 },
+  { 0x1b801dc0, 0x30000003 },
+  { 0x21001e00, 0x24000001 },
+  { 0x21001e01, 0x1400ffff },
+  { 0x21001e02, 0x24000001 },
+  { 0x21001e03, 0x1400ffff },
+  { 0x21001e04, 0x24000001 },
+  { 0x21001e05, 0x1400ffff },
+  { 0x21001e06, 0x24000001 },
+  { 0x21001e07, 0x1400ffff },
+  { 0x21001e08, 0x24000001 },
+  { 0x21001e09, 0x1400ffff },
+  { 0x21001e0a, 0x24000001 },
+  { 0x21001e0b, 0x1400ffff },
+  { 0x21001e0c, 0x24000001 },
+  { 0x21001e0d, 0x1400ffff },
+  { 0x21001e0e, 0x24000001 },
+  { 0x21001e0f, 0x1400ffff },
+  { 0x21001e10, 0x24000001 },
+  { 0x21001e11, 0x1400ffff },
+  { 0x21001e12, 0x24000001 },
+  { 0x21001e13, 0x1400ffff },
+  { 0x21001e14, 0x24000001 },
+  { 0x21001e15, 0x1400ffff },
+  { 0x21001e16, 0x24000001 },
+  { 0x21001e17, 0x1400ffff },
+  { 0x21001e18, 0x24000001 },
+  { 0x21001e19, 0x1400ffff },
+  { 0x21001e1a, 0x24000001 },
+  { 0x21001e1b, 0x1400ffff },
+  { 0x21001e1c, 0x24000001 },
+  { 0x21001e1d, 0x1400ffff },
+  { 0x21001e1e, 0x24000001 },
+  { 0x21001e1f, 0x1400ffff },
+  { 0x21001e20, 0x24000001 },
+  { 0x21001e21, 0x1400ffff },
+  { 0x21001e22, 0x24000001 },
+  { 0x21001e23, 0x1400ffff },
+  { 0x21001e24, 0x24000001 },
+  { 0x21001e25, 0x1400ffff },
+  { 0x21001e26, 0x24000001 },
+  { 0x21001e27, 0x1400ffff },
+  { 0x21001e28, 0x24000001 },
+  { 0x21001e29, 0x1400ffff },
+  { 0x21001e2a, 0x24000001 },
+  { 0x21001e2b, 0x1400ffff },
+  { 0x21001e2c, 0x24000001 },
+  { 0x21001e2d, 0x1400ffff },
+  { 0x21001e2e, 0x24000001 },
+  { 0x21001e2f, 0x1400ffff },
+  { 0x21001e30, 0x24000001 },
+  { 0x21001e31, 0x1400ffff },
+  { 0x21001e32, 0x24000001 },
+  { 0x21001e33, 0x1400ffff },
+  { 0x21001e34, 0x24000001 },
+  { 0x21001e35, 0x1400ffff },
+  { 0x21001e36, 0x24000001 },
+  { 0x21001e37, 0x1400ffff },
+  { 0x21001e38, 0x24000001 },
+  { 0x21001e39, 0x1400ffff },
+  { 0x21001e3a, 0x24000001 },
+  { 0x21001e3b, 0x1400ffff },
+  { 0x21001e3c, 0x24000001 },
+  { 0x21001e3d, 0x1400ffff },
+  { 0x21001e3e, 0x24000001 },
+  { 0x21001e3f, 0x1400ffff },
+  { 0x21001e40, 0x24000001 },
+  { 0x21001e41, 0x1400ffff },
+  { 0x21001e42, 0x24000001 },
+  { 0x21001e43, 0x1400ffff },
+  { 0x21001e44, 0x24000001 },
+  { 0x21001e45, 0x1400ffff },
+  { 0x21001e46, 0x24000001 },
+  { 0x21001e47, 0x1400ffff },
+  { 0x21001e48, 0x24000001 },
+  { 0x21001e49, 0x1400ffff },
+  { 0x21001e4a, 0x24000001 },
+  { 0x21001e4b, 0x1400ffff },
+  { 0x21001e4c, 0x24000001 },
+  { 0x21001e4d, 0x1400ffff },
+  { 0x21001e4e, 0x24000001 },
+  { 0x21001e4f, 0x1400ffff },
+  { 0x21001e50, 0x24000001 },
+  { 0x21001e51, 0x1400ffff },
+  { 0x21001e52, 0x24000001 },
+  { 0x21001e53, 0x1400ffff },
+  { 0x21001e54, 0x24000001 },
+  { 0x21001e55, 0x1400ffff },
+  { 0x21001e56, 0x24000001 },
+  { 0x21001e57, 0x1400ffff },
+  { 0x21001e58, 0x24000001 },
+  { 0x21001e59, 0x1400ffff },
+  { 0x21001e5a, 0x24000001 },
+  { 0x21001e5b, 0x1400ffff },
+  { 0x21001e5c, 0x24000001 },
+  { 0x21001e5d, 0x1400ffff },
+  { 0x21001e5e, 0x24000001 },
+  { 0x21001e5f, 0x1400ffff },
+  { 0x21001e60, 0x24000001 },
+  { 0x21001e61, 0x1400ffff },
+  { 0x21001e62, 0x24000001 },
+  { 0x21001e63, 0x1400ffff },
+  { 0x21001e64, 0x24000001 },
+  { 0x21001e65, 0x1400ffff },
+  { 0x21001e66, 0x24000001 },
+  { 0x21001e67, 0x1400ffff },
+  { 0x21001e68, 0x24000001 },
+  { 0x21001e69, 0x1400ffff },
+  { 0x21001e6a, 0x24000001 },
+  { 0x21001e6b, 0x1400ffff },
+  { 0x21001e6c, 0x24000001 },
+  { 0x21001e6d, 0x1400ffff },
+  { 0x21001e6e, 0x24000001 },
+  { 0x21001e6f, 0x1400ffff },
+  { 0x21001e70, 0x24000001 },
+  { 0x21001e71, 0x1400ffff },
+  { 0x21001e72, 0x24000001 },
+  { 0x21001e73, 0x1400ffff },
+  { 0x21001e74, 0x24000001 },
+  { 0x21001e75, 0x1400ffff },
+  { 0x21001e76, 0x24000001 },
+  { 0x21001e77, 0x1400ffff },
+  { 0x21001e78, 0x24000001 },
+  { 0x21001e79, 0x1400ffff },
+  { 0x21001e7a, 0x24000001 },
+  { 0x21001e7b, 0x1400ffff },
+  { 0x21001e7c, 0x24000001 },
+  { 0x21001e7d, 0x1400ffff },
+  { 0x21001e7e, 0x24000001 },
+  { 0x21001e7f, 0x1400ffff },
+  { 0x21001e80, 0x24000001 },
+  { 0x21001e81, 0x1400ffff },
+  { 0x21001e82, 0x24000001 },
+  { 0x21001e83, 0x1400ffff },
+  { 0x21001e84, 0x24000001 },
+  { 0x21001e85, 0x1400ffff },
+  { 0x21001e86, 0x24000001 },
+  { 0x21001e87, 0x1400ffff },
+  { 0x21001e88, 0x24000001 },
+  { 0x21001e89, 0x1400ffff },
+  { 0x21001e8a, 0x24000001 },
+  { 0x21001e8b, 0x1400ffff },
+  { 0x21001e8c, 0x24000001 },
+  { 0x21001e8d, 0x1400ffff },
+  { 0x21001e8e, 0x24000001 },
+  { 0x21001e8f, 0x1400ffff },
+  { 0x21001e90, 0x24000001 },
+  { 0x21001e91, 0x1400ffff },
+  { 0x21001e92, 0x24000001 },
+  { 0x21001e93, 0x1400ffff },
+  { 0x21001e94, 0x24000001 },
+  { 0x21001e95, 0x1400ffff },
+  { 0x21801e96, 0x14000004 },
+  { 0x21001e9b, 0x1400ffc5 },
+  { 0x21001ea0, 0x24000001 },
+  { 0x21001ea1, 0x1400ffff },
+  { 0x21001ea2, 0x24000001 },
+  { 0x21001ea3, 0x1400ffff },
+  { 0x21001ea4, 0x24000001 },
+  { 0x21001ea5, 0x1400ffff },
+  { 0x21001ea6, 0x24000001 },
+  { 0x21001ea7, 0x1400ffff },
+  { 0x21001ea8, 0x24000001 },
+  { 0x21001ea9, 0x1400ffff },
+  { 0x21001eaa, 0x24000001 },
+  { 0x21001eab, 0x1400ffff },
+  { 0x21001eac, 0x24000001 },
+  { 0x21001ead, 0x1400ffff },
+  { 0x21001eae, 0x24000001 },
+  { 0x21001eaf, 0x1400ffff },
+  { 0x21001eb0, 0x24000001 },
+  { 0x21001eb1, 0x1400ffff },
+  { 0x21001eb2, 0x24000001 },
+  { 0x21001eb3, 0x1400ffff },
+  { 0x21001eb4, 0x24000001 },
+  { 0x21001eb5, 0x1400ffff },
+  { 0x21001eb6, 0x24000001 },
+  { 0x21001eb7, 0x1400ffff },
+  { 0x21001eb8, 0x24000001 },
+  { 0x21001eb9, 0x1400ffff },
+  { 0x21001eba, 0x24000001 },
+  { 0x21001ebb, 0x1400ffff },
+  { 0x21001ebc, 0x24000001 },
+  { 0x21001ebd, 0x1400ffff },
+  { 0x21001ebe, 0x24000001 },
+  { 0x21001ebf, 0x1400ffff },
+  { 0x21001ec0, 0x24000001 },
+  { 0x21001ec1, 0x1400ffff },
+  { 0x21001ec2, 0x24000001 },
+  { 0x21001ec3, 0x1400ffff },
+  { 0x21001ec4, 0x24000001 },
+  { 0x21001ec5, 0x1400ffff },
+  { 0x21001ec6, 0x24000001 },
+  { 0x21001ec7, 0x1400ffff },
+  { 0x21001ec8, 0x24000001 },
+  { 0x21001ec9, 0x1400ffff },
+  { 0x21001eca, 0x24000001 },
+  { 0x21001ecb, 0x1400ffff },
+  { 0x21001ecc, 0x24000001 },
+  { 0x21001ecd, 0x1400ffff },
+  { 0x21001ece, 0x24000001 },
+  { 0x21001ecf, 0x1400ffff },
+  { 0x21001ed0, 0x24000001 },
+  { 0x21001ed1, 0x1400ffff },
+  { 0x21001ed2, 0x24000001 },
+  { 0x21001ed3, 0x1400ffff },
+  { 0x21001ed4, 0x24000001 },
+  { 0x21001ed5, 0x1400ffff },
+  { 0x21001ed6, 0x24000001 },
+  { 0x21001ed7, 0x1400ffff },
+  { 0x21001ed8, 0x24000001 },
+  { 0x21001ed9, 0x1400ffff },
+  { 0x21001eda, 0x24000001 },
+  { 0x21001edb, 0x1400ffff },
+  { 0x21001edc, 0x24000001 },
+  { 0x21001edd, 0x1400ffff },
+  { 0x21001ede, 0x24000001 },
+  { 0x21001edf, 0x1400ffff },
+  { 0x21001ee0, 0x24000001 },
+  { 0x21001ee1, 0x1400ffff },
+  { 0x21001ee2, 0x24000001 },
+  { 0x21001ee3, 0x1400ffff },
+  { 0x21001ee4, 0x24000001 },
+  { 0x21001ee5, 0x1400ffff },
+  { 0x21001ee6, 0x24000001 },
+  { 0x21001ee7, 0x1400ffff },
+  { 0x21001ee8, 0x24000001 },
+  { 0x21001ee9, 0x1400ffff },
+  { 0x21001eea, 0x24000001 },
+  { 0x21001eeb, 0x1400ffff },
+  { 0x21001eec, 0x24000001 },
+  { 0x21001eed, 0x1400ffff },
+  { 0x21001eee, 0x24000001 },
+  { 0x21001eef, 0x1400ffff },
+  { 0x21001ef0, 0x24000001 },
+  { 0x21001ef1, 0x1400ffff },
+  { 0x21001ef2, 0x24000001 },
+  { 0x21001ef3, 0x1400ffff },
+  { 0x21001ef4, 0x24000001 },
+  { 0x21001ef5, 0x1400ffff },
+  { 0x21001ef6, 0x24000001 },
+  { 0x21001ef7, 0x1400ffff },
+  { 0x21001ef8, 0x24000001 },
+  { 0x21001ef9, 0x1400ffff },
+  { 0x13001f00, 0x14000008 },
+  { 0x13001f01, 0x14000008 },
+  { 0x13001f02, 0x14000008 },
+  { 0x13001f03, 0x14000008 },
+  { 0x13001f04, 0x14000008 },
+  { 0x13001f05, 0x14000008 },
+  { 0x13001f06, 0x14000008 },
+  { 0x13001f07, 0x14000008 },
+  { 0x13001f08, 0x2400fff8 },
+  { 0x13001f09, 0x2400fff8 },
+  { 0x13001f0a, 0x2400fff8 },
+  { 0x13001f0b, 0x2400fff8 },
+  { 0x13001f0c, 0x2400fff8 },
+  { 0x13001f0d, 0x2400fff8 },
+  { 0x13001f0e, 0x2400fff8 },
+  { 0x13001f0f, 0x2400fff8 },
+  { 0x13001f10, 0x14000008 },
+  { 0x13001f11, 0x14000008 },
+  { 0x13001f12, 0x14000008 },
+  { 0x13001f13, 0x14000008 },
+  { 0x13001f14, 0x14000008 },
+  { 0x13001f15, 0x14000008 },
+  { 0x13001f18, 0x2400fff8 },
+  { 0x13001f19, 0x2400fff8 },
+  { 0x13001f1a, 0x2400fff8 },
+  { 0x13001f1b, 0x2400fff8 },
+  { 0x13001f1c, 0x2400fff8 },
+  { 0x13001f1d, 0x2400fff8 },
+  { 0x13001f20, 0x14000008 },
+  { 0x13001f21, 0x14000008 },
+  { 0x13001f22, 0x14000008 },
+  { 0x13001f23, 0x14000008 },
+  { 0x13001f24, 0x14000008 },
+  { 0x13001f25, 0x14000008 },
+  { 0x13001f26, 0x14000008 },
+  { 0x13001f27, 0x14000008 },
+  { 0x13001f28, 0x2400fff8 },
+  { 0x13001f29, 0x2400fff8 },
+  { 0x13001f2a, 0x2400fff8 },
+  { 0x13001f2b, 0x2400fff8 },
+  { 0x13001f2c, 0x2400fff8 },
+  { 0x13001f2d, 0x2400fff8 },
+  { 0x13001f2e, 0x2400fff8 },
+  { 0x13001f2f, 0x2400fff8 },
+  { 0x13001f30, 0x14000008 },
+  { 0x13001f31, 0x14000008 },
+  { 0x13001f32, 0x14000008 },
+  { 0x13001f33, 0x14000008 },
+  { 0x13001f34, 0x14000008 },
+  { 0x13001f35, 0x14000008 },
+  { 0x13001f36, 0x14000008 },
+  { 0x13001f37, 0x14000008 },
+  { 0x13001f38, 0x2400fff8 },
+  { 0x13001f39, 0x2400fff8 },
+  { 0x13001f3a, 0x2400fff8 },
+  { 0x13001f3b, 0x2400fff8 },
+  { 0x13001f3c, 0x2400fff8 },
+  { 0x13001f3d, 0x2400fff8 },
+  { 0x13001f3e, 0x2400fff8 },
+  { 0x13001f3f, 0x2400fff8 },
+  { 0x13001f40, 0x14000008 },
+  { 0x13001f41, 0x14000008 },
+  { 0x13001f42, 0x14000008 },
+  { 0x13001f43, 0x14000008 },
+  { 0x13001f44, 0x14000008 },
+  { 0x13001f45, 0x14000008 },
+  { 0x13001f48, 0x2400fff8 },
+  { 0x13001f49, 0x2400fff8 },
+  { 0x13001f4a, 0x2400fff8 },
+  { 0x13001f4b, 0x2400fff8 },
+  { 0x13001f4c, 0x2400fff8 },
+  { 0x13001f4d, 0x2400fff8 },
+  { 0x13001f50, 0x14000000 },
+  { 0x13001f51, 0x14000008 },
+  { 0x13001f52, 0x14000000 },
+  { 0x13001f53, 0x14000008 },
+  { 0x13001f54, 0x14000000 },
+  { 0x13001f55, 0x14000008 },
+  { 0x13001f56, 0x14000000 },
+  { 0x13001f57, 0x14000008 },
+  { 0x13001f59, 0x2400fff8 },
+  { 0x13001f5b, 0x2400fff8 },
+  { 0x13001f5d, 0x2400fff8 },
+  { 0x13001f5f, 0x2400fff8 },
+  { 0x13001f60, 0x14000008 },
+  { 0x13001f61, 0x14000008 },
+  { 0x13001f62, 0x14000008 },
+  { 0x13001f63, 0x14000008 },
+  { 0x13001f64, 0x14000008 },
+  { 0x13001f65, 0x14000008 },
+  { 0x13001f66, 0x14000008 },
+  { 0x13001f67, 0x14000008 },
+  { 0x13001f68, 0x2400fff8 },
+  { 0x13001f69, 0x2400fff8 },
+  { 0x13001f6a, 0x2400fff8 },
+  { 0x13001f6b, 0x2400fff8 },
+  { 0x13001f6c, 0x2400fff8 },
+  { 0x13001f6d, 0x2400fff8 },
+  { 0x13001f6e, 0x2400fff8 },
+  { 0x13001f6f, 0x2400fff8 },
+  { 0x13001f70, 0x1400004a },
+  { 0x13001f71, 0x1400004a },
+  { 0x13001f72, 0x14000056 },
+  { 0x13001f73, 0x14000056 },
+  { 0x13001f74, 0x14000056 },
+  { 0x13001f75, 0x14000056 },
+  { 0x13001f76, 0x14000064 },
+  { 0x13001f77, 0x14000064 },
+  { 0x13001f78, 0x14000080 },
+  { 0x13001f79, 0x14000080 },
+  { 0x13001f7a, 0x14000070 },
+  { 0x13001f7b, 0x14000070 },
+  { 0x13001f7c, 0x1400007e },
+  { 0x13001f7d, 0x1400007e },
+  { 0x13001f80, 0x14000008 },
+  { 0x13001f81, 0x14000008 },
+  { 0x13001f82, 0x14000008 },
+  { 0x13001f83, 0x14000008 },
+  { 0x13001f84, 0x14000008 },
+  { 0x13001f85, 0x14000008 },
+  { 0x13001f86, 0x14000008 },
+  { 0x13001f87, 0x14000008 },
+  { 0x13001f88, 0x2000fff8 },
+  { 0x13001f89, 0x2000fff8 },
+  { 0x13001f8a, 0x2000fff8 },
+  { 0x13001f8b, 0x2000fff8 },
+  { 0x13001f8c, 0x2000fff8 },
+  { 0x13001f8d, 0x2000fff8 },
+  { 0x13001f8e, 0x2000fff8 },
+  { 0x13001f8f, 0x2000fff8 },
+  { 0x13001f90, 0x14000008 },
+  { 0x13001f91, 0x14000008 },
+  { 0x13001f92, 0x14000008 },
+  { 0x13001f93, 0x14000008 },
+  { 0x13001f94, 0x14000008 },
+  { 0x13001f95, 0x14000008 },
+  { 0x13001f96, 0x14000008 },
+  { 0x13001f97, 0x14000008 },
+  { 0x13001f98, 0x2000fff8 },
+  { 0x13001f99, 0x2000fff8 },
+  { 0x13001f9a, 0x2000fff8 },
+  { 0x13001f9b, 0x2000fff8 },
+  { 0x13001f9c, 0x2000fff8 },
+  { 0x13001f9d, 0x2000fff8 },
+  { 0x13001f9e, 0x2000fff8 },
+  { 0x13001f9f, 0x2000fff8 },
+  { 0x13001fa0, 0x14000008 },
+  { 0x13001fa1, 0x14000008 },
+  { 0x13001fa2, 0x14000008 },
+  { 0x13001fa3, 0x14000008 },
+  { 0x13001fa4, 0x14000008 },
+  { 0x13001fa5, 0x14000008 },
+  { 0x13001fa6, 0x14000008 },
+  { 0x13001fa7, 0x14000008 },
+  { 0x13001fa8, 0x2000fff8 },
+  { 0x13001fa9, 0x2000fff8 },
+  { 0x13001faa, 0x2000fff8 },
+  { 0x13001fab, 0x2000fff8 },
+  { 0x13001fac, 0x2000fff8 },
+  { 0x13001fad, 0x2000fff8 },
+  { 0x13001fae, 0x2000fff8 },
+  { 0x13001faf, 0x2000fff8 },
+  { 0x13001fb0, 0x14000008 },
+  { 0x13001fb1, 0x14000008 },
+  { 0x13001fb2, 0x14000000 },
+  { 0x13001fb3, 0x14000009 },
+  { 0x13001fb4, 0x14000000 },
+  { 0x13801fb6, 0x14000001 },
+  { 0x13001fb8, 0x2400fff8 },
+  { 0x13001fb9, 0x2400fff8 },
+  { 0x13001fba, 0x2400ffb6 },
+  { 0x13001fbb, 0x2400ffb6 },
+  { 0x13001fbc, 0x2000fff7 },
+  { 0x13001fbd, 0x60000000 },
+  { 0x13001fbe, 0x1400e3db },
+  { 0x13801fbf, 0x60000002 },
+  { 0x13001fc2, 0x14000000 },
+  { 0x13001fc3, 0x14000009 },
+  { 0x13001fc4, 0x14000000 },
+  { 0x13801fc6, 0x14000001 },
+  { 0x13001fc8, 0x2400ffaa },
+  { 0x13001fc9, 0x2400ffaa },
+  { 0x13001fca, 0x2400ffaa },
+  { 0x13001fcb, 0x2400ffaa },
+  { 0x13001fcc, 0x2000fff7 },
+  { 0x13801fcd, 0x60000002 },
+  { 0x13001fd0, 0x14000008 },
+  { 0x13001fd1, 0x14000008 },
+  { 0x13801fd2, 0x14000001 },
+  { 0x13801fd6, 0x14000001 },
+  { 0x13001fd8, 0x2400fff8 },
+  { 0x13001fd9, 0x2400fff8 },
+  { 0x13001fda, 0x2400ff9c },
+  { 0x13001fdb, 0x2400ff9c },
+  { 0x13801fdd, 0x60000002 },
+  { 0x13001fe0, 0x14000008 },
+  { 0x13001fe1, 0x14000008 },
+  { 0x13801fe2, 0x14000002 },
+  { 0x13001fe5, 0x14000007 },
+  { 0x13801fe6, 0x14000001 },
+  { 0x13001fe8, 0x2400fff8 },
+  { 0x13001fe9, 0x2400fff8 },
+  { 0x13001fea, 0x2400ff90 },
+  { 0x13001feb, 0x2400ff90 },
+  { 0x13001fec, 0x2400fff9 },
+  { 0x13801fed, 0x60000002 },
+  { 0x13001ff2, 0x14000000 },
+  { 0x13001ff3, 0x14000009 },
+  { 0x13001ff4, 0x14000000 },
+  { 0x13801ff6, 0x14000001 },
+  { 0x13001ff8, 0x2400ff80 },
+  { 0x13001ff9, 0x2400ff80 },
+  { 0x13001ffa, 0x2400ff82 },
+  { 0x13001ffb, 0x2400ff82 },
+  { 0x13001ffc, 0x2000fff7 },
+  { 0x13801ffd, 0x60000001 },
+  { 0x09802000, 0x7400000a },
+  { 0x0980200b, 0x04000004 },
+  { 0x09802010, 0x44000005 },
+  { 0x09802016, 0x54000001 },
+  { 0x09002018, 0x50000000 },
+  { 0x09002019, 0x4c000000 },
+  { 0x0900201a, 0x58000000 },
+  { 0x0980201b, 0x50000001 },
+  { 0x0900201d, 0x4c000000 },
+  { 0x0900201e, 0x58000000 },
+  { 0x0900201f, 0x50000000 },
+  { 0x09802020, 0x54000007 },
+  { 0x09002028, 0x6c000000 },
+  { 0x09002029, 0x70000000 },
+  { 0x0980202a, 0x04000004 },
+  { 0x0900202f, 0x74000000 },
+  { 0x09802030, 0x54000008 },
+  { 0x09002039, 0x50000000 },
+  { 0x0900203a, 0x4c000000 },
+  { 0x0980203b, 0x54000003 },
+  { 0x0980203f, 0x40000001 },
+  { 0x09802041, 0x54000002 },
+  { 0x09002044, 0x64000000 },
+  { 0x09002045, 0x58000000 },
+  { 0x09002046, 0x48000000 },
+  { 0x09802047, 0x5400000a },
+  { 0x09002052, 0x64000000 },
+  { 0x09002053, 0x54000000 },
+  { 0x09002054, 0x40000000 },
+  { 0x09802055, 0x54000009 },
+  { 0x0900205f, 0x74000000 },
+  { 0x09802060, 0x04000003 },
+  { 0x0980206a, 0x04000005 },
+  { 0x09002070, 0x3c000000 },
+  { 0x21002071, 0x14000000 },
+  { 0x09802074, 0x3c000005 },
+  { 0x0980207a, 0x64000002 },
+  { 0x0900207d, 0x58000000 },
+  { 0x0900207e, 0x48000000 },
+  { 0x2100207f, 0x14000000 },
+  { 0x09802080, 0x3c000009 },
+  { 0x0980208a, 0x64000002 },
+  { 0x0900208d, 0x58000000 },
+  { 0x0900208e, 0x48000000 },
+  { 0x21802090, 0x18000004 },
+  { 0x098020a0, 0x5c000015 },
+  { 0x1b8020d0, 0x3000000c },
+  { 0x1b8020dd, 0x2c000003 },
+  { 0x1b0020e1, 0x30000000 },
+  { 0x1b8020e2, 0x2c000002 },
+  { 0x1b8020e5, 0x30000006 },
+  { 0x09802100, 0x68000001 },
+  { 0x09002102, 0x24000000 },
+  { 0x09802103, 0x68000003 },
+  { 0x09002107, 0x24000000 },
+  { 0x09802108, 0x68000001 },
+  { 0x0900210a, 0x14000000 },
+  { 0x0980210b, 0x24000002 },
+  { 0x0980210e, 0x14000001 },
+  { 0x09802110, 0x24000002 },
+  { 0x09002113, 0x14000000 },
+  { 0x09002114, 0x68000000 },
+  { 0x09002115, 0x24000000 },
+  { 0x09802116, 0x68000002 },
+  { 0x09802119, 0x24000004 },
+  { 0x0980211e, 0x68000005 },
+  { 0x09002124, 0x24000000 },
+  { 0x09002125, 0x68000000 },
+  { 0x13002126, 0x2400e2a3 },
+  { 0x09002127, 0x68000000 },
+  { 0x09002128, 0x24000000 },
+  { 0x09002129, 0x68000000 },
+  { 0x2100212a, 0x2400df41 },
+  { 0x2100212b, 0x2400dfba },
+  { 0x0980212c, 0x24000001 },
+  { 0x0900212e, 0x68000000 },
+  { 0x0900212f, 0x14000000 },
+  { 0x09802130, 0x24000001 },
+  { 0x09002132, 0x68000000 },
+  { 0x09002133, 0x24000000 },
+  { 0x09002134, 0x14000000 },
+  { 0x09802135, 0x1c000003 },
+  { 0x09002139, 0x14000000 },
+  { 0x0980213a, 0x68000001 },
+  { 0x0980213c, 0x14000001 },
+  { 0x0980213e, 0x24000001 },
+  { 0x09802140, 0x64000004 },
+  { 0x09002145, 0x24000000 },
+  { 0x09802146, 0x14000003 },
+  { 0x0900214a, 0x68000000 },
+  { 0x0900214b, 0x64000000 },
+  { 0x0900214c, 0x68000000 },
+  { 0x09802153, 0x3c00000c },
+  { 0x09002160, 0x38000010 },
+  { 0x09002161, 0x38000010 },
+  { 0x09002162, 0x38000010 },
+  { 0x09002163, 0x38000010 },
+  { 0x09002164, 0x38000010 },
+  { 0x09002165, 0x38000010 },
+  { 0x09002166, 0x38000010 },
+  { 0x09002167, 0x38000010 },
+  { 0x09002168, 0x38000010 },
+  { 0x09002169, 0x38000010 },
+  { 0x0900216a, 0x38000010 },
+  { 0x0900216b, 0x38000010 },
+  { 0x0900216c, 0x38000010 },
+  { 0x0900216d, 0x38000010 },
+  { 0x0900216e, 0x38000010 },
+  { 0x0900216f, 0x38000010 },
+  { 0x09002170, 0x3800fff0 },
+  { 0x09002171, 0x3800fff0 },
+  { 0x09002172, 0x3800fff0 },
+  { 0x09002173, 0x3800fff0 },
+  { 0x09002174, 0x3800fff0 },
+  { 0x09002175, 0x3800fff0 },
+  { 0x09002176, 0x3800fff0 },
+  { 0x09002177, 0x3800fff0 },
+  { 0x09002178, 0x3800fff0 },
+  { 0x09002179, 0x3800fff0 },
+  { 0x0900217a, 0x3800fff0 },
+  { 0x0900217b, 0x3800fff0 },
+  { 0x0900217c, 0x3800fff0 },
+  { 0x0900217d, 0x3800fff0 },
+  { 0x0900217e, 0x3800fff0 },
+  { 0x0900217f, 0x3800fff0 },
+  { 0x09802180, 0x38000003 },
+  { 0x09802190, 0x64000004 },
+  { 0x09802195, 0x68000004 },
+  { 0x0980219a, 0x64000001 },
+  { 0x0980219c, 0x68000003 },
+  { 0x090021a0, 0x64000000 },
+  { 0x098021a1, 0x68000001 },
+  { 0x090021a3, 0x64000000 },
+  { 0x098021a4, 0x68000001 },
+  { 0x090021a6, 0x64000000 },
+  { 0x098021a7, 0x68000006 },
+  { 0x090021ae, 0x64000000 },
+  { 0x098021af, 0x6800001e },
+  { 0x098021ce, 0x64000001 },
+  { 0x098021d0, 0x68000001 },
+  { 0x090021d2, 0x64000000 },
+  { 0x090021d3, 0x68000000 },
+  { 0x090021d4, 0x64000000 },
+  { 0x098021d5, 0x6800001e },
+  { 0x098021f4, 0x6400010b },
+  { 0x09802300, 0x68000007 },
+  { 0x09802308, 0x64000003 },
+  { 0x0980230c, 0x68000013 },
+  { 0x09802320, 0x64000001 },
+  { 0x09802322, 0x68000006 },
+  { 0x09002329, 0x58000000 },
+  { 0x0900232a, 0x48000000 },
+  { 0x0980232b, 0x68000050 },
+  { 0x0900237c, 0x64000000 },
+  { 0x0980237d, 0x6800001d },
+  { 0x0980239b, 0x64000018 },
+  { 0x090023b4, 0x58000000 },
+  { 0x090023b5, 0x48000000 },
+  { 0x090023b6, 0x54000000 },
+  { 0x098023b7, 0x68000024 },
+  { 0x09802400, 0x68000026 },
+  { 0x09802440, 0x6800000a },
+  { 0x09802460, 0x3c00003b },
+  { 0x0980249c, 0x68000019 },
+  { 0x090024b6, 0x6800001a },
+  { 0x090024b7, 0x6800001a },
+  { 0x090024b8, 0x6800001a },
+  { 0x090024b9, 0x6800001a },
+  { 0x090024ba, 0x6800001a },
+  { 0x090024bb, 0x6800001a },
+  { 0x090024bc, 0x6800001a },
+  { 0x090024bd, 0x6800001a },
+  { 0x090024be, 0x6800001a },
+  { 0x090024bf, 0x6800001a },
+  { 0x090024c0, 0x6800001a },
+  { 0x090024c1, 0x6800001a },
+  { 0x090024c2, 0x6800001a },
+  { 0x090024c3, 0x6800001a },
+  { 0x090024c4, 0x6800001a },
+  { 0x090024c5, 0x6800001a },
+  { 0x090024c6, 0x6800001a },
+  { 0x090024c7, 0x6800001a },
+  { 0x090024c8, 0x6800001a },
+  { 0x090024c9, 0x6800001a },
+  { 0x090024ca, 0x6800001a },
+  { 0x090024cb, 0x6800001a },
+  { 0x090024cc, 0x6800001a },
+  { 0x090024cd, 0x6800001a },
+  { 0x090024ce, 0x6800001a },
+  { 0x090024cf, 0x6800001a },
+  { 0x090024d0, 0x6800ffe6 },
+  { 0x090024d1, 0x6800ffe6 },
+  { 0x090024d2, 0x6800ffe6 },
+  { 0x090024d3, 0x6800ffe6 },
+  { 0x090024d4, 0x6800ffe6 },
+  { 0x090024d5, 0x6800ffe6 },
+  { 0x090024d6, 0x6800ffe6 },
+  { 0x090024d7, 0x6800ffe6 },
+  { 0x090024d8, 0x6800ffe6 },
+  { 0x090024d9, 0x6800ffe6 },
+  { 0x090024da, 0x6800ffe6 },
+  { 0x090024db, 0x6800ffe6 },
+  { 0x090024dc, 0x6800ffe6 },
+  { 0x090024dd, 0x6800ffe6 },
+  { 0x090024de, 0x6800ffe6 },
+  { 0x090024df, 0x6800ffe6 },
+  { 0x090024e0, 0x6800ffe6 },
+  { 0x090024e1, 0x6800ffe6 },
+  { 0x090024e2, 0x6800ffe6 },
+  { 0x090024e3, 0x6800ffe6 },
+  { 0x090024e4, 0x6800ffe6 },
+  { 0x090024e5, 0x6800ffe6 },
+  { 0x090024e6, 0x6800ffe6 },
+  { 0x090024e7, 0x6800ffe6 },
+  { 0x090024e8, 0x6800ffe6 },
+  { 0x090024e9, 0x6800ffe6 },
+  { 0x098024ea, 0x3c000015 },
+  { 0x09802500, 0x680000b6 },
+  { 0x090025b7, 0x64000000 },
+  { 0x098025b8, 0x68000008 },
+  { 0x090025c1, 0x64000000 },
+  { 0x098025c2, 0x68000035 },
+  { 0x098025f8, 0x64000007 },
+  { 0x09802600, 0x6800006e },
+  { 0x0900266f, 0x64000000 },
+  { 0x09802670, 0x6800002c },
+  { 0x098026a0, 0x68000011 },
+  { 0x09802701, 0x68000003 },
+  { 0x09802706, 0x68000003 },
+  { 0x0980270c, 0x6800001b },
+  { 0x09802729, 0x68000022 },
+  { 0x0900274d, 0x68000000 },
+  { 0x0980274f, 0x68000003 },
+  { 0x09002756, 0x68000000 },
+  { 0x09802758, 0x68000006 },
+  { 0x09802761, 0x68000006 },
+  { 0x09002768, 0x58000000 },
+  { 0x09002769, 0x48000000 },
+  { 0x0900276a, 0x58000000 },
+  { 0x0900276b, 0x48000000 },
+  { 0x0900276c, 0x58000000 },
+  { 0x0900276d, 0x48000000 },
+  { 0x0900276e, 0x58000000 },
+  { 0x0900276f, 0x48000000 },
+  { 0x09002770, 0x58000000 },
+  { 0x09002771, 0x48000000 },
+  { 0x09002772, 0x58000000 },
+  { 0x09002773, 0x48000000 },
+  { 0x09002774, 0x58000000 },
+  { 0x09002775, 0x48000000 },
+  { 0x09802776, 0x3c00001d },
+  { 0x09002794, 0x68000000 },
+  { 0x09802798, 0x68000017 },
+  { 0x098027b1, 0x6800000d },
+  { 0x098027c0, 0x64000004 },
+  { 0x090027c5, 0x58000000 },
+  { 0x090027c6, 0x48000000 },
+  { 0x098027d0, 0x64000015 },
+  { 0x090027e6, 0x58000000 },
+  { 0x090027e7, 0x48000000 },
+  { 0x090027e8, 0x58000000 },
+  { 0x090027e9, 0x48000000 },
+  { 0x090027ea, 0x58000000 },
+  { 0x090027eb, 0x48000000 },
+  { 0x098027f0, 0x6400000f },
+  { 0x04802800, 0x680000ff },
+  { 0x09802900, 0x64000082 },
+  { 0x09002983, 0x58000000 },
+  { 0x09002984, 0x48000000 },
+  { 0x09002985, 0x58000000 },
+  { 0x09002986, 0x48000000 },
+  { 0x09002987, 0x58000000 },
+  { 0x09002988, 0x48000000 },
+  { 0x09002989, 0x58000000 },
+  { 0x0900298a, 0x48000000 },
+  { 0x0900298b, 0x58000000 },
+  { 0x0900298c, 0x48000000 },
+  { 0x0900298d, 0x58000000 },
+  { 0x0900298e, 0x48000000 },
+  { 0x0900298f, 0x58000000 },
+  { 0x09002990, 0x48000000 },
+  { 0x09002991, 0x58000000 },
+  { 0x09002992, 0x48000000 },
+  { 0x09002993, 0x58000000 },
+  { 0x09002994, 0x48000000 },
+  { 0x09002995, 0x58000000 },
+  { 0x09002996, 0x48000000 },
+  { 0x09002997, 0x58000000 },
+  { 0x09002998, 0x48000000 },
+  { 0x09802999, 0x6400003e },
+  { 0x090029d8, 0x58000000 },
+  { 0x090029d9, 0x48000000 },
+  { 0x090029da, 0x58000000 },
+  { 0x090029db, 0x48000000 },
+  { 0x098029dc, 0x6400001f },
+  { 0x090029fc, 0x58000000 },
+  { 0x090029fd, 0x48000000 },
+  { 0x098029fe, 0x64000101 },
+  { 0x09802b00, 0x68000013 },
+  { 0x11002c00, 0x24000030 },
+  { 0x11002c01, 0x24000030 },
+  { 0x11002c02, 0x24000030 },
+  { 0x11002c03, 0x24000030 },
+  { 0x11002c04, 0x24000030 },
+  { 0x11002c05, 0x24000030 },
+  { 0x11002c06, 0x24000030 },
+  { 0x11002c07, 0x24000030 },
+  { 0x11002c08, 0x24000030 },
+  { 0x11002c09, 0x24000030 },
+  { 0x11002c0a, 0x24000030 },
+  { 0x11002c0b, 0x24000030 },
+  { 0x11002c0c, 0x24000030 },
+  { 0x11002c0d, 0x24000030 },
+  { 0x11002c0e, 0x24000030 },
+  { 0x11002c0f, 0x24000030 },
+  { 0x11002c10, 0x24000030 },
+  { 0x11002c11, 0x24000030 },
+  { 0x11002c12, 0x24000030 },
+  { 0x11002c13, 0x24000030 },
+  { 0x11002c14, 0x24000030 },
+  { 0x11002c15, 0x24000030 },
+  { 0x11002c16, 0x24000030 },
+  { 0x11002c17, 0x24000030 },
+  { 0x11002c18, 0x24000030 },
+  { 0x11002c19, 0x24000030 },
+  { 0x11002c1a, 0x24000030 },
+  { 0x11002c1b, 0x24000030 },
+  { 0x11002c1c, 0x24000030 },
+  { 0x11002c1d, 0x24000030 },
+  { 0x11002c1e, 0x24000030 },
+  { 0x11002c1f, 0x24000030 },
+  { 0x11002c20, 0x24000030 },
+  { 0x11002c21, 0x24000030 },
+  { 0x11002c22, 0x24000030 },
+  { 0x11002c23, 0x24000030 },
+  { 0x11002c24, 0x24000030 },
+  { 0x11002c25, 0x24000030 },
+  { 0x11002c26, 0x24000030 },
+  { 0x11002c27, 0x24000030 },
+  { 0x11002c28, 0x24000030 },
+  { 0x11002c29, 0x24000030 },
+  { 0x11002c2a, 0x24000030 },
+  { 0x11002c2b, 0x24000030 },
+  { 0x11002c2c, 0x24000030 },
+  { 0x11002c2d, 0x24000030 },
+  { 0x11002c2e, 0x24000030 },
+  { 0x11002c30, 0x1400ffd0 },
+  { 0x11002c31, 0x1400ffd0 },
+  { 0x11002c32, 0x1400ffd0 },
+  { 0x11002c33, 0x1400ffd0 },
+  { 0x11002c34, 0x1400ffd0 },
+  { 0x11002c35, 0x1400ffd0 },
+  { 0x11002c36, 0x1400ffd0 },
+  { 0x11002c37, 0x1400ffd0 },
+  { 0x11002c38, 0x1400ffd0 },
+  { 0x11002c39, 0x1400ffd0 },
+  { 0x11002c3a, 0x1400ffd0 },
+  { 0x11002c3b, 0x1400ffd0 },
+  { 0x11002c3c, 0x1400ffd0 },
+  { 0x11002c3d, 0x1400ffd0 },
+  { 0x11002c3e, 0x1400ffd0 },
+  { 0x11002c3f, 0x1400ffd0 },
+  { 0x11002c40, 0x1400ffd0 },
+  { 0x11002c41, 0x1400ffd0 },
+  { 0x11002c42, 0x1400ffd0 },
+  { 0x11002c43, 0x1400ffd0 },
+  { 0x11002c44, 0x1400ffd0 },
+  { 0x11002c45, 0x1400ffd0 },
+  { 0x11002c46, 0x1400ffd0 },
+  { 0x11002c47, 0x1400ffd0 },
+  { 0x11002c48, 0x1400ffd0 },
+  { 0x11002c49, 0x1400ffd0 },
+  { 0x11002c4a, 0x1400ffd0 },
+  { 0x11002c4b, 0x1400ffd0 },
+  { 0x11002c4c, 0x1400ffd0 },
+  { 0x11002c4d, 0x1400ffd0 },
+  { 0x11002c4e, 0x1400ffd0 },
+  { 0x11002c4f, 0x1400ffd0 },
+  { 0x11002c50, 0x1400ffd0 },
+  { 0x11002c51, 0x1400ffd0 },
+  { 0x11002c52, 0x1400ffd0 },
+  { 0x11002c53, 0x1400ffd0 },
+  { 0x11002c54, 0x1400ffd0 },
+  { 0x11002c55, 0x1400ffd0 },
+  { 0x11002c56, 0x1400ffd0 },
+  { 0x11002c57, 0x1400ffd0 },
+  { 0x11002c58, 0x1400ffd0 },
+  { 0x11002c59, 0x1400ffd0 },
+  { 0x11002c5a, 0x1400ffd0 },
+  { 0x11002c5b, 0x1400ffd0 },
+  { 0x11002c5c, 0x1400ffd0 },
+  { 0x11002c5d, 0x1400ffd0 },
+  { 0x11002c5e, 0x1400ffd0 },
+  { 0x0a002c80, 0x24000001 },
+  { 0x0a002c81, 0x1400ffff },
+  { 0x0a002c82, 0x24000001 },
+  { 0x0a002c83, 0x1400ffff },
+  { 0x0a002c84, 0x24000001 },
+  { 0x0a002c85, 0x1400ffff },
+  { 0x0a002c86, 0x24000001 },
+  { 0x0a002c87, 0x1400ffff },
+  { 0x0a002c88, 0x24000001 },
+  { 0x0a002c89, 0x1400ffff },
+  { 0x0a002c8a, 0x24000001 },
+  { 0x0a002c8b, 0x1400ffff },
+  { 0x0a002c8c, 0x24000001 },
+  { 0x0a002c8d, 0x1400ffff },
+  { 0x0a002c8e, 0x24000001 },
+  { 0x0a002c8f, 0x1400ffff },
+  { 0x0a002c90, 0x24000001 },
+  { 0x0a002c91, 0x1400ffff },
+  { 0x0a002c92, 0x24000001 },
+  { 0x0a002c93, 0x1400ffff },
+  { 0x0a002c94, 0x24000001 },
+  { 0x0a002c95, 0x1400ffff },
+  { 0x0a002c96, 0x24000001 },
+  { 0x0a002c97, 0x1400ffff },
+  { 0x0a002c98, 0x24000001 },
+  { 0x0a002c99, 0x1400ffff },
+  { 0x0a002c9a, 0x24000001 },
+  { 0x0a002c9b, 0x1400ffff },
+  { 0x0a002c9c, 0x24000001 },
+  { 0x0a002c9d, 0x1400ffff },
+  { 0x0a002c9e, 0x24000001 },
+  { 0x0a002c9f, 0x1400ffff },
+  { 0x0a002ca0, 0x24000001 },
+  { 0x0a002ca1, 0x1400ffff },
+  { 0x0a002ca2, 0x24000001 },
+  { 0x0a002ca3, 0x1400ffff },
+  { 0x0a002ca4, 0x24000001 },
+  { 0x0a002ca5, 0x1400ffff },
+  { 0x0a002ca6, 0x24000001 },
+  { 0x0a002ca7, 0x1400ffff },
+  { 0x0a002ca8, 0x24000001 },
+  { 0x0a002ca9, 0x1400ffff },
+  { 0x0a002caa, 0x24000001 },
+  { 0x0a002cab, 0x1400ffff },
+  { 0x0a002cac, 0x24000001 },
+  { 0x0a002cad, 0x1400ffff },
+  { 0x0a002cae, 0x24000001 },
+  { 0x0a002caf, 0x1400ffff },
+  { 0x0a002cb0, 0x24000001 },
+  { 0x0a002cb1, 0x1400ffff },
+  { 0x0a002cb2, 0x24000001 },
+  { 0x0a002cb3, 0x1400ffff },
+  { 0x0a002cb4, 0x24000001 },
+  { 0x0a002cb5, 0x1400ffff },
+  { 0x0a002cb6, 0x24000001 },
+  { 0x0a002cb7, 0x1400ffff },
+  { 0x0a002cb8, 0x24000001 },
+  { 0x0a002cb9, 0x1400ffff },
+  { 0x0a002cba, 0x24000001 },
+  { 0x0a002cbb, 0x1400ffff },
+  { 0x0a002cbc, 0x24000001 },
+  { 0x0a002cbd, 0x1400ffff },
+  { 0x0a002cbe, 0x24000001 },
+  { 0x0a002cbf, 0x1400ffff },
+  { 0x0a002cc0, 0x24000001 },
+  { 0x0a002cc1, 0x1400ffff },
+  { 0x0a002cc2, 0x24000001 },
+  { 0x0a002cc3, 0x1400ffff },
+  { 0x0a002cc4, 0x24000001 },
+  { 0x0a002cc5, 0x1400ffff },
+  { 0x0a002cc6, 0x24000001 },
+  { 0x0a002cc7, 0x1400ffff },
+  { 0x0a002cc8, 0x24000001 },
+  { 0x0a002cc9, 0x1400ffff },
+  { 0x0a002cca, 0x24000001 },
+  { 0x0a002ccb, 0x1400ffff },
+  { 0x0a002ccc, 0x24000001 },
+  { 0x0a002ccd, 0x1400ffff },
+  { 0x0a002cce, 0x24000001 },
+  { 0x0a002ccf, 0x1400ffff },
+  { 0x0a002cd0, 0x24000001 },
+  { 0x0a002cd1, 0x1400ffff },
+  { 0x0a002cd2, 0x24000001 },
+  { 0x0a002cd3, 0x1400ffff },
+  { 0x0a002cd4, 0x24000001 },
+  { 0x0a002cd5, 0x1400ffff },
+  { 0x0a002cd6, 0x24000001 },
+  { 0x0a002cd7, 0x1400ffff },
+  { 0x0a002cd8, 0x24000001 },
+  { 0x0a002cd9, 0x1400ffff },
+  { 0x0a002cda, 0x24000001 },
+  { 0x0a002cdb, 0x1400ffff },
+  { 0x0a002cdc, 0x24000001 },
+  { 0x0a002cdd, 0x1400ffff },
+  { 0x0a002cde, 0x24000001 },
+  { 0x0a002cdf, 0x1400ffff },
+  { 0x0a002ce0, 0x24000001 },
+  { 0x0a002ce1, 0x1400ffff },
+  { 0x0a002ce2, 0x24000001 },
+  { 0x0a002ce3, 0x1400ffff },
+  { 0x0a002ce4, 0x14000000 },
+  { 0x0a802ce5, 0x68000005 },
+  { 0x0a802cf9, 0x54000003 },
+  { 0x0a002cfd, 0x3c000000 },
+  { 0x0a802cfe, 0x54000001 },
+  { 0x10002d00, 0x1400e3a0 },
+  { 0x10002d01, 0x1400e3a0 },
+  { 0x10002d02, 0x1400e3a0 },
+  { 0x10002d03, 0x1400e3a0 },
+  { 0x10002d04, 0x1400e3a0 },
+  { 0x10002d05, 0x1400e3a0 },
+  { 0x10002d06, 0x1400e3a0 },
+  { 0x10002d07, 0x1400e3a0 },
+  { 0x10002d08, 0x1400e3a0 },
+  { 0x10002d09, 0x1400e3a0 },
+  { 0x10002d0a, 0x1400e3a0 },
+  { 0x10002d0b, 0x1400e3a0 },
+  { 0x10002d0c, 0x1400e3a0 },
+  { 0x10002d0d, 0x1400e3a0 },
+  { 0x10002d0e, 0x1400e3a0 },
+  { 0x10002d0f, 0x1400e3a0 },
+  { 0x10002d10, 0x1400e3a0 },
+  { 0x10002d11, 0x1400e3a0 },
+  { 0x10002d12, 0x1400e3a0 },
+  { 0x10002d13, 0x1400e3a0 },
+  { 0x10002d14, 0x1400e3a0 },
+  { 0x10002d15, 0x1400e3a0 },
+  { 0x10002d16, 0x1400e3a0 },
+  { 0x10002d17, 0x1400e3a0 },
+  { 0x10002d18, 0x1400e3a0 },
+  { 0x10002d19, 0x1400e3a0 },
+  { 0x10002d1a, 0x1400e3a0 },
+  { 0x10002d1b, 0x1400e3a0 },
+  { 0x10002d1c, 0x1400e3a0 },
+  { 0x10002d1d, 0x1400e3a0 },
+  { 0x10002d1e, 0x1400e3a0 },
+  { 0x10002d1f, 0x1400e3a0 },
+  { 0x10002d20, 0x1400e3a0 },
+  { 0x10002d21, 0x1400e3a0 },
+  { 0x10002d22, 0x1400e3a0 },
+  { 0x10002d23, 0x1400e3a0 },
+  { 0x10002d24, 0x1400e3a0 },
+  { 0x10002d25, 0x1400e3a0 },
+  { 0x3a802d30, 0x1c000035 },
+  { 0x3a002d6f, 0x18000000 },
+  { 0x0f802d80, 0x1c000016 },
+  { 0x0f802da0, 0x1c000006 },
+  { 0x0f802da8, 0x1c000006 },
+  { 0x0f802db0, 0x1c000006 },
+  { 0x0f802db8, 0x1c000006 },
+  { 0x0f802dc0, 0x1c000006 },
+  { 0x0f802dc8, 0x1c000006 },
+  { 0x0f802dd0, 0x1c000006 },
+  { 0x0f802dd8, 0x1c000006 },
+  { 0x09802e00, 0x54000001 },
+  { 0x09002e02, 0x50000000 },
+  { 0x09002e03, 0x4c000000 },
+  { 0x09002e04, 0x50000000 },
+  { 0x09002e05, 0x4c000000 },
+  { 0x09802e06, 0x54000002 },
+  { 0x09002e09, 0x50000000 },
+  { 0x09002e0a, 0x4c000000 },
+  { 0x09002e0b, 0x54000000 },
+  { 0x09002e0c, 0x50000000 },
+  { 0x09002e0d, 0x4c000000 },
+  { 0x09802e0e, 0x54000008 },
+  { 0x09002e17, 0x44000000 },
+  { 0x09002e1c, 0x50000000 },
+  { 0x09002e1d, 0x4c000000 },
+  { 0x16802e80, 0x68000019 },
+  { 0x16802e9b, 0x68000058 },
+  { 0x16802f00, 0x680000d5 },
+  { 0x09802ff0, 0x6800000b },
+  { 0x09003000, 0x74000000 },
+  { 0x09803001, 0x54000002 },
+  { 0x09003004, 0x68000000 },
+  { 0x16003005, 0x18000000 },
+  { 0x09003006, 0x1c000000 },
+  { 0x16003007, 0x38000000 },
+  { 0x09003008, 0x58000000 },
+  { 0x09003009, 0x48000000 },
+  { 0x0900300a, 0x58000000 },
+  { 0x0900300b, 0x48000000 },
+  { 0x0900300c, 0x58000000 },
+  { 0x0900300d, 0x48000000 },
+  { 0x0900300e, 0x58000000 },
+  { 0x0900300f, 0x48000000 },
+  { 0x09003010, 0x58000000 },
+  { 0x09003011, 0x48000000 },
+  { 0x09803012, 0x68000001 },
+  { 0x09003014, 0x58000000 },
+  { 0x09003015, 0x48000000 },
+  { 0x09003016, 0x58000000 },
+  { 0x09003017, 0x48000000 },
+  { 0x09003018, 0x58000000 },
+  { 0x09003019, 0x48000000 },
+  { 0x0900301a, 0x58000000 },
+  { 0x0900301b, 0x48000000 },
+  { 0x0900301c, 0x44000000 },
+  { 0x0900301d, 0x58000000 },
+  { 0x0980301e, 0x48000001 },
+  { 0x09003020, 0x68000000 },
+  { 0x16803021, 0x38000008 },
+  { 0x1b80302a, 0x30000005 },
+  { 0x09003030, 0x44000000 },
+  { 0x09803031, 0x18000004 },
+  { 0x09803036, 0x68000001 },
+  { 0x16803038, 0x38000002 },
+  { 0x1600303b, 0x18000000 },
+  { 0x0900303c, 0x1c000000 },
+  { 0x0900303d, 0x54000000 },
+  { 0x0980303e, 0x68000001 },
+  { 0x1a803041, 0x1c000055 },
+  { 0x1b803099, 0x30000001 },
+  { 0x0980309b, 0x60000001 },
+  { 0x1a80309d, 0x18000001 },
+  { 0x1a00309f, 0x1c000000 },
+  { 0x090030a0, 0x44000000 },
+  { 0x1d8030a1, 0x1c000059 },
+  { 0x090030fb, 0x54000000 },
+  { 0x098030fc, 0x18000002 },
+  { 0x1d0030ff, 0x1c000000 },
+  { 0x03803105, 0x1c000027 },
+  { 0x17803131, 0x1c00005d },
+  { 0x09803190, 0x68000001 },
+  { 0x09803192, 0x3c000003 },
+  { 0x09803196, 0x68000009 },
+  { 0x038031a0, 0x1c000017 },
+  { 0x098031c0, 0x6800000f },
+  { 0x1d8031f0, 0x1c00000f },
+  { 0x17803200, 0x6800001e },
+  { 0x09803220, 0x3c000009 },
+  { 0x0980322a, 0x68000019 },
+  { 0x09003250, 0x68000000 },
+  { 0x09803251, 0x3c00000e },
+  { 0x17803260, 0x6800001f },
+  { 0x09803280, 0x3c000009 },
+  { 0x0980328a, 0x68000026 },
+  { 0x098032b1, 0x3c00000e },
+  { 0x098032c0, 0x6800003e },
+  { 0x09803300, 0x680000ff },
+  { 0x16803400, 0x1c0019b5 },
+  { 0x09804dc0, 0x6800003f },
+  { 0x16804e00, 0x1c0051bb },
+  { 0x3c80a000, 0x1c000014 },
+  { 0x3c00a015, 0x18000000 },
+  { 0x3c80a016, 0x1c000476 },
+  { 0x3c80a490, 0x68000036 },
+  { 0x0980a700, 0x60000016 },
+  { 0x3080a800, 0x1c000001 },
+  { 0x3000a802, 0x28000000 },
+  { 0x3080a803, 0x1c000002 },
+  { 0x3000a806, 0x30000000 },
+  { 0x3080a807, 0x1c000003 },
+  { 0x3000a80b, 0x30000000 },
+  { 0x3080a80c, 0x1c000016 },
+  { 0x3080a823, 0x28000001 },
+  { 0x3080a825, 0x30000001 },
+  { 0x3000a827, 0x28000000 },
+  { 0x3080a828, 0x68000003 },
+  { 0x1780ac00, 0x1c002ba3 },
+  { 0x0980d800, 0x1000037f },
+  { 0x0980db80, 0x1000007f },
+  { 0x0980dc00, 0x100003ff },
+  { 0x0980e000, 0x0c0018ff },
+  { 0x1680f900, 0x1c00012d },
+  { 0x1680fa30, 0x1c00003a },
+  { 0x1680fa70, 0x1c000069 },
+  { 0x2180fb00, 0x14000006 },
+  { 0x0180fb13, 0x14000004 },
+  { 0x1900fb1d, 0x1c000000 },
+  { 0x1900fb1e, 0x30000000 },
+  { 0x1980fb1f, 0x1c000009 },
+  { 0x1900fb29, 0x64000000 },
+  { 0x1980fb2a, 0x1c00000c },
+  { 0x1980fb38, 0x1c000004 },
+  { 0x1900fb3e, 0x1c000000 },
+  { 0x1980fb40, 0x1c000001 },
+  { 0x1980fb43, 0x1c000001 },
+  { 0x1980fb46, 0x1c00006b },
+  { 0x0080fbd3, 0x1c00016a },
+  { 0x0900fd3e, 0x58000000 },
+  { 0x0900fd3f, 0x48000000 },
+  { 0x0080fd50, 0x1c00003f },
+  { 0x0080fd92, 0x1c000035 },
+  { 0x0080fdf0, 0x1c00000b },
+  { 0x0000fdfc, 0x5c000000 },
+  { 0x0900fdfd, 0x68000000 },
+  { 0x1b80fe00, 0x3000000f },
+  { 0x0980fe10, 0x54000006 },
+  { 0x0900fe17, 0x58000000 },
+  { 0x0900fe18, 0x48000000 },
+  { 0x0900fe19, 0x54000000 },
+  { 0x1b80fe20, 0x30000003 },
+  { 0x0900fe30, 0x54000000 },
+  { 0x0980fe31, 0x44000001 },
+  { 0x0980fe33, 0x40000001 },
+  { 0x0900fe35, 0x58000000 },
+  { 0x0900fe36, 0x48000000 },
+  { 0x0900fe37, 0x58000000 },
+  { 0x0900fe38, 0x48000000 },
+  { 0x0900fe39, 0x58000000 },
+  { 0x0900fe3a, 0x48000000 },
+  { 0x0900fe3b, 0x58000000 },
+  { 0x0900fe3c, 0x48000000 },
+  { 0x0900fe3d, 0x58000000 },
+  { 0x0900fe3e, 0x48000000 },
+  { 0x0900fe3f, 0x58000000 },
+  { 0x0900fe40, 0x48000000 },
+  { 0x0900fe41, 0x58000000 },
+  { 0x0900fe42, 0x48000000 },
+  { 0x0900fe43, 0x58000000 },
+  { 0x0900fe44, 0x48000000 },
+  { 0x0980fe45, 0x54000001 },
+  { 0x0900fe47, 0x58000000 },
+  { 0x0900fe48, 0x48000000 },
+  { 0x0980fe49, 0x54000003 },
+  { 0x0980fe4d, 0x40000002 },
+  { 0x0980fe50, 0x54000002 },
+  { 0x0980fe54, 0x54000003 },
+  { 0x0900fe58, 0x44000000 },
+  { 0x0900fe59, 0x58000000 },
+  { 0x0900fe5a, 0x48000000 },
+  { 0x0900fe5b, 0x58000000 },
+  { 0x0900fe5c, 0x48000000 },
+  { 0x0900fe5d, 0x58000000 },
+  { 0x0900fe5e, 0x48000000 },
+  { 0x0980fe5f, 0x54000002 },
+  { 0x0900fe62, 0x64000000 },
+  { 0x0900fe63, 0x44000000 },
+  { 0x0980fe64, 0x64000002 },
+  { 0x0900fe68, 0x54000000 },
+  { 0x0900fe69, 0x5c000000 },
+  { 0x0980fe6a, 0x54000001 },
+  { 0x0080fe70, 0x1c000004 },
+  { 0x0080fe76, 0x1c000086 },
+  { 0x0900feff, 0x04000000 },
+  { 0x0980ff01, 0x54000002 },
+  { 0x0900ff04, 0x5c000000 },
+  { 0x0980ff05, 0x54000002 },
+  { 0x0900ff08, 0x58000000 },
+  { 0x0900ff09, 0x48000000 },
+  { 0x0900ff0a, 0x54000000 },
+  { 0x0900ff0b, 0x64000000 },
+  { 0x0900ff0c, 0x54000000 },
+  { 0x0900ff0d, 0x44000000 },
+  { 0x0980ff0e, 0x54000001 },
+  { 0x0980ff10, 0x34000009 },
+  { 0x0980ff1a, 0x54000001 },
+  { 0x0980ff1c, 0x64000002 },
+  { 0x0980ff1f, 0x54000001 },
+  { 0x2100ff21, 0x24000020 },
+  { 0x2100ff22, 0x24000020 },
+  { 0x2100ff23, 0x24000020 },
+  { 0x2100ff24, 0x24000020 },
+  { 0x2100ff25, 0x24000020 },
+  { 0x2100ff26, 0x24000020 },
+  { 0x2100ff27, 0x24000020 },
+  { 0x2100ff28, 0x24000020 },
+  { 0x2100ff29, 0x24000020 },
+  { 0x2100ff2a, 0x24000020 },
+  { 0x2100ff2b, 0x24000020 },
+  { 0x2100ff2c, 0x24000020 },
+  { 0x2100ff2d, 0x24000020 },
+  { 0x2100ff2e, 0x24000020 },
+  { 0x2100ff2f, 0x24000020 },
+  { 0x2100ff30, 0x24000020 },
+  { 0x2100ff31, 0x24000020 },
+  { 0x2100ff32, 0x24000020 },
+  { 0x2100ff33, 0x24000020 },
+  { 0x2100ff34, 0x24000020 },
+  { 0x2100ff35, 0x24000020 },
+  { 0x2100ff36, 0x24000020 },
+  { 0x2100ff37, 0x24000020 },
+  { 0x2100ff38, 0x24000020 },
+  { 0x2100ff39, 0x24000020 },
+  { 0x2100ff3a, 0x24000020 },
+  { 0x0900ff3b, 0x58000000 },
+  { 0x0900ff3c, 0x54000000 },
+  { 0x0900ff3d, 0x48000000 },
+  { 0x0900ff3e, 0x60000000 },
+  { 0x0900ff3f, 0x40000000 },
+  { 0x0900ff40, 0x60000000 },
+  { 0x2100ff41, 0x1400ffe0 },
+  { 0x2100ff42, 0x1400ffe0 },
+  { 0x2100ff43, 0x1400ffe0 },
+  { 0x2100ff44, 0x1400ffe0 },
+  { 0x2100ff45, 0x1400ffe0 },
+  { 0x2100ff46, 0x1400ffe0 },
+  { 0x2100ff47, 0x1400ffe0 },
+  { 0x2100ff48, 0x1400ffe0 },
+  { 0x2100ff49, 0x1400ffe0 },
+  { 0x2100ff4a, 0x1400ffe0 },
+  { 0x2100ff4b, 0x1400ffe0 },
+  { 0x2100ff4c, 0x1400ffe0 },
+  { 0x2100ff4d, 0x1400ffe0 },
+  { 0x2100ff4e, 0x1400ffe0 },
+  { 0x2100ff4f, 0x1400ffe0 },
+  { 0x2100ff50, 0x1400ffe0 },
+  { 0x2100ff51, 0x1400ffe0 },
+  { 0x2100ff52, 0x1400ffe0 },
+  { 0x2100ff53, 0x1400ffe0 },
+  { 0x2100ff54, 0x1400ffe0 },
+  { 0x2100ff55, 0x1400ffe0 },
+  { 0x2100ff56, 0x1400ffe0 },
+  { 0x2100ff57, 0x1400ffe0 },
+  { 0x2100ff58, 0x1400ffe0 },
+  { 0x2100ff59, 0x1400ffe0 },
+  { 0x2100ff5a, 0x1400ffe0 },
+  { 0x0900ff5b, 0x58000000 },
+  { 0x0900ff5c, 0x64000000 },
+  { 0x0900ff5d, 0x48000000 },
+  { 0x0900ff5e, 0x64000000 },
+  { 0x0900ff5f, 0x58000000 },
+  { 0x0900ff60, 0x48000000 },
+  { 0x0900ff61, 0x54000000 },
+  { 0x0900ff62, 0x58000000 },
+  { 0x0900ff63, 0x48000000 },
+  { 0x0980ff64, 0x54000001 },
+  { 0x1d80ff66, 0x1c000009 },
+  { 0x0900ff70, 0x18000000 },
+  { 0x1d80ff71, 0x1c00002c },
+  { 0x0980ff9e, 0x18000001 },
+  { 0x1780ffa0, 0x1c00001e },
+  { 0x1780ffc2, 0x1c000005 },
+  { 0x1780ffca, 0x1c000005 },
+  { 0x1780ffd2, 0x1c000005 },
+  { 0x1780ffda, 0x1c000002 },
+  { 0x0980ffe0, 0x5c000001 },
+  { 0x0900ffe2, 0x64000000 },
+  { 0x0900ffe3, 0x60000000 },
+  { 0x0900ffe4, 0x68000000 },
+  { 0x0980ffe5, 0x5c000001 },
+  { 0x0900ffe8, 0x68000000 },
+  { 0x0980ffe9, 0x64000003 },
+  { 0x0980ffed, 0x68000001 },
+  { 0x0980fff9, 0x04000002 },
+  { 0x0980fffc, 0x68000001 },
+  { 0x23810000, 0x1c00000b },
+  { 0x2381000d, 0x1c000019 },
+  { 0x23810028, 0x1c000012 },
+  { 0x2381003c, 0x1c000001 },
+  { 0x2381003f, 0x1c00000e },
+  { 0x23810050, 0x1c00000d },
+  { 0x23810080, 0x1c00007a },
+  { 0x09810100, 0x54000001 },
+  { 0x09010102, 0x68000000 },
+  { 0x09810107, 0x3c00002c },
+  { 0x09810137, 0x68000008 },
+  { 0x13810140, 0x38000034 },
+  { 0x13810175, 0x3c000003 },
+  { 0x13810179, 0x68000010 },
+  { 0x1301018a, 0x3c000000 },
+  { 0x29810300, 0x1c00001e },
+  { 0x29810320, 0x3c000003 },
+  { 0x12810330, 0x1c000019 },
+  { 0x1201034a, 0x38000000 },
+  { 0x3b810380, 0x1c00001d },
+  { 0x3b01039f, 0x54000000 },
+  { 0x2a8103a0, 0x1c000023 },
+  { 0x2a8103c8, 0x1c000007 },
+  { 0x2a0103d0, 0x68000000 },
+  { 0x2a8103d1, 0x38000004 },
+  { 0x0d010400, 0x24000028 },
+  { 0x0d010401, 0x24000028 },
+  { 0x0d010402, 0x24000028 },
+  { 0x0d010403, 0x24000028 },
+  { 0x0d010404, 0x24000028 },
+  { 0x0d010405, 0x24000028 },
+  { 0x0d010406, 0x24000028 },
+  { 0x0d010407, 0x24000028 },
+  { 0x0d010408, 0x24000028 },
+  { 0x0d010409, 0x24000028 },
+  { 0x0d01040a, 0x24000028 },
+  { 0x0d01040b, 0x24000028 },
+  { 0x0d01040c, 0x24000028 },
+  { 0x0d01040d, 0x24000028 },
+  { 0x0d01040e, 0x24000028 },
+  { 0x0d01040f, 0x24000028 },
+  { 0x0d010410, 0x24000028 },
+  { 0x0d010411, 0x24000028 },
+  { 0x0d010412, 0x24000028 },
+  { 0x0d010413, 0x24000028 },
+  { 0x0d010414, 0x24000028 },
+  { 0x0d010415, 0x24000028 },
+  { 0x0d010416, 0x24000028 },
+  { 0x0d010417, 0x24000028 },
+  { 0x0d010418, 0x24000028 },
+  { 0x0d010419, 0x24000028 },
+  { 0x0d01041a, 0x24000028 },
+  { 0x0d01041b, 0x24000028 },
+  { 0x0d01041c, 0x24000028 },
+  { 0x0d01041d, 0x24000028 },
+  { 0x0d01041e, 0x24000028 },
+  { 0x0d01041f, 0x24000028 },
+  { 0x0d010420, 0x24000028 },
+  { 0x0d010421, 0x24000028 },
+  { 0x0d010422, 0x24000028 },
+  { 0x0d010423, 0x24000028 },
+  { 0x0d010424, 0x24000028 },
+  { 0x0d010425, 0x24000028 },
+  { 0x0d010426, 0x24000028 },
+  { 0x0d010427, 0x24000028 },
+  { 0x0d010428, 0x1400ffd8 },
+  { 0x0d010429, 0x1400ffd8 },
+  { 0x0d01042a, 0x1400ffd8 },
+  { 0x0d01042b, 0x1400ffd8 },
+  { 0x0d01042c, 0x1400ffd8 },
+  { 0x0d01042d, 0x1400ffd8 },
+  { 0x0d01042e, 0x1400ffd8 },
+  { 0x0d01042f, 0x1400ffd8 },
+  { 0x0d010430, 0x1400ffd8 },
+  { 0x0d010431, 0x1400ffd8 },
+  { 0x0d010432, 0x1400ffd8 },
+  { 0x0d010433, 0x1400ffd8 },
+  { 0x0d010434, 0x1400ffd8 },
+  { 0x0d010435, 0x1400ffd8 },
+  { 0x0d010436, 0x1400ffd8 },
+  { 0x0d010437, 0x1400ffd8 },
+  { 0x0d010438, 0x1400ffd8 },
+  { 0x0d010439, 0x1400ffd8 },
+  { 0x0d01043a, 0x1400ffd8 },
+  { 0x0d01043b, 0x1400ffd8 },
+  { 0x0d01043c, 0x1400ffd8 },
+  { 0x0d01043d, 0x1400ffd8 },
+  { 0x0d01043e, 0x1400ffd8 },
+  { 0x0d01043f, 0x1400ffd8 },
+  { 0x0d010440, 0x1400ffd8 },
+  { 0x0d010441, 0x1400ffd8 },
+  { 0x0d010442, 0x1400ffd8 },
+  { 0x0d010443, 0x1400ffd8 },
+  { 0x0d010444, 0x1400ffd8 },
+  { 0x0d010445, 0x1400ffd8 },
+  { 0x0d010446, 0x1400ffd8 },
+  { 0x0d010447, 0x1400ffd8 },
+  { 0x0d010448, 0x1400ffd8 },
+  { 0x0d010449, 0x1400ffd8 },
+  { 0x0d01044a, 0x1400ffd8 },
+  { 0x0d01044b, 0x1400ffd8 },
+  { 0x0d01044c, 0x1400ffd8 },
+  { 0x0d01044d, 0x1400ffd8 },
+  { 0x0d01044e, 0x1400ffd8 },
+  { 0x0d01044f, 0x1400ffd8 },
+  { 0x2e810450, 0x1c00004d },
+  { 0x2c8104a0, 0x34000009 },
+  { 0x0b810800, 0x1c000005 },
+  { 0x0b010808, 0x1c000000 },
+  { 0x0b81080a, 0x1c00002b },
+  { 0x0b810837, 0x1c000001 },
+  { 0x0b01083c, 0x1c000000 },
+  { 0x0b01083f, 0x1c000000 },
+  { 0x1e010a00, 0x1c000000 },
+  { 0x1e810a01, 0x30000002 },
+  { 0x1e810a05, 0x30000001 },
+  { 0x1e810a0c, 0x30000003 },
+  { 0x1e810a10, 0x1c000003 },
+  { 0x1e810a15, 0x1c000002 },
+  { 0x1e810a19, 0x1c00001a },
+  { 0x1e810a38, 0x30000002 },
+  { 0x1e010a3f, 0x30000000 },
+  { 0x1e810a40, 0x3c000007 },
+  { 0x1e810a50, 0x54000008 },
+  { 0x0981d000, 0x680000f5 },
+  { 0x0981d100, 0x68000026 },
+  { 0x0981d12a, 0x6800003a },
+  { 0x0981d165, 0x28000001 },
+  { 0x1b81d167, 0x30000002 },
+  { 0x0981d16a, 0x68000002 },
+  { 0x0981d16d, 0x28000005 },
+  { 0x0981d173, 0x04000007 },
+  { 0x1b81d17b, 0x30000007 },
+  { 0x0981d183, 0x68000001 },
+  { 0x1b81d185, 0x30000006 },
+  { 0x0981d18c, 0x6800001d },
+  { 0x1b81d1aa, 0x30000003 },
+  { 0x0981d1ae, 0x6800002f },
+  { 0x1381d200, 0x68000041 },
+  { 0x1381d242, 0x30000002 },
+  { 0x1301d245, 0x68000000 },
+  { 0x0981d300, 0x68000056 },
+  { 0x0981d400, 0x24000019 },
+  { 0x0981d41a, 0x14000019 },
+  { 0x0981d434, 0x24000019 },
+  { 0x0981d44e, 0x14000006 },
+  { 0x0981d456, 0x14000011 },
+  { 0x0981d468, 0x24000019 },
+  { 0x0981d482, 0x14000019 },
+  { 0x0901d49c, 0x24000000 },
+  { 0x0981d49e, 0x24000001 },
+  { 0x0901d4a2, 0x24000000 },
+  { 0x0981d4a5, 0x24000001 },
+  { 0x0981d4a9, 0x24000003 },
+  { 0x0981d4ae, 0x24000007 },
+  { 0x0981d4b6, 0x14000003 },
+  { 0x0901d4bb, 0x14000000 },
+  { 0x0981d4bd, 0x14000006 },
+  { 0x0981d4c5, 0x1400000a },
+  { 0x0981d4d0, 0x24000019 },
+  { 0x0981d4ea, 0x14000019 },
+  { 0x0981d504, 0x24000001 },
+  { 0x0981d507, 0x24000003 },
+  { 0x0981d50d, 0x24000007 },
+  { 0x0981d516, 0x24000006 },
+  { 0x0981d51e, 0x14000019 },
+  { 0x0981d538, 0x24000001 },
+  { 0x0981d53b, 0x24000003 },
+  { 0x0981d540, 0x24000004 },
+  { 0x0901d546, 0x24000000 },
+  { 0x0981d54a, 0x24000006 },
+  { 0x0981d552, 0x14000019 },
+  { 0x0981d56c, 0x24000019 },
+  { 0x0981d586, 0x14000019 },
+  { 0x0981d5a0, 0x24000019 },
+  { 0x0981d5ba, 0x14000019 },
+  { 0x0981d5d4, 0x24000019 },
+  { 0x0981d5ee, 0x14000019 },
+  { 0x0981d608, 0x24000019 },
+  { 0x0981d622, 0x14000019 },
+  { 0x0981d63c, 0x24000019 },
+  { 0x0981d656, 0x14000019 },
+  { 0x0981d670, 0x24000019 },
+  { 0x0981d68a, 0x1400001b },
+  { 0x0981d6a8, 0x24000018 },
+  { 0x0901d6c1, 0x64000000 },
+  { 0x0981d6c2, 0x14000018 },
+  { 0x0901d6db, 0x64000000 },
+  { 0x0981d6dc, 0x14000005 },
+  { 0x0981d6e2, 0x24000018 },
+  { 0x0901d6fb, 0x64000000 },
+  { 0x0981d6fc, 0x14000018 },
+  { 0x0901d715, 0x64000000 },
+  { 0x0981d716, 0x14000005 },
+  { 0x0981d71c, 0x24000018 },
+  { 0x0901d735, 0x64000000 },
+  { 0x0981d736, 0x14000018 },
+  { 0x0901d74f, 0x64000000 },
+  { 0x0981d750, 0x14000005 },
+  { 0x0981d756, 0x24000018 },
+  { 0x0901d76f, 0x64000000 },
+  { 0x0981d770, 0x14000018 },
+  { 0x0901d789, 0x64000000 },
+  { 0x0981d78a, 0x14000005 },
+  { 0x0981d790, 0x24000018 },
+  { 0x0901d7a9, 0x64000000 },
+  { 0x0981d7aa, 0x14000018 },
+  { 0x0901d7c3, 0x64000000 },
+  { 0x0981d7c4, 0x14000005 },
+  { 0x0981d7ce, 0x34000031 },
+  { 0x16820000, 0x1c00a6d6 },
+  { 0x1682f800, 0x1c00021d },
+  { 0x090e0001, 0x04000000 },
+  { 0x098e0020, 0x0400005f },
+  { 0x1b8e0100, 0x300000ef },
+  { 0x098f0000, 0x0c00fffd },
+  { 0x09900000, 0x0c00fffd },
 };