summaryrefslogtreecommitdiff
path: root/app/tools
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2016-12-28 16:52:56 +0100
committerJörg Frings-Fürst <debian@jff-webhosting.net>2016-12-28 16:52:56 +0100
commit7b358424ebad9349421acd533c2fa1cbf6cf3e3e (patch)
tree686678532eefed525c242fd214d0cfb2914726c5 /app/tools
Initial import of xtrkcad version 1:4.0.2-2
Diffstat (limited to 'app/tools')
-rw-r--r--app/tools/CMakeLists.txt18
-rw-r--r--app/tools/HACKING35
-rw-r--r--app/tools/addcrlf.c242
-rw-r--r--app/tools/bin2c.c126
-rw-r--r--app/tools/dirent.c145
-rw-r--r--app/tools/dirent.h50
-rw-r--r--app/tools/halibut/CMakeLists.txt32
-rw-r--r--app/tools/halibut/LICENCE36
-rw-r--r--app/tools/halibut/README36
-rw-r--r--app/tools/halibut/biblio.c105
-rw-r--r--app/tools/halibut/bk_html.c2791
-rw-r--r--app/tools/halibut/bk_paper.c2789
-rw-r--r--app/tools/halibut/charset/CMakeLists.txt38
-rw-r--r--app/tools/halibut/charset/LICENCE22
-rw-r--r--app/tools/halibut/charset/README37
-rw-r--r--app/tools/halibut/charset/big5enc.c93
-rw-r--r--app/tools/halibut/charset/big5set.c4045
-rw-r--r--app/tools/halibut/charset/charset.h229
-rw-r--r--app/tools/halibut/charset/cns11643.c13104
-rw-r--r--app/tools/halibut/charset/cp949.c94
-rw-r--r--app/tools/halibut/charset/cstable.c120
-rw-r--r--app/tools/halibut/charset/enum.c28
-rw-r--r--app/tools/halibut/charset/euc.c272
-rw-r--r--app/tools/halibut/charset/fromucs.c82
-rw-r--r--app/tools/halibut/charset/gb2312.c2089
-rw-r--r--app/tools/halibut/charset/hz.c142
-rw-r--r--app/tools/halibut/charset/internal.h126
-rw-r--r--app/tools/halibut/charset/iso2022.c1385
-rw-r--r--app/tools/halibut/charset/iso2022s.c544
-rw-r--r--app/tools/halibut/charset/istate.c3
-rw-r--r--app/tools/halibut/charset/jisx0208.c2021
-rw-r--r--app/tools/halibut/charset/jisx0212.c1919
-rw-r--r--app/tools/halibut/charset/ksx1001.c5261
-rw-r--r--app/tools/halibut/charset/locale.c93
-rw-r--r--app/tools/halibut/charset/localenc.c174
-rw-r--r--app/tools/halibut/charset/macenc.c169
-rw-r--r--app/tools/halibut/charset/mimeenc.c333
-rw-r--r--app/tools/halibut/charset/sbcs.c72
-rw-r--r--app/tools/halibut/charset/sbcsdat.c4485
-rw-r--r--app/tools/halibut/charset/sbcsdat.h75
-rw-r--r--app/tools/halibut/charset/shiftjis.c128
-rw-r--r--app/tools/halibut/charset/slookup.c29
-rw-r--r--app/tools/halibut/charset/superset.c65
-rw-r--r--app/tools/halibut/charset/test.c72
-rw-r--r--app/tools/halibut/charset/toucs.c87
-rw-r--r--app/tools/halibut/charset/utf16.c217
-rw-r--r--app/tools/halibut/charset/utf7.c295
-rw-r--r--app/tools/halibut/charset/utf8.c907
-rw-r--r--app/tools/halibut/charset/xenc.c95
-rw-r--r--app/tools/halibut/contents.c244
-rw-r--r--app/tools/halibut/deflate.c2781
-rw-r--r--app/tools/halibut/deflate.h168
-rw-r--r--app/tools/halibut/error.c378
-rw-r--r--app/tools/halibut/halibut.h548
-rw-r--r--app/tools/halibut/help.c56
-rw-r--r--app/tools/halibut/in_afm.c276
-rw-r--r--app/tools/halibut/in_pf.c450
-rw-r--r--app/tools/halibut/index.c270
-rw-r--r--app/tools/halibut/input.c1644
-rw-r--r--app/tools/halibut/keywords.c154
-rw-r--r--app/tools/halibut/licence.c51
-rw-r--r--app/tools/halibut/main.c473
-rw-r--r--app/tools/halibut/malloc.c149
-rw-r--r--app/tools/halibut/misc.c580
-rw-r--r--app/tools/halibut/paper.h405
-rw-r--r--app/tools/halibut/psdata.c4523
-rw-r--r--app/tools/halibut/tree234.c2197
-rw-r--r--app/tools/halibut/tree234.h202
-rw-r--r--app/tools/halibut/ustring.c486
-rw-r--r--app/tools/halibut/version1
-rw-r--r--app/tools/halibut/version.c13
-rw-r--r--app/tools/halibut/wcwidth.c184
-rw-r--r--app/tools/listxtp.c191
-rw-r--r--app/tools/oldscripts/README4
-rw-r--r--app/tools/oldscripts/checkall10
-rw-r--r--app/tools/oldscripts/diffall37
-rw-r--r--app/tools/oldscripts/fetchall46
-rw-r--r--app/tools/oldscripts/makeall23
-rw-r--r--app/tools/oldscripts/markall17
-rw-r--r--app/tools/oldscripts/mkwinrlse34
-rw-r--r--app/tools/oldscripts/roall22
81 files changed, 61972 insertions, 0 deletions
diff --git a/app/tools/CMakeLists.txt b/app/tools/CMakeLists.txt
new file mode 100644
index 0000000..e6716f0
--- /dev/null
+++ b/app/tools/CMakeLists.txt
@@ -0,0 +1,18 @@
+ADD_EXECUTABLE(addcrlf addcrlf.c)
+
+ADD_EXECUTABLE(bin2c bin2c.c)
+
+SET ( SOURCES listxtp.c )
+
+IF (WIN32)
+ SET ( SOURCES
+ ${SOURCES}
+ dirent.c)
+
+ INCLUDE_DIRECTORIES( BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
+ENDIF (WIN32)
+
+ADD_EXECUTABLE( listxtp ${SOURCES})
+
+ADD_SUBDIRECTORY(halibut)
+
diff --git a/app/tools/HACKING b/app/tools/HACKING
new file mode 100644
index 0000000..779bf58
--- /dev/null
+++ b/app/tools/HACKING
@@ -0,0 +1,35 @@
+/** \file filename.c
+ * This file shows the conventions used for inline documentation.
+ *
+ * $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/tools/HACKING,v 1.3 2007-11-13 19:31:12 m_fischer Exp $
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+int global; /**< this is a global variable */
+
+/**
+ * Brief description of function. And some more words about
+ * this function bla bla bla
+ *
+ * \param varname1 IN this is a variable
+ * \param varname2 OUT and another one that is modified
+ * \return describe the return value
+ */
+
diff --git a/app/tools/addcrlf.c b/app/tools/addcrlf.c
new file mode 100644
index 0000000..d36310e
--- /dev/null
+++ b/app/tools/addcrlf.c
@@ -0,0 +1,242 @@
+/**
+ * \file addcrlf.c Convert text between DOS, UNIX and MAC
+ *
+ * $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/tools/addcrlf.c,v 1.7 2007-02-13 19:46:25 m_fischer Exp $
+ *
+ * This is heavily based on flip by Craig Stuart Sapp <craig@ccrma.stanford.edu>
+ * Web Address: http://www-ccrma.stanford.edu/~craig/utility/flip/flip.cpp
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) Marin Fischer 2006
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+void exitUsage( char *cmd );
+void translateToDos( char *infile, char *outfile );
+void translateToUnix(char* infilename, char *outfilename);
+void determineType(char* filename);
+
+int
+main( int argc, char ** argv)
+{
+ char option;
+
+ if( argc < 2 )
+ exitUsage(argv[0]);
+
+ if( argv[1][0] != '-' &&argv[1][0] != '/' )
+ exitUsage(argv[0]);
+
+ option = argv[1][1];
+
+ if (!(option == 'u' || option == 'd' || option == 't' || option =='h' )) {
+ exitUsage(argv[0]);
+ }
+
+ if( !((option == 't' && argc == 3)||(option !='t' && argc==4)||( option =='h' ))) {
+ exitUsage(argv[0]);
+ }
+ switch( option )
+ {
+ case 'd':
+ translateToDos(argv[2], argv[3]);
+ break;
+ case 'u':
+ translateToUnix(argv[2], argv[3]);
+ break;
+ case 'm':
+/* translateToMacintosh(argv[i+2]); */
+ break;
+ case 'h':
+ exitUsage(argv[0]);
+ break;
+ default:
+ determineType(argv[2]);
+ break;
+ }
+ return 0;
+}
+
+
+
+void
+translateToDos(char* infilename, char *outfilename)
+{
+ FILE *in, *out;
+ char ch, lastch;
+ int peekch;
+
+ in = fopen( infilename, "rb" );
+ if (!in) {
+ printf( "Error: cannot find file: %s\n", infilename );
+ return;
+ }
+
+ out = fopen( outfilename, "wb" );
+ if (!out) {
+ printf( "Error: cannot open file: %s\n", outfilename );
+ return;
+ }
+
+ ch = getc( in );
+ lastch = ch;
+
+ while( !feof( in ))
+ {
+ if (ch == 0x0a && lastch != 0x0d) {
+ // convert newline from Unix to MS-DOS
+ putc( (char)0x0d, out );
+ putc( ch, out );
+ lastch = ch;
+ } else {
+ if (ch == 0x0d) { // convert newline from Mac to MS-DOS
+ peekch = getc( in ); // lookahead for following character
+ ungetc( peekch, in );
+
+ if (peekch != 0x0a) {
+ putc( ch, out );
+ putc( (char)0x0a, out );
+ lastch = 0x0a;
+ } else {
+ lastch = 0x0d;
+ // Bug fix here reported by Shelley Adams: running -d
+ // twice in a row was generating Unix style newlines
+ // without the following statement:
+ putc( 0x0d, out );
+ }
+
+ } else {
+ putc( ch, out );
+ lastch = ch;
+ }
+ }
+ ch = getc( in );
+ }
+
+ fclose( in );
+ fclose( out );
+}
+
+void
+translateToUnix(char* infilename, char *outfilename)
+{
+ FILE *in, *out;
+ char ch, lastch;
+
+ in = fopen( infilename, "rb" );
+ if (!in) {
+ printf( "Error: cannot find file: %s\n", infilename );
+ return;
+ }
+
+ out = fopen( outfilename, "wb" );
+ if (!out) {
+ printf( "Error: cannot open file: %s\n", outfilename );
+ return;
+ }
+
+ ch = getc( in );
+ lastch = ch;
+
+ while( !feof( in ))
+ {
+ if (ch == 0x0d) {
+ putc( (char)0x0a, out );
+ } else {
+ if (ch == 0x0a) {
+ if (lastch == 0x0d) {
+ // do nothing: already converted MSDOS newline to Unix form
+ } else {
+ putc( (char)0x0a, out );
+ }
+ } else {
+ putc( ch, out );
+ }
+ }
+ lastch = ch;
+ ch = getc( in );
+ }
+
+ fclose( in );
+ fclose( out );
+}
+
+void
+determineType(char* filename)
+{
+ FILE *in;
+ int ch;
+ int crcount = 0;
+ int lfcount = 0;
+
+ in = fopen( filename, "rb" );
+ if (!in) {
+ printf( "Error: cannot find file: %s\n", filename );
+ return;
+ }
+
+ ch = getc( in );
+ if( ch == EOF ) {
+ printf( "Error: file could not be read: %s\n", filename );
+ return;
+ }
+
+ while( !feof( in ))
+ {
+ if (ch == 0x0d) {
+ crcount ++;
+ } else {
+ if (ch == 0x0a) {
+ lfcount++;
+ }
+ }
+ ch = getc( in );
+ }
+
+ fclose( in );
+
+ if ((lfcount == crcount) && (crcount != 0)) {
+ printf("%s : DOS\n", filename );
+ } else if ((lfcount > 0) && (crcount == 0)) {
+ printf("%s : UNIX\n", filename );
+ } else if ((lfcount == 0) && (crcount > 0)) {
+ printf("%s : MAC\n", filename );
+ } else if ((lfcount > 0) && (crcount > 0)) {
+ printf("%s : MIXED\n", filename );
+ } else {
+ printf("%s : UNKNOWN\n", filename );
+ }
+}
+
+void
+exitUsage( char* commandName )
+{
+ printf( "\nUsage: %s [-h] | [-t infile] | [[-u|-d|-m] infile outfile]\n"
+ " Converts an ASCII file between Unix, MS-DOS/Windows, or Macintosh newline formats\n\n"
+ " Options: \n"
+ " -u = convert file to Unix newline format (newline)\n"
+ " -d = convert file to MS-DOS/Windows newline format (linefeed + newline)\n"
+ " -m = convert file to Macintosh newline format (linefeed)\n"
+ " -t = display current file type, no file modifications\n"
+ " -h = show this help\n",
+ commandName );
+
+ exit(1);
+}
diff --git a/app/tools/bin2c.c b/app/tools/bin2c.c
new file mode 100644
index 0000000..bb619dc
--- /dev/null
+++ b/app/tools/bin2c.c
@@ -0,0 +1,126 @@
+/*
+BIN2C V1.0 CODED BY CHRISTIAN PADOVANO ON 17-MAY-1995
+this little utility translates a binary file in a useful C structure
+that can be included in a C source.
+to contact me write to EMAIL: [[Email Removed]]
+*/
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#define BUF_LEN 1024
+#define LINE 12
+
+/* Tell u the file size in bytes */
+
+long int filesize( FILE *fp )
+{
+ long int save_pos, size_of_file;
+
+ save_pos = ftell( fp );
+ fseek( fp,0L, SEEK_END );
+ size_of_file = ftell( fp );
+ fseek( fp, save_pos, SEEK_SET );
+ return( size_of_file );
+}
+
+
+/* lower chars --> upper chars */
+
+void Upper_chars(char *buffer)
+{
+ unsigned int c;
+
+ for (c=0; c <= strlen(buffer)-1; c++)
+ *(buffer+c)=toupper( *( buffer+c) );
+}
+
+
+int main( int argc, char **argv )
+{
+ FILE *source,*dest;
+ char Dummy[BUF_LEN];
+ int buffer;
+ int c;
+
+ if ( (argc < 4) )
+ {
+
+ if ( ( argc == 2 ) && ( strcmp(argv[1],"-h")==0 ) )
+ {
+ puts(" - <<< BIN2C V1.0 >>> by Christian Padovano - \n");
+ puts("USAGE: bin2C <BINARY file name> <TARGET file name> <STRUCT name>");
+ puts("\n <STRUCT > = name of the C structure in the destination file name.\n");
+ puts(" <TARGET > = without extension '.h' it will be added by program.");
+ return EXIT_SUCCESS;
+ }
+ else
+ {
+ puts("Bad arguments !!! You must give me all the parameters !!!!\n"
+ "Type 'bin2c -h' to read the help !!!! ");
+ return EXIT_SUCCESS;
+ }
+
+ }
+
+ if( (source=fopen( argv[1], "rb" )) == NULL )
+ {
+ printf("ERROR : I can't find source file %s\n",argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ strcpy(Dummy,argv[2]);
+ strcat(Dummy,".h"); /* add suffix .h to target name */
+
+ if( (dest=fopen( Dummy, "wb+" )) == NULL )
+ {
+ printf("ERROR : I can't open destination file %s\n",Dummy);
+ return EXIT_FAILURE;
+ }
+
+
+ strcpy(Dummy,argv[3]);
+ Upper_chars(Dummy); /* lower to upper chars */
+ strcat(Dummy,"_LEN"); /* add the suffix _LEN to the struct name */
+ /* for the #define stantment */
+
+
+ /* It writes the header information */
+ fprintf( dest, "\n#define %s %ld\n\n", Dummy, filesize(source) );
+ fprintf( dest, "static unsigned char %s[] = {\n ", argv[3] );
+
+ if( ferror( dest ))
+ {
+ printf( "ERROR writing on target file: %s\n",argv[2] );
+ return EXIT_FAILURE;
+ }
+
+
+ c = 0;
+ buffer = fgetc( source );
+
+ while( buffer != EOF )
+ {
+ fprintf(dest,"0x%02x", buffer);
+
+ buffer = fgetc( source );
+ if( !feof(source))
+ fputc(',', dest);
+
+ c++;
+ if(c == LINE ) {
+ fprintf(dest,"\n ");
+ c = 0;
+ }
+
+ }
+
+ fprintf(dest,"\n};\n\n");
+
+ return EXIT_SUCCESS;
+}
+
+
diff --git a/app/tools/dirent.c b/app/tools/dirent.c
new file mode 100644
index 0000000..08ea800
--- /dev/null
+++ b/app/tools/dirent.c
@@ -0,0 +1,145 @@
+/*
+
+ Implementation of POSIX directory browsing functions and types for Win32.
+
+ Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
+ History: Created March 1997. Updated June 2003.
+ Rights: See end of file.
+
+*/
+
+#include <dirent.h>
+#include <errno.h>
+#include <io.h> /* _findfirst and _findnext set errno iff they return -1 */
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct DIR
+{
+ long handle; /* -1 for failed rewind */
+ struct _finddata_t info;
+ struct dirent result; /* d_name null iff first time */
+ char *name; /* null-terminated char string */
+};
+
+DIR *opendir(const char *name)
+{
+ DIR *dir = 0;
+
+ if(name && name[0])
+ {
+ size_t base_length = strlen(name);
+ const char *all = /* search pattern must end with suitable wildcard */
+ strchr("/\\", name[base_length - 1]) ? "*" : "/*";
+
+ if((dir = (DIR *) malloc(sizeof *dir)) != 0 &&
+ (dir->name = (char *) malloc(base_length + strlen(all) + 1)) != 0)
+ {
+ strcat(strcpy(dir->name, name), all);
+
+ if((dir->handle = (long) _findfirst(dir->name, &dir->info)) != -1)
+ {
+ dir->result.d_name = 0;
+ }
+ else /* rollback */
+ {
+ free(dir->name);
+ free(dir);
+ dir = 0;
+ }
+ }
+ else /* rollback */
+ {
+ free(dir);
+ dir = 0;
+ errno = ENOMEM;
+ }
+ }
+ else
+ {
+ errno = EINVAL;
+ }
+
+ return dir;
+}
+
+int closedir(DIR *dir)
+{
+ int result = -1;
+
+ if(dir)
+ {
+ if(dir->handle != -1)
+ {
+ result = _findclose(dir->handle);
+ }
+
+ free(dir->name);
+ free(dir);
+ }
+
+ if(result == -1) /* map all errors to EBADF */
+ {
+ errno = EBADF;
+ }
+
+ return result;
+}
+
+struct dirent *readdir(DIR *dir)
+{
+ struct dirent *result = 0;
+
+ if(dir && dir->handle != -1)
+ {
+ if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1)
+ {
+ result = &dir->result;
+ result->d_name = dir->info.name;
+ }
+ }
+ else
+ {
+ errno = EBADF;
+ }
+
+ return result;
+}
+
+void rewinddir(DIR *dir)
+{
+ if(dir && dir->handle != -1)
+ {
+ _findclose(dir->handle);
+ dir->handle = (long) _findfirst(dir->name, &dir->info);
+ dir->result.d_name = 0;
+ }
+ else
+ {
+ errno = EBADF;
+ }
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+
+ Copyright Kevlin Henney, 1997, 2003. All rights reserved.
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose is hereby granted without fee, provided
+ that this copyright and permissions notice appear in all copies and
+ derivatives.
+
+ This software is supplied "as is" without express or implied warranty.
+
+ But that said, if there are any problems please get in touch.
+
+*/
diff --git a/app/tools/dirent.h b/app/tools/dirent.h
new file mode 100644
index 0000000..a02a0d8
--- /dev/null
+++ b/app/tools/dirent.h
@@ -0,0 +1,50 @@
+#ifndef DIRENT_INCLUDED
+#define DIRENT_INCLUDED
+
+/*
+
+ Declaration of POSIX directory browsing functions and types for Win32.
+
+ Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
+ History: Created March 1997. Updated June 2003.
+ Rights: See end of file.
+
+*/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct DIR DIR;
+
+struct dirent
+{
+ char *d_name;
+};
+
+DIR *opendir(const char *);
+int closedir(DIR *);
+struct dirent *readdir(DIR *);
+void rewinddir(DIR *);
+
+/*
+
+ Copyright Kevlin Henney, 1997, 2003. All rights reserved.
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose is hereby granted without fee, provided
+ that this copyright and permissions notice appear in all copies and
+ derivatives.
+
+ This software is supplied "as is" without express or implied warranty.
+
+ But that said, if there are any problems please get in touch.
+
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/app/tools/halibut/CMakeLists.txt b/app/tools/halibut/CMakeLists.txt
new file mode 100644
index 0000000..ec7d74b
--- /dev/null
+++ b/app/tools/halibut/CMakeLists.txt
@@ -0,0 +1,32 @@
+SET(SOURCES
+ biblio.c
+ bk_html.c
+ contents.c
+ deflate.c
+ error.c
+ halibut.h
+ help.c
+ index.c
+ input.c
+ in_pf.c
+ in_afm.c
+ psdata.c
+ bk_paper.c
+ keywords.c
+ licence.c
+ main.c
+ malloc.c
+ misc.c
+ tree234.c
+ tree234.h
+ ustring.c
+ version.c
+ wcwidth.c
+ )
+
+INCLUDE_DIRECTORIES(charset)
+ADD_EXECUTABLE(halibut ${SOURCES})
+TARGET_LINK_LIBRARIES(halibut xtrkcad-charset)
+
+ADD_SUBDIRECTORY(charset)
+
diff --git a/app/tools/halibut/LICENCE b/app/tools/halibut/LICENCE
new file mode 100644
index 0000000..972c0df
--- /dev/null
+++ b/app/tools/halibut/LICENCE
@@ -0,0 +1,36 @@
+Halibut is copyright (c) 1999-2007 Simon Tatham.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Halibut contains font metrics derived from the "Font Metrics for PDF
+Core 14 Fonts", which carry the following copyright notice and licence:
+
+ Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1993, 1997
+ Adobe Systems Incorporated. All Rights Reserved.
+
+ This file and the 14 PostScript(R) AFM files it accompanies may be
+ used, copied, and distributed for any purpose and without charge,
+ with or without modification, provided that all copyright notices
+ are retained; that the AFM files are not distributed without this
+ file; that all modifications to this file or any of the AFM files
+ are prominently noted in the modified file(s); and that this
+ paragraph is not modified. Adobe Systems has no responsibility or
+ obligation to support the use of the AFM files.
diff --git a/app/tools/halibut/README b/app/tools/halibut/README
new file mode 100644
index 0000000..b602834
--- /dev/null
+++ b/app/tools/halibut/README
@@ -0,0 +1,36 @@
+HALIBUT Readme
+==============
+
+This version of Halibut has been adapted to the needs of the XTrkCad
+Project. It is based on version 1 of Halibut.
+
+The original version is available at:
+
+http://www.chiark.greenend.org.uk/~sgtatham/halibut/
+
+This site also has the full documentation.
+
+XTrkCad Modifications
+---------------------
+
+The following changes have been made:
+
+1. Backends - only the HTML backend is included
+
+2. \f: Emphasize more
+ This formating instruction is similar to the \e. It is usually rendered
+ as bold on HTML
+
+ Example: Here is some \f{bold text}.
+
+ Nesting of \e and \f is unsupported.
+
+3 \G: Include graphic
+ This instruction is used to include bitmaps into the document. Note that
+ there are no checks for presence of the file nor whether its a valid
+ graphics format.
+
+ \G just takes the filename as a parameter.
+
+ Example: Include a bitmap here \G{png.d/bitmap.png}.
+
diff --git a/app/tools/halibut/biblio.c b/app/tools/halibut/biblio.c
new file mode 100644
index 0000000..7ce163d
--- /dev/null
+++ b/app/tools/halibut/biblio.c
@@ -0,0 +1,105 @@
+/*
+ * biblio.c: process the bibliography
+ */
+
+#include <assert.h>
+#include "halibut.h"
+
+static wchar_t *gentext(int num) {
+ wchar_t text[22];
+ wchar_t *p = text + lenof(text);
+ *--p = L'\0';
+ *--p = L']';
+ while (num != 0) {
+ assert(p > text);
+ *--p = L"0123456789"[num % 10];
+ num /= 10;
+ }
+ assert(p > text);
+ *--p = L'[';
+ return ustrdup(p);
+}
+
+static void cite_biblio(keywordlist *kl, wchar_t *key, filepos fpos) {
+ keyword *kw = kw_lookup(kl, key);
+ if (!kw)
+ error(err_nosuchkw, &fpos, key);
+ else {
+ /*
+ * We've found a \k reference. If it's a
+ * bibliography entry ...
+ */
+ if (kw->para->type == para_Biblio) {
+ /*
+ * ... then mark the paragraph as cited.
+ */
+ kw->para->type = para_BiblioCited;
+ }
+ }
+}
+
+/*
+ * Make a pass through the source form, generating citation formats
+ * for bibliography entries and also marking which bibliography
+ * entries are actually cited (or \nocite-ed).
+ */
+
+void gen_citations(paragraph *source, keywordlist *kl) {
+ paragraph *para;
+ int bibnum = 0;
+
+ for (para = source; para; para = para->next) {
+ word *ptr;
+
+ /*
+ * \BR and \nocite paragraphs get special processing here.
+ */
+ if (para->type == para_BR) {
+ keyword *kw = kw_lookup(kl, para->keyword);
+ if (!kw) {
+ error(err_nosuchkw, &para->fpos, para->keyword);
+ } else if (kw->text) {
+ error(err_multiBR, &para->fpos, para->keyword);
+ } else {
+ kw->text = dup_word_list(para->words);
+ }
+ } else if (para->type == para_NoCite) {
+ wchar_t *wp = para->keyword;
+ while (*wp) {
+ cite_biblio(kl, wp, para->fpos);
+ wp = uadv(wp);
+ }
+ }
+
+ /*
+ * Scan for keyword references.
+ */
+ for (ptr = para->words; ptr; ptr = ptr->next) {
+ if (ptr->type == word_UpperXref ||
+ ptr->type == word_LowerXref)
+ cite_biblio(kl, ptr->text, ptr->fpos);
+ }
+ }
+
+ /*
+ * We're now almost done; all that remains is to scan through
+ * the cited bibliography entries and invent default citation
+ * texts for the ones that don't already have explicitly
+ * provided \BR text.
+ */
+ for (para = source; para; para = para->next) {
+ if (para->type == para_BiblioCited) {
+ keyword *kw = kw_lookup(kl, para->keyword);
+ assert(kw != NULL);
+ if (!kw->text) {
+ word *wd = smalloc(sizeof(word));
+ wd->text = gentext(++bibnum);
+ wd->type = word_Normal;
+ wd->alt = NULL;
+ wd->next = NULL;
+ kw->text = wd;
+ }
+ para->kwtext = kw->text;
+ }
+ }
+}
diff --git a/app/tools/halibut/bk_html.c b/app/tools/halibut/bk_html.c
new file mode 100644
index 0000000..8b5443b
--- /dev/null
+++ b/app/tools/halibut/bk_html.c
@@ -0,0 +1,2791 @@
+/*
+ * HTML backend for Halibut
+ */
+
+/*
+ * TODO:
+ *
+ * - I'm never entirely convinced that having a fragment link to
+ * come in at the start of the real text in the file is
+ * sensible. Perhaps for the topmost section in the file, no
+ * fragment should be used? (Though it should probably still be
+ * _there_ even if unused.)
+ *
+ * - In HHK index mode: subsidiary hhk entries (as in replacing
+ * `foo, bar' with `foo\n\tbar') can be done by embedding
+ * sub-<UL>s in the hhk file. This requires me getting round to
+ * supporting that idiom in the rest of Halibut, but I thought
+ * I'd record how it's done here in case I turn out to have
+ * forgotten when I get there.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <limits.h>
+#include "halibut.h"
+
+#define is_heading_type(type) ( (type) == para_Title || \
+ (type) == para_Chapter || \
+ (type) == para_Appendix || \
+ (type) == para_UnnumberedChapter || \
+ (type) == para_Heading || \
+ (type) == para_Subsect)
+
+#define heading_depth(p) ( (p)->type == para_Subsect ? (p)->aux + 1 : \
+ (p)->type == para_Heading ? 1 : \
+ (p)->type == para_Title ? -1 : 0 )
+
+typedef struct {
+ int just_numbers;
+ wchar_t *number_suffix;
+} sectlevel;
+
+typedef struct {
+ int nasect;
+ sectlevel achapter, *asect;
+ int *contents_depths; /* 0=main, 1=chapter, 2=sect etc */
+ int ncdepths;
+ int address_section, visible_version_id;
+ int leaf_contains_contents, leaf_smallest_contents;
+ int navlinks;
+ int rellinks;
+ char *contents_filename;
+ char *index_filename;
+ char *template_filename;
+ char *single_filename;
+ char *chm_filename, *hhp_filename, *hhc_filename, *hhk_filename;
+ char **template_fragments;
+ int ntfragments;
+ char *head_end, *body_start, *body_end, *addr_start, *addr_end;
+ char *body_tag, *nav_attr;
+ wchar_t *author, *description;
+ wchar_t *index_text, *contents_text, *preamble_text, *title_separator;
+ wchar_t *nav_prev_text, *nav_next_text, *nav_separator;
+ wchar_t *index_main_sep, *index_multi_sep;
+ wchar_t *pre_versionid, *post_versionid;
+ int restrict_charset, output_charset;
+ enum {
+ HTML_3_2, HTML_4, ISO_HTML,
+ XHTML_1_0_TRANSITIONAL, XHTML_1_0_STRICT
+ } htmlver;
+ wchar_t *lquote, *rquote;
+ int leaf_level;
+} htmlconfig;
+
+#define contents_depth(conf, level) \
+ ( (conf).ncdepths > (level) ? (conf).contents_depths[level] : (level)+2 )
+
+#define is_xhtml(ver) ((ver) >= XHTML_1_0_TRANSITIONAL)
+
+typedef struct htmlfile htmlfile;
+typedef struct htmlsect htmlsect;
+
+struct htmlfile {
+ htmlfile *next;
+ char *filename;
+ int last_fragment_number;
+ int min_heading_depth;
+ htmlsect *first, *last; /* first/last highest-level sections */
+ /*
+ * The `temp' field is available for use in individual passes
+ * over the file list. For example, the HHK index generation
+ * uses it to ensure no index term references the same file
+ * more than once.
+ */
+ int temp;
+};
+
+struct htmlsect {
+ htmlsect *next, *parent;
+ htmlfile *file;
+ paragraph *title, *text;
+ enum { NORMAL, TOP, INDEX } type;
+ int contents_depth;
+ char **fragments;
+};
+
+typedef struct {
+ htmlfile *head, *tail;
+ htmlfile *single, *index;
+ tree234 *frags;
+ tree234 *files;
+} htmlfilelist;
+
+typedef struct {
+ htmlsect *head, *tail;
+} htmlsectlist;
+
+typedef struct {
+ htmlfile *file;
+ char *fragment;
+} htmlfragment;
+
+typedef struct {
+ int nrefs, refsize;
+ word **refs;
+} htmlindex;
+
+typedef struct {
+ htmlsect *section;
+ char *fragment;
+ int generated, referenced;
+} htmlindexref;
+
+typedef struct {
+ /*
+ * This level deals with charset conversion, starting and
+ * ending tags, and writing to the file. It's the lexical
+ * level.
+ */
+ FILE *fp;
+ int charset, restrict_charset;
+ charset_state cstate;
+ int ver;
+ enum {
+ HO_NEUTRAL, HO_IN_TAG, HO_IN_EMPTY_TAG, HO_IN_TEXT
+ } state;
+ int hackflags; /* used for icky .HH* stuff */
+ int hacklimit; /* text size limit, again for .HH* */
+ /*
+ * Stuff beyond here deals with the higher syntactic level: it
+ * tracks how many levels of <ul> are currently open when
+ * producing a contents list, for example.
+ */
+ int contents_level;
+} htmloutput;
+
+/*
+ * Nasty hacks that modify the behaviour of htmloutput files. All
+ * of these are flag bits set in ho.hackflags. HO_HACK_QUOTEQUOTES
+ * has the same effect as the `quote_quotes' parameter to
+ * html_text_limit_internal, except that it's set globally on an
+ * entire htmloutput structure; HO_HACK_QUOTENOTHING suppresses
+ * quoting of any HTML special characters (for .HHP files);
+ * HO_HACK_OMITQUOTES completely suppresses the generation of
+ * double quotes at all (turning them into single quotes, for want
+ * of a better idea).
+ */
+#define HO_HACK_QUOTEQUOTES 1
+#define HO_HACK_QUOTENOTHING 2
+#define HO_HACK_OMITQUOTES 4
+
+static int html_fragment_compare(void *av, void *bv)
+{
+ htmlfragment *a = (htmlfragment *)av;
+ htmlfragment *b = (htmlfragment *)bv;
+ int cmp;
+
+ if ((cmp = strcmp(a->file->filename, b->file->filename)) != 0)
+ return cmp;
+ else
+ return strcmp(a->fragment, b->fragment);
+}
+
+static int html_filename_compare(void *av, void *bv)
+{
+ char *a = (char *)av;
+ char *b = (char *)bv;
+
+ return strcmp(a, b);
+}
+
+static void html_file_section(htmlconfig *cfg, htmlfilelist *files,
+ htmlsect *sect, int depth);
+
+static htmlfile *html_new_file(htmlfilelist *list, char *filename);
+static htmlsect *html_new_sect(htmlsectlist *list, paragraph *title,
+ htmlconfig *cfg);
+
+/* Flags for html_words() flags parameter */
+#define NOTHING 0x00
+#define MARKUP 0x01
+#define LINKS 0x02
+#define INDEXENTS 0x04
+#define ALL 0x07
+static void html_words(htmloutput *ho, word *words, int flags,
+ htmlfile *file, keywordlist *keywords, htmlconfig *cfg);
+static void html_codepara(htmloutput *ho, word *words);
+
+static void return_to_neutral(htmloutput *ho);
+static void element_open(htmloutput *ho, char const *name);
+static void element_close(htmloutput *ho, char const *name);
+static void element_empty(htmloutput *ho, char const *name);
+static void element_attr(htmloutput *ho, char const *name, char const *value);
+static void element_attr_w(htmloutput *ho, char const *name,
+ wchar_t const *value);
+static void html_text(htmloutput *ho, wchar_t const *str);
+static void html_text_nbsp(htmloutput *ho, wchar_t const *str);
+static void html_text_limit(htmloutput *ho, wchar_t const *str, int maxlen);
+static void html_text_limit_internal(htmloutput *ho, wchar_t const *text,
+ int maxlen, int quote_quotes, int nbsp);
+static void html_nl(htmloutput *ho);
+static void html_raw(htmloutput *ho, char *text);
+static void html_raw_as_attr(htmloutput *ho, char *text);
+static void cleanup(htmloutput *ho);
+
+static void html_href(htmloutput *ho, htmlfile *thisfile,
+ htmlfile *targetfile, char *targetfrag);
+static void html_fragment(htmloutput *ho, char const *fragment);
+
+static char *html_format(paragraph *p, char *template_string);
+static char *html_sanitise_fragment(htmlfilelist *files, htmlfile *file,
+ char *text);
+static char *html_sanitise_filename(htmlfilelist *files, char *text);
+
+static void html_contents_entry(htmloutput *ho, int depth, htmlsect *s,
+ htmlfile *thisfile, keywordlist *keywords,
+ htmlconfig *cfg);
+static void html_section_title(htmloutput *ho, htmlsect *s,
+ htmlfile *thisfile, keywordlist *keywords,
+ htmlconfig *cfg, int real);
+
+static htmlconfig html_configure(paragraph *source) {
+ htmlconfig ret;
+ paragraph *p;
+
+ /*
+ * Defaults.
+ */
+ ret.leaf_level = 2;
+ ret.achapter.just_numbers = FALSE;
+ ret.achapter.number_suffix = L": ";
+ ret.nasect = 1;
+ ret.asect = snewn(ret.nasect, sectlevel);
+ ret.asect[0].just_numbers = TRUE;
+ ret.asect[0].number_suffix = L" ";
+ ret.ncdepths = 0;
+ ret.contents_depths = 0;
+ ret.visible_version_id = TRUE;
+ ret.address_section = TRUE;
+ ret.leaf_contains_contents = FALSE;
+ ret.leaf_smallest_contents = 4;
+ ret.navlinks = TRUE;
+ ret.rellinks = TRUE;
+ ret.single_filename = dupstr("Manual.html");
+ ret.contents_filename = dupstr("Contents.html");
+ ret.index_filename = dupstr("IndexPage.html");
+ ret.template_filename = dupstr("%n.html");
+ ret.chm_filename = ret.hhp_filename = NULL;
+ ret.hhc_filename = ret.hhk_filename = NULL;
+ ret.ntfragments = 1;
+ ret.template_fragments = snewn(ret.ntfragments, char *);
+ ret.template_fragments[0] = dupstr("%b");
+ ret.head_end = ret.body_tag = ret.body_start = ret.body_end =
+ ret.addr_start = ret.addr_end = ret.nav_attr = NULL;
+ ret.author = ret.description = NULL;
+ ret.restrict_charset = CS_UTF8;
+ ret.output_charset = CS_ASCII;
+ ret.htmlver = HTML_4;
+ ret.index_text = L"Index";
+ ret.contents_text = L"Contents";
+ ret.preamble_text = L"Preamble";
+ ret.title_separator = L" - ";
+ ret.nav_prev_text = L"Previous";
+ ret.nav_next_text = L"Next";
+ ret.nav_separator = L" | ";
+ ret.index_main_sep = L": ";
+ ret.index_multi_sep = L", ";
+ ret.pre_versionid = L"[";
+ ret.post_versionid = L"]";
+ /*
+ * Default quote characters are Unicode matched single quotes,
+ * falling back to ordinary ASCII ".
+ */
+ ret.lquote = L"\x2018\0\x2019\0\"\0\"\0\0";
+ ret.rquote = uadv(ret.lquote);
+
+ /*
+ * Two-pass configuration so that we can pick up global config
+ * (e.g. `quotes') before having it overridden by specific
+ * config (`html-quotes'), irrespective of the order in which
+ * they occur.
+ */
+ for (p = source; p; p = p->next) {
+ if (p->type == para_Config) {
+ if (!ustricmp(p->keyword, L"quotes")) {
+ if (*uadv(p->keyword) && *uadv(uadv(p->keyword))) {
+ ret.lquote = uadv(p->keyword);
+ ret.rquote = uadv(ret.lquote);
+ }
+ } else if (!ustricmp(p->keyword, L"index")) {
+ ret.index_text = uadv(p->keyword);
+ } else if (!ustricmp(p->keyword, L"contents")) {
+ ret.contents_text = uadv(p->keyword);
+ }
+ }
+ }
+
+ for (p = source; p; p = p->next) {
+ if (p->type == para_Config) {
+ wchar_t *k = p->keyword;
+
+ if (!ustrnicmp(k, L"xhtml-", 6))
+ k++; /* treat `xhtml-' and `html-' the same */
+
+ if (!ustricmp(k, L"html-restrict-charset")) {
+ ret.restrict_charset = charset_from_ustr(&p->fpos, uadv(k));
+ } else if (!ustricmp(k, L"html-output-charset")) {
+ ret.output_charset = charset_from_ustr(&p->fpos, uadv(k));
+ } else if (!ustricmp(k, L"html-version")) {
+ wchar_t *vername = uadv(k);
+ static const struct {
+ const wchar_t *name;
+ int ver;
+ } versions[] = {
+ {L"html3.2", HTML_3_2},
+ {L"html4", HTML_4},
+ {L"iso-html", ISO_HTML},
+ {L"xhtml1.0transitional", XHTML_1_0_TRANSITIONAL},
+ {L"xhtml1.0strict", XHTML_1_0_STRICT}
+ };
+ int i;
+
+ for (i = 0; i < (int)lenof(versions); i++)
+ if (!ustricmp(versions[i].name, vername))
+ break;
+
+ if (i == lenof(versions))
+ error(err_htmlver, &p->fpos, vername);
+ else
+ ret.htmlver = versions[i].ver;
+ } else if (!ustricmp(k, L"html-single-filename")) {
+ sfree(ret.single_filename);
+ ret.single_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-contents-filename")) {
+ sfree(ret.contents_filename);
+ ret.contents_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-index-filename")) {
+ sfree(ret.index_filename);
+ ret.index_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-template-filename")) {
+ sfree(ret.template_filename);
+ ret.template_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-template-fragment")) {
+ char *frag = adv(p->origkeyword);
+ if (*frag) {
+ while (ret.ntfragments--)
+ sfree(ret.template_fragments[ret.ntfragments]);
+ sfree(ret.template_fragments);
+ ret.template_fragments = NULL;
+ ret.ntfragments = 0;
+ while (*frag) {
+ ret.ntfragments++;
+ ret.template_fragments =
+ sresize(ret.template_fragments,
+ ret.ntfragments, char *);
+ ret.template_fragments[ret.ntfragments-1] =
+ dupstr(frag);
+ frag = adv(frag);
+ }
+ } else
+ error(err_cfginsufarg, &p->fpos, p->origkeyword, 1);
+ } else if (!ustricmp(k, L"html-chapter-numeric")) {
+ ret.achapter.just_numbers = utob(uadv(k));
+ } else if (!ustricmp(k, L"html-suppress-navlinks")) {
+ ret.navlinks = !utob(uadv(k));
+ } else if (!ustricmp(k, L"html-rellinks")) {
+ ret.rellinks = utob(uadv(k));
+ } else if (!ustricmp(k, L"html-chapter-suffix")) {
+ ret.achapter.number_suffix = uadv(k);
+ } else if (!ustricmp(k, L"html-leaf-level")) {
+ wchar_t *u = uadv(k);
+ if (!ustricmp(u, L"infinite") ||
+ !ustricmp(u, L"infinity") ||
+ !ustricmp(u, L"inf"))
+ ret.leaf_level = -1; /* represents infinity */
+ else
+ ret.leaf_level = utoi(u);
+ } else if (!ustricmp(k, L"html-section-numeric")) {
+ wchar_t *q = uadv(k);
+ int n = 0;
+ if (uisdigit(*q)) {
+ n = utoi(q);
+ q = uadv(q);
+ }
+ if (n >= ret.nasect) {
+ int i;
+ ret.asect = sresize(ret.asect, n+1, sectlevel);
+ for (i = ret.nasect; i <= n; i++)
+ ret.asect[i] = ret.asect[ret.nasect-1];
+ ret.nasect = n+1;
+ }
+ ret.asect[n].just_numbers = utob(q);
+ } else if (!ustricmp(k, L"html-section-suffix")) {
+ wchar_t *q = uadv(k);
+ int n = 0;
+ if (uisdigit(*q)) {
+ n = utoi(q);
+ q = uadv(q);
+ }
+ if (n >= ret.nasect) {
+ int i;
+ ret.asect = sresize(ret.asect, n+1, sectlevel);
+ for (i = ret.nasect; i <= n; i++) {
+ ret.asect[i] = ret.asect[ret.nasect-1];
+ }
+ ret.nasect = n+1;
+ }
+ ret.asect[n].number_suffix = q;
+ } else if (!ustricmp(k, L"html-contents-depth") ||
+ !ustrnicmp(k, L"html-contents-depth-", 20)) {
+ /*
+ * Relic of old implementation: this directive used
+ * to be written as \cfg{html-contents-depth-3}{2}
+ * rather than the usual Halibut convention of
+ * \cfg{html-contents-depth}{3}{2}. We therefore
+ * support both.
+ */
+ wchar_t *q = k[19] ? k+20 : uadv(k);
+ int n = 0;
+ if (uisdigit(*q)) {
+ n = utoi(q);
+ q = uadv(q);
+ }
+ if (n >= ret.ncdepths) {
+ int i;
+ ret.contents_depths =
+ sresize(ret.contents_depths, n+1, int);
+ for (i = ret.ncdepths; i <= n; i++) {
+ ret.contents_depths[i] = i+2;
+ }
+ ret.ncdepths = n+1;
+ }
+ ret.contents_depths[n] = utoi(q);
+ } else if (!ustricmp(k, L"html-head-end")) {
+ ret.head_end = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-body-tag")) {
+ ret.body_tag = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-body-start")) {
+ ret.body_start = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-body-end")) {
+ ret.body_end = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-address-start")) {
+ ret.addr_start = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-address-end")) {
+ ret.addr_end = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-navigation-attributes")) {
+ ret.nav_attr = adv(p->origkeyword);
+ } else if (!ustricmp(k, L"html-author")) {
+ ret.author = uadv(k);
+ } else if (!ustricmp(k, L"html-description")) {
+ ret.description = uadv(k);
+ } else if (!ustricmp(k, L"html-suppress-address")) {
+ ret.address_section = !utob(uadv(k));
+ } else if (!ustricmp(k, L"html-versionid")) {
+ ret.visible_version_id = utob(uadv(k));
+ } else if (!ustricmp(k, L"html-quotes")) {
+ if (*uadv(k) && *uadv(uadv(k))) {
+ ret.lquote = uadv(k);
+ ret.rquote = uadv(ret.lquote);
+ }
+ } else if (!ustricmp(k, L"html-leaf-contains-contents")) {
+ ret.leaf_contains_contents = utob(uadv(k));
+ } else if (!ustricmp(k, L"html-leaf-smallest-contents")) {
+ ret.leaf_smallest_contents = utoi(uadv(k));
+ } else if (!ustricmp(k, L"html-index-text")) {
+ ret.index_text = uadv(k);
+ } else if (!ustricmp(k, L"html-contents-text")) {
+ ret.contents_text = uadv(k);
+ } else if (!ustricmp(k, L"html-preamble-text")) {
+ ret.preamble_text = uadv(k);
+ } else if (!ustricmp(k, L"html-title-separator")) {
+ ret.title_separator = uadv(k);
+ } else if (!ustricmp(k, L"html-nav-prev-text")) {
+ ret.nav_prev_text = uadv(k);
+ } else if (!ustricmp(k, L"html-nav-next-text")) {
+ ret.nav_next_text = uadv(k);
+ } else if (!ustricmp(k, L"html-nav-separator")) {
+ ret.nav_separator = uadv(k);
+ } else if (!ustricmp(k, L"html-index-main-separator")) {
+ ret.index_main_sep = uadv(k);
+ } else if (!ustricmp(k, L"html-index-multiple-separator")) {
+ ret.index_multi_sep = uadv(k);
+ } else if (!ustricmp(k, L"html-pre-versionid")) {
+ ret.pre_versionid = uadv(k);
+ } else if (!ustricmp(k, L"html-post-versionid")) {
+ ret.post_versionid = uadv(k);
+ } else if (!ustricmp(k, L"html-mshtmlhelp-chm")) {
+ sfree(ret.chm_filename);
+ ret.chm_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-mshtmlhelp-project")) {
+ sfree(ret.hhp_filename);
+ ret.hhp_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-mshtmlhelp-contents")) {
+ sfree(ret.hhc_filename);
+ ret.hhc_filename = dupstr(adv(p->origkeyword));
+ } else if (!ustricmp(k, L"html-mshtmlhelp-index")) {
+ sfree(ret.hhk_filename);
+ ret.hhk_filename = dupstr(adv(p->origkeyword));
+ }
+ }
+ }
+
+ /*
+ * Enforce that the CHM and HHP filenames must either be both
+ * present or both absent. If one is present but not the other,
+ * turn both off.
+ */
+ if (!ret.chm_filename ^ !ret.hhp_filename) {
+ error(err_chmnames);
+ sfree(ret.chm_filename); ret.chm_filename = NULL;
+ sfree(ret.hhp_filename); ret.hhp_filename = NULL;
+ }
+ /*
+ * And if we're not generating an HHP, there's no need for HHC
+ * or HHK.
+ */
+ if (!ret.hhp_filename) {
+ sfree(ret.hhc_filename); ret.hhc_filename = NULL;
+ sfree(ret.hhk_filename); ret.hhk_filename = NULL;
+ }
+
+ /*
+ * Now process fallbacks on quote characters.
+ */
+ while (*uadv(ret.rquote) && *uadv(uadv(ret.rquote)) &&
+ (!cvt_ok(ret.restrict_charset, ret.lquote) ||
+ !cvt_ok(ret.restrict_charset, ret.rquote))) {
+ ret.lquote = uadv(ret.rquote);
+ ret.rquote = uadv(ret.lquote);
+ }
+
+ return ret;
+}
+
+paragraph *html_config_filename(char *filename)
+{
+ /*
+ * If the user passes in a single filename as a parameter to
+ * the `--html' command-line option, then we should assume it
+ * to imply _two_ config directives:
+ * \cfg{html-single-filename}{whatever} and
+ * \cfg{html-leaf-level}{0}; the rationale being that the user
+ * wants their output _in that file_.
+ */
+ paragraph *p, *q;
+
+ p = cmdline_cfg_simple("html-single-filename", filename, NULL);
+ q = cmdline_cfg_simple("html-leaf-level", "0", NULL);
+ p->next = q;
+ return p;
+}
+
+void html_backend(paragraph *sourceform, keywordlist *keywords,
+ indexdata *idx, void *unused)
+{
+ paragraph *p;
+ htmlsect *topsect;
+ htmlconfig conf;
+ htmlfilelist files = { NULL, NULL, NULL, NULL, NULL, NULL };
+ htmlsectlist sects = { NULL, NULL }, nonsects = { NULL, NULL };
+ char *hhk_filename;
+ int has_index;
+
+ IGNORE(unused);
+
+ conf = html_configure(sourceform);
+
+ /*
+ * We're going to make heavy use of paragraphs' private data
+ * fields in the forthcoming code. Clear them first, so we can
+ * reliably tell whether we have auxiliary data for a
+ * particular paragraph.
+ */
+ for (p = sourceform; p; p = p->next)
+ p->private_data = NULL;
+
+ files.frags = newtree234(html_fragment_compare);
+ files.files = newtree234(html_filename_compare);
+
+ /*
+ * Start by figuring out into which file each piece of the
+ * document should be put. We'll do this by inventing an
+ * `htmlsect' structure and stashing it in the private_data
+ * field of each section paragraph; we also need one additional
+ * htmlsect for the document index, which won't show up in the
+ * source form but needs to be consistently mentioned in
+ * contents links.
+ *
+ * While we're here, we'll also invent the HTML fragment name(s)
+ * for each section.
+ */
+ {
+ htmlsect *sect;
+ int d;
+
+ topsect = html_new_sect(&sects, NULL, &conf);
+ topsect->type = TOP;
+ topsect->title = NULL;
+ topsect->text = sourceform;
+ topsect->contents_depth = contents_depth(conf, 0);
+ html_file_section(&conf, &files, topsect, -1);
+
+ for (p = sourceform; p; p = p->next)
+ if (is_heading_type(p->type)) {
+ d = heading_depth(p);
+
+ if (p->type == para_Title) {
+ topsect->title = p;
+ continue;
+ }
+
+ sect = html_new_sect(&sects, p, &conf);
+ sect->text = p->next;
+
+ sect->contents_depth = contents_depth(conf, d+1) - (d+1);
+
+ if (p->parent) {
+ sect->parent = (htmlsect *)p->parent->private_data;
+ assert(sect->parent != NULL);
+ } else
+ sect->parent = topsect;
+ p->private_data = sect;
+
+ html_file_section(&conf, &files, sect, d);
+
+ {
+ int i;
+ for (i=0; i < conf.ntfragments; i++) {
+ sect->fragments[i] =
+ html_format(p, conf.template_fragments[i]);
+ sect->fragments[i] =
+ html_sanitise_fragment(&files, sect->file,
+ sect->fragments[i]);
+ }
+ }
+ }
+
+ /*
+ * And the index, if we have one. Note that we don't output
+ * an index as an HTML file if we're outputting one as a
+ * .HHK.
+ */
+ has_index = (count234(idx->entries) > 0);
+ if (has_index && !conf.hhk_filename) {
+ sect = html_new_sect(&sects, NULL, &conf);
+ sect->text = NULL;
+ sect->type = INDEX;
+ sect->parent = topsect;
+ sect->contents_depth = 0;
+ html_file_section(&conf, &files, sect, 0); /* peer of chapters */
+ sect->fragments[0] = utoa_dup(conf.index_text, CS_ASCII);
+ sect->fragments[0] = html_sanitise_fragment(&files, sect->file,
+ sect->fragments[0]);
+ files.index = sect->file;
+ }
+ }
+
+ /*
+ * Go through the keyword list and sort out fragment IDs for
+ * all the potentially referenced paragraphs which _aren't_
+ * headings.
+ */
+ {
+ int i;
+ keyword *kw;
+ htmlsect *sect;
+
+ for (i = 0; (kw = index234(keywords->keys, i)) != NULL; i++) {
+ paragraph *q, *p = kw->para;
+
+ if (!is_heading_type(p->type)) {
+ htmlsect *parent;
+
+ /*
+ * Find the paragraph's parent htmlsect, to
+ * determine which file it will end up in.
+ */
+ q = p->parent;
+ if (!q) {
+ /*
+ * Preamble paragraphs have no parent. So if we
+ * have a non-heading with no parent, it must
+ * be preamble, and therefore its parent
+ * htmlsect must be the preamble one.
+ */
+ assert(sects.head &&
+ sects.head->type == TOP);
+ parent = sects.head;
+ } else
+ parent = (htmlsect *)q->private_data;
+
+ /*
+ * Now we can construct an htmlsect for this
+ * paragraph itself, taking care to put it in the
+ * list of non-sections rather than the list of
+ * sections (so that traverses of the `sects' list
+ * won't attempt to add it to the contents or
+ * anything weird like that).
+ */
+ sect = html_new_sect(&nonsects, p, &conf);
+ sect->file = parent->file;
+ sect->parent = parent;
+ p->private_data = sect;
+
+ /*
+ * Fragment IDs for these paragraphs will simply be
+ * `p' followed by an integer.
+ */
+ sect->fragments[0] = snewn(40, char);
+ sprintf(sect->fragments[0], "p%d",
+ sect->file->last_fragment_number++);
+ sect->fragments[0] = html_sanitise_fragment(&files, sect->file,
+ sect->fragments[0]);
+ }
+ }
+ }
+
+ /*
+ * Reset the fragment numbers in each file. I've just used them
+ * to generate `p' fragment IDs for non-section paragraphs
+ * (numbered list elements, bibliocited), and now I want to use
+ * them for `i' fragment IDs for index entries.
+ */
+ {
+ htmlfile *file;
+ for (file = files.head; file; file = file->next)
+ file->last_fragment_number = 0;
+ }
+
+ /*
+ * Now sort out the index. This involves:
+ *
+ * - For each index term, we set up an htmlindex structure to
+ * store all the references to that term.
+ *
+ * - Then we make a pass over the actual document, finding
+ * every word_IndexRef; for each one, we actually figure out
+ * the HTML filename/fragment pair we will use to reference
+ * it, store that information in the private data field of
+ * the word_IndexRef itself (so we can recreate it when the
+ * time comes to output our HTML), and add a reference to it
+ * to the index term in question.
+ */
+ {
+ int i;
+ indexentry *entry;
+ htmlsect *lastsect;
+ word *w;
+
+ /*
+ * Set up the htmlindex structures.
+ */
+
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
+ htmlindex *hi = snew(htmlindex);
+
+ hi->nrefs = hi->refsize = 0;
+ hi->refs = NULL;
+
+ entry->backend_data = hi;
+ }
+
+ /*
+ * Run over the document inventing fragments. Each fragment
+ * is of the form `i' followed by an integer.
+ */
+ lastsect = sects.head; /* this is always the top section */
+ for (p = sourceform; p; p = p->next) {
+ if (is_heading_type(p->type) && p->type != para_Title)
+ lastsect = (htmlsect *)p->private_data;
+
+ for (w = p->words; w; w = w->next)
+ if (w->type == word_IndexRef) {
+ htmlindexref *hr = snew(htmlindexref);
+ indextag *tag;
+ int i;
+
+ hr->referenced = hr->generated = FALSE;
+ hr->section = lastsect;
+ {
+ char buf[40];
+ sprintf(buf, "i%d",
+ lastsect->file->last_fragment_number++);
+ hr->fragment = dupstr(buf);
+ hr->fragment =
+ html_sanitise_fragment(&files, hr->section->file,
+ hr->fragment);
+ }
+ w->private_data = hr;
+
+ tag = index_findtag(idx, w->text);
+ if (!tag)
+ break;
+
+ for (i = 0; i < tag->nrefs; i++) {
+ indexentry *entry = tag->refs[i];
+ htmlindex *hi = (htmlindex *)entry->backend_data;
+
+ if (hi->nrefs >= hi->refsize) {
+ hi->refsize += 32;
+ hi->refs = sresize(hi->refs, hi->refsize, word *);
+ }
+
+ hi->refs[hi->nrefs++] = w;
+ }
+ }
+ }
+ }
+
+ /*
+ * Now we're ready to write out the actual HTML files.
+ *
+ * For each file:
+ *
+ * - we open that file and write its header
+ * - we run down the list of sections
+ * - for each section directly contained within that file, we
+ * output the section text
+ * - for each section which is not in the file but which has a
+ * parent that is, we output a contents entry for the
+ * section if appropriate
+ * - finally, we output the file trailer and close the file.
+ */
+ {
+ htmlfile *f, *prevf;
+ htmlsect *s;
+ paragraph *p;
+
+ prevf = NULL;
+
+ for (f = files.head; f; f = f->next) {
+ htmloutput ho;
+ int displaying;
+ enum LISTTYPE { NOLIST, UL, OL, DL };
+ enum ITEMTYPE { NOITEM, LI, DT, DD };
+ struct stackelement {
+ struct stackelement *next;
+ enum LISTTYPE listtype;
+ enum ITEMTYPE itemtype;
+ } *stackhead;
+
+#define listname(lt) ( (lt)==UL ? "ul" : (lt)==OL ? "ol" : "dl" )
+#define itemname(lt) ( (lt)==LI ? "li" : (lt)==DT ? "dt" : "dd" )
+
+ ho.fp = fopen(f->filename, "w");
+ if (!ho.fp)
+ error(err_cantopenw, f->filename);
+
+ ho.charset = conf.output_charset;
+ ho.restrict_charset = conf.restrict_charset;
+ ho.cstate = charset_init_state;
+ ho.ver = conf.htmlver;
+ ho.state = HO_NEUTRAL;
+ ho.contents_level = 0;
+ ho.hackflags = 0; /* none of these thankyouverymuch */
+ ho.hacklimit = -1;
+
+ /* <!DOCTYPE>. */
+ switch (conf.htmlver) {
+ case HTML_3_2:
+ if (ho.fp)
+ fprintf(ho.fp, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD "
+ "HTML 3.2 Final//EN\">\n");
+ break;
+ case HTML_4:
+ if (ho.fp)
+ fprintf(ho.fp, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML"
+ " 4.01//EN\"\n\"http://www.w3.org/TR/html4/"
+ "strict.dtd\">\n");
+ break;
+ case ISO_HTML:
+ if (ho.fp)
+ fprintf(ho.fp, "<!DOCTYPE HTML PUBLIC \"ISO/IEC "
+ "15445:2000//DTD HTML//EN\">\n");
+ break;
+ case XHTML_1_0_TRANSITIONAL:
+ if (ho.fp) {
+ fprintf(ho.fp, "<?xml version=\"1.0\" encoding=\"%s\"?>\n",
+ charset_to_mimeenc(conf.output_charset));
+ fprintf(ho.fp, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML"
+ " 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/"
+ "xhtml1/DTD/xhtml1-transitional.dtd\">\n");
+ }
+ break;
+ case XHTML_1_0_STRICT:
+ if (ho.fp) {
+ fprintf(ho.fp, "<?xml version=\"1.0\" encoding=\"%s\"?>\n",
+ charset_to_mimeenc(conf.output_charset));
+ fprintf(ho.fp, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML"
+ " 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/"
+ "DTD/xhtml1-strict.dtd\">\n");
+ }
+ break;
+ }
+
+ element_open(&ho, "html");
+ if (is_xhtml(conf.htmlver)) {
+ element_attr(&ho, "xmlns", "http://www.w3.org/1999/xhtml");
+ }
+ html_nl(&ho);
+
+ element_open(&ho, "head");
+ html_nl(&ho);
+
+ element_empty(&ho, "meta");
+ element_attr(&ho, "http-equiv", "content-type");
+ {
+ char buf[200];
+ sprintf(buf, "text/html; charset=%.150s",
+ charset_to_mimeenc(conf.output_charset));
+ element_attr(&ho, "content", buf);
+ }
+ html_nl(&ho);
+
+ if (conf.author) {
+ element_empty(&ho, "meta");
+ element_attr(&ho, "name", "author");
+ element_attr_w(&ho, "content", conf.author);
+ html_nl(&ho);
+ }
+
+ if (conf.description) {
+ element_empty(&ho, "meta");
+ element_attr(&ho, "name", "description");
+ element_attr_w(&ho, "content", conf.description);
+ html_nl(&ho);
+ }
+
+ element_open(&ho, "title");
+ if (f->first && f->first->title) {
+ html_words(&ho, f->first->title->words, NOTHING,
+ f, keywords, &conf);
+
+ assert(f->last);
+ if (f->last != f->first && f->last->title) {
+ html_text(&ho, conf.title_separator);
+ html_words(&ho, f->last->title->words, NOTHING,
+ f, keywords, &conf);
+ }
+ }
+ element_close(&ho, "title");
+ html_nl(&ho);
+
+ if (conf.rellinks) {
+
+ if (prevf) {
+ element_empty(&ho, "link");
+ element_attr(&ho, "rel", "previous");
+ element_attr(&ho, "href", prevf->filename);
+ html_nl(&ho);
+ }
+
+ /* FIXME: link rel="up" */
+
+ if (f != files.head) {
+ element_empty(&ho, "link");
+ element_attr(&ho, "rel", "ToC");
+ element_attr(&ho, "href", files.head->filename);
+ html_nl(&ho);
+ }
+
+ if (has_index && files.index && f != files.index) {
+ element_empty(&ho, "link");
+ element_attr(&ho, "rel", "index");
+ element_attr(&ho, "href", files.index->filename);
+ html_nl(&ho);
+ }
+
+ if (f->next) {
+ element_empty(&ho, "link");
+ element_attr(&ho, "rel", "next");
+ element_attr(&ho, "href", f->next->filename);
+ html_nl(&ho);
+ }
+
+ }
+
+ if (conf.head_end)
+ html_raw(&ho, conf.head_end);
+
+ /*
+ * Add any <head> data defined in specific sections
+ * that go in this file. (This is mostly to allow <meta
+ * name="AppleTitle"> tags for Mac online help.)
+ */
+ for (s = sects.head; s; s = s->next) {
+ if (s->file == f && s->text) {
+ for (p = s->text;
+ p && (p == s->text || p->type == para_Title ||
+ !is_heading_type(p->type));
+ p = p->next) {
+ if (p->type == para_Config) {
+ if (!ustricmp(p->keyword, L"html-local-head")) {
+ html_raw(&ho, adv(p->origkeyword));
+ }
+ }
+ }
+ }
+ }
+
+ element_close(&ho, "head");
+ html_nl(&ho);
+
+ if (conf.body_tag)
+ html_raw(&ho, conf.body_tag);
+ else
+ element_open(&ho, "body");
+ html_nl(&ho);
+
+ if (conf.body_start)
+ html_raw(&ho, conf.body_start);
+
+ /*
+ * Write out a nav bar. Special case: we don't do this
+ * if there is only one file.
+ */
+ if (conf.navlinks && files.head != files.tail) {
+ element_open(&ho, "p");
+ if (conf.nav_attr)
+ html_raw_as_attr(&ho, conf.nav_attr);
+
+ if (prevf) {
+ element_open(&ho, "a");
+ element_attr(&ho, "href", prevf->filename);
+ }
+ html_text(&ho, conf.nav_prev_text);
+ if (prevf)
+ element_close(&ho, "a");
+
+ html_text(&ho, conf.nav_separator);
+
+ if (f != files.head) {
+ element_open(&ho, "a");
+ element_attr(&ho, "href", files.head->filename);
+ }
+ html_text(&ho, conf.contents_text);
+ if (f != files.head)
+ element_close(&ho, "a");
+
+ if (has_index && files.index) {
+ html_text(&ho, conf.nav_separator);
+ if (f != files.index) {
+ element_open(&ho, "a");
+ element_attr(&ho, "href", files.index->filename);
+ }
+ html_text(&ho, conf.index_text);
+ if (f != files.index)
+ element_close(&ho, "a");
+ }
+
+ html_text(&ho, conf.nav_separator);
+
+ if (f->next) {
+ element_open(&ho, "a");
+ element_attr(&ho, "href", f->next->filename);
+ }
+ html_text(&ho, conf.nav_next_text);
+ if (f->next)
+ element_close(&ho, "a");
+
+ element_close(&ho, "p");
+ html_nl(&ho);
+ }
+ prevf = f;
+
+ /*
+ * Write out a prefix TOC for the file (if a leaf file).
+ *
+ * We start by going through the section list and
+ * collecting the sections which need to be added to
+ * the contents. On the way, we also test to see if
+ * this file is a leaf file (defined as one which
+ * contains all descendants of any section it
+ * contains), because this will play a part in our
+ * decision on whether or not to _output_ the TOC.
+ *
+ * Special case: we absolutely do not do this if we're
+ * in single-file mode.
+ */
+ if (files.head != files.tail) {
+ int ntoc = 0, tocsize = 0;
+ htmlsect **toc = NULL;
+ int leaf = TRUE;
+
+ for (s = sects.head; s; s = s->next) {
+ htmlsect *a, *ac;
+ int depth, adepth;
+
+ /*
+ * Search up from this section until we find
+ * the highest-level one which belongs in this
+ * file.
+ */
+ depth = adepth = 0;
+ a = NULL;
+ for (ac = s; ac; ac = ac->parent) {
+ if (ac->file == f) {
+ a = ac;
+ adepth = depth;
+ }
+ depth++;
+ }
+
+ if (s->file != f && a != NULL)
+ leaf = FALSE;
+
+ if (a) {
+ if (adepth <= a->contents_depth) {
+ if (ntoc >= tocsize) {
+ tocsize += 64;
+ toc = sresize(toc, tocsize, htmlsect *);
+ }
+ toc[ntoc++] = s;
+ }
+ }
+ }
+
+ if (leaf && conf.leaf_contains_contents &&
+ ntoc >= conf.leaf_smallest_contents) {
+ int i;
+
+ for (i = 0; i < ntoc; i++) {
+ htmlsect *s = toc[i];
+ int hlevel = (s->type == TOP ? -1 :
+ s->type == INDEX ? 0 :
+ heading_depth(s->title))
+ - f->min_heading_depth + 1;
+
+ assert(hlevel >= 1);
+ html_contents_entry(&ho, hlevel, s,
+ f, keywords, &conf);
+ }
+ html_contents_entry(&ho, 0, NULL, f, keywords, &conf);
+ }
+ }
+
+ /*
+ * Now go through the document and output some real
+ * text.
+ */
+ displaying = FALSE;
+ for (s = sects.head; s; s = s->next) {
+ if (s->file == f) {
+ /*
+ * This section belongs in this file.
+ * Display it.
+ */
+ displaying = TRUE;
+ } else {
+ /*
+ * Doesn't belong in this file, but it may be
+ * a descendant of a section which does, in
+ * which case we should consider it for the
+ * main TOC of this file (for non-leaf files).
+ */
+ htmlsect *a, *ac;
+ int depth, adepth;
+
+ displaying = FALSE;
+
+ /*
+ * Search up from this section until we find
+ * the highest-level one which belongs in this
+ * file.
+ */
+ depth = adepth = 0;
+ a = NULL;
+ for (ac = s; ac; ac = ac->parent) {
+ if (ac->file == f) {
+ a = ac;
+ adepth = depth;
+ }
+ depth++;
+ }
+
+ if (a != NULL) {
+ /*
+ * This section does not belong in this
+ * file, but an ancestor of it does. Write
+ * out a contents table entry, if the depth
+ * doesn't exceed the maximum contents
+ * depth for the ancestor section.
+ */
+ if (adepth <= a->contents_depth) {
+ html_contents_entry(&ho, adepth, s,
+ f, keywords, &conf);
+ }
+ }
+ }
+
+ if (displaying) {
+ int hlevel;
+ char htag[3];
+
+ html_contents_entry(&ho, 0, NULL, f, keywords, &conf);
+
+ /*
+ * Display the section heading.
+ */
+
+ hlevel = (s->type == TOP ? -1 :
+ s->type == INDEX ? 0 :
+ heading_depth(s->title))
+ - f->min_heading_depth + 1;
+ assert(hlevel >= 1);
+ /* HTML headings only go up to <h6> */
+ if (hlevel > 6)
+ hlevel = 6;
+ htag[0] = 'h';
+ htag[1] = '0' + hlevel;
+ htag[2] = '\0';
+ element_open(&ho, htag);
+
+ /*
+ * Provide anchor(s) for cross-links to target.
+ *
+ * (Also we'll have to do this separately in
+ * other paragraph types - NumberedList and
+ * BiblioCited.)
+ */
+ {
+ int i;
+ for (i=0; i < conf.ntfragments; i++)
+ if (s->fragments[i])
+ html_fragment(&ho, s->fragments[i]);
+ }
+
+ html_section_title(&ho, s, f, keywords, &conf, TRUE);
+
+ element_close(&ho, htag);
+
+ /*
+ * Now display the section text.
+ */
+ if (s->text) {
+ stackhead = snew(struct stackelement);
+ stackhead->next = NULL;
+ stackhead->listtype = NOLIST;
+ stackhead->itemtype = NOITEM;
+
+ for (p = s->text;; p = p->next) {
+ enum LISTTYPE listtype;
+ struct stackelement *se;
+
+ /*
+ * Preliminary switch to figure out what
+ * sort of list we expect to be inside at
+ * this stage.
+ *
+ * Since p may still be NULL at this point,
+ * I invent a harmless paragraph type for
+ * it if it is.
+ */
+ switch (p ? p->type : para_Normal) {
+ case para_Rule:
+ case para_Normal:
+ case para_Copyright:
+ case para_BiblioCited:
+ case para_Code:
+ case para_QuotePush:
+ case para_QuotePop:
+ case para_Chapter:
+ case para_Appendix:
+ case para_UnnumberedChapter:
+ case para_Heading:
+ case para_Subsect:
+ case para_LcontPop:
+ listtype = NOLIST;
+ break;
+
+ case para_Bullet:
+ listtype = UL;
+ break;
+
+ case para_NumberedList:
+ listtype = OL;
+ break;
+
+ case para_DescribedThing:
+ case para_Description:
+ listtype = DL;
+ break;
+
+ case para_LcontPush:
+ se = snew(struct stackelement);
+ se->next = stackhead;
+ se->listtype = NOLIST;
+ se->itemtype = NOITEM;
+ stackhead = se;
+ continue;
+
+ default: /* some totally non-printing para */
+ continue;
+ }
+
+ html_nl(&ho);
+
+ /*
+ * Terminate the most recent list item, if
+ * any. (We left this until after
+ * processing LcontPush, since in that case
+ * the list item won't want to be
+ * terminated until after the corresponding
+ * LcontPop.)
+ */
+ if (stackhead->itemtype != NOITEM) {
+ element_close(&ho, itemname(stackhead->itemtype));
+ html_nl(&ho);
+ }
+ stackhead->itemtype = NOITEM;
+
+ /*
+ * Terminate the current list, if it's not
+ * the one we want to be in.
+ */
+ if (listtype != stackhead->listtype &&
+ stackhead->listtype != NOLIST) {
+ element_close(&ho, listname(stackhead->listtype));
+ html_nl(&ho);
+ }
+
+ /*
+ * Leave the loop if our time has come.
+ */
+ if (!p || (is_heading_type(p->type) &&
+ p->type != para_Title))
+ break; /* end of section text */
+
+ /*
+ * Start a fresh list if necessary.
+ */
+ if (listtype != stackhead->listtype &&
+ listtype != NOLIST)
+ element_open(&ho, listname(listtype));
+
+ stackhead->listtype = listtype;
+
+ switch (p->type) {
+ case para_Rule:
+ element_empty(&ho, "hr");
+ break;
+ case para_Code:
+ html_codepara(&ho, p->words);
+ break;
+ case para_Normal:
+ case para_Copyright:
+ element_open(&ho, "p");
+ html_nl(&ho);
+ html_words(&ho, p->words, ALL,
+ f, keywords, &conf);
+ html_nl(&ho);
+ element_close(&ho, "p");
+ break;
+ case para_BiblioCited:
+ element_open(&ho, "p");
+ if (p->private_data) {
+ htmlsect *s = (htmlsect *)p->private_data;
+ int i;
+ for (i=0; i < conf.ntfragments; i++)
+ if (s->fragments[i])
+ html_fragment(&ho, s->fragments[i]);
+ }
+ html_nl(&ho);
+ html_words(&ho, p->kwtext, ALL,
+ f, keywords, &conf);
+ html_text(&ho, L" ");
+ html_words(&ho, p->words, ALL,
+ f, keywords, &conf);
+ html_nl(&ho);
+ element_close(&ho, "p");
+ break;
+ case para_Bullet:
+ case para_NumberedList:
+ element_open(&ho, "li");
+ if (p->private_data) {
+ htmlsect *s = (htmlsect *)p->private_data;
+ int i;
+ for (i=0; i < conf.ntfragments; i++)
+ if (s->fragments[i])
+ html_fragment(&ho, s->fragments[i]);
+ }
+ html_nl(&ho);
+ stackhead->itemtype = LI;
+ html_words(&ho, p->words, ALL,
+ f, keywords, &conf);
+ break;
+ case para_DescribedThing:
+ element_open(&ho, "dt");
+ html_nl(&ho);
+ stackhead->itemtype = DT;
+ html_words(&ho, p->words, ALL,
+ f, keywords, &conf);
+ break;
+ case para_Description:
+ element_open(&ho, "dd");
+ html_nl(&ho);
+ stackhead->itemtype = DD;
+ html_words(&ho, p->words, ALL,
+ f, keywords, &conf);
+ break;
+
+ case para_QuotePush:
+ element_open(&ho, "blockquote");
+ break;
+ case para_QuotePop:
+ element_close(&ho, "blockquote");
+ break;
+
+ case para_LcontPop:
+ se = stackhead;
+ stackhead = stackhead->next;
+ assert(stackhead);
+ sfree(se);
+ break;
+ }
+ }
+
+ assert(stackhead && !stackhead->next);
+ sfree(stackhead);
+ }
+
+ if (s->type == INDEX) {
+ indexentry *entry;
+ int i;
+
+ /*
+ * This section is the index. I'll just
+ * render it as a single paragraph, with a
+ * colon between the index term and the
+ * references, and <br> in between each
+ * entry.
+ */
+ element_open(&ho, "p");
+
+ for (i = 0; (entry =
+ index234(idx->entries, i)) != NULL; i++) {
+ htmlindex *hi = (htmlindex *)entry->backend_data;
+ int j;
+
+ if (i > 0)
+ element_empty(&ho, "br");
+ html_nl(&ho);
+
+ html_words(&ho, entry->text, MARKUP|LINKS,
+ f, keywords, &conf);
+
+ html_text(&ho, conf.index_main_sep);
+
+ for (j = 0; j < hi->nrefs; j++) {
+ htmlindexref *hr =
+ (htmlindexref *)hi->refs[j]->private_data;
+ paragraph *p = hr->section->title;
+
+ if (j > 0)
+ html_text(&ho, conf.index_multi_sep);
+
+ html_href(&ho, f, hr->section->file,
+ hr->fragment);
+ hr->referenced = TRUE;
+ if (p && p->kwtext)
+ html_words(&ho, p->kwtext, MARKUP|LINKS,
+ f, keywords, &conf);
+ else if (p && p->words)
+ html_words(&ho, p->words, MARKUP|LINKS,
+ f, keywords, &conf);
+ else {
+ /*
+ * If there is no title at all,
+ * this must be because our
+ * target section is the
+ * preamble section and there
+ * is no title. So we use the
+ * preamble_text.
+ */
+ html_text(&ho, conf.preamble_text);
+ }
+ element_close(&ho, "a");
+ }
+ }
+ element_close(&ho, "p");
+ }
+ }
+ }
+
+ html_contents_entry(&ho, 0, NULL, f, keywords, &conf);
+ html_nl(&ho);
+
+ {
+ /*
+ * Footer.
+ */
+ int done_version_ids = FALSE;
+
+ if (conf.address_section)
+ element_empty(&ho, "hr");
+
+ if (conf.body_end)
+ html_raw(&ho, conf.body_end);
+
+ if (conf.address_section) {
+ int started = FALSE;
+ if (conf.htmlver == ISO_HTML) {
+ /*
+ * The ISO-HTML validator complains if
+ * there isn't a <div> tag surrounding the
+ * <address> tag. I'm uncertain of why this
+ * should be - there appears to be no
+ * mention of this in the ISO-HTML spec,
+ * suggesting that it doesn't represent a
+ * change from HTML 4, but nonetheless the
+ * HTML 4 validator doesn't seem to mind.
+ */
+ element_open(&ho, "div");
+ }
+ element_open(&ho, "address");
+ if (conf.addr_start) {
+ html_raw(&ho, conf.addr_start);
+ html_nl(&ho);
+ started = TRUE;
+ }
+ if (conf.visible_version_id) {
+ for (p = sourceform; p; p = p->next)
+ if (p->type == para_VersionID) {
+ if (started)
+ element_empty(&ho, "br");
+ html_nl(&ho);
+ html_text(&ho, conf.pre_versionid);
+ html_words(&ho, p->words, NOTHING,
+ f, keywords, &conf);
+ html_text(&ho, conf.post_versionid);
+ started = TRUE;
+ }
+ done_version_ids = TRUE;
+ }
+ if (conf.addr_end) {
+ if (started)
+ element_empty(&ho, "br");
+ html_raw(&ho, conf.addr_end);
+ }
+ element_close(&ho, "address");
+ if (conf.htmlver == ISO_HTML)
+ element_close(&ho, "div");
+ }
+
+ if (!done_version_ids) {
+ /*
+ * If the user didn't want the version IDs
+ * visible, I think we still have a duty to put
+ * them in an HTML comment.
+ */
+ int started = FALSE;
+ for (p = sourceform; p; p = p->next)
+ if (p->type == para_VersionID) {
+ if (!started) {
+ html_raw(&ho, "<!-- version IDs:\n");
+ started = TRUE;
+ }
+ html_words(&ho, p->words, NOTHING,
+ f, keywords, &conf);
+ html_nl(&ho);
+ }
+ if (started)
+ html_raw(&ho, "-->\n");
+ }
+ }
+
+ element_close(&ho, "body");
+ html_nl(&ho);
+ element_close(&ho, "html");
+ html_nl(&ho);
+ cleanup(&ho);
+ }
+ }
+
+ /*
+ * Before we start outputting the HTML Help files, check
+ * whether there's even going to _be_ an index file: we omit it
+ * if the index contains nothing.
+ */
+ hhk_filename = conf.hhk_filename;
+ if (hhk_filename) {
+ int ok = FALSE;
+ int i;
+ indexentry *entry;
+
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
+ htmlindex *hi = (htmlindex *)entry->backend_data;
+
+ if (hi->nrefs > 0) {
+ ok = TRUE; /* found an index entry */
+ break;
+ }
+ }
+
+ if (!ok)
+ hhk_filename = NULL;
+ }
+
+ /*
+ * Output the MS HTML Help supporting files, if requested.
+ *
+ * A good unofficial reference for these is <http://chmspec.nongnu.org/>.
+ */
+ if (conf.hhp_filename) {
+ htmlfile *f;
+ htmloutput ho;
+
+ ho.charset = CS_CP1252; /* as far as I know, HHP files are */
+ ho.restrict_charset = CS_CP1252; /* hardwired to this charset */
+ ho.cstate = charset_init_state;
+ ho.ver = HTML_4; /* *shrug* */
+ ho.state = HO_NEUTRAL;
+ ho.contents_level = 0;
+ ho.hackflags = HO_HACK_QUOTENOTHING;
+
+ ho.fp = fopen(conf.hhp_filename, "w");
+ if (!ho.fp)
+ error(err_cantopenw, conf.hhp_filename);
+
+ fprintf(ho.fp,
+ "[OPTIONS]\n"
+ /* Binary TOC required for Next/Previous nav to work */
+ "Binary TOC=Yes\n"
+ "Compatibility=1.1 or later\n"
+ "Compiled file=%s\n"
+ "Default Window=main\n"
+ "Default topic=%s\n"
+ "Display compile progress=Yes\n"
+ "Full-text search=Yes\n"
+ "Title=", conf.chm_filename, files.head->filename);
+
+ ho.hacklimit = 255;
+ html_words(&ho, topsect->title->words, NOTHING,
+ NULL, keywords, &conf);
+
+ fprintf(ho.fp, "\n");
+
+ /*
+ * These two entries don't seem to be remotely necessary
+ * for a successful run of the help _compiler_, but
+ * omitting them causes the GUI Help Workshop to behave
+ * rather strangely if you try to load the help project
+ * into that and edit it.
+ */
+ if (conf.hhc_filename)
+ fprintf(ho.fp, "Contents file=%s\n", conf.hhc_filename);
+ if (hhk_filename)
+ fprintf(ho.fp, "Index file=%s\n", hhk_filename);
+
+ fprintf(ho.fp, "\n[WINDOWS]\nmain=\"");
+
+ ho.hackflags |= HO_HACK_OMITQUOTES;
+ ho.hacklimit = 255;
+ html_words(&ho, topsect->title->words, NOTHING,
+ NULL, keywords, &conf);
+
+ fprintf(ho.fp, "\",\"%s\",\"%s\",\"%s\",,,,,,"
+ /* This first magic number is fsWinProperties, controlling
+ * Navigation Pane options and the like.
+ * Constants HHWIN_PROP_* in htmlhelp.h. */
+ "0x62520,,"
+ /* This second number is fsToolBarFlags, mainly controlling
+ * toolbar buttons. Constants HHWIN_BUTTON_*.
+ * NOTE: there are two pairs of bits for Next/Previous
+ * buttons: 7/8 (which do nothing useful), and 21/22
+ * (which work). (Neither of these are exposed in the HHW
+ * UI, but they work fine in HH.) We use the latter. */
+ "0x60304e,,,,,,,,0\n",
+ conf.hhc_filename ? conf.hhc_filename : "",
+ hhk_filename ? hhk_filename : "",
+ files.head->filename);
+
+ /*
+ * The [FILES] section is also not necessary for
+ * compilation (hhc appears to build up a list of needed
+ * files just by following links from the given starting
+ * points), but useful for loading the project into HHW.
+ */
+ fprintf(ho.fp, "\n[FILES]\n");
+ for (f = files.head; f; f = f->next)
+ fprintf(ho.fp, "%s\n", f->filename);
+
+ fclose(ho.fp);
+ }
+ if (conf.hhc_filename) {
+ htmlfile *f;
+ htmlsect *s, *a;
+ htmloutput ho;
+ int currdepth = 0;
+
+ ho.fp = fopen(conf.hhc_filename, "w");
+ if (!ho.fp)
+ error(err_cantopenw, conf.hhc_filename);
+
+ ho.charset = CS_CP1252; /* as far as I know, HHC files are */
+ ho.restrict_charset = CS_CP1252; /* hardwired to this charset */
+ ho.cstate = charset_init_state;
+ ho.ver = HTML_4; /* *shrug* */
+ ho.state = HO_NEUTRAL;
+ ho.contents_level = 0;
+ ho.hackflags = HO_HACK_QUOTEQUOTES;
+
+ /*
+ * Magic DOCTYPE which seems to work for .HHC files. I'm
+ * wary of trying to change it!
+ */
+ fprintf(ho.fp, "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
+ "<HTML><HEAD>\n"
+ "<META HTTP-EQUIV=\"Content-Type\" "
+ "CONTENT=\"text/html; charset=%s\">\n"
+ "</HEAD><BODY><UL>\n",
+ charset_to_mimeenc(conf.output_charset));
+
+ for (f = files.head; f; f = f->next) {
+ /*
+ * For each HTML file, write out a contents entry.
+ */
+ int depth, leaf = TRUE;
+
+ /*
+ * Determine the depth of this file in the contents
+ * tree.
+ *
+ * If the file contains no sections, it is assumed to
+ * have depth zero.
+ */
+ depth = 0;
+ if (f->first)
+ for (a = f->first->parent; a && a->type != TOP; a = a->parent)
+ depth++;
+
+ /*
+ * Determine if this file is a leaf file, by
+ * trawling the section list to see if there's any
+ * section with an ancestor in this file but which
+ * is not itself in this file.
+ *
+ * Special case: for contents purposes, the TOP
+ * file is not considered to be the parent of the
+ * chapter files, so it's always a leaf.
+ *
+ * A file with no sections in it is also a leaf.
+ */
+ if (f->first && f->first->type != TOP) {
+ for (s = f->first; s; s = s->next) {
+ htmlsect *a;
+
+ if (leaf && s->file != f) {
+ for (a = s; a; a = a->parent)
+ if (a->file == f) {
+ leaf = FALSE;
+ break;
+ }
+ }
+ }
+ }
+
+ /*
+ * Now write out our contents entry.
+ */
+ while (currdepth < depth) {
+ fprintf(ho.fp, "<UL>\n");
+ currdepth++;
+ }
+ while (currdepth > depth) {
+ fprintf(ho.fp, "</UL>\n");
+ currdepth--;
+ }
+ /* fprintf(ho.fp, "<!-- depth=%d -->", depth); */
+ fprintf(ho.fp, "<LI><OBJECT TYPE=\"text/sitemap\">"
+ "<PARAM NAME=\"Name\" VALUE=\"");
+ ho.hacklimit = 255;
+ if (f->first->title)
+ html_words(&ho, f->first->title->words, NOTHING,
+ NULL, keywords, &conf);
+ else if (f->first->type == INDEX)
+ html_text(&ho, conf.index_text);
+ fprintf(ho.fp, "\"><PARAM NAME=\"Local\" VALUE=\"%s\">"
+ "<PARAM NAME=\"ImageNumber\" VALUE=\"%d\"></OBJECT>\n",
+ f->filename, leaf ? 11 : 1);
+ }
+
+ while (currdepth > 0) {
+ fprintf(ho.fp, "</UL>\n");
+ currdepth--;
+ }
+
+ fprintf(ho.fp, "</UL></BODY></HTML>\n");
+
+ cleanup(&ho);
+ }
+ if (hhk_filename) {
+ htmlfile *f;
+ htmloutput ho;
+ indexentry *entry;
+ int i;
+
+ /*
+ * First make a pass over all HTML files and set their
+ * `temp' fields to zero, because we're about to use them.
+ */
+ for (f = files.head; f; f = f->next)
+ f->temp = 0;
+
+ ho.fp = fopen(hhk_filename, "w");
+ if (!ho.fp)
+ error(err_cantopenw, hhk_filename);
+
+ ho.charset = CS_CP1252; /* as far as I know, HHK files are */
+ ho.restrict_charset = CS_CP1252; /* hardwired to this charset */
+ ho.cstate = charset_init_state;
+ ho.ver = HTML_4; /* *shrug* */
+ ho.state = HO_NEUTRAL;
+ ho.contents_level = 0;
+ ho.hackflags = HO_HACK_QUOTEQUOTES;
+
+ /*
+ * Magic DOCTYPE which seems to work for .HHK files. I'm
+ * wary of trying to change it!
+ */
+ fprintf(ho.fp, "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
+ "<HTML><HEAD>\n"
+ "<META HTTP-EQUIV=\"Content-Type\" "
+ "CONTENT=\"text/html; charset=%s\">\n"
+ "</HEAD><BODY><UL>\n",
+ charset_to_mimeenc(conf.output_charset));
+
+ /*
+ * Go through the index terms and output each one.
+ */
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
+ htmlindex *hi = (htmlindex *)entry->backend_data;
+ int j;
+
+ if (hi->nrefs > 0) {
+ fprintf(ho.fp, "<LI><OBJECT TYPE=\"text/sitemap\">\n"
+ "<PARAM NAME=\"Name\" VALUE=\"");
+ ho.hacklimit = 255;
+ html_words(&ho, entry->text, NOTHING,
+ NULL, keywords, &conf);
+ fprintf(ho.fp, "\">\n");
+
+ for (j = 0; j < hi->nrefs; j++) {
+ htmlindexref *hr =
+ (htmlindexref *)hi->refs[j]->private_data;
+
+ /*
+ * Use the temp field to ensure we don't
+ * reference the same file more than once.
+ */
+ if (!hr->section->file->temp) {
+ fprintf(ho.fp, "<PARAM NAME=\"Local\" VALUE=\"%s\">\n",
+ hr->section->file->filename);
+ hr->section->file->temp = 1;
+ }
+
+ hr->referenced = TRUE;
+ }
+
+ fprintf(ho.fp, "</OBJECT>\n");
+
+ /*
+ * Now go through those files and re-clear the temp
+ * fields ready for the _next_ index term.
+ */
+ for (j = 0; j < hi->nrefs; j++) {
+ htmlindexref *hr =
+ (htmlindexref *)hi->refs[j]->private_data;
+ hr->section->file->temp = 0;
+ }
+ }
+ }
+
+ fprintf(ho.fp, "</UL></BODY></HTML>\n");
+ cleanup(&ho);
+ }
+
+ /*
+ * Go through and check that no index fragments were referenced
+ * without being generated, or indeed vice versa.
+ *
+ * (When I actually get round to freeing everything, this can
+ * probably be the freeing loop as well.)
+ */
+ for (p = sourceform; p; p = p->next) {
+ word *w;
+ for (w = p->words; w; w = w->next)
+ if (w->type == word_IndexRef) {
+ htmlindexref *hr = (htmlindexref *)w->private_data;
+
+ assert(!hr->referenced == !hr->generated);
+ }
+ }
+
+ /*
+ * Free all the working data.
+ */
+ {
+ htmlfragment *frag;
+ while ( (frag = (htmlfragment *)delpos234(files.frags, 0)) != NULL ) {
+ /*
+ * frag->fragment is dynamically allocated, but will be
+ * freed when we process the htmlsect structure which
+ * it is attached to.
+ */
+ sfree(frag);
+ }
+ freetree234(files.frags);
+ }
+ /*
+ * The strings in files.files are all owned by their containing
+ * htmlfile structures, so there's no need to free them here.
+ */
+ freetree234(files.files);
+ {
+ htmlsect *sect, *tmp;
+ sect = sects.head;
+ while (sect) {
+ int i;
+ tmp = sect->next;
+ for (i=0; i < conf.ntfragments; i++)
+ sfree(sect->fragments[i]);
+ sfree(sect->fragments);
+ sfree(sect);
+ sect = tmp;
+ }
+ sect = nonsects.head;
+ while (sect) {
+ int i;
+ tmp = sect->next;
+ for (i=0; i < conf.ntfragments; i++)
+ sfree(sect->fragments[i]);
+ sfree(sect->fragments);
+ sfree(sect);
+ sect = tmp;
+ }
+ }
+ {
+ htmlfile *file, *tmp;
+ file = files.head;
+ while (file) {
+ tmp = file->next;
+ sfree(file->filename);
+ sfree(file);
+ file = tmp;
+ }
+ }
+ {
+ int i;
+ indexentry *entry;
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
+ htmlindex *hi = (htmlindex *)entry->backend_data;
+ sfree(hi);
+ }
+ }
+ {
+ paragraph *p;
+ word *w;
+ for (p = sourceform; p; p = p->next)
+ for (w = p->words; w; w = w->next)
+ if (w->type == word_IndexRef) {
+ htmlindexref *hr = (htmlindexref *)w->private_data;
+ assert(hr != NULL);
+ sfree(hr->fragment);
+ sfree(hr);
+ }
+ }
+ sfree(conf.asect);
+ sfree(conf.single_filename);
+ sfree(conf.contents_filename);
+ sfree(conf.index_filename);
+ sfree(conf.template_filename);
+ while (conf.ntfragments--)
+ sfree(conf.template_fragments[conf.ntfragments]);
+ sfree(conf.template_fragments);
+}
+
+static void html_file_section(htmlconfig *cfg, htmlfilelist *files,
+ htmlsect *sect, int depth)
+{
+ htmlfile *file;
+ int ldepth;
+
+ /*
+ * `depth' is derived from the heading_depth() macro at the top
+ * of this file, which counts title as -1, chapter as 0,
+ * heading as 1 and subsection as 2. However, the semantics of
+ * cfg->leaf_level are defined to count chapter as 1, heading
+ * as 2 etc. So first I increment depth :-(
+ */
+ ldepth = depth + 1;
+
+ if (cfg->leaf_level == 0) {
+ /*
+ * leaf_level==0 is a special case, in which everything is
+ * put into a single file.
+ */
+ if (!files->single)
+ files->single = html_new_file(files, cfg->single_filename);
+
+ file = files->single;
+ } else {
+ /*
+ * If the depth of this section is at or above leaf_level,
+ * we invent a fresh file and put this section at its head.
+ * Otherwise, we put it in the same file as its parent
+ * section.
+ *
+ * Another special value of cfg->leaf_level is -1, which
+ * means infinity (i.e. it's considered to always be
+ * greater than depth).
+ */
+ if (cfg->leaf_level > 0 && ldepth > cfg->leaf_level) {
+ /*
+ * We know that sect->parent cannot be NULL. The only
+ * circumstance in which it can be is if sect is at
+ * chapter or appendix level, i.e. ldepth==1; and if
+ * that's the case, then we cannot have entered this
+ * branch unless cfg->leaf_level==0, in which case we
+ * would be in the single-file case above and not here
+ * at all.
+ */
+ assert(sect->parent);
+
+ file = sect->parent->file;
+ } else {
+ if (sect->type == TOP) {
+ file = html_new_file(files, cfg->contents_filename);
+ } else if (sect->type == INDEX) {
+ file = html_new_file(files, cfg->index_filename);
+ } else {
+ char *title;
+
+ assert(ldepth > 0 && sect->title);
+ title = html_format(sect->title, cfg->template_filename);
+ file = html_new_file(files, title);
+ sfree(title);
+ }
+ }
+ }
+
+ sect->file = file;
+
+ if (file->min_heading_depth > depth) {
+ /*
+ * This heading is at a higher level than any heading we
+ * have so far placed in this file; so we set the `first'
+ * pointer.
+ */
+ file->min_heading_depth = depth;
+ file->first = sect;
+ }
+
+ if (file->min_heading_depth == depth)
+ file->last = sect;
+}
+
+static htmlfile *html_new_file(htmlfilelist *list, char *filename)
+{
+ htmlfile *ret = snew(htmlfile);
+
+ ret->next = NULL;
+ if (list->tail)
+ list->tail->next = ret;
+ else
+ list->head = ret;
+ list->tail = ret;
+
+ ret->filename = html_sanitise_filename(list, dupstr(filename));
+ add234(list->files, ret->filename);
+ ret->last_fragment_number = 0;
+ ret->min_heading_depth = INT_MAX;
+ ret->first = ret->last = NULL;
+
+ return ret;
+}
+
+static htmlsect *html_new_sect(htmlsectlist *list, paragraph *title,
+ htmlconfig *cfg)
+{
+ htmlsect *ret = snew(htmlsect);
+
+ ret->next = NULL;
+ if (list->tail)
+ list->tail->next = ret;
+ else
+ list->head = ret;
+ list->tail = ret;
+
+ ret->title = title;
+ ret->file = NULL;
+ ret->parent = NULL;
+ ret->type = NORMAL;
+
+ ret->fragments = snewn(cfg->ntfragments, char *);
+ {
+ int i;
+ for (i=0; i < cfg->ntfragments; i++)
+ ret->fragments[i] = NULL;
+ }
+
+ return ret;
+}
+
+static void html_words(htmloutput *ho, word *words, int flags,
+ htmlfile *file, keywordlist *keywords, htmlconfig *cfg)
+{
+ word *w;
+ char *c;
+ int style, type;
+
+ for (w = words; w; w = w->next) switch (w->type) {
+ case word_HyperLink:
+ if (flags & LINKS) {
+ element_open(ho, "a");
+ c = utoa_dup(w->text, CS_ASCII);
+ element_attr(ho, "href", c);
+ sfree(c);
+ }
+ break;
+ case word_Graphic:
+ element_open( ho, "img");
+ c = utoa_dup(w->text, CS_ASCII);
+ element_attr(ho, "src", c);
+ return_to_neutral(ho);
+ sfree(c);
+ break;
+ case word_UpperXref:
+ case word_LowerXref:
+ if (flags & LINKS) {
+ keyword *kwl = kw_lookup(keywords, w->text);
+ paragraph *p;
+ htmlsect *s;
+
+ assert(kwl);
+ p = kwl->para;
+ s = (htmlsect *)p->private_data;
+
+ assert(s);
+
+ html_href(ho, file, s->file, s->fragments[0]);
+ }
+ break;
+ case word_HyperEnd:
+ case word_XrefEnd:
+ if (flags & LINKS)
+ element_close(ho, "a");
+ break;
+ case word_IndexRef:
+ if (flags & INDEXENTS) {
+ htmlindexref *hr = (htmlindexref *)w->private_data;
+ html_fragment(ho, hr->fragment);
+ hr->generated = TRUE;
+ }
+ break;
+ case word_Normal:
+ case word_Emph:
+ case word_Strong:
+ case word_Code:
+ case word_WeakCode:
+ case word_WhiteSpace:
+ case word_EmphSpace:
+ case word_StrongSpace:
+ case word_CodeSpace:
+ case word_WkCodeSpace:
+ case word_Quote:
+ case word_EmphQuote:
+ case word_StrongQuote:
+ case word_CodeQuote:
+ case word_WkCodeQuote:
+ style = towordstyle(w->type);
+ type = removeattr(w->type);
+ if (style == word_Emph &&
+ (attraux(w->aux) == attr_First ||
+ attraux(w->aux) == attr_Only) &&
+ (flags & MARKUP))
+ element_open(ho, "em");
+ else if ((style == word_Code || style == word_WeakCode) &&
+ (attraux(w->aux) == attr_First ||
+ attraux(w->aux) == attr_Only) &&
+ (flags & MARKUP))
+ element_open(ho, "code");
+ else if (style == word_Strong &&
+ (attraux(w->aux) == attr_First ||
+ attraux(w->aux) == attr_Only) &&
+ (flags & MARKUP))
+ element_open(ho, "strong");
+
+ if (type == word_WhiteSpace)
+ html_text(ho, L" ");
+ else if (type == word_Quote) {
+ if (quoteaux(w->aux) == quote_Open)
+ html_text(ho, cfg->lquote);
+ else
+ html_text(ho, cfg->rquote);
+ } else {
+ if (!w->alt || cvt_ok(ho->restrict_charset, w->text))
+ html_text_nbsp(ho, w->text);
+ else
+ html_words(ho, w->alt, flags, file, keywords, cfg);
+ }
+
+ if (style == word_Emph &&
+ (attraux(w->aux) == attr_Last ||
+ attraux(w->aux) == attr_Only) &&
+ (flags & MARKUP))
+ element_close(ho, "em");
+ else if ((style == word_Code || style == word_WeakCode) &&
+ (attraux(w->aux) == attr_Last ||
+ attraux(w->aux) == attr_Only) &&
+ (flags & MARKUP))
+ element_close(ho, "code");
+ else if (style == word_Strong &&
+ (attraux(w->aux) == attr_Last ||
+ attraux(w->aux) == attr_Only) &&
+ (flags & MARKUP))
+ element_close(ho, "strong");
+
+ break;
+ }
+}
+
+static void html_codepara(htmloutput *ho, word *words)
+{
+ element_open(ho, "pre");
+ element_open(ho, "code");
+ for (; words; words = words->next) if (words->type == word_WeakCode) {
+ char *open_tag;
+ wchar_t *t, *e;
+
+ t = words->text;
+ if (words->next && words->next->type == word_Emph) {
+ e = words->next->text;
+ words = words->next;
+ } else
+ e = NULL;
+
+ while (e && *e && *t) {
+ int n;
+ int ec = *e;
+
+ for (n = 0; t[n] && e[n] && e[n] == ec; n++);
+
+ open_tag = NULL;
+ if (ec == 'i')
+ open_tag = "em";
+ else if (ec == 'b')
+ open_tag = "b";
+ if (open_tag)
+ element_open(ho, open_tag);
+
+ html_text_limit(ho, t, n);
+
+ if (open_tag)
+ element_close(ho, open_tag);
+
+ t += n;
+ e += n;
+ }
+ html_text(ho, t);
+ html_nl(ho);
+ }
+ element_close(ho, "code");
+ element_close(ho, "pre");
+}
+
+static void html_charset_cleanup(htmloutput *ho)
+{
+ char outbuf[256];
+ int bytes;
+
+ bytes = charset_from_unicode(NULL, NULL, outbuf, lenof(outbuf),
+ ho->charset, &ho->cstate, NULL);
+ if (ho->fp && bytes > 0)
+ fwrite(outbuf, 1, bytes, ho->fp);
+}
+
+static void return_mostly_to_neutral(htmloutput *ho)
+{
+ if (ho->fp) {
+ if (ho->state == HO_IN_EMPTY_TAG && is_xhtml(ho->ver)) {
+ fprintf(ho->fp, " />");
+ } else if (ho->state == HO_IN_EMPTY_TAG || ho->state == HO_IN_TAG) {
+ fprintf(ho->fp, ">");
+ }
+ }
+
+ ho->state = HO_NEUTRAL;
+}
+
+static void return_to_neutral(htmloutput *ho)
+{
+ if (ho->state == HO_IN_TEXT) {
+ html_charset_cleanup(ho);
+ }
+
+ return_mostly_to_neutral(ho);
+}
+
+static void element_open(htmloutput *ho, char const *name)
+{
+ return_to_neutral(ho);
+ if (ho->fp)
+ fprintf(ho->fp, "<%s", name);
+ ho->state = HO_IN_TAG;
+}
+
+static void element_close(htmloutput *ho, char const *name)
+{
+ return_to_neutral(ho);
+ if (ho->fp)
+ fprintf(ho->fp, "</%s>", name);
+ ho->state = HO_NEUTRAL;
+}
+
+static void element_empty(htmloutput *ho, char const *name)
+{
+ return_to_neutral(ho);
+ if (ho->fp)
+ fprintf(ho->fp, "<%s", name);
+ ho->state = HO_IN_EMPTY_TAG;
+}
+
+static void html_nl(htmloutput *ho)
+{
+ return_to_neutral(ho);
+ if (ho->fp)
+ fputc('\n', ho->fp);
+}
+
+static void html_raw(htmloutput *ho, char *text)
+{
+ return_to_neutral(ho);
+ if (ho->fp)
+ fputs(text, ho->fp);
+}
+
+static void html_raw_as_attr(htmloutput *ho, char *text)
+{
+ assert(ho->state == HO_IN_TAG || ho->state == HO_IN_EMPTY_TAG);
+ if (ho->fp) {
+ fputc(' ', ho->fp);
+ fputs(text, ho->fp);
+ }
+}
+
+static void element_attr(htmloutput *ho, char const *name, char const *value)
+{
+ html_charset_cleanup(ho);
+ assert(ho->state == HO_IN_TAG || ho->state == HO_IN_EMPTY_TAG);
+ if (ho->fp)
+ fprintf(ho->fp, " %s=\"%s\"", name, value);
+}
+
+static void element_attr_w(htmloutput *ho, char const *name,
+ wchar_t const *value)
+{
+ html_charset_cleanup(ho);
+ if (ho->fp)
+ fprintf(ho->fp, " %s=\"", name);
+ html_text_limit_internal(ho, value, 0, TRUE, FALSE);
+ html_charset_cleanup(ho);
+ if (ho->fp)
+ fputc('"', ho->fp);
+}
+
+static void html_text(htmloutput *ho, wchar_t const *text)
+{
+ return_mostly_to_neutral(ho);
+ html_text_limit_internal(ho, text, 0, FALSE, FALSE);
+}
+
+static void html_text_nbsp(htmloutput *ho, wchar_t const *text)
+{
+ return_mostly_to_neutral(ho);
+ html_text_limit_internal(ho, text, 0, FALSE, TRUE);
+}
+
+static void html_text_limit(htmloutput *ho, wchar_t const *text, int maxlen)
+{
+ return_mostly_to_neutral(ho);
+ html_text_limit_internal(ho, text, maxlen, FALSE, FALSE);
+}
+
+static void html_text_limit_internal(htmloutput *ho, wchar_t const *text,
+ int maxlen, int quote_quotes, int nbsp)
+{
+ int textlen = ustrlen(text);
+ char outbuf[256];
+ int bytes, err;
+
+ if (ho->hackflags & (HO_HACK_QUOTEQUOTES | HO_HACK_OMITQUOTES))
+ quote_quotes = TRUE; /* override the input value */
+
+ if (maxlen > 0 && textlen > maxlen)
+ textlen = maxlen;
+ if (ho->hacklimit >= 0) {
+ if (textlen > ho->hacklimit)
+ textlen = ho->hacklimit;
+ ho->hacklimit -= textlen;
+ }
+
+ while (textlen > 0) {
+ /* Scan ahead for characters we really can't display in HTML. */
+ int lenbefore, lenafter;
+ for (lenbefore = 0; lenbefore < textlen; lenbefore++)
+ if (text[lenbefore] == L'<' ||
+ text[lenbefore] == L'>' ||
+ text[lenbefore] == L'&' ||
+ (text[lenbefore] == L'"' && quote_quotes) ||
+ (text[lenbefore] == L' ' && nbsp))
+ break;
+ lenafter = lenbefore;
+ bytes = charset_from_unicode(&text, &lenafter, outbuf, lenof(outbuf),
+ ho->charset, &ho->cstate, &err);
+ textlen -= (lenbefore - lenafter);
+ if (bytes > 0 && ho->fp)
+ fwrite(outbuf, 1, bytes, ho->fp);
+ if (err) {
+ /*
+ * We have encountered a character that cannot be
+ * displayed in the selected output charset. Therefore,
+ * we use an HTML numeric entity reference.
+ */
+ assert(textlen > 0);
+ if (ho->fp)
+ fprintf(ho->fp, "&#%ld;", (long int)*text);
+ text++, textlen--;
+ } else if (lenafter == 0 && textlen > 0) {
+ /*
+ * We have encountered a character which is special to
+ * HTML.
+ */
+ if (ho->fp) {
+ if (*text == L'"' && (ho->hackflags & HO_HACK_OMITQUOTES)) {
+ fputc('\'', ho->fp);
+ } else if (ho->hackflags & HO_HACK_QUOTENOTHING) {
+ fputc(*text, ho->fp);
+ } else {
+ if (*text == L'<')
+ fprintf(ho->fp, "&lt;");
+ else if (*text == L'>')
+ fprintf(ho->fp, "&gt;");
+ else if (*text == L'&')
+ fprintf(ho->fp, "&amp;");
+ else if (*text == L'"')
+ fprintf(ho->fp, "&quot;");
+ else if (*text == L' ') {
+ assert(nbsp);
+ fprintf(ho->fp, "&nbsp;");
+ } else
+ assert(!"Can't happen");
+ }
+ }
+ text++, textlen--;
+ }
+ }
+}
+
+static void cleanup(htmloutput *ho)
+{
+ return_to_neutral(ho);
+ if (ho->fp)
+ fclose(ho->fp);
+}
+
+static void html_href(htmloutput *ho, htmlfile *thisfile,
+ htmlfile *targetfile, char *targetfrag)
+{
+ rdstringc rs = { 0, 0, NULL };
+ char *url;
+
+ if (targetfile != thisfile)
+ rdaddsc(&rs, targetfile->filename);
+ if (targetfrag) {
+ rdaddc(&rs, '#');
+ rdaddsc(&rs, targetfrag);
+ }
+ url = rs.text;
+
+ element_open(ho, "a");
+ element_attr(ho, "href", url);
+ sfree(url);
+}
+
+static void html_fragment(htmloutput *ho, char const *fragment)
+{
+ element_open(ho, "a");
+ element_attr(ho, "name", fragment);
+ if (is_xhtml(ho->ver))
+ element_attr(ho, "id", fragment);
+ element_close(ho, "a");
+}
+
+static char *html_format(paragraph *p, char *template_string)
+{
+ char *c, *t;
+ word *w;
+ wchar_t *ws, wsbuf[2];
+ rdstringc rs = { 0, 0, NULL };
+
+ t = template_string;
+ while (*t) {
+ if (*t == '%' && t[1]) {
+ int fmt;
+
+ t++;
+ fmt = *t++;
+
+ if (fmt == '%') {
+ rdaddc(&rs, fmt);
+ continue;
+ }
+
+ w = NULL;
+ ws = NULL;
+
+ if (p->kwtext && fmt == 'n')
+ w = p->kwtext;
+ else if (p->kwtext2 && fmt == 'b') {
+ /*
+ * HTML fragment names must start with a letter, so
+ * simply `1.2.3' is not adequate. In this case I'm
+ * going to cheat slightly by prepending the first
+ * character of the first word of kwtext, so that
+ * we get `C1' for chapter 1, `S2.3' for section
+ * 2.3 etc.
+ */
+ if (p->kwtext && p->kwtext->text[0]) {
+ ws = wsbuf;
+ wsbuf[1] = '\0';
+ wsbuf[0] = p->kwtext->text[0];
+ }
+ w = p->kwtext2;
+ } else if (p->keyword && *p->keyword && fmt == 'k')
+ ws = p->keyword;
+ else
+ /* %N comes here; also failure cases of other fmts */
+ w = p->words;
+
+ if (ws) {
+ c = utoa_dup(ws, CS_ASCII);
+ rdaddsc(&rs,c);
+ sfree(c);
+ }
+
+ while (w) {
+ if (removeattr(w->type) == word_Normal) {
+ c = utoa_dup(w->text, CS_ASCII);
+ rdaddsc(&rs,c);
+ sfree(c);
+ }
+ w = w->next;
+ }
+ } else {
+ rdaddc(&rs, *t++);
+ }
+ }
+
+ return rdtrimc(&rs);
+}
+
+static char *html_sanitise_fragment(htmlfilelist *files, htmlfile *file,
+ char *text)
+{
+ /*
+ * The HTML 4 spec's strictest definition of fragment names (<a
+ * name> and "id" attributes) says that they `must begin with a
+ * letter and may be followed by any number of letters, digits,
+ * hyphens, underscores, colons, and periods'.
+ *
+ * So here we unceremoniously rip out any characters not
+ * conforming to this limitation.
+ */
+ char *p = text, *q = text;
+
+ while (*p && !((*p>='A' && *p<='Z') || (*p>='a' && *p<='z')))
+ p++;
+ if ((*q++ = *p++) != '\0') {
+ while (*p) {
+ if ((*p>='A' && *p<='Z') ||
+ (*p>='a' && *p<='z') ||
+ (*p>='0' && *p<='9') ||
+ *p=='-' || *p=='_' || *p==':' || *p=='.')
+ *q++ = *p;
+ p++;
+ }
+
+ *q = '\0';
+ }
+
+ /* If there's nothing left, make something valid up */
+ if (!*text) {
+ static const char anonfrag[] = "anon";
+ text = sresize(text, lenof(anonfrag), char);
+ strcpy(text, anonfrag);
+ }
+
+ /*
+ * Now we check for clashes with other fragment names, and
+ * adjust this one if necessary by appending a hyphen followed
+ * by a number.
+ */
+ {
+ htmlfragment *frag = snew(htmlfragment);
+ int len = 0; /* >0 indicates we have resized */
+ int suffix = 1;
+
+ frag->file = file;
+ frag->fragment = text;
+
+ while (add234(files->frags, frag) != frag) {
+ if (!len) {
+ len = strlen(text);
+ frag->fragment = text = sresize(text, len+20, char);
+ }
+
+ sprintf(text + len, "-%d", ++suffix);
+ }
+ }
+
+ return text;
+}
+
+static char *html_sanitise_filename(htmlfilelist *files, char *text)
+{
+ /*
+ * Unceremoniously rip out any character that might cause
+ * difficulty in some filesystem or another, or be otherwise
+ * inconvenient.
+ *
+ * That doesn't leave much punctuation. I permit alphanumerics
+ * and +-.=_ only.
+ */
+ char *p = text, *q = text;
+
+ while (*p) {
+ if ((*p>='A' && *p<='Z') ||
+ (*p>='a' && *p<='z') ||
+ (*p>='0' && *p<='9') ||
+ *p=='-' || *p=='_' || *p=='+' || *p=='.' || *p=='=')
+ *q++ = *p;
+ p++;
+ }
+ *q = '\0';
+
+ /* If there's nothing left, make something valid up */
+ if (!*text) {
+ static const char anonfrag[] = "anon.html";
+ text = sresize(text, lenof(anonfrag), char);
+ strcpy(text, anonfrag);
+ }
+
+ /*
+ * Now we check for clashes with other filenames, and adjust
+ * this one if necessary by appending a hyphen followed by a
+ * number just before the file extension (if any).
+ */
+ {
+ int len, extpos;
+ int suffix = 1;
+
+ p = NULL;
+
+ while (find234(files->files, text, NULL)) {
+ if (!p) {
+ len = strlen(text);
+ p = text;
+ text = snewn(len+20, char);
+
+ for (extpos = len; extpos > 0 && p[extpos-1] != '.'; extpos--);
+ if (extpos > 0)
+ extpos--;
+ else
+ extpos = len;
+ }
+
+ sprintf(text, "%.*s-%d%s", extpos, p, ++suffix, p+extpos);
+ }
+
+ if (p)
+ sfree(p);
+ }
+
+ return text;
+}
+
+static void html_contents_entry(htmloutput *ho, int depth, htmlsect *s,
+ htmlfile *thisfile, keywordlist *keywords,
+ htmlconfig *cfg)
+{
+ if (ho->contents_level >= depth && ho->contents_level > 0) {
+ element_close(ho, "li");
+ html_nl(ho);
+ }
+
+ while (ho->contents_level > depth) {
+ element_close(ho, "ul");
+ ho->contents_level--;
+ if (ho->contents_level > 0) {
+ element_close(ho, "li");
+ }
+ html_nl(ho);
+ }
+
+ while (ho->contents_level < depth) {
+ html_nl(ho);
+ element_open(ho, "ul");
+ html_nl(ho);
+ ho->contents_level++;
+ }
+
+ if (!s)
+ return;
+
+ element_open(ho, "li");
+ html_href(ho, thisfile, s->file, s->fragments[0]);
+ html_section_title(ho, s, thisfile, keywords, cfg, FALSE);
+ element_close(ho, "a");
+ /* <li> will be closed by a later invocation */
+}
+
+static void html_section_title(htmloutput *ho, htmlsect *s, htmlfile *thisfile,
+ keywordlist *keywords, htmlconfig *cfg,
+ int real)
+{
+ if (s->title) {
+ sectlevel *sl;
+ word *number;
+ int depth = heading_depth(s->title);
+
+ if (depth < 0)
+ sl = NULL;
+ else if (depth == 0)
+ sl = &cfg->achapter;
+ else if (depth <= cfg->nasect)
+ sl = &cfg->asect[depth-1];
+ else
+ sl = &cfg->asect[cfg->nasect-1];
+
+ if (!sl)
+ number = NULL;
+ else if (sl->just_numbers)
+ number = s->title->kwtext2;
+ else
+ number = s->title->kwtext;
+
+ if (number) {
+ html_words(ho, number, MARKUP,
+ thisfile, keywords, cfg);
+ html_text(ho, sl->number_suffix);
+ }
+
+ html_words(ho, s->title->words, real ? ALL : MARKUP,
+ thisfile, keywords, cfg);
+ } else {
+ assert(s->type != NORMAL);
+ /*
+ * If we're printing the full document title for _real_ and
+ * there isn't one, we don't want to print `Preamble' at
+ * the top of what ought to just be some text. If we need
+ * it in any other context such as TOCs, we need to print
+ * `Preamble'.
+ */
+ if (s->type == TOP && !real)
+ html_text(ho, cfg->preamble_text);
+ else if (s->type == INDEX)
+ html_text(ho, cfg->index_text);
+ }
+}
diff --git a/app/tools/halibut/bk_paper.c b/app/tools/halibut/bk_paper.c
new file mode 100644
index 0000000..2e0289c
--- /dev/null
+++ b/app/tools/halibut/bk_paper.c
@@ -0,0 +1,2789 @@
+/*
+ * Paper printing pre-backend for Halibut.
+ *
+ * This module does all the processing common to both PostScript
+ * and PDF output: selecting fonts, line wrapping and page breaking
+ * in accordance with font metrics, laying out the contents and
+ * index pages, generally doing all the page layout. After this,
+ * bk_ps.c and bk_pdf.c should only need to do linear translations
+ * into their literal output format.
+ */
+
+/*
+ * TODO in future work:
+ *
+ * - linearised PDF, perhaps?
+ *
+ * - I'm uncertain of whether I need to include a ToUnicode CMap
+ * in each of my font definitions in PDF. Currently things (by
+ * which I mean cut and paste out of acroread) seem to be
+ * working fairly happily without it, but I don't know.
+ *
+ * - rather than the ugly aux_text mechanism for rendering chapter
+ * titles, we could actually build the correct word list and
+ * wrap it as a whole.
+ *
+ * - get vertical font metrics and use them to position the PDF
+ * xref boxes more pleasantly
+ *
+ * - configurability
+ * * page header and footer should be configurable; we should
+ * be able to shift the page number elsewhere, and add other
+ * things such as the current chapter/section title and fixed
+ * text
+ * * remove the fixed mapping from heading levels to heading
+ * styles; offer a menu of styles from which the user can
+ * choose at every heading level
+ * * first-line indent in paragraphs
+ * * fixed text: `Contents', `Index', the colon-space and full
+ * stop in chapter title constructions
+ * * configurable location of contents?
+ * * certainly configurably _remove_ the contents, and possibly
+ * also the index
+ * * double-sided document switch?
+ * + means you have two header/footer formats which
+ * alternate
+ * + and means that mandatory page breaks before chapter
+ * titles should include a blank page if necessary to
+ * start the next section to a right-hand page
+ *
+ * - title pages
+ *
+ * - ability to use Type 1 fonts without AFM files
+ * * we need to parse the font to extract its metrics
+ *
+ * - character substitution for better typography?
+ * * use real ellipsis rather than ...
+ * * a hyphen in a word by itself might prefer to be an en-dash
+ * * (Americans might even want a convenient way to use an
+ * em-dash)
+ * * DON'T DO ANY OF THE ABOVE WITHIN \c OR \cw!
+ * * substituting `minus' for `hyphen' in the standard encoding
+ * is probably preferable in Courier, though certainly not in
+ * the main text font
+ * * if I do do this lot, I'm rather inclined to at least try
+ * to think up a configurable way to do it so that Americans
+ * can do em-dash tricks without my intervention and other
+ * people can do other odd things too.
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+#include "halibut.h"
+#include "paper.h"
+
+typedef struct paper_conf_Tag paper_conf;
+typedef struct paper_idx_Tag paper_idx;
+
+typedef struct {
+ font_data *fonts[NFONTS];
+ int font_size;
+} font_cfg;
+
+struct paper_conf_Tag {
+ int paper_width;
+ int paper_height;
+ int left_margin;
+ int top_margin;
+ int right_margin;
+ int bottom_margin;
+ int indent_list_bullet;
+ int indent_list_after;
+ int indent_list;
+ int indent_quote;
+ int base_leading;
+ int base_para_spacing;
+ int chapter_top_space;
+ int sect_num_left_space;
+ int chapter_underline_depth;
+ int chapter_underline_thickness;
+ int rule_thickness;
+ font_cfg fbase, fcode, ftitle, fchapter, *fsect;
+ int nfsect;
+ int contents_indent_step;
+ int contents_margin;
+ int leader_separation;
+ int index_gutter;
+ int index_cols;
+ int index_minsep;
+ int pagenum_fontsize;
+ int footer_distance;
+ wchar_t *lquote, *rquote, *bullet;
+ wchar_t *contents_text, *index_text;
+ /* These are derived from the above */
+ int base_width;
+ int page_height;
+ int index_colwidth;
+};
+
+struct paper_idx_Tag {
+ /*
+ * Word list giving the page numbers on which this index entry
+ * appears. Also the last word in the list, for ease of
+ * construction.
+ */
+ word *words;
+ word *lastword;
+ /*
+ * The last page added to the list (so we can ensure we don't
+ * add one twice).
+ */
+ page_data *lastpage;
+};
+
+enum {
+ word_PageXref = word_NotWordType + 1
+};
+
+/* Flags for render_string() */
+#define RS_NOLIG 1
+
+static font_data *make_std_font(font_list *fontlist, char const *name);
+static void wrap_paragraph(para_data *pdata, word *words,
+ int w, int i1, int i2, paper_conf *conf);
+static page_data *page_breaks(line_data *first, line_data *last,
+ int page_height, int ncols, int headspace);
+static int render_string(page_data *page, font_data *font, int fontsize,
+ int x, int y, wchar_t *str, unsigned flags);
+static int render_line(line_data *ldata, int left_x, int top_y,
+ xref_dest *dest, keywordlist *keywords, indexdata *idx,
+ paper_conf *conf);
+static void render_para(para_data *pdata, paper_conf *conf,
+ keywordlist *keywords, indexdata *idx,
+ paragraph *index_placeholder, page_data *index_page);
+static int string_width(font_data *font, wchar_t const *string, int *errs,
+ unsigned flags);
+static int paper_width_simple(para_data *pdata, word *text, paper_conf *conf);
+static para_data *code_paragraph(int indent, word *words, paper_conf *conf);
+static para_data *rule_paragraph(int indent, paper_conf *conf);
+static void add_rect_to_page(page_data *page, int x, int y, int w, int h);
+static para_data *make_para_data(int ptype, int paux, int indent, int rmargin,
+ word *pkwtext, word *pkwtext2, word *pwords,
+ paper_conf *conf);
+static void standard_line_spacing(para_data *pdata, paper_conf *conf);
+static wchar_t *prepare_outline_title(word *first, wchar_t *separator,
+ word *second);
+static word *fake_word(wchar_t *text);
+static word *fake_space_word(void);
+static word *fake_page_ref(page_data *page);
+static word *fake_end_ref(void);
+static word *prepare_contents_title(word *first, wchar_t *separator,
+ word *second);
+static void fold_into_page(page_data *dest, page_data *src, int right_shift);
+
+static int fonts_ok(wchar_t *string, ...)
+{
+ font_data *font;
+ va_list ap;
+ int ret = TRUE;
+
+ va_start(ap, string);
+ while ( (font = va_arg(ap, font_data *)) != NULL) {
+ int errs;
+ (void) string_width(font, string, &errs, 0);
+ if (errs) {
+ ret = FALSE;
+ break;
+ }
+ }
+ va_end(ap);
+
+ return ret;
+}
+
+static void paper_cfg_fonts(font_data **fonts, font_list *fontlist,
+ wchar_t *wp, filepos *fpos) {
+ font_data *f;
+ char *fn;
+ int i;
+
+ for (i = 0; i < NFONTS && *wp; i++, wp = uadv(wp)) {
+ fn = utoa_dup(wp, CS_ASCII);
+ f = make_std_font(fontlist, fn);
+ if (f)
+ fonts[i] = f;
+ else
+ /* FIXME: proper error */
+ error(err_nofont, fpos, wp);
+ }
+}
+
+static paper_conf paper_configure(paragraph *source, font_list *fontlist) {
+ paragraph *p;
+ paper_conf ret;
+
+ /*
+ * Defaults.
+ */
+ ret.paper_width = 595 * UNITS_PER_PT;
+ ret.paper_height = 842 * UNITS_PER_PT;
+ ret.left_margin = 72 * UNITS_PER_PT;
+ ret.top_margin = 72 * UNITS_PER_PT;
+ ret.right_margin = 72 * UNITS_PER_PT;
+ ret.bottom_margin = 108 * UNITS_PER_PT;
+ ret.indent_list_bullet = 6 * UNITS_PER_PT;
+ ret.indent_list_after = 18 * UNITS_PER_PT;
+ ret.indent_quote = 18 * UNITS_PER_PT;
+ ret.base_leading = UNITS_PER_PT;
+ ret.base_para_spacing = 10 * UNITS_PER_PT;
+ ret.chapter_top_space = 72 * UNITS_PER_PT;
+ ret.sect_num_left_space = 12 * UNITS_PER_PT;
+ ret.chapter_underline_depth = 14 * UNITS_PER_PT;
+ ret.chapter_underline_thickness = 3 * UNITS_PER_PT;
+ ret.rule_thickness = 1 * UNITS_PER_PT;
+ ret.fbase.font_size = 12;
+ ret.fbase.fonts[FONT_NORMAL] = make_std_font(fontlist, "Times-Roman");
+ ret.fbase.fonts[FONT_EMPH] = make_std_font(fontlist, "Times-Italic");
+ ret.fbase.fonts[FONT_CODE] = make_std_font(fontlist, "Courier");
+ ret.fcode.font_size = 12;
+ ret.fcode.fonts[FONT_NORMAL] = make_std_font(fontlist, "Courier-Bold");
+ ret.fcode.fonts[FONT_EMPH] = make_std_font(fontlist, "Courier-Oblique");
+ ret.fcode.fonts[FONT_CODE] = make_std_font(fontlist, "Courier");
+ ret.ftitle.font_size = 24;
+ ret.ftitle.fonts[FONT_NORMAL] = make_std_font(fontlist, "Helvetica-Bold");
+ ret.ftitle.fonts[FONT_EMPH] =
+ make_std_font(fontlist, "Helvetica-BoldOblique");
+ ret.ftitle.fonts[FONT_CODE] = make_std_font(fontlist, "Courier-Bold");
+ ret.fchapter.font_size = 20;
+ ret.fchapter.fonts[FONT_NORMAL]= make_std_font(fontlist, "Helvetica-Bold");
+ ret.fchapter.fonts[FONT_EMPH] =
+ make_std_font(fontlist, "Helvetica-BoldOblique");
+ ret.fchapter.fonts[FONT_CODE] = make_std_font(fontlist, "Courier-Bold");
+ ret.nfsect = 3;
+ ret.fsect = snewn(ret.nfsect, font_cfg);
+ ret.fsect[0].font_size = 16;
+ ret.fsect[0].fonts[FONT_NORMAL]= make_std_font(fontlist, "Helvetica-Bold");
+ ret.fsect[0].fonts[FONT_EMPH] =
+ make_std_font(fontlist, "Helvetica-BoldOblique");
+ ret.fsect[0].fonts[FONT_CODE] = make_std_font(fontlist, "Courier-Bold");
+ ret.fsect[1].font_size = 14;
+ ret.fsect[1].fonts[FONT_NORMAL]= make_std_font(fontlist, "Helvetica-Bold");
+ ret.fsect[1].fonts[FONT_EMPH] =
+ make_std_font(fontlist, "Helvetica-BoldOblique");
+ ret.fsect[1].fonts[FONT_CODE] = make_std_font(fontlist, "Courier-Bold");
+ ret.fsect[2].font_size = 13;
+ ret.fsect[2].fonts[FONT_NORMAL]= make_std_font(fontlist, "Helvetica-Bold");
+ ret.fsect[2].fonts[FONT_EMPH] =
+ make_std_font(fontlist, "Helvetica-BoldOblique");
+ ret.fsect[2].fonts[FONT_CODE] = make_std_font(fontlist, "Courier-Bold");
+ ret.contents_indent_step = 24 * UNITS_PER_PT;
+ ret.contents_margin = 84 * UNITS_PER_PT;
+ ret.leader_separation = 12 * UNITS_PER_PT;
+ ret.index_gutter = 36 * UNITS_PER_PT;
+ ret.index_cols = 2;
+ ret.index_minsep = 18 * UNITS_PER_PT;
+ ret.pagenum_fontsize = 12;
+ ret.footer_distance = 32 * UNITS_PER_PT;
+ ret.lquote = L"\x2018\0\x2019\0'\0'\0\0";
+ ret.rquote = uadv(ret.lquote);
+ ret.bullet = L"\x2022\0-\0\0";
+ ret.contents_text = L"Contents";
+ ret.index_text = L"Index";
+
+ /*
+ * Two-pass configuration so that we can pick up global config
+ * (e.g. `quotes') before having it overridden by specific
+ * config (`paper-quotes'), irrespective of the order in which
+ * they occur.
+ */
+ for (p = source; p; p = p->next) {
+ if (p->type == para_Config) {
+ if (!ustricmp(p->keyword, L"quotes")) {
+ if (*uadv(p->keyword) && *uadv(uadv(p->keyword))) {
+ ret.lquote = uadv(p->keyword);
+ ret.rquote = uadv(ret.lquote);
+ }
+ }
+ }
+ }
+
+ for (p = source; p; p = p->next) {
+ p->private_data = NULL;
+ if (p->type == para_Config) {
+ if (!ustricmp(p->keyword, L"paper-quotes")) {
+ if (*uadv(p->keyword) && *uadv(uadv(p->keyword))) {
+ ret.lquote = uadv(p->keyword);
+ ret.rquote = uadv(ret.lquote);
+ }
+ } else if (!ustricmp(p->keyword, L"contents")) {
+ ret.contents_text = uadv(p->keyword);
+ } else if (!ustricmp(p->keyword, L"index")) {
+ ret.index_text = uadv(p->keyword);
+ } else if (!ustricmp(p->keyword, L"paper-bullet")) {
+ ret.bullet = uadv(p->keyword);
+ } else if (!ustricmp(p->keyword, L"paper-page-width")) {
+ ret.paper_width =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-page-height")) {
+ ret.paper_height =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-left-margin")) {
+ ret.left_margin =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-top-margin")) {
+ ret.top_margin =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-right-margin")) {
+ ret.right_margin =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-bottom-margin")) {
+ ret.bottom_margin =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-list-indent")) {
+ ret.indent_list_bullet =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-listitem-indent")) {
+ ret.indent_list =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-quote-indent")) {
+ ret.indent_quote =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-base-leading")) {
+ ret.base_leading =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-base-para-spacing")) {
+ ret.base_para_spacing =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-chapter-top-space")) {
+ ret.chapter_top_space =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-sect-num-left-space")) {
+ ret.sect_num_left_space =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-chapter-underline-depth")) {
+ ret.chapter_underline_depth =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-chapter-underline-thickness")) {
+ ret.chapter_underline_thickness =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-rule-thickness")) {
+ ret.rule_thickness =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-contents-indent-step")) {
+ ret.contents_indent_step =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-contents-margin")) {
+ ret.contents_margin =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-leader-separation")) {
+ ret.leader_separation =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-index-gutter")) {
+ ret.index_gutter =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-index-minsep")) {
+ ret.index_minsep =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-footer-distance")) {
+ ret.footer_distance =
+ (int) 0.5 + FUNITS_PER_PT * utof(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-base-font-size")) {
+ ret.fbase.font_size = utoi(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-index-columns")) {
+ ret.index_cols = utoi(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-pagenum-font-size")) {
+ ret.pagenum_fontsize = utoi(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-base-fonts")) {
+ paper_cfg_fonts(ret.fbase.fonts, fontlist, uadv(p->keyword),
+ &p->fpos);
+ } else if (!ustricmp(p->keyword, L"paper-code-font-size")) {
+ ret.fcode.font_size = utoi(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-code-fonts")) {
+ paper_cfg_fonts(ret.fcode.fonts, fontlist, uadv(p->keyword),
+ &p->fpos);
+ } else if (!ustricmp(p->keyword, L"paper-title-font-size")) {
+ ret.ftitle.font_size = utoi(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-title-fonts")) {
+ paper_cfg_fonts(ret.ftitle.fonts, fontlist, uadv(p->keyword),
+ &p->fpos);
+ } else if (!ustricmp(p->keyword, L"paper-chapter-font-size")) {
+ ret.fchapter.font_size = utoi(uadv(p->keyword));
+ } else if (!ustricmp(p->keyword, L"paper-chapter-fonts")) {
+ paper_cfg_fonts(ret.fchapter.fonts, fontlist, uadv(p->keyword),
+ &p->fpos);
+ } else if (!ustricmp(p->keyword, L"paper-section-font-size")) {
+ wchar_t *q = uadv(p->keyword);
+ int n = 0;
+ if (uisdigit(*q)) {
+ n = utoi(q);
+ q = uadv(q);
+ }
+ if (n >= ret.nfsect) {
+ int i;
+ ret.fsect = sresize(ret.fsect, n+1, font_cfg);
+ for (i = ret.nfsect; i <= n; i++)
+ ret.fsect[i] = ret.fsect[ret.nfsect-1];
+ ret.nfsect = n+1;
+ }
+ ret.fsect[n].font_size = utoi(q);
+ } else if (!ustricmp(p->keyword, L"paper-section-fonts")) {
+ wchar_t *q = uadv(p->keyword);
+ int n = 0;
+ if (uisdigit(*q)) {
+ n = utoi(q);
+ q = uadv(q);
+ }
+ if (n >= ret.nfsect) {
+ int i;
+ ret.fsect = sresize(ret.fsect, n+1, font_cfg);
+ for (i = ret.nfsect; i <= n; i++)
+ ret.fsect[i] = ret.fsect[ret.nfsect-1];
+ ret.nfsect = n+1;
+ }
+ paper_cfg_fonts(ret.fsect[n].fonts, fontlist, q, &p->fpos);
+ }
+ }
+ }
+
+ /*
+ * Set up the derived fields in the conf structure.
+ */
+
+ ret.base_width =
+ ret.paper_width - ret.left_margin - ret.right_margin;
+ ret.page_height =
+ ret.paper_height - ret.top_margin - ret.bottom_margin;
+ ret.indent_list = ret.indent_list_bullet + ret.indent_list_after;
+ ret.index_colwidth =
+ (ret.base_width - (ret.index_cols-1) * ret.index_gutter)
+ / ret.index_cols;
+
+ /*
+ * Now process fallbacks on quote characters and bullets. We
+ * use string_width() to determine whether all of the relevant
+ * fonts contain the same character, and fall back whenever we
+ * find a character which not all of them support.
+ */
+
+ /* Quote characters need not be supported in the fixed code fonts,
+ * but must be in the title and body fonts. */
+ while (*uadv(ret.rquote) && *uadv(uadv(ret.rquote))) {
+ int n;
+ if (fonts_ok(ret.lquote,
+ ret.fbase.fonts[FONT_NORMAL],
+ ret.fbase.fonts[FONT_EMPH],
+ ret.ftitle.fonts[FONT_NORMAL],
+ ret.ftitle.fonts[FONT_EMPH],
+ ret.fchapter.fonts[FONT_NORMAL],
+ ret.fchapter.fonts[FONT_EMPH], NULL) &&
+ fonts_ok(ret.rquote,
+ ret.fbase.fonts[FONT_NORMAL],
+ ret.fbase.fonts[FONT_EMPH],
+ ret.ftitle.fonts[FONT_NORMAL],
+ ret.ftitle.fonts[FONT_EMPH],
+ ret.fchapter.fonts[FONT_NORMAL],
+ ret.fchapter.fonts[FONT_EMPH], NULL)) {
+ for (n = 0; n < ret.nfsect; n++)
+ if (!fonts_ok(ret.lquote,
+ ret.fsect[n].fonts[FONT_NORMAL],
+ ret.fsect[n].fonts[FONT_EMPH], NULL) ||
+ !fonts_ok(ret.rquote,
+ ret.fsect[n].fonts[FONT_NORMAL],
+ ret.fsect[n].fonts[FONT_EMPH], NULL))
+ break;
+ if (n == ret.nfsect)
+ break;
+ }
+ ret.lquote = uadv(ret.rquote);
+ ret.rquote = uadv(ret.lquote);
+ }
+
+ /* The bullet character only needs to be supported in the normal body
+ * font (not even in italics). */
+ while (*ret.bullet && *uadv(ret.bullet) &&
+ !fonts_ok(ret.bullet, ret.fbase.fonts[FONT_NORMAL], NULL))
+ ret.bullet = uadv(ret.bullet);
+
+ return ret;
+}
+
+void *paper_pre_backend(paragraph *sourceform, keywordlist *keywords,
+ indexdata *idx) {
+ paragraph *p;
+ document *doc;
+ int indent, used_contents;
+ para_data *pdata, *firstpara = NULL, *lastpara = NULL;
+ para_data *firstcont, *lastcont;
+ line_data *firstline, *lastline, *firstcontline, *lastcontline;
+ page_data *pages;
+ font_list *fontlist;
+ paper_conf *conf, ourconf;
+ int has_index;
+ int pagenum;
+ paragraph index_placeholder_para;
+ page_data *first_index_page;
+
+ init_std_fonts();
+ fontlist = snew(font_list);
+ fontlist->head = fontlist->tail = NULL;
+
+ ourconf = paper_configure(sourceform, fontlist);
+ conf = &ourconf;
+
+ /*
+ * Set up a data structure to collect page numbers for each
+ * index entry.
+ */
+ {
+ int i;
+ indexentry *entry;
+
+ has_index = FALSE;
+
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
+ paper_idx *pi = snew(paper_idx);
+
+ has_index = TRUE;
+
+ pi->words = pi->lastword = NULL;
+ pi->lastpage = NULL;
+
+ entry->backend_data = pi;
+ }
+ }
+
+ /*
+ * Format the contents entry for each heading.
+ */
+ {
+ word *contents_title;
+ contents_title = fake_word(conf->contents_text);
+
+ firstcont = make_para_data(para_UnnumberedChapter, 0, 0, 0,
+ NULL, NULL, contents_title, conf);
+ lastcont = firstcont;
+ lastcont->next = NULL;
+ firstcontline = firstcont->first;
+ lastcontline = lastcont->last;
+ for (p = sourceform; p; p = p->next) {
+ word *words;
+ int indent;
+
+ switch (p->type) {
+ case para_Chapter:
+ case para_Appendix:
+ case para_UnnumberedChapter:
+ case para_Heading:
+ case para_Subsect:
+ switch (p->type) {
+ case para_Chapter:
+ case para_Appendix:
+ words = prepare_contents_title(p->kwtext, L": ", p->words);
+ indent = 0;
+ break;
+ case para_UnnumberedChapter:
+ words = prepare_contents_title(NULL, NULL, p->words);
+ indent = 0;
+ break;
+ case para_Heading:
+ case para_Subsect:
+ words = prepare_contents_title(p->kwtext2, L" ", p->words);
+ indent = (p->aux + 1) * conf->contents_indent_step;
+ break;
+ }
+ pdata = make_para_data(para_Normal, p->aux, indent,
+ conf->contents_margin,
+ NULL, NULL, words, conf);
+ pdata->next = NULL;
+ pdata->contents_entry = p;
+ lastcont->next = pdata;
+ lastcont = pdata;
+
+ /*
+ * Link all contents line structures together into
+ * a big list.
+ */
+ if (pdata->first) {
+ if (lastcontline) {
+ lastcontline->next = pdata->first;
+ pdata->first->prev = lastcontline;
+ } else {
+ firstcontline = pdata->first;
+ pdata->first->prev = NULL;
+ }
+ lastcontline = pdata->last;
+ lastcontline->next = NULL;
+ }
+
+ break;
+ }
+ }
+
+ /*
+ * And one extra one, for the index.
+ */
+ if (has_index) {
+ pdata = make_para_data(para_Normal, 0, 0,
+ conf->contents_margin,
+ NULL, NULL,
+ fake_word(conf->index_text), conf);
+ pdata->next = NULL;
+ pdata->contents_entry = &index_placeholder_para;
+ lastcont->next = pdata;
+ lastcont = pdata;
+
+ if (pdata->first) {
+ if (lastcontline) {
+ lastcontline->next = pdata->first;
+ pdata->first->prev = lastcontline;
+ } else {
+ firstcontline = pdata->first;
+ pdata->first->prev = NULL;
+ }
+ lastcontline = pdata->last;
+ lastcontline->next = NULL;
+ }
+ }
+ }
+
+ /*
+ * Do the main paragraph formatting.
+ */
+ indent = 0;
+ used_contents = FALSE;
+ firstline = lastline = NULL;
+ for (p = sourceform; p; p = p->next) {
+ p->private_data = NULL;
+
+ switch (p->type) {
+ /*
+ * These paragraph types are either invisible or don't
+ * define text in the normal sense. Either way, they
+ * don't require wrapping.
+ */
+ case para_IM:
+ case para_BR:
+ case para_Biblio:
+ case para_NotParaType:
+ case para_Config:
+ case para_VersionID:
+ case para_NoCite:
+ break;
+
+ /*
+ * These paragraph types don't require wrapping, but
+ * they do affect the line width to which we wrap the
+ * rest of the paragraphs, so we need to pay attention.
+ */
+ case para_LcontPush:
+ indent += conf->indent_list; break;
+ case para_LcontPop:
+ indent -= conf->indent_list; assert(indent >= 0); break;
+ case para_QuotePush:
+ indent += conf->indent_quote; break;
+ case para_QuotePop:
+ indent -= conf->indent_quote; assert(indent >= 0); break;
+
+ /*
+ * This paragraph type is special. Process it
+ * specially.
+ */
+ case para_Code:
+ pdata = code_paragraph(indent, p->words, conf);
+ p->private_data = pdata;
+ if (pdata->first != pdata->last) {
+ pdata->first->penalty_after += 100000;
+ pdata->last->penalty_before += 100000;
+ }
+ break;
+
+ /*
+ * This paragraph is also special.
+ */
+ case para_Rule:
+ pdata = rule_paragraph(indent, conf);
+ p->private_data = pdata;
+ break;
+
+ /*
+ * All of these paragraph types require wrapping in the
+ * ordinary way. So we must supply a set of fonts, a
+ * line width and auxiliary information (e.g. bullet
+ * text) for each one.
+ */
+ case para_Chapter:
+ case para_Appendix:
+ case para_UnnumberedChapter:
+ case para_Heading:
+ case para_Subsect:
+ case para_Normal:
+ case para_BiblioCited:
+ case para_Bullet:
+ case para_NumberedList:
+ case para_DescribedThing:
+ case para_Description:
+ case para_Copyright:
+ case para_Title:
+ pdata = make_para_data(p->type, p->aux, indent, 0,
+ p->kwtext, p->kwtext2, p->words, conf);
+
+ p->private_data = pdata;
+
+ break;
+ }
+
+ if (p->private_data) {
+ pdata = (para_data *)p->private_data;
+
+ /*
+ * If this is the first non-title heading, we link the
+ * contents section in before it.
+ */
+ if (!used_contents && pdata->outline_level > 0) {
+ used_contents = TRUE;
+ if (lastpara)
+ lastpara->next = firstcont;
+ else
+ firstpara = firstcont;
+ lastpara = lastcont;
+ assert(lastpara->next == NULL);
+
+ if (lastline) {
+ lastline->next = firstcontline;
+ firstcontline->prev = lastline;
+ } else {
+ firstline = firstcontline;
+ firstcontline->prev = NULL;
+ }
+ assert(lastcontline != NULL);
+ lastline = lastcontline;
+ lastline->next = NULL;
+ }
+
+ /*
+ * Link all line structures together into a big list.
+ */
+ if (pdata->first) {
+ if (lastline) {
+ lastline->next = pdata->first;
+ pdata->first->prev = lastline;
+ } else {
+ firstline = pdata->first;
+ pdata->first->prev = NULL;
+ }
+ lastline = pdata->last;
+ lastline->next = NULL;
+ }
+
+ /*
+ * Link all paragraph structures together similarly.
+ */
+ pdata->next = NULL;
+ if (lastpara)
+ lastpara->next = pdata;
+ else
+ firstpara = pdata;
+ lastpara = pdata;
+ }
+ }
+
+ /*
+ * Now we have an enormous linked list of every line of text in
+ * the document. Break it up into pages.
+ */
+ pages = page_breaks(firstline, lastline, conf->page_height, 0, 0);
+
+ /*
+ * Number the pages.
+ */
+ {
+ char buf[40];
+ page_data *page;
+
+ pagenum = 0;
+
+ for (page = pages; page; page = page->next) {
+ sprintf(buf, "%d", ++pagenum);
+ page->number = ufroma_dup(buf, CS_ASCII);
+ }
+
+ if (has_index) {
+ first_index_page = snew(page_data);
+ first_index_page->next = first_index_page->prev = NULL;
+ first_index_page->first_line = NULL;
+ first_index_page->last_line = NULL;
+ first_index_page->first_text = first_index_page->last_text = NULL;
+ first_index_page->first_xref = first_index_page->last_xref = NULL;
+ first_index_page->first_rect = first_index_page->last_rect = NULL;
+
+ /* And don't forget the as-yet-uncreated index. */
+ sprintf(buf, "%d", ++pagenum);
+ first_index_page->number = ufroma_dup(buf, CS_ASCII);
+ }
+ }
+
+ /*
+ * Now we're ready to actually lay out the pages. We do this by
+ * looping over _paragraphs_, since we may need to track cross-
+ * references between lines and even across pages.
+ */
+ for (pdata = firstpara; pdata; pdata = pdata->next)
+ render_para(pdata, conf, keywords, idx,
+ &index_placeholder_para, first_index_page);
+
+ /*
+ * Now we've laid out the main body pages, we should have
+ * acquired a full set of page numbers for the index.
+ */
+ if (has_index) {
+ int i;
+ indexentry *entry;
+ word *index_title;
+ para_data *firstidx, *lastidx;
+ line_data *firstidxline, *lastidxline, *ldata;
+ page_data *ipages, *ipages2, *page;
+
+ /*
+ * Create a set of paragraphs for the index.
+ */
+ index_title = fake_word(conf->index_text);
+
+ firstidx = make_para_data(para_UnnumberedChapter, 0, 0, 0,
+ NULL, NULL, index_title, conf);
+ lastidx = firstidx;
+ lastidx->next = NULL;
+ firstidxline = firstidx->first;
+ lastidxline = lastidx->last;
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++) {
+ paper_idx *pi = (paper_idx *)entry->backend_data;
+ para_data *text, *pages;
+
+ if (!pi->words)
+ continue;
+
+ text = make_para_data(para_Normal, 0, 0,
+ conf->base_width - conf->index_colwidth,
+ NULL, NULL, entry->text, conf);
+
+ pages = make_para_data(para_Normal, 0, 0,
+ conf->base_width - conf->index_colwidth,
+ NULL, NULL, pi->words, conf);
+
+ text->justification = LEFT;
+ pages->justification = RIGHT;
+ text->last->space_after = pages->first->space_before =
+ conf->base_leading / 2;
+
+ pages->last->space_after = text->first->space_before =
+ conf->base_leading;
+
+ assert(text->first);
+ assert(pages->first);
+ assert(lastidxline);
+ assert(lastidx);
+
+ /*
+ * If feasible, fold the two halves of the index entry
+ * together.
+ */
+ if (text->last->real_shortfall + pages->first->real_shortfall >
+ conf->index_colwidth + conf->index_minsep) {
+ text->last->space_after = -1;
+ pages->first->space_before = -pages->first->line_height+1;
+ }
+
+ lastidx->next = text;
+ text->next = pages;
+ pages->next = NULL;
+ lastidx = pages;
+
+ /*
+ * Link all index line structures together into
+ * a big list.
+ */
+ text->last->next = pages->first;
+ pages->first->prev = text->last;
+
+ lastidxline->next = text->first;
+ text->first->prev = lastidxline;
+
+ lastidxline = pages->last;
+
+ /*
+ * Breaking an index entry anywhere is so bad that I
+ * think I'm going to forbid it totally.
+ */
+ for (ldata = text->first; ldata && ldata->next;
+ ldata = ldata->next) {
+ ldata->next->space_before += ldata->space_after + 1;
+ ldata->space_after = -1;
+ }
+ }
+
+ /*
+ * Now break the index into pages.
+ */
+ ipages = page_breaks(firstidxline, firstidxline, conf->page_height,
+ 0, 0);
+ ipages2 = page_breaks(firstidxline->next, lastidxline,
+ conf->page_height,
+ conf->index_cols,
+ firstidxline->space_before +
+ firstidxline->line_height +
+ firstidxline->space_after);
+
+ /*
+ * This will have put each _column_ of the index on a
+ * separate page, which isn't what we want. Fold the pages
+ * back together.
+ */
+ page = ipages2;
+ while (page) {
+ int i;
+
+ for (i = 1; i < conf->index_cols; i++)
+ if (page->next) {
+ page_data *tpage;
+
+ fold_into_page(page, page->next,
+ i * (conf->index_colwidth +
+ conf->index_gutter));
+ tpage = page->next;
+ page->next = page->next->next;
+ if (page->next)
+ page->next->prev = page;
+ sfree(tpage);
+ }
+
+ page = page->next;
+ }
+ /* Also fold the heading on to the same page as the index items. */
+ fold_into_page(ipages, ipages2, 0);
+ ipages->next = ipages2->next;
+ if (ipages->next)
+ ipages->next->prev = ipages;
+ sfree(ipages2);
+ fold_into_page(first_index_page, ipages, 0);
+ first_index_page->next = ipages->next;
+ if (first_index_page->next)
+ first_index_page->next->prev = first_index_page;
+ sfree(ipages);
+ ipages = first_index_page;
+
+ /*
+ * Number the index pages, except the already-numbered
+ * first one.
+ */
+ for (page = ipages->next; page; page = page->next) {
+ char buf[40];
+ sprintf(buf, "%d", ++pagenum);
+ page->number = ufroma_dup(buf, CS_ASCII);
+ }
+
+ /*
+ * Render the index pages.
+ */
+ for (pdata = firstidx; pdata; pdata = pdata->next)
+ render_para(pdata, conf, keywords, idx,
+ &index_placeholder_para, first_index_page);
+
+ /*
+ * Link the index page list on to the end of the main page
+ * list.
+ */
+ if (!pages)
+ pages = ipages;
+ else {
+ for (page = pages; page->next; page = page->next);
+ page->next = ipages;
+ }
+
+ /*
+ * Same with the paragraph list, which will cause the index
+ * to be mentioned in the document outline.
+ */
+ if (!firstpara)
+ firstpara = firstidx;
+ else
+ lastpara->next = firstidx;
+ lastpara = lastidx;
+ }
+
+ /*
+ * Draw the headers and footers.
+ *
+ * FIXME: this should be fully configurable, but for the moment
+ * I'm just going to put in page numbers in the centre of a
+ * footer and leave it at that.
+ */
+ {
+ page_data *page;
+
+ for (page = pages; page; page = page->next) {
+ int width;
+
+ width = conf->pagenum_fontsize *
+ string_width(conf->fbase.fonts[FONT_NORMAL], page->number,
+ NULL, 0);
+
+ render_string(page, conf->fbase.fonts[FONT_NORMAL],
+ conf->pagenum_fontsize,
+ conf->left_margin + (conf->base_width - width)/2,
+ conf->bottom_margin - conf->footer_distance,
+ page->number, 0);
+ }
+ }
+
+ /*
+ * Start putting together the overall document structure we're
+ * going to return.
+ */
+ doc = snew(document);
+ doc->fonts = fontlist;
+ doc->pages = pages;
+ doc->paper_width = conf->paper_width;
+ doc->paper_height = conf->paper_height;
+
+ /*
+ * Collect the section heading paragraphs into a document
+ * outline. This is slightly fiddly because the Title paragraph
+ * isn't required to be at the start, although all the others
+ * must be in order.
+ */
+ {
+ int osize = 20;
+
+ doc->outline_elements = snewn(osize, outline_element);
+ doc->n_outline_elements = 0;
+
+ /* First find the title. */
+ for (pdata = firstpara; pdata; pdata = pdata->next) {
+ if (pdata->outline_level == 0) {
+ doc->outline_elements[0].level = 0;
+ doc->outline_elements[0].pdata = pdata;
+ doc->n_outline_elements++;
+ break;
+ }
+ }
+
+ /* Then collect the rest. */
+ for (pdata = firstpara; pdata; pdata = pdata->next) {
+ if (pdata->outline_level > 0) {
+ if (doc->n_outline_elements >= osize) {
+ osize += 20;
+ doc->outline_elements =
+ sresize(doc->outline_elements, osize, outline_element);
+ }
+
+ doc->outline_elements[doc->n_outline_elements].level =
+ pdata->outline_level;
+ doc->outline_elements[doc->n_outline_elements].pdata = pdata;
+ doc->n_outline_elements++;
+ }
+ }
+ }
+
+ return doc;
+}
+
+static void setfont(para_data *p, font_cfg *f) {
+ int i;
+
+ for (i = 0; i < NFONTS; i++) {
+ p->fonts[i] = f->fonts[i];
+ p->sizes[i] = f->font_size;
+ }
+}
+
+static para_data *make_para_data(int ptype, int paux, int indent, int rmargin,
+ word *pkwtext, word *pkwtext2, word *pwords,
+ paper_conf *conf)
+{
+ para_data *pdata;
+ line_data *ldata;
+ int extra_indent, firstline_indent, aux_indent;
+ word *aux, *aux2;
+
+ pdata = snew(para_data);
+ pdata->outline_level = -1;
+ pdata->outline_title = NULL;
+ pdata->rect_type = RECT_NONE;
+ pdata->contents_entry = NULL;
+ pdata->justification = JUST;
+ pdata->extraflags = 0;
+
+ /*
+ * Choose fonts for this paragraph.
+ */
+ switch (ptype) {
+ case para_Title:
+ setfont(pdata, &conf->ftitle);
+ pdata->outline_level = 0;
+ break;
+
+ case para_Chapter:
+ case para_Appendix:
+ case para_UnnumberedChapter:
+ setfont(pdata, &conf->fchapter);
+ pdata->outline_level = 1;
+ break;
+
+ case para_Heading:
+ case para_Subsect:
+ setfont(pdata,
+ &conf->fsect[paux >= conf->nfsect ? conf->nfsect - 1 : paux]);
+ pdata->outline_level = 2 + paux;
+ break;
+
+ case para_Normal:
+ case para_BiblioCited:
+ case para_Bullet:
+ case para_NumberedList:
+ case para_DescribedThing:
+ case para_Description:
+ case para_Copyright:
+ setfont(pdata, &conf->fbase);
+ break;
+ }
+
+ /*
+ * Also select an indentation level depending on the
+ * paragraph type (list paragraphs other than
+ * para_DescribedThing need extra indent).
+ *
+ * (FIXME: Perhaps at some point we might even arrange
+ * for the user to be able to request indented first
+ * lines in paragraphs.)
+ */
+ if (ptype == para_Bullet ||
+ ptype == para_NumberedList ||
+ ptype == para_Description) {
+ extra_indent = firstline_indent = conf->indent_list;
+ } else {
+ extra_indent = firstline_indent = 0;
+ }
+
+ /*
+ * Find the auxiliary text for this paragraph.
+ */
+ aux = aux2 = NULL;
+ aux_indent = 0;
+
+ switch (ptype) {
+ case para_Chapter:
+ case para_Appendix:
+ case para_Heading:
+ case para_Subsect:
+ /*
+ * For some heading styles (FIXME: be able to
+ * configure which), the auxiliary text contains
+ * the chapter number and is arranged to be
+ * right-aligned a few points left of the primary
+ * margin. For other styles, the auxiliary text is
+ * the full chapter _name_ and takes up space
+ * within the (wrapped) chapter title, meaning that
+ * we must move the first line indent over to make
+ * space for it.
+ */
+ if (ptype == para_Heading || ptype == para_Subsect) {
+ int len;
+
+ aux = pkwtext2;
+ len = paper_width_simple(pdata, pkwtext2, conf);
+ aux_indent = -len - conf->sect_num_left_space;
+
+ pdata->outline_title =
+ prepare_outline_title(pkwtext2, L" ", pwords);
+ } else {
+ aux = pkwtext;
+ aux2 = fake_word(L": ");
+ aux_indent = 0;
+
+ firstline_indent += paper_width_simple(pdata, aux, conf);
+ firstline_indent += paper_width_simple(pdata, aux2, conf);
+
+ pdata->outline_title =
+ prepare_outline_title(pkwtext, L": ", pwords);
+ }
+ break;
+
+ case para_Bullet:
+ /*
+ * Auxiliary text consisting of a bullet.
+ */
+ aux = fake_word(conf->bullet);
+ aux_indent = indent + conf->indent_list_bullet;
+ break;
+
+ case para_NumberedList:
+ /*
+ * Auxiliary text consisting of the number followed
+ * by a (FIXME: configurable) full stop.
+ */
+ aux = pkwtext;
+ aux2 = fake_word(L".");
+ aux_indent = indent + conf->indent_list_bullet;
+ break;
+
+ case para_BiblioCited:
+ /*
+ * Auxiliary text consisting of the bibliography
+ * reference text, and a trailing space.
+ */
+ aux = pkwtext;
+ aux2 = fake_word(L" ");
+ aux_indent = indent;
+ firstline_indent += paper_width_simple(pdata, aux, conf);
+ firstline_indent += paper_width_simple(pdata, aux2, conf);
+ break;
+ }
+
+ if (pdata->outline_level >= 0 && !pdata->outline_title) {
+ pdata->outline_title =
+ prepare_outline_title(NULL, NULL, pwords);
+ }
+
+ wrap_paragraph(pdata, pwords, conf->base_width - rmargin,
+ indent + firstline_indent,
+ indent + extra_indent, conf);
+
+ pdata->first->aux_text = aux;
+ pdata->first->aux_text_2 = aux2;
+ pdata->first->aux_left_indent = aux_indent;
+
+ /*
+ * Line breaking penalties.
+ */
+ switch (ptype) {
+ case para_Chapter:
+ case para_Appendix:
+ case para_Heading:
+ case para_Subsect:
+ case para_UnnumberedChapter:
+ /*
+ * Fixed and large penalty for breaking straight
+ * after a heading; corresponding bonus for
+ * breaking straight before.
+ */
+ pdata->first->penalty_before = -500000;
+ pdata->last->penalty_after = 500000;
+ for (ldata = pdata->first; ldata; ldata = ldata->next)
+ ldata->penalty_after = 500000;
+ break;
+
+ case para_DescribedThing:
+ /*
+ * This is treated a bit like a small heading:
+ * there's a penalty for breaking after it (i.e.
+ * between it and its description), and a bonus for
+ * breaking before it (actually _between_ list
+ * items).
+ */
+ pdata->first->penalty_before = -200000;
+ pdata->last->penalty_after = 200000;
+ break;
+
+ default:
+ /*
+ * Most paragraph types: widow/orphan control by
+ * discouraging breaking one line from the end of
+ * any paragraph.
+ */
+ if (pdata->first != pdata->last) {
+ pdata->first->penalty_after = 100000;
+ pdata->last->penalty_before = 100000;
+ }
+ break;
+ }
+
+ standard_line_spacing(pdata, conf);
+
+ /*
+ * Some kinds of section heading require a page break before
+ * them and an underline after.
+ */
+ if (ptype == para_Title ||
+ ptype == para_Chapter ||
+ ptype == para_Appendix ||
+ ptype == para_UnnumberedChapter) {
+ pdata->first->page_break = TRUE;
+ pdata->first->space_before = conf->chapter_top_space;
+ pdata->last->space_after +=
+ (conf->chapter_underline_depth +
+ conf->chapter_underline_thickness);
+ pdata->rect_type = RECT_CHAPTER_UNDERLINE;
+ }
+
+ return pdata;
+}
+
+static void standard_line_spacing(para_data *pdata, paper_conf *conf)
+{
+ line_data *ldata;
+
+ /*
+ * Set the line spacing for each line in this paragraph.
+ */
+ for (ldata = pdata->first; ldata; ldata = ldata->next) {
+ if (ldata == pdata->first)
+ ldata->space_before = conf->base_para_spacing / 2;
+ else
+ ldata->space_before = conf->base_leading / 2;
+ if (ldata == pdata->last)
+ ldata->space_after = conf->base_para_spacing / 2;
+ else
+ ldata->space_after = conf->base_leading / 2;
+ ldata->page_break = FALSE;
+ }
+}
+
+static font_encoding *new_font_encoding(font_data *font)
+{
+ font_encoding *fe;
+ int i;
+
+ fe = snew(font_encoding);
+ fe->next = NULL;
+
+ if (font->list->tail)
+ font->list->tail->next = fe;
+ else
+ font->list->head = fe;
+ font->list->tail = fe;
+
+ fe->font = font;
+ fe->free_pos = 0x21;
+
+ for (i = 0; i < 256; i++) {
+ fe->vector[i] = NOGLYPH;
+ fe->to_unicode[i] = 0xFFFF;
+ }
+
+ return fe;
+}
+
+static subfont_map_entry *encode_glyph_at(glyph g, wchar_t u,
+ font_encoding *fe, int pos)
+{
+ subfont_map_entry *sme = snew(subfont_map_entry);
+
+ sme->subfont = fe;
+ sme->position = pos;
+ fe->vector[pos] = g;
+ fe->to_unicode[pos] = u;
+ add234(fe->font->subfont_map, sme);
+ return sme;
+}
+
+static int new_sfmap_cmp(void *a, void *b)
+{
+ glyph ga = *(glyph *)a;
+ subfont_map_entry *sb = b;
+ glyph gb = sb->subfont->vector[sb->position];
+
+ if (ga < gb) return -1;
+ if (ga > gb) return 1;
+ return 0;
+}
+
+static subfont_map_entry *encode_glyph(glyph g, wchar_t u, font_data *font)
+{
+ subfont_map_entry *sme;
+ int c;
+
+ sme = find234(font->subfont_map, &g, new_sfmap_cmp);
+ if (sme) return sme;
+
+ /*
+ * This character is not yet in a subfont. Assign one.
+ */
+ if (font->latest_subfont->free_pos >= 0x100)
+ font->latest_subfont = new_font_encoding(font);
+
+ c = font->latest_subfont->free_pos++;
+ if (font->latest_subfont->free_pos == 0x7F)
+ font->latest_subfont->free_pos = 0xA1;
+
+ return encode_glyph_at(g, u, font->latest_subfont, c);
+}
+
+static int sfmap_cmp(void *a, void *b)
+{
+ subfont_map_entry *sa = a, *sb = b;
+ glyph ga = sa->subfont->vector[sa->position];
+ glyph gb = sb->subfont->vector[sb->position];
+
+ if (ga < gb) return -1;
+ if (ga > gb) return 1;
+ return 0;
+}
+
+int width_cmp(void *a, void *b)
+{
+ glyph_width const *wa = a, *wb = b;
+
+ if (wa->glyph < wb->glyph)
+ return -1;
+ if (wa->glyph > wb->glyph)
+ return 1;
+ return 0;
+}
+
+int kern_cmp(void *a, void *b)
+{
+ kern_pair const *ka = a, *kb = b;
+
+ if (ka->left < kb->left)
+ return -1;
+ if (ka->left > kb->left)
+ return 1;
+ if (ka->right < kb->right)
+ return -1;
+ if (ka->right > kb->right)
+ return 1;
+ return 0;
+}
+
+int lig_cmp(void *a, void *b)
+{
+ ligature const *la = a, *lb = b;
+
+ if (la->left < lb->left)
+ return -1;
+ if (la->left > lb->left)
+ return 1;
+ if (la->right < lb->right)
+ return -1;
+ if (la->right > lb->right)
+ return 1;
+ return 0;
+}
+
+static int utoglyph(font_info const *fi, wchar_t u) {
+ return (u < 0 || u > 0xFFFF ? NOGLYPH : fi->bmp[u]);
+}
+
+static font_data *make_std_font(font_list *fontlist, char const *name)
+{
+ font_info const *fi;
+ font_data *f;
+ font_encoding *fe;
+ int i;
+
+ for (fe = fontlist->head; fe; fe = fe->next)
+ if (strcmp(fe->font->info->name, name) == 0)
+ return fe->font;
+
+ for (fi = all_fonts; fi; fi = fi->next)
+ if (strcmp(fi->name, name) == 0) break;
+ if (!fi) return NULL;
+
+ f = snew(font_data);
+
+ f->list = fontlist;
+ f->info = fi;
+ f->subfont_map = newtree234(sfmap_cmp);
+
+ /*
+ * Our first subfont will contain all of US-ASCII. This isn't
+ * really necessary - we could just create custom subfonts
+ * precisely as the whim of render_string dictated - but
+ * instinct suggests that it might be nice to have the text in
+ * the output files look _marginally_ recognisable.
+ */
+ fe = new_font_encoding(f);
+ fe->free_pos = 0xA1; /* only the top half is free */
+ f->latest_subfont = fe;
+
+ for (i = 0x20; i <= 0x7E; i++) {
+ glyph g = utoglyph(fi, i);
+ if (g != NOGLYPH)
+ encode_glyph_at(g, i, fe, i);
+ }
+
+ return f;
+}
+
+/* NB: arguments are glyph numbers from font->bmp. */
+int find_width(font_data *font, glyph index)
+{
+ glyph_width wantw;
+ glyph_width const *w;
+
+ wantw.glyph = index;
+ w = find234(font->info->widths, &wantw, NULL);
+ if (!w) return 0;
+ return w->width;
+}
+
+static int find_kern(font_data *font, int lindex, int rindex)
+{
+ kern_pair wantkp;
+ kern_pair const *kp;
+
+ if (lindex == NOGLYPH || rindex == NOGLYPH)
+ return 0;
+ wantkp.left = lindex;
+ wantkp.right = rindex;
+ kp = find234(font->info->kerns, &wantkp, NULL);
+ if (kp == NULL)
+ return 0;
+ return kp->kern;
+}
+
+static int find_lig(font_data *font, int lindex, int rindex)
+{
+ ligature wantlig;
+ ligature const *lig;
+
+ if (lindex == NOGLYPH || rindex == NOGLYPH)
+ return NOGLYPH;
+ wantlig.left = lindex;
+ wantlig.right = rindex;
+ lig = find234(font->info->ligs, &wantlig, NULL);
+ if (lig == NULL)
+ return NOGLYPH;
+ return lig->lig;
+}
+
+static int string_width(font_data *font, wchar_t const *string, int *errs,
+ unsigned flags)
+{
+ int width = 0;
+ int nindex, index, oindex, lindex;
+
+ if (errs)
+ *errs = 0;
+
+ oindex = NOGLYPH;
+ index = utoglyph(font->info, *string);
+ for (; *string; string++) {
+ nindex = utoglyph(font->info, string[1]);
+
+ if (index == NOGLYPH) {
+ if (errs)
+ *errs = 1;
+ } else {
+ if (!(flags & RS_NOLIG) &&
+ (lindex = find_lig(font, index, nindex)) != NOGLYPH) {
+ index = lindex;
+ continue;
+ }
+ width += find_kern(font, oindex, index) + find_width(font, index);
+ }
+ oindex = index;
+ index = nindex;
+ }
+
+ return width;
+}
+
+static int paper_width_internal(void *vctx, word *word, int *nspaces);
+
+struct paper_width_ctx {
+ int minspacewidth;
+ para_data *pdata;
+ paper_conf *conf;
+};
+
+static int paper_width_list(void *vctx, word *text, word *end, int *nspaces) {
+ int w = 0;
+ while (text && text != end) {
+ w += paper_width_internal(vctx, text, nspaces);
+ text = text->next;
+ }
+ return w;
+}
+
+static int paper_width_internal(void *vctx, word *word, int *nspaces)
+{
+ struct paper_width_ctx *ctx = (struct paper_width_ctx *)vctx;
+ int style, type, findex, width, errs;
+ wchar_t *str;
+ unsigned flags = 0;
+
+ switch (word->type) {
+ case word_HyperLink:
+ case word_HyperEnd:
+ case word_UpperXref:
+ case word_LowerXref:
+ case word_PageXref:
+ case word_XrefEnd:
+ case word_IndexRef:
+ return 0;
+ }
+
+ style = towordstyle(word->type);
+ type = removeattr(word->type);
+
+ findex = (style == word_Normal ? FONT_NORMAL :
+ style == word_Emph ? FONT_EMPH :
+ FONT_CODE);
+
+ if (style == word_Code || style == word_WeakCode) flags |= RS_NOLIG;
+
+ if (type == word_Normal) {
+ str = word->text;
+ } else if (type == word_WhiteSpace) {
+ if (findex != FONT_CODE) {
+ if (nspaces)
+ (*nspaces)++;
+ return ctx->minspacewidth;
+ } else
+ str = L" ";
+ } else /* if (type == word_Quote) */ {
+ if (word->aux == quote_Open)
+ str = ctx->conf->lquote;
+ else
+ str = ctx->conf->rquote;
+ }
+
+ width = string_width(ctx->pdata->fonts[findex], str, &errs, flags);
+
+ if (errs && word->alt)
+ return paper_width_list(vctx, word->alt, NULL, nspaces);
+ else
+ return ctx->pdata->sizes[findex] * width;
+}
+
+static int paper_width(void *vctx, word *word)
+{
+ return paper_width_internal(vctx, word, NULL);
+}
+
+static int paper_width_simple(para_data *pdata, word *text, paper_conf *conf)
+{
+ struct paper_width_ctx ctx;
+
+ ctx.pdata = pdata;
+ ctx.minspacewidth =
+ (pdata->sizes[FONT_NORMAL] *
+ string_width(pdata->fonts[FONT_NORMAL], L" ", NULL, 0));
+ ctx.conf = conf;
+
+ return paper_width_list(&ctx, text, NULL, NULL);
+}
+
+static void wrap_paragraph(para_data *pdata, word *words,
+ int w, int i1, int i2, paper_conf *conf)
+{
+ wrappedline *wrapping, *p;
+ int spacewidth;
+ struct paper_width_ctx ctx;
+ int line_height;
+
+ /*
+ * We're going to need to store the line height in every line
+ * structure we generate.
+ */
+ {
+ int i;
+ line_height = 0;
+ for (i = 0; i < NFONTS; i++)
+ if (line_height < pdata->sizes[i])
+ line_height = pdata->sizes[i];
+ line_height *= UNITS_PER_PT;
+ }
+
+ spacewidth = (pdata->sizes[FONT_NORMAL] *
+ string_width(pdata->fonts[FONT_NORMAL], L" ", NULL, 0));
+ if (spacewidth == 0) {
+ /*
+ * A font without a space?! Disturbing. I hope this never
+ * comes up, but I'll make a random guess anyway and set my
+ * space width to half the point size.
+ */
+ spacewidth = pdata->sizes[FONT_NORMAL] * UNITS_PER_PT / 2;
+ }
+
+ /*
+ * I'm going to set the _minimum_ space width to 3/5 of the
+ * standard one, and use the standard one as the optimum.
+ */
+ ctx.minspacewidth = spacewidth * 3 / 5;
+ ctx.pdata = pdata;
+ ctx.conf = conf;
+
+ wrapping = wrap_para(words, w - i1, w - i2, paper_width, &ctx, spacewidth);
+
+ /*
+ * Having done the wrapping, we now concoct a set of line_data
+ * structures.
+ */
+ pdata->first = pdata->last = NULL;
+
+ for (p = wrapping; p; p = p->next) {
+ line_data *ldata;
+ word *wd;
+ int len, wid, spaces;
+
+ ldata = snew(line_data);
+
+ ldata->pdata = pdata;
+ ldata->first = p->begin;
+ ldata->end = p->end;
+ ldata->line_height = line_height;
+
+ ldata->xpos = (p == wrapping ? i1 : i2);
+
+ if (pdata->last) {
+ pdata->last->next = ldata;
+ ldata->prev = pdata->last;
+ } else {
+ pdata->first = ldata;
+ ldata->prev = NULL;
+ }
+ ldata->next = NULL;
+ pdata->last = ldata;
+
+ spaces = 0;
+ len = paper_width_list(&ctx, ldata->first, ldata->end, &spaces);
+ wid = (p == wrapping ? w - i1 : w - i2);
+ wd = ldata->first;
+
+ ldata->hshortfall = wid - len;
+ ldata->nspaces = spaces;
+ /*
+ * This tells us how much the space width needs to
+ * change from _min_spacewidth. But we want to store
+ * its difference from the _natural_ space width, to
+ * make the text rendering easier.
+ */
+ ldata->hshortfall += ctx.minspacewidth * spaces;
+ ldata->hshortfall -= spacewidth * spaces;
+ ldata->real_shortfall = ldata->hshortfall;
+ /*
+ * Special case: on the last line of a paragraph, we
+ * never stretch spaces.
+ */
+ if (ldata->hshortfall > 0 && !p->next)
+ ldata->hshortfall = 0;
+
+ ldata->aux_text = NULL;
+ ldata->aux_text_2 = NULL;
+ ldata->aux_left_indent = 0;
+ ldata->penalty_before = ldata->penalty_after = 0;
+ }
+
+}
+
+static page_data *page_breaks(line_data *first, line_data *last,
+ int page_height, int ncols, int headspace)
+{
+ line_data *l, *m;
+ page_data *ph, *pt;
+ int n, n1, this_height;
+
+ /*
+ * Page breaking is done by a close analogue of the optimal
+ * paragraph wrapping algorithm used by wrap_para(). We work
+ * backwards from the end of the document line by line; for
+ * each line, we contemplate every possible number of lines we
+ * could put on a page starting with that line, determine a
+ * cost function for each one, add it to the pre-computed cost
+ * function for optimally page-breaking everything after that
+ * page, and pick the best option.
+ *
+ * This is made slightly more complex by the fact that we have
+ * a multi-column index with a heading at the top of the
+ * _first_ page, meaning that the first _ncols_ pages must have
+ * a different length. Hence, we must do the wrapping ncols+1
+ * times over, hypothetically trying to put every subsequence
+ * on every possible page.
+ *
+ * Since my line_data structures are only used for this
+ * purpose, I might as well just store the algorithm data
+ * directly in them.
+ */
+
+ for (l = last; l; l = l->prev) {
+ l->bestcost = snewn(ncols+1, int);
+ l->vshortfall = snewn(ncols+1, int);
+ l->text = snewn(ncols+1, int);
+ l->space = snewn(ncols+1, int);
+ l->page_last = snewn(ncols+1, line_data *);
+
+ for (n = 0; n <= ncols; n++) {
+ int minheight, text = 0, space = 0;
+ int cost;
+
+ n1 = (n < ncols ? n+1 : ncols);
+ if (n < ncols)
+ this_height = page_height - headspace;
+ else
+ this_height = page_height;
+
+ l->bestcost[n] = -1;
+ for (m = l; m; m = m->next) {
+ if (m != l && m->page_break)
+ break; /* we've gone as far as we can */
+
+ if (m != l) {
+ if (m->prev->space_after > 0)
+ space += m->prev->space_after;
+ else
+ text += m->prev->space_after;
+ }
+ if (m != l || m->page_break) {
+ if (m->space_before > 0)
+ space += m->space_before;
+ else
+ text += m->space_before;
+ }
+ text += m->line_height;
+ minheight = text + space;
+
+ if (m != l && minheight > this_height)
+ break;
+
+ /*
+ * If the space after this paragraph is _negative_
+ * (which means the next line is folded on to this
+ * one, which happens in the index), we absolutely
+ * cannot break here.
+ */
+ if (m->space_after >= 0) {
+
+ /*
+ * Compute the cost of this arrangement, as the
+ * square of the amount of wasted space on the
+ * page. Exception: if this is the last page
+ * before a mandatory break or the document
+ * end, we don't penalise a large blank area.
+ */
+ if (m != last && m->next && !m->next->page_break)
+ {
+ int x = (this_height - minheight) / FUNITS_PER_PT *
+ 4096.0;
+ int xf;
+
+ xf = x & 0xFF;
+ x >>= 8;
+
+ cost = x*x;
+ cost += (x * xf) >> 8;
+ } else
+ cost = 0;
+
+ if (m != last && m->next && !m->next->page_break) {
+ cost += m->penalty_after;
+ cost += m->next->penalty_before;
+ }
+
+ if (m != last && m->next && !m->next->page_break)
+ cost += m->next->bestcost[n1];
+ if (l->bestcost[n] == -1 || l->bestcost[n] > cost) {
+ /*
+ * This is the best option yet for this
+ * starting point.
+ */
+ l->bestcost[n] = cost;
+ if (m != last && m->next && !m->next->page_break)
+ l->vshortfall[n] = this_height - minheight;
+ else
+ l->vshortfall[n] = 0;
+ l->text[n] = text;
+ l->space[n] = space;
+ l->page_last[n] = m;
+ }
+ }
+
+ if (m == last)
+ break;
+ }
+ }
+ }
+
+ /*
+ * Now go through the line list forwards and assemble the
+ * actual pages.
+ */
+ ph = pt = NULL;
+
+ l = first;
+ n = 0;
+ while (l) {
+ page_data *page;
+ int text, space, head;
+
+ page = snew(page_data);
+ page->next = NULL;
+ page->prev = pt;
+ if (pt)
+ pt->next = page;
+ else
+ ph = page;
+ pt = page;
+
+ page->first_line = l;
+ page->last_line = l->page_last[n];
+
+ page->first_text = page->last_text = NULL;
+ page->first_xref = page->last_xref = NULL;
+ page->first_rect = page->last_rect = NULL;
+
+ /*
+ * Now assign a y-coordinate to each line on the page.
+ */
+ text = space = 0;
+ head = (n < ncols ? headspace : 0);
+ for (l = page->first_line; l; l = l->next) {
+ if (l != page->first_line) {
+ if (l->prev->space_after > 0)
+ space += l->prev->space_after;
+ else
+ text += l->prev->space_after;
+ }
+ if (l != page->first_line || l->page_break) {
+ if (l->space_before > 0)
+ space += l->space_before;
+ else
+ text += l->space_before;
+ }
+ text += l->line_height;
+
+ l->page = page;
+ l->ypos = text + space + head;
+ if (page->first_line->space[n]) {
+ l->ypos += space * (float)page->first_line->vshortfall[n] /
+ page->first_line->space[n];
+ }
+
+ if (l == page->last_line)
+ break;
+ }
+
+ l = page->last_line;
+ if (l == last)
+ break;
+ l = l->next;
+
+ n = (n < ncols ? n+1 : ncols);
+ }
+
+ return ph;
+}
+
+static void add_rect_to_page(page_data *page, int x, int y, int w, int h)
+{
+ rect *r = snew(rect);
+
+ r->next = NULL;
+ if (page->last_rect)
+ page->last_rect->next = r;
+ else
+ page->first_rect = r;
+ page->last_rect = r;
+
+ r->x = x;
+ r->y = y;
+ r->w = w;
+ r->h = h;
+}
+
+static void add_string_to_page(page_data *page, int x, int y,
+ font_encoding *fe, int size, char *text,
+ int width)
+{
+ text_fragment *frag;
+
+ frag = snew(text_fragment);
+ frag->next = NULL;
+
+ if (page->last_text)
+ page->last_text->next = frag;
+ else
+ page->first_text = frag;
+ page->last_text = frag;
+
+ frag->x = x;
+ frag->y = y;
+ frag->fe = fe;
+ frag->fontsize = size;
+ frag->text = dupstr(text);
+ frag->width = width;
+}
+
+/*
+ * Returns the updated x coordinate.
+ */
+static int render_string(page_data *page, font_data *font, int fontsize,
+ int x, int y, wchar_t *str, unsigned flags)
+{
+ char *text;
+ int textpos, textwid, kern, nglyph, glyph, oglyph, lig;
+ font_encoding *subfont = NULL, *sf;
+ subfont_map_entry *sme;
+
+ text = snewn(1 + ustrlen(str), char);
+ textpos = textwid = 0;
+
+ glyph = NOGLYPH;
+ nglyph = utoglyph(font->info, *str);
+ while (*str) {
+ oglyph = glyph;
+ glyph = nglyph;
+ nglyph = utoglyph(font->info, str[1]);
+
+ if (glyph == NOGLYPH) {
+ str++;
+ continue; /* nothing more we can do here */
+ }
+
+ if (!(flags & RS_NOLIG) &&
+ (lig = find_lig(font, glyph, nglyph)) != NOGLYPH) {
+ nglyph = lig;
+ str++;
+ continue;
+ }
+
+ /*
+ * Find which subfont this character is going in.
+ */
+ sme = encode_glyph(glyph, *str, font);
+ sf = sme->subfont;
+
+ kern = find_kern(font, oglyph, glyph) * fontsize;
+
+ if (!subfont || sf != subfont || kern) {
+ if (subfont) {
+ text[textpos] = '\0';
+ add_string_to_page(page, x, y, subfont, fontsize, text,
+ textwid);
+ x += textwid + kern;
+ } else {
+ assert(textpos == 0);
+ }
+ textpos = 0;
+ textwid = 0;
+ subfont = sf;
+ }
+
+ text[textpos++] = sme->position;
+ textwid += find_width(font, glyph) * fontsize;
+
+ str++;
+ }
+
+ if (textpos > 0) {
+ text[textpos] = '\0';
+ add_string_to_page(page, x, y, subfont, fontsize, text, textwid);
+ x += textwid;
+ }
+
+ return x;
+}
+
+/*
+ * Returns the updated x coordinate.
+ */
+static int render_text(page_data *page, para_data *pdata, line_data *ldata,
+ int x, int y, word *text, word *text_end, xref **xr,
+ int shortfall, int nspaces, int *nspace,
+ keywordlist *keywords, indexdata *idx, paper_conf *conf)
+{
+ while (text && text != text_end) {
+ int style, type, findex, errs;
+ wchar_t *str;
+ xref_dest dest;
+ unsigned flags = 0;
+
+ switch (text->type) {
+ /*
+ * Start a cross-reference.
+ */
+ case word_HyperLink:
+ case word_UpperXref:
+ case word_LowerXref:
+ case word_PageXref:
+
+ if (text->type == word_HyperLink) {
+ dest.type = URL;
+ dest.url = utoa_dup(text->text, CS_ASCII);
+ dest.page = NULL;
+ } else if (text->type == word_PageXref) {
+ dest.type = PAGE;
+ dest.url = NULL;
+ dest.page = (page_data *)text->private_data;
+ } else {
+ keyword *kwl = kw_lookup(keywords, text->text);
+ para_data *pdata;
+
+ if (kwl) {
+ assert(kwl->para->private_data);
+ pdata = (para_data *) kwl->para->private_data;
+ dest.type = PAGE;
+ dest.page = pdata->first->page;
+ dest.url = NULL;
+ } else {
+ /*
+ * Shouldn't happen, but *shrug*
+ */
+ dest.type = NONE;
+ dest.page = NULL;
+ dest.url = NULL;
+ }
+ }
+ if (dest.type != NONE) {
+ *xr = snew(xref);
+ (*xr)->dest = dest; /* structure copy */
+ if (page->last_xref)
+ page->last_xref->next = *xr;
+ else
+ page->first_xref = *xr;
+ page->last_xref = *xr;
+ (*xr)->next = NULL;
+
+ /*
+ * FIXME: Ideally we should have, and use, some
+ * vertical font metric information here so that
+ * our cross-ref rectangle can take account of
+ * descenders and the font's cap height. This will
+ * do for the moment, but it isn't ideal.
+ */
+ (*xr)->lx = (*xr)->rx = x;
+ (*xr)->by = y;
+ (*xr)->ty = y + ldata->line_height;
+ }
+ goto nextword;
+
+ /*
+ * Finish extending a cross-reference box.
+ */
+ case word_HyperEnd:
+ case word_XrefEnd:
+ *xr = NULL;
+ goto nextword;
+
+ /*
+ * Add the current page number to the list of pages
+ * referenced by an index entry.
+ */
+ case word_IndexRef:
+ /*
+ * We don't create index references in contents entries.
+ */
+ if (!pdata->contents_entry) {
+ indextag *tag;
+ int i;
+
+ tag = index_findtag(idx, text->text);
+ if (!tag)
+ goto nextword;
+
+ for (i = 0; i < tag->nrefs; i++) {
+ indexentry *entry = tag->refs[i];
+ paper_idx *pi = (paper_idx *)entry->backend_data;
+
+ /*
+ * If the same index term is indexed twice
+ * within the same section, we only want to
+ * mention it once in the index.
+ */
+ if (pi->lastpage != page) {
+ word **wp;
+
+ if (pi->lastword) {
+ pi->lastword = pi->lastword->next =
+ fake_word(L",");
+ pi->lastword = pi->lastword->next =
+ fake_space_word();
+ wp = &pi->lastword->next;
+ } else
+ wp = &pi->words;
+
+ pi->lastword = *wp =
+ fake_page_ref(page);
+ pi->lastword = pi->lastword->next =
+ fake_word(page->number);
+ pi->lastword = pi->lastword->next =
+ fake_end_ref();
+ }
+
+ pi->lastpage = page;
+ }
+ }
+ goto nextword;
+ }
+
+ style = towordstyle(text->type);
+ type = removeattr(text->type);
+
+ findex = (style == word_Normal ? FONT_NORMAL :
+ style == word_Emph ? FONT_EMPH :
+ FONT_CODE);
+
+ if (style == word_Code || style == word_WeakCode) flags |= RS_NOLIG;
+ flags |= pdata->extraflags;
+
+ if (type == word_Normal) {
+ str = text->text;
+ } else if (type == word_WhiteSpace) {
+ x += pdata->sizes[findex] *
+ string_width(pdata->fonts[findex], L" ", NULL, 0);
+ if (nspaces && findex != FONT_CODE) {
+ x += (*nspace+1) * shortfall / nspaces;
+ x -= *nspace * shortfall / nspaces;
+ (*nspace)++;
+ }
+ goto nextword;
+ } else /* if (type == word_Quote) */ {
+ if (text->aux == quote_Open)
+ str = conf->lquote;
+ else
+ str = conf->rquote;
+ }
+
+ (void) string_width(pdata->fonts[findex], str, &errs, flags);
+
+ if (errs && text->alt)
+ x = render_text(page, pdata, ldata, x, y, text->alt, NULL,
+ xr, shortfall, nspaces, nspace, keywords, idx,
+ conf);
+ else
+ x = render_string(page, pdata->fonts[findex],
+ pdata->sizes[findex], x, y, str, flags);
+
+ if (*xr)
+ (*xr)->rx = x;
+
+ nextword:
+ text = text->next;
+ }
+
+ return x;
+}
+
+/*
+ * Returns the last x position used on the line.
+ */
+static int render_line(line_data *ldata, int left_x, int top_y,
+ xref_dest *dest, keywordlist *keywords, indexdata *idx,
+ paper_conf *conf)
+{
+ int nspace;
+ xref *xr;
+ int ret = 0;
+
+ if (ldata->aux_text) {
+ int x;
+ xr = NULL;
+ nspace = 0;
+ x = render_text(ldata->page, ldata->pdata, ldata,
+ left_x + ldata->aux_left_indent,
+ top_y - ldata->ypos,
+ ldata->aux_text, NULL, &xr, 0, 0, &nspace,
+ keywords, idx, conf);
+ if (ldata->aux_text_2)
+ render_text(ldata->page, ldata->pdata, ldata,
+ x, top_y - ldata->ypos,
+ ldata->aux_text_2, NULL, &xr, 0, 0, &nspace,
+ keywords, idx, conf);
+ }
+ nspace = 0;
+
+ if (ldata->first) {
+ /*
+ * There might be a cross-reference carried over from a
+ * previous line.
+ */
+ if (dest->type != NONE) {
+ xr = snew(xref);
+ xr->next = NULL;
+ xr->dest = *dest; /* structure copy */
+ if (ldata->page->last_xref)
+ ldata->page->last_xref->next = xr;
+ else
+ ldata->page->first_xref = xr;
+ ldata->page->last_xref = xr;
+ xr->lx = xr->rx = left_x + ldata->xpos;
+ xr->by = top_y - ldata->ypos;
+ xr->ty = top_y - ldata->ypos + ldata->line_height;
+ } else
+ xr = NULL;
+
+ {
+ int extra_indent, shortfall, spaces;
+ int just = ldata->pdata->justification;
+
+ /*
+ * All forms of justification become JUST when we have
+ * to squeeze the paragraph.
+ */
+ if (ldata->hshortfall < 0)
+ just = JUST;
+
+ switch (just) {
+ case JUST:
+ shortfall = ldata->hshortfall;
+ spaces = ldata->nspaces;
+ extra_indent = 0;
+ break;
+ case LEFT:
+ shortfall = spaces = extra_indent = 0;
+ break;
+ case RIGHT:
+ shortfall = spaces = 0;
+ extra_indent = ldata->real_shortfall;
+ break;
+ }
+
+ ret = render_text(ldata->page, ldata->pdata, ldata,
+ left_x + ldata->xpos + extra_indent,
+ top_y - ldata->ypos, ldata->first, ldata->end,
+ &xr, shortfall, spaces, &nspace,
+ keywords, idx, conf);
+ }
+
+ if (xr) {
+ /*
+ * There's a cross-reference continued on to the next line.
+ */
+ *dest = xr->dest;
+ } else
+ dest->type = NONE;
+ }
+
+ return ret;
+}
+
+static void render_para(para_data *pdata, paper_conf *conf,
+ keywordlist *keywords, indexdata *idx,
+ paragraph *index_placeholder, page_data *index_page)
+{
+ int last_x;
+ xref *cxref;
+ page_data *cxref_page;
+ xref_dest dest;
+ para_data *target;
+ line_data *ldata;
+
+ dest.type = NONE;
+ cxref = NULL;
+ cxref_page = NULL;
+
+ for (ldata = pdata->first; ldata; ldata = ldata->next) {
+ /*
+ * If this is a contents entry, we expect to have a single
+ * enormous cross-reference rectangle covering the whole
+ * thing. (Unless, of course, it spans multiple pages.)
+ */
+ if (pdata->contents_entry && ldata->page != cxref_page) {
+ cxref_page = ldata->page;
+ cxref = snew(xref);
+ cxref->next = NULL;
+ cxref->dest.type = PAGE;
+ if (pdata->contents_entry == index_placeholder) {
+ cxref->dest.page = index_page;
+ } else {
+ assert(pdata->contents_entry->private_data);
+ target = (para_data *)pdata->contents_entry->private_data;
+ cxref->dest.page = target->first->page;
+ }
+ cxref->dest.url = NULL;
+ if (ldata->page->last_xref)
+ ldata->page->last_xref->next = cxref;
+ else
+ ldata->page->first_xref = cxref;
+ ldata->page->last_xref = cxref;
+ cxref->lx = conf->left_margin;
+ cxref->rx = conf->paper_width - conf->right_margin;
+ cxref->ty = conf->paper_height - conf->top_margin
+ - ldata->ypos + ldata->line_height;
+ }
+ if (pdata->contents_entry) {
+ assert(cxref != NULL);
+ cxref->by = conf->paper_height - conf->top_margin
+ - ldata->ypos;
+ }
+
+ last_x = render_line(ldata, conf->left_margin,
+ conf->paper_height - conf->top_margin,
+ &dest, keywords, idx, conf);
+ if (ldata == pdata->last)
+ break;
+ }
+
+ /*
+ * If this is a contents entry, add leaders and a page
+ * number.
+ */
+ if (pdata->contents_entry) {
+ word *w;
+ wchar_t *num;
+ int wid;
+ int x;
+
+ if (pdata->contents_entry == index_placeholder) {
+ num = index_page->number;
+ } else {
+ assert(pdata->contents_entry->private_data);
+ target = (para_data *)pdata->contents_entry->private_data;
+ num = target->first->page->number;
+ }
+
+ w = fake_word(num);
+ wid = paper_width_simple(pdata, w, conf);
+ sfree(w);
+
+ for (x = 0; x < conf->base_width; x += conf->leader_separation)
+ if (x - conf->leader_separation > last_x - conf->left_margin &&
+ x + conf->leader_separation < conf->base_width - wid)
+ render_string(pdata->last->page,
+ pdata->fonts[FONT_NORMAL],
+ pdata->sizes[FONT_NORMAL],
+ conf->left_margin + x,
+ (conf->paper_height - conf->top_margin -
+ pdata->last->ypos), L".", 0);
+
+ render_string(pdata->last->page,
+ pdata->fonts[FONT_NORMAL],
+ pdata->sizes[FONT_NORMAL],
+ conf->paper_width - conf->right_margin - wid,
+ (conf->paper_height - conf->top_margin -
+ pdata->last->ypos), num, 0);
+ }
+
+ /*
+ * Render any rectangle (chapter title underline or rule)
+ * that goes with this paragraph.
+ */
+ switch (pdata->rect_type) {
+ case RECT_CHAPTER_UNDERLINE:
+ add_rect_to_page(pdata->last->page,
+ conf->left_margin,
+ (conf->paper_height - conf->top_margin -
+ pdata->last->ypos -
+ conf->chapter_underline_depth),
+ conf->base_width,
+ conf->chapter_underline_thickness);
+ break;
+ case RECT_RULE:
+ add_rect_to_page(pdata->first->page,
+ conf->left_margin + pdata->first->xpos,
+ (conf->paper_height - conf->top_margin -
+ pdata->last->ypos -
+ pdata->last->line_height),
+ conf->base_width - pdata->first->xpos,
+ pdata->last->line_height);
+ break;
+ default: /* placate gcc */
+ break;
+ }
+}
+
+static para_data *code_paragraph(int indent, word *words, paper_conf *conf)
+{
+ para_data *pdata = snew(para_data);
+
+ /*
+ * For code paragraphs, I'm going to hack grievously and
+ * pretend the three normal fonts are the three code paragraph
+ * fonts.
+ */
+ setfont(pdata, &conf->fcode);
+
+ pdata->first = pdata->last = NULL;
+ pdata->outline_level = -1;
+ pdata->rect_type = RECT_NONE;
+ pdata->contents_entry = NULL;
+ pdata->justification = LEFT;
+ pdata->extraflags = RS_NOLIG;
+
+ for (; words; words = words->next) {
+ wchar_t *t, *e, *start;
+ word *lhead = NULL, *ltail = NULL, *w;
+ line_data *ldata;
+ int prev = -1, curr;
+
+ t = words->text;
+ if (words->next && words->next->type == word_Emph) {
+ e = words->next->text;
+ words = words->next;
+ } else
+ e = NULL;
+
+ start = t;
+
+ while (*start) {
+ while (*t) {
+ if (!e || !*e)
+ curr = 0;
+ else if (*e == L'i')
+ curr = 1;
+ else if (*e == L'b')
+ curr = 2;
+ else
+ curr = 0;
+
+ if (prev < 0)
+ prev = curr;
+
+ if (curr != prev)
+ break;
+
+ t++;
+ if (e && *e)
+ e++;
+ }
+
+ /*
+ * We've isolated a maximal subsequence of the line
+ * which has the same emphasis. Form it into a word
+ * structure.
+ */
+ w = snew(word);
+ w->next = NULL;
+ w->alt = NULL;
+ w->type = (prev == 0 ? word_WeakCode :
+ prev == 1 ? word_Emph : word_Normal);
+ w->text = snewn(t-start+1, wchar_t);
+ memcpy(w->text, start, (t-start) * sizeof(wchar_t));
+ w->text[t-start] = '\0';
+ w->breaks = FALSE;
+
+ if (ltail)
+ ltail->next = w;
+ else
+ lhead = w;
+ ltail = w;
+
+ start = t;
+ prev = -1;
+ }
+
+ ldata = snew(line_data);
+
+ ldata->pdata = pdata;
+ ldata->first = lhead;
+ ldata->end = NULL;
+ ldata->line_height = conf->fcode.font_size * UNITS_PER_PT;
+
+ ldata->xpos = indent;
+
+ if (pdata->last) {
+ pdata->last->next = ldata;
+ ldata->prev = pdata->last;
+ } else {
+ pdata->first = ldata;
+ ldata->prev = NULL;
+ }
+ ldata->next = NULL;
+ pdata->last = ldata;
+
+ ldata->hshortfall = 0;
+ ldata->nspaces = 0;
+ ldata->aux_text = NULL;
+ ldata->aux_text_2 = NULL;
+ ldata->aux_left_indent = 0;
+ /* General opprobrium for breaking in a code paragraph. */
+ ldata->penalty_before = ldata->penalty_after = 50000;
+ }
+
+ standard_line_spacing(pdata, conf);
+
+ return pdata;
+}
+
+static para_data *rule_paragraph(int indent, paper_conf *conf)
+{
+ para_data *pdata = snew(para_data);
+ line_data *ldata;
+
+ ldata = snew(line_data);
+
+ ldata->pdata = pdata;
+ ldata->first = NULL;
+ ldata->end = NULL;
+ ldata->line_height = conf->rule_thickness;
+
+ ldata->xpos = indent;
+
+ ldata->prev = NULL;
+ ldata->next = NULL;
+
+ ldata->hshortfall = 0;
+ ldata->nspaces = 0;
+ ldata->aux_text = NULL;
+ ldata->aux_text_2 = NULL;
+ ldata->aux_left_indent = 0;
+
+ /*
+ * Better to break after a rule than before it
+ */
+ ldata->penalty_after += 100000;
+ ldata->penalty_before += -100000;
+
+ pdata->first = pdata->last = ldata;
+ pdata->outline_level = -1;
+ pdata->rect_type = RECT_RULE;
+ pdata->contents_entry = NULL;
+ pdata->justification = LEFT;
+ pdata->extraflags = 0;
+
+ standard_line_spacing(pdata, conf);
+
+ return pdata;
+}
+
+/*
+ * Plain-text-like formatting for outline titles.
+ */
+static void paper_rdaddw(rdstring *rs, word *text) {
+ for (; text; text = text->next) switch (text->type) {
+ case word_HyperLink:
+ case word_HyperEnd:
+ case word_UpperXref:
+ case word_LowerXref:
+ case word_XrefEnd:
+ case word_IndexRef:
+ break;
+
+ case word_Normal:
+ case word_Emph:
+ case word_Code:
+ case word_WeakCode:
+ case word_WhiteSpace:
+ case word_EmphSpace:
+ case word_CodeSpace:
+ case word_WkCodeSpace:
+ case word_Quote:
+ case word_EmphQuote:
+ case word_CodeQuote:
+ case word_WkCodeQuote:
+ assert(text->type != word_CodeQuote &&
+ text->type != word_WkCodeQuote);
+ if (towordstyle(text->type) == word_Emph &&
+ (attraux(text->aux) == attr_First ||
+ attraux(text->aux) == attr_Only))
+ rdadd(rs, L'_'); /* FIXME: configurability */
+ else if (towordstyle(text->type) == word_Code &&
+ (attraux(text->aux) == attr_First ||
+ attraux(text->aux) == attr_Only))
+ rdadd(rs, L'\''); /* FIXME: configurability */
+ if (removeattr(text->type) == word_Normal) {
+ rdadds(rs, text->text);
+ } else if (removeattr(text->type) == word_WhiteSpace) {
+ rdadd(rs, L' ');
+ } else if (removeattr(text->type) == word_Quote) {
+ rdadd(rs, L'\''); /* fixme: configurability */
+ }
+ if (towordstyle(text->type) == word_Emph &&
+ (attraux(text->aux) == attr_Last ||
+ attraux(text->aux) == attr_Only))
+ rdadd(rs, L'_'); /* FIXME: configurability */
+ else if (towordstyle(text->type) == word_Code &&
+ (attraux(text->aux) == attr_Last ||
+ attraux(text->aux) == attr_Only))
+ rdadd(rs, L'\''); /* FIXME: configurability */
+ break;
+ }
+}
+
+static wchar_t *prepare_outline_title(word *first, wchar_t *separator,
+ word *second)
+{
+ rdstring rs = {0, 0, NULL};
+
+ if (first)
+ paper_rdaddw(&rs, first);
+ if (separator)
+ rdadds(&rs, separator);
+ if (second)
+ paper_rdaddw(&rs, second);
+
+ return rs.text;
+}
+
+static word *fake_word(wchar_t *text)
+{
+ word *ret = snew(word);
+ ret->next = NULL;
+ ret->alt = NULL;
+ ret->type = word_Normal;
+ ret->text = ustrdup(text);
+ ret->breaks = FALSE;
+ ret->aux = 0;
+ return ret;
+}
+
+static word *fake_space_word(void)
+{
+ word *ret = snew(word);
+ ret->next = NULL;
+ ret->alt = NULL;
+ ret->type = word_WhiteSpace;
+ ret->text = NULL;
+ ret->breaks = TRUE;
+ ret->aux = 0;
+ return ret;
+}
+
+static word *fake_page_ref(page_data *page)
+{
+ word *ret = snew(word);
+ ret->next = NULL;
+ ret->alt = NULL;
+ ret->type = word_PageXref;
+ ret->text = NULL;
+ ret->breaks = FALSE;
+ ret->aux = 0;
+ ret->private_data = page;
+ return ret;
+}
+
+static word *fake_end_ref(void)
+{
+ word *ret = snew(word);
+ ret->next = NULL;
+ ret->alt = NULL;
+ ret->type = word_XrefEnd;
+ ret->text = NULL;
+ ret->breaks = FALSE;
+ ret->aux = 0;
+ return ret;
+}
+
+static word *prepare_contents_title(word *first, wchar_t *separator,
+ word *second)
+{
+ word *ret;
+ word **wptr, *w;
+
+ wptr = &ret;
+
+ if (first) {
+ w = dup_word_list(first);
+ *wptr = w;
+ while (w->next)
+ w = w->next;
+ wptr = &w->next;
+ }
+
+ if (separator) {
+ w = fake_word(separator);
+ *wptr = w;
+ wptr = &w->next;
+ }
+
+ if (second) {
+ *wptr = dup_word_list(second);
+ }
+
+ return ret;
+}
+
+static void fold_into_page(page_data *dest, page_data *src, int right_shift)
+{
+ line_data *ldata;
+
+ if (!src->first_line)
+ return;
+
+ if (dest->last_line) {
+ dest->last_line->next = src->first_line;
+ src->first_line->prev = dest->last_line;
+ }
+ dest->last_line = src->last_line;
+
+ for (ldata = src->first_line; ldata; ldata = ldata->next) {
+ ldata->page = dest;
+ ldata->xpos += right_shift;
+
+ if (ldata == src->last_line)
+ break;
+ }
+}
diff --git a/app/tools/halibut/charset/CMakeLists.txt b/app/tools/halibut/charset/CMakeLists.txt
new file mode 100644
index 0000000..86521b8
--- /dev/null
+++ b/app/tools/halibut/charset/CMakeLists.txt
@@ -0,0 +1,38 @@
+SET(SOURCES
+ big5enc.c
+ big5set.c
+ charset.h
+ cns11643.c
+ cp949.c
+ euc.c
+ fromucs.c
+ gb2312.c
+ hz.c
+ internal.h
+ iso2022.c
+ iso2022s.c
+ istate.c
+ jisx0208.c
+ jisx0212.c
+ ksx1001.c
+ locale.c
+ localenc.c
+ macenc.c
+ mimeenc.c
+ sbcs.c
+ sbcsdat.c
+ shiftjis.c
+ slookup.c
+ superset.c
+ test.c
+ toucs.c
+ utf16.c
+ utf7.c
+ utf8.c
+ xenc.c
+ )
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+
+ADD_LIBRARY(xtrkcad-charset ${SOURCES})
+
diff --git a/app/tools/halibut/charset/LICENCE b/app/tools/halibut/charset/LICENCE
new file mode 100644
index 0000000..093b943
--- /dev/null
+++ b/app/tools/halibut/charset/LICENCE
@@ -0,0 +1,22 @@
+libcharset is copyright 2003-2004 Simon Tatham.
+
+Portions copyright Ben Harris.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/app/tools/halibut/charset/README b/app/tools/halibut/charset/README
new file mode 100644
index 0000000..8eb7c25
--- /dev/null
+++ b/app/tools/halibut/charset/README
@@ -0,0 +1,37 @@
+This subdirectory contains a general character-set conversion
+library, used in Timber, and available for use in other software if
+it should happen to be useful.
+
+I intend to use this same library in other programs at some future
+date. (A cut-down version of it is already in use in some ports of
+PuTTY.) It is therefore a _strong_ design goal that this library
+should remain perfectly general, and not tied to particulars of
+Timber. It must not reference any code outside its own subdirectory;
+it should not have Timber-specific helper routines added to it
+unless they can be documented in a general manner which might make
+them useful in other circumstances as well.
+
+There are some multibyte character encodings which this library does
+not currently support. Those that I know of are:
+
+ - Johab. There is no reason why we _shouldn't_ support this, but it
+ wasn't immediately necessary at the time I did the initial
+ coding. If anyone needs it, it shouldn't be too hard. The Unicode
+ mapping table for the encoding is available at
+ http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT
+
+ - ISO-2022-JP-1 (RFC 2237), and ISO-2022-JP-2 (RFC 1554). These
+ should be even easier if required - we already have the ISO 2022
+ machinery in place, and support all the underlying character
+ sets.
+
+ - ISO-2022-CN and ISO-2022-CN-EXT (RFC 1922). These are a little tricky
+ as they allow use of both GB2312 (simplified Chinese) and CNS 11643
+ (traditional Chinese), so we may need some way to specify which to
+ prefer.
+
+ - The Hong Kong (HKSCS) extension to Big5. Again, mapping tables
+ are available in the Unihan database.
+
+ - Other Big Five extensions, which I don't have mapping tables for
+ at all.
diff --git a/app/tools/halibut/charset/big5enc.c b/app/tools/halibut/charset/big5enc.c
new file mode 100644
index 0000000..d3e48ff
--- /dev/null
+++ b/app/tools/halibut/charset/big5enc.c
@@ -0,0 +1,93 @@
+/*
+ * big5enc.c - multibyte encoding of Big5
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * Big5 has no associated data, so `charset' may be ignored.
+ */
+
+static void read_big5(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ UNUSEDARG(charset);
+
+ /*
+ * For reading Big5, state->s0 simply contains the single
+ * stored lead byte when we are half way through a double-byte
+ * character, or 0 if we aren't.
+ */
+
+ if (state->s0 == 0) {
+ if (input_chr >= 0xA1 && input_chr <= 0xFE) {
+ /*
+ * Lead byte. Just store it.
+ */
+ state->s0 = input_chr;
+ } else {
+ /*
+ * Anything else we pass straight through unchanged.
+ */
+ emit(emitctx, input_chr);
+ }
+ } else {
+ /*
+ * We have a stored lead byte. We expect a valid followup
+ * byte.
+ */
+ if ((input_chr >= 0x40 && input_chr <= 0x7E) ||
+ (input_chr >= 0xA1 && input_chr <= 0xFE)) {
+ emit(emitctx, big5_to_unicode(state->s0 - 0xA1, input_chr - 0x40));
+ } else {
+ emit(emitctx, ERROR);
+ }
+ state->s0 = 0;
+ }
+}
+
+/*
+ * Big5 is a stateless multi-byte encoding (in the sense that just
+ * after any character has been completed, the state is always the
+ * same); hence when writing it, there is no need to use the
+ * charset_state.
+ */
+
+static int write_big5(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ UNUSEDARG(charset);
+ UNUSEDARG(state);
+
+ if (input_chr == -1)
+ return TRUE; /* stateless; no cleanup required */
+
+ if (input_chr < 0x80) {
+ emit(emitctx, input_chr);
+ return TRUE;
+ } else {
+ int r, c;
+ if (unicode_to_big5(input_chr, &r, &c)) {
+ emit(emitctx, r + 0xA1);
+ emit(emitctx, c + 0x40);
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+}
+
+const charset_spec charset_CS_BIG5 = {
+ CS_BIG5, read_big5, write_big5, NULL
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_BIG5)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/big5set.c b/app/tools/halibut/charset/big5set.c
new file mode 100644
index 0000000..f654330
--- /dev/null
+++ b/app/tools/halibut/charset/big5set.c
@@ -0,0 +1,4045 @@
+/*
+ * Big5 implementation for libcharset. (This is the character set
+ * itself, not any particular multibyte encoding of it. Multibyte
+ * encodings of this character set are handled separately.)
+ */
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * These tables are generated from the Big5 <-> Unicode character
+ * mapping found at
+ *
+ * http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT
+ *
+ * In the few cases where Big5 contains two characters whose
+ * Unicode equivalents are the same, we map both to those
+ * characters.
+ */
+
+/*
+ * Mapping from Big5 to Unicode. For these purposes Big5 is
+ * considered to be a 94x191 square array, with coordinates running
+ * from (0,0) to (93,190). (In the multibyte encoding those
+ * coordinates are offset by 0xA1 and 0x40 respectively, so they
+ * run from (A1,40) to (FE,FE).)
+ *
+ * Generated by running the following sh+Perl over BIG5.TXT:
+
+cat BIG5.TXT | \
+sed -e $'s/^\\(0xA15A\t\\)0xFFFD/\\10xFF3F/' \
+ -e $'s/^\\(0xA1FE\t\\)0xFFFD/\\10x2571/' \
+ -e $'s/^\\(0xA240\t\\)0xFFFD/\\10x2572/' \
+ -e $'s/^\\(0xA2CC\t\\)0xFFFD/\\10x5341/' \
+ -e $'s/^\\(0xA2CE\t\\)0xFFFD/\\10x5345/' \
+ -e '/^0xA1C3/d' -e '/^0xA1C5/d' | \
+perl -ne '$a{hex$1,hex$2}=$3 if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {for $r (0..93) { $o=" {"; for $c (0..190) {' \
+ -e '$k=$a{$r+161,$c+64}; $k=" ERROR" unless defined $k;' \
+ -e '$o .= ", " if $c > 0; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= $k; } print "$o},\n"; }}'
+
+ */
+
+static const unsigned short big5_forward[94][191] = {
+ {0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2022, 0xFF1B, 0xFF1A, 0xFF1F,
+ 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFF64, 0xFE52, 0x00B7, 0xFE54,
+ 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, 0x2014, 0xFE33, 0xFF3F,
+ 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35, 0xFE36, 0xFF5B, 0xFF5D, 0xFE37,
+ 0xFE38, 0x3014, 0x3015, 0xFE39, 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C,
+ 0x300A, 0x300B, 0xFE3D, 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C,
+ 0x300D, 0xFE41, 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xFE5B, 0xFE5C,
+ 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, 0x301E, 0x2035,
+ 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, 0x3003, 0x25CB, 0x25CF,
+ 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0,
+ 0x25BD, 0x25BC, 0x32A3, 0x2105, 0x203E, ERROR, 0xFF3F, ERROR, 0xFE49,
+ 0xFE4A, 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B,
+ 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266,
+ 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE65,
+ 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF, 0x33D2,
+ 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, 0x2641, 0x2609,
+ 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, 0x2199, 0x2198, 0x2225,
+ 0x2223, 0x2571},
+ {0x2572, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5, 0x3012, 0x00A2, 0x00A3, 0xFF05,
+ 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D,
+ 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B,
+ 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0x2581, 0x2582,
+ 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258F, 0x258E, 0x258D,
+ 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534, 0x252C, 0x2524, 0x251C,
+ 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, 0x2510, 0x2514, 0x2518, 0x256D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x256E, 0x2570,
+ 0x256F, 0x2550, 0x255E, 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4,
+ 0x2571, 0x2572, 0x2573, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15,
+ 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164,
+ 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024,
+ 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xFF21,
+ 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A,
+ 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33,
+ 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42,
+ 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B,
+ 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54,
+ 0xFF55, 0xFF56},
+ {0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395,
+ 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E,
+ 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8,
+ 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8,
+ 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1,
+ 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106,
+ 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x3110, 0x3111,
+ 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311A,
+ 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122, 0x3123,
+ 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA,
+ 0x02C7, 0x02CB, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ {0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 0x4EBA,
+ 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, 0x5341,
+ 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, 0x4E38, 0x51E1,
+ 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, 0x5140, 0x5203, 0x52FA,
+ 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50,
+ 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5,
+ 0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x4E11, 0x4E10,
+ 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, 0x4E88, 0x4E91, 0x4E95,
+ 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD,
+ 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C,
+ 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316,
+ 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD,
+ 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A,
+ 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, 0x6236,
+ 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E5, 0x66F0,
+ 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F,
+ 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC,
+ 0x738B, 0x4E19},
+ {0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5,
+ 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE,
+ 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A,
+ 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349,
+ 0x5361, 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC,
+ 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA,
+ 0x53F2, 0x53F1, 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x592E, 0x5931,
+ 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02,
+ 0x5E03, 0x5E73, 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253,
+ 0x6254, 0x6252, 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B,
+ 0x672D, 0x6B63, 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E,
+ 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529,
+ 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE,
+ 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F,
+ 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09,
+ 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6,
+ 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146,
+ 0x5148, 0x5168},
+ {0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 0x52A3,
+ 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C, 0x540A,
+ 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, 0x540E,
+ 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D,
+ 0x572C, 0x572F, 0x5729, 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978,
+ 0x5983, 0x597D, 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88,
+ 0x5B85, 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5F0F, 0x5F1B,
+ 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263, 0x625B, 0x6258,
+ 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D,
+ 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57,
+ 0x6C59, 0x6C5F, 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E,
+ 0x7070, 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A,
+ 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089, 0x808B,
+ 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F, 0x826E,
+ 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, 0x9621, 0x4E32,
+ 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, 0x4F5B, 0x4F55,
+ 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C,
+ 0x4F46, 0x4F63},
+ {0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A,
+ 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225, 0x5224, 0x5229,
+ 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323, 0x5373, 0x5375,
+ 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, 0x5446, 0x5443,
+ 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, 0x5439, 0x543B, 0x5438,
+ 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F,
+ 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5747, 0x574E,
+ 0x573E, 0x5750, 0x574F, 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8,
+ 0x599E, 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5,
+ 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40,
+ 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C,
+ 0x5E8F, 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77,
+ 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA,
+ 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D,
+ 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E,
+ 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4,
+ 0x675F, 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749,
+ 0x6746, 0x6760},
+ {0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 0x6C88,
+ 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68,
+ 0x6C96, 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76,
+ 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262,
+ 0x7261, 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538,
+ 0x7682, 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55,
+ 0x8096, 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x828B, 0x828D,
+ 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70,
+ 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4,
+ 0x5DE1, 0x9091, 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC,
+ 0x9632, 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B,
+ 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F,
+ 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, 0x4F69,
+ 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, 0x523B, 0x5238, 0x5237,
+ 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, 0x52BE, 0x52BB, 0x5352, 0x5354,
+ 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7,
+ 0x5473, 0x5475},
+ {0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492, 0x5486,
+ 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, 0x5468, 0x548B,
+ 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, 0x5769, 0x5761, 0x5766,
+ 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59BE,
+ 0x59BB, 0x59D4, 0x59B9, 0x59AE, 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB,
+ 0x59D3, 0x59CA, 0x59AF, 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63,
+ 0x5B97, 0x5B9A, 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5C46, 0x5CB7,
+ 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5E18, 0x5E1A, 0x5E16,
+ 0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96,
+ 0x5EF6, 0x5F26, 0x5F27, 0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD,
+ 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016,
+ 0x602A, 0x6015, 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215,
+ 0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2,
+ 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8,
+ 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, 0x62DA, 0x62B1,
+ 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC, 0x62CE, 0x653E, 0x65A7, 0x65BC,
+ 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606, 0x6602, 0x660E, 0x6600, 0x660F,
+ 0x6615, 0x660A},
+ {0x6607, 0x670D, 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773,
+ 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E,
+ 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66,
+ 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC,
+ 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3,
+ 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF,
+ 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7095, 0x708E,
+ 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269,
+ 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB,
+ 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4,
+ 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79,
+ 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2,
+ 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE,
+ 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1,
+ 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E,
+ 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8,
+ 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F,
+ 0x963B, 0x9644},
+ {0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, 0x4EAE, 0x4FE1,
+ 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6,
+ 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4, 0x4FC2, 0x4FDA,
+ 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E, 0x5243,
+ 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1,
+ 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE,
+ 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x54C4, 0x54C8,
+ 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, 0x54A7, 0x54BF, 0x56FF, 0x5782,
+ 0x578B, 0x57A0, 0x57A3, 0x57A2, 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951,
+ 0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03,
+ 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6,
+ 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9,
+ 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA,
+ 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C,
+ 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E, 0x6028, 0x604D, 0x6070,
+ 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, 0x606B, 0x606A, 0x6064, 0x6241,
+ 0x62DC, 0x6316, 0x6309, 0x62FC, 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307,
+ 0x62F1, 0x62F7},
+ {0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB,
+ 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, 0x6628,
+ 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC,
+ 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA,
+ 0x67E5, 0x67B8, 0x67CF, 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD,
+ 0x67D2, 0x6B6A, 0x6B83, 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9,
+ 0x6D0B, 0x6D32, 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6D3B, 0x6D3D,
+ 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E,
+ 0x6D35, 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD,
+ 0x70B8, 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0,
+ 0x72E1, 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A,
+ 0x752D, 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2,
+ 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5,
+ 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC,
+ 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9,
+ 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D,
+ 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E,
+ 0x7FBF, 0x8004},
+ {0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4,
+ 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222,
+ 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302,
+ 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE,
+ 0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, 0x884D,
+ 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74,
+ 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8FED, 0x8FEB,
+ 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, 0x914B, 0x914A, 0x91CD,
+ 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED,
+ 0x97F3, 0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3,
+ 0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016,
+ 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014,
+ 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE, 0x502D,
+ 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, 0x51A2, 0x51CD,
+ 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B, 0x525D, 0x532A,
+ 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC,
+ 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509,
+ 0x54EE, 0x54EA},
+ {0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2, 0x57D4,
+ 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A, 0x5A11, 0x5A18,
+ 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, 0x5A23, 0x5A29, 0x5A25,
+ 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE,
+ 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD,
+ 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D,
+ 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6063, 0x6065,
+ 0x6050, 0x6055, 0x606D, 0x6069, 0x606F, 0x6084, 0x609F, 0x609A, 0x608D,
+ 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E,
+ 0x633E, 0x632F, 0x6355, 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350,
+ 0x633D, 0x632A, 0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599,
+ 0x65C1, 0x65C5, 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645,
+ 0x6641, 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846,
+ 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851,
+ 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, 0x6813,
+ 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28, 0x6C26,
+ 0x6C24, 0x6CF0, 0x6D6A, 0x6D95, 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77,
+ 0x6D59, 0x6D93},
+ {0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79,
+ 0x6D85, 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF,
+ 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED,
+ 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, 0x755A,
+ 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9,
+ 0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F,
+ 0x7720, 0x7728, 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7825, 0x782D,
+ 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E,
+ 0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9,
+ 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, 0x7D17,
+ 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, 0x7D1C,
+ 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006,
+ 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102, 0x80F0,
+ 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A,
+ 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, 0x822B, 0x8228,
+ 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, 0x8350, 0x8349,
+ 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331,
+ 0x8328, 0x8343},
+ {0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3, 0x869C,
+ 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18, 0x8A10, 0x8A0E,
+ 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48,
+ 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF,
+ 0x8FB1, 0x9001, 0x9006, 0x8FF7, 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD,
+ 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C,
+ 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, 0x9661,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x965B, 0x965D,
+ 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25,
+ 0x9B32, 0x9B3C, 0x4E7E, 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C,
+ 0x505A, 0x5049, 0x5065, 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077,
+ 0x504F, 0x500F, 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F,
+ 0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340,
+ 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, 0x5561,
+ 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F, 0x5564, 0x5538,
+ 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570B,
+ 0x5709, 0x57DF, 0x5805, 0x580A, 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802,
+ 0x5835, 0x57F7, 0x57F9, 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66,
+ 0x5A6A, 0x5A40},
+ {0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, 0x5BC4,
+ 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 0x5C5C, 0x5C5D,
+ 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 0x5D11, 0x5D29, 0x5D14,
+ 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2, 0x5E38, 0x5E36, 0x5E33, 0x5E37,
+ 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5, 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C,
+ 0x5F69, 0x5F6B, 0x5F97, 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C,
+ 0x607F, 0x60A3, 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x60C5, 0x60BB,
+ 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, 0x60B8, 0x60DA,
+ 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2,
+ 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383,
+ 0x639B, 0x636B, 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392,
+ 0x638F, 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551,
+ 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, 0x659B,
+ 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, 0x6668,
+ 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, 0x6893,
+ 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, 0x6883, 0x68C4,
+ 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882,
+ 0x6B32, 0x6BBA},
+ {0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1,
+ 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1,
+ 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5, 0x6DD2, 0x6E1A,
+ 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6,
+ 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, 0x7109, 0x710A, 0x70FD,
+ 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B, 0x7316, 0x7313, 0x7319,
+ 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x74F7, 0x751C,
+ 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5,
+ 0x75CA, 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C,
+ 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, 0x796D,
+ 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19,
+ 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E,
+ 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32,
+ 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A,
+ 0x8046, 0x812F, 0x8116, 0x8123, 0x812B, 0x8129, 0x8130, 0x8124, 0x8202,
+ 0x8235, 0x8237, 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2,
+ 0x8396, 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377,
+ 0x837B, 0x837C},
+ {0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5,
+ 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB,
+ 0x8892, 0x8896, 0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23,
+ 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9,
+ 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA,
+ 0x8EDB, 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D,
+ 0x9010, 0x9015, 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x90E8, 0x90ED,
+ 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9,
+ 0x9589, 0x966A, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677,
+ 0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A,
+ 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099,
+ 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274,
+ 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 0x5580,
+ 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 0x55AA, 0x5594,
+ 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A,
+ 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F,
+ 0x582A, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9,
+ 0x58FA, 0x5960},
+ {0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71, 0x5BD2,
+ 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 0x5D50, 0x5D34,
+ 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, 0x5ECA, 0x5EC1,
+ 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, 0x60D1, 0x60E1,
+ 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB,
+ 0x60F4, 0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F,
+ 0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x63D2, 0x63E3,
+ 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, 0x63F4, 0x63EA, 0x63DB,
+ 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590,
+ 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E,
+ 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8,
+ 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2,
+ 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA, 0x696E,
+ 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E,
+ 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, 0x6E67, 0x6E4A,
+ 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, 0x6E58, 0x6E24, 0x6E56, 0x6E6E,
+ 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D,
+ 0x6E3E, 0x6ECB},
+ {0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119,
+ 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284,
+ 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422,
+ 0x7425, 0x7435, 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525,
+ 0x7526, 0x756B, 0x756A, 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE,
+ 0x75E0, 0x767B, 0x767C, 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED,
+ 0x785D, 0x786C, 0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7A97, 0x7A96,
+ 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D,
+ 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55,
+ 0x7D2B, 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584,
+ 0x7FD4, 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151,
+ 0x814E, 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C,
+ 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF,
+ 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD, 0x83F2,
+ 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B,
+ 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857,
+ 0x88C1, 0x88C2, 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E,
+ 0x8A3C, 0x8A41},
+ {0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, 0x8C61,
+ 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, 0x8CB4,
+ 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE, 0x8DDD,
+ 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC,
+ 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5,
+ 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209,
+ 0x921E, 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9593, 0x9592,
+ 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, 0x9686, 0x968D, 0x9672,
+ 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7, 0x96EF, 0x96F2, 0x97CC,
+ 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED,
+ 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2,
+ 0x50B3, 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F,
+ 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF,
+ 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1, 0x55E3, 0x55E4,
+ 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, 0x55C9, 0x5712, 0x5713,
+ 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, 0x586B, 0x584C, 0x586D,
+ 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE,
+ 0x5ABD, 0x5ABC},
+ {0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8,
+ 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3,
+ 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C, 0x6144, 0x614D, 0x613E,
+ 0x6134, 0x6127, 0x610D, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, 0x643E,
+ 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, 0x641C, 0x6414, 0x640D,
+ 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689,
+ 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x695A, 0x6977,
+ 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E,
+ 0x6953, 0x6979, 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0,
+ 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90,
+ 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1,
+ 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159,
+ 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 0x7165,
+ 0x715E, 0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F,
+ 0x733E, 0x746F, 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459,
+ 0x745B, 0x745C, 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1,
+ 0x75FA, 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766,
+ 0x775E, 0x7763},
+ {0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, 0x788E,
+ 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 0x7893, 0x787F,
+ 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14,
+ 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67,
+ 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B,
+ 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058,
+ 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8179, 0x817A,
+ 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843D, 0x8431, 0x8475, 0x8466,
+ 0x846B, 0x8449, 0x846C, 0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469,
+ 0x846D, 0x8446, 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707,
+ 0x8700, 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF,
+ 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, 0x88D2,
+ 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, 0x8A70, 0x8A87,
+ 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, 0x8A6E, 0x8A6C,
+ 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, 0x8C89, 0x8CCA, 0x8CC7,
+ 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8,
+ 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09,
+ 0x8EFE, 0x8F0A},
+ {0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C, 0x9055,
+ 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E, 0x9041, 0x9112,
+ 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, 0x9257, 0x9238, 0x923D,
+ 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, 0x9251, 0x9234, 0x9249, 0x924D,
+ 0x9245, 0x9239, 0x923F, 0x925A, 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD,
+ 0x96CB, 0x96C9, 0x96CA, 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774,
+ 0x9776, 0x9810, 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x98FD, 0x98FE,
+ 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, 0x9F13, 0x9F20,
+ 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1,
+ 0x50F1, 0x50CE, 0x50E9, 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD,
+ 0x55FE, 0x5600, 0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D,
+ 0x560E, 0x55F7, 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716,
+ 0x5875, 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD,
+ 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7,
+ 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, 0x5BE6,
+ 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, 0x5D87, 0x5E5B,
+ 0x5E63, 0x5E55, 0x5E57, 0x5E54, 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70,
+ 0x5FB9, 0x6147},
+ {0x613F, 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175,
+ 0x622A, 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451,
+ 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2,
+ 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, 0x69CB,
+ 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC,
+ 0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE,
+ 0x6F13, 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6EFF, 0x6EEF,
+ 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, 0x6F88,
+ 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D,
+ 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464,
+ 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, 0x760B,
+ 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1,
+ 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, 0x7A2E,
+ 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75,
+ 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, 0x7CBD,
+ 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4,
+ 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2,
+ 0x7DC7, 0x7DAC},
+ {0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, 0x8150, 0x8180,
+ 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, 0x81FA, 0x8207, 0x8214,
+ 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2,
+ 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA,
+ 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737,
+ 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A,
+ 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8AAA, 0x8AA5,
+ 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3,
+ 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15,
+ 0x8F13, 0x8FA3, 0x9060, 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062,
+ 0x905D, 0x905B, 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174,
+ 0x9278, 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8,
+ 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 0x9699,
+ 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785, 0x97F6, 0x9817,
+ 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF,
+ 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B,
+ 0x9F4A, 0x5104, 0x5100, 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109,
+ 0x5105, 0x51DC},
+ {0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B,
+ 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657, 0x5674,
+ 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE,
+ 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08,
+ 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62,
+ 0x5E5F, 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48,
+ 0x5F71, 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x617C, 0x6170,
+ 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A, 0x61A4,
+ 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488,
+ 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD,
+ 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578,
+ 0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E,
+ 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, 0x69ED,
+ 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, 0x6F84,
+ 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, 0x6F8E,
+ 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F,
+ 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, 0x7469,
+ 0x748B, 0x7483},
+ {0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626, 0x7621,
+ 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C, 0x7791, 0x778B,
+ 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, 0x78BC, 0x78D0, 0x7A3F,
+ 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1,
+ 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0,
+ 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA,
+ 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7FE9, 0x8026,
+ 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A, 0x8198, 0x8517, 0x853D, 0x851A,
+ 0x84EE, 0x852C, 0x852D, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC,
+ 0x8525, 0x84FF, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778,
+ 0x8768, 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907,
+ 0x8912, 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95,
+ 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD,
+ 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6,
+ 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D,
+ 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F,
+ 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A,
+ 0x8F1C, 0x8F1E},
+ {0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127,
+ 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA,
+ 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0, 0x92B2,
+ 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, 0x9709, 0x9760, 0x978D, 0x978B,
+ 0x978F, 0x9821, 0x982B, 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918,
+ 0x99DD, 0x99D0, 0x99DF, 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7,
+ 0x9AEE, 0x9AEF, 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9D03, 0x9EA9,
+ 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115,
+ 0x5180, 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679,
+ 0x5669, 0x5664, 0x5678, 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C,
+ 0x5662, 0x5676, 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34,
+ 0x5B78, 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD,
+ 0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB,
+ 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4,
+ 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D,
+ 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, 0x6A62, 0x6A61,
+ 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2,
+ 0x6FB1, 0x6FA1},
+ {0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, 0x6FA6,
+ 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9,
+ 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, 0x7498,
+ 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A, 0x76E7,
+ 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, 0x78EC, 0x78E7,
+ 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11,
+ 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7E11, 0x7E08,
+ 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0,
+ 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258,
+ 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856D,
+ 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, 0x8861, 0x892A,
+ 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB,
+ 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02, 0x8AF7,
+ 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44,
+ 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33,
+ 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134,
+ 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B,
+ 0x9304, 0x931A},
+ {0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, 0x95BB, 0x96A7, 0x96A8,
+ 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, 0x970D, 0x9713, 0x970F, 0x975B,
+ 0x975C, 0x9766, 0x9798, 0x9830, 0x9838, 0x983B, 0x9837, 0x982D, 0x9839,
+ 0x9824, 0x9910, 0x9928, 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2,
+ 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23,
+ 0x9D26, 0x9D28, 0x9D12, 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A,
+ 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, 0x5687,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x568F, 0x58D5,
+ 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68,
+ 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2,
+ 0x61C7, 0x61E6, 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0,
+ 0x64F0, 0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9,
+ 0x66D6, 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E,
+ 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, 0x6FF1,
+ 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, 0x6FEC, 0x6FE1,
+ 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, 0x71EE, 0x71E6, 0x71E5,
+ 0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9,
+ 0x74B0, 0x74A6, 0x74A8, 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA,
+ 0x77B0, 0x77AC},
+ {0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 0x79A7,
+ 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, 0x7C0C, 0x7BE0,
+ 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, 0x7CDD, 0x7E2E, 0x7E3E,
+ 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 0x7E3D, 0x7E31, 0x7E45, 0x7E41,
+ 0x7E34, 0x7E39, 0x7E48, 0x7E35, 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC,
+ 0x8071, 0x8072, 0x8070, 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2,
+ 0x81C0, 0x81BF, 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8584, 0x857E,
+ 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8, 0x858A, 0x8667,
+ 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB, 0x87BB, 0x87BA, 0x87C8,
+ 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17,
+ 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F,
+ 0x8C73, 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B,
+ 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D,
+ 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E, 0x919C, 0x934D,
+ 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, 0x9318, 0x937E, 0x936C,
+ 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, 0x95CC, 0x95C8, 0x95C6,
+ 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6,
+ 0x9935, 0x9A01},
+ {0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF,
+ 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE,
+ 0x58D9, 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE,
+ 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7, 0x66DC, 0x6726, 0x6AB3, 0x6AAC,
+ 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF,
+ 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC,
+ 0x71FE, 0x71F8, 0x7377, 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7652, 0x77BD,
+ 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4,
+ 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54,
+ 0x7E55, 0x7E5E, 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB,
+ 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0,
+ 0x85C9, 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0,
+ 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05,
+ 0x8E59, 0x8E63, 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D,
+ 0x9087, 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396,
+ 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4,
+ 0x95D6, 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724,
+ 0x97A3, 0x97A6},
+ {0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA, 0x993E,
+ 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F,
+ 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D,
+ 0x9D60, 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2,
+ 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F,
+ 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028,
+ 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x737A, 0x74BD,
+ 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 0x7661, 0x77C7, 0x7919, 0x79B1,
+ 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B,
+ 0x7E6D, 0x7E79, 0x7E69, 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8,
+ 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB,
+ 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41,
+ 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59, 0x8D08,
+ 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, 0x8E74, 0x8F54,
+ 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 0x93E1, 0x93D1, 0x93DF,
+ 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD, 0x93D8, 0x93E4,
+ 0x93D7, 0x93E8, 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC,
+ 0x97FB, 0x985E},
+ {0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D, 0x9BE8,
+ 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A, 0x9D6C, 0x9E92,
+ 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, 0x56B6, 0x56B4, 0x56BC,
+ 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, 0x61F8, 0x61FA, 0x6518,
+ 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210,
+ 0x737B, 0x74CF, 0x7662, 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7,
+ 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7E82, 0x7F4C,
+ 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B,
+ 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C,
+ 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85,
+ 0x8E82, 0x91B4, 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4,
+ 0x9952, 0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D,
+ 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138,
+ 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D,
+ 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B,
+ 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC,
+ 0x8617, 0x862D, 0x861A, 0x8823, 0x8822, 0x8821, 0x881F, 0x896A, 0x896C,
+ 0x89BD, 0x8B74},
+ {0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA,
+ 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738,
+ 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40,
+ 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2,
+ 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B,
+ 0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524,
+ 0x6B0A, 0x6B61, 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x79B3, 0x7C60,
+ 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16,
+ 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D,
+ 0x973E, 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A,
+ 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A,
+ 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10,
+ 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2,
+ 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1,
+ 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C,
+ 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862,
+ 0x8B93, 0x8B92},
+ {0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, 0x97C6,
+ 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, 0x9E7C, 0x9E7D,
+ 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C, 0x7C6E, 0x883B,
+ 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E, 0x9AD6, 0x9B23,
+ 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C,
+ 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7,
+ 0x8C54, 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x30FE, 0x309D,
+ 0x309E, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+ 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059,
+ 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062,
+ 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B,
+ 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074,
+ 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D,
+ 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
+ 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5,
+ 0x30A6, 0x30A7},
+ {0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
+ 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9,
+ 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2,
+ 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB,
+ 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4,
+ 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD,
+ 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x30E7, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1,
+ 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x0423, 0x0424, 0x0425,
+ 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E,
+ 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
+ 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2474,
+ 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D,
+ ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ {0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, 0x4E8D,
+ 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E, 0x4E93,
+ 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 0x53B9, 0x5720, 0x5903,
+ 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC, 0x6C14, 0x723F, 0x4E31,
+ 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C,
+ 0x534C, 0x5722, 0x5723, 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B,
+ 0x5C74, 0x5C73, 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6C36, 0x6C43,
+ 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, 0x808A, 0x961E, 0x4F0E,
+ 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, 0x4F00, 0x4EF7, 0x4F08, 0x4F1D,
+ 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213,
+ 0x5209, 0x5210, 0x52A6, 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1,
+ 0x56DF, 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B,
+ 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B,
+ 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, 0x5FD4,
+ 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, 0x6260,
+ 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739, 0x6738, 0x673B, 0x673A,
+ 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A,
+ 0x6C54, 0x6C4B},
+ {0x6C4C, 0x7071, 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75,
+ 0x7F51, 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099,
+ 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56,
+ 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, 0x4F5F,
+ 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C,
+ 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F,
+ 0x5430, 0x5437, 0x542A, 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x543D, 0x544F,
+ 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745,
+ 0x574C, 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0,
+ 0x5997, 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92,
+ 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A,
+ 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C,
+ 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0,
+ 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF,
+ 0x5FF7, 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F,
+ 0x6294, 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277,
+ 0x627D, 0x6272, 0x6274, 0x6537, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5,
+ 0x6745, 0x6747},
+ {0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B, 0x6BD0,
+ 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71,
+ 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73,
+ 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3,
+ 0x72C6, 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392,
+ 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099,
+ 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x828A, 0x8283,
+ 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1, 0x90A5, 0x909E, 0x90A7,
+ 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85,
+ 0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C,
+ 0x4F97, 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94,
+ 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE,
+ 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B, 0x533C,
+ 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, 0x5488, 0x546B,
+ 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D, 0x546F, 0x5461,
+ 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9, 0x576F, 0x5772,
+ 0x576D, 0x576B, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577B, 0x5773,
+ 0x5774, 0x5762},
+ {0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 0x59B2,
+ 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1, 0x59BD, 0x59C0,
+ 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93, 0x5B95, 0x5C44, 0x5C47,
+ 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3,
+ 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6,
+ 0x5E17, 0x5E14, 0x5E19, 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82,
+ 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6034, 0x600A,
+ 0x6017, 0x6033, 0x601A, 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E,
+ 0x6013, 0x6011, 0x600C, 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4,
+ 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB,
+ 0x62A9, 0x62B0, 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604,
+ 0x6612, 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611,
+ 0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B,
+ 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791,
+ 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80,
+ 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6,
+ 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6,
+ 0x6CED, 0x6CF2},
+ {0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30,
+ 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098,
+ 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083,
+ 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA,
+ 0x72CC, 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC,
+ 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF,
+ 0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x77F7, 0x7942,
+ 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F,
+ 0x80AE, 0x80A3, 0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB,
+ 0x829A, 0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA,
+ 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2,
+ 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD,
+ 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, 0x9639,
+ 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2, 0x4FC9,
+ 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7,
+ 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0, 0x52C2,
+ 0x533D, 0x537C, 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD,
+ 0x54A5, 0x54CF},
+ {0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6, 0x54A0,
+ 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, 0x57B5, 0x579E,
+ 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, 0x5794, 0x5798, 0x578F,
+ 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 0x590D, 0x5953, 0x59E1, 0x59DE,
+ 0x59EE, 0x5A00, 0x59F1, 0x59DD, 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4,
+ 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4,
+ 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5CDE, 0x5CDA,
+ 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6,
+ 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24,
+ 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56,
+ 0x5F86, 0x6037, 0x6039, 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047,
+ 0x6049, 0x605B, 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058,
+ 0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E,
+ 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313,
+ 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF,
+ 0x6636, 0x6621, 0x6632, 0x6635, 0x661C, 0x6626, 0x6622, 0x6633, 0x662B,
+ 0x663A, 0x661D, 0x6634, 0x6639, 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2,
+ 0x67C8, 0x67BA},
+ {0x67DC, 0x67BB, 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4,
+ 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2,
+ 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC,
+ 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB,
+ 0x6B28, 0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21,
+ 0x6D28, 0x6D34, 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA,
+ 0x6D33, 0x6D04, 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6D01, 0x6D18,
+ 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22,
+ 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4,
+ 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E,
+ 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385,
+ 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB,
+ 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE,
+ 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806,
+ 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813,
+ 0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6,
+ 0x79CE, 0x7A80},
+ {0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, 0x7C7F, 0x7C80,
+ 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D, 0x7FBE, 0x8007,
+ 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7, 0x80E0, 0x80D1, 0x80C8,
+ 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA, 0x80D5, 0x80C9,
+ 0x80CF, 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE,
+ 0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4,
+ 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, 0x82EA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x82E4, 0x82E0,
+ 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, 0x867C, 0x8673, 0x8841, 0x884E,
+ 0x8867, 0x886A, 0x8869, 0x89D3, 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1,
+ 0x8FEE, 0x8FE0, 0x90F1, 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7,
+ 0x90CB, 0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A,
+ 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5,
+ 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C, 0x5020,
+ 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194, 0x5193, 0x51CA,
+ 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A, 0x5252, 0x525E, 0x525F,
+ 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, 0x5526, 0x54E2, 0x5517, 0x5512,
+ 0x54E7, 0x54F3, 0x54E4, 0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511,
+ 0x5505, 0x54F1},
+ {0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701,
+ 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, 0x57BC,
+ 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9, 0x57C1, 0x590E, 0x594A,
+ 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15, 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E,
+ 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC,
+ 0x5CFF, 0x5CEE, 0x5CF1, 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8,
+ 0x5EAE, 0x5EAA, 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6041, 0x60A2,
+ 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, 0x6097,
+ 0x6087, 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C,
+ 0x6344, 0x6345, 0x6336, 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C,
+ 0x6329, 0x6341, 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333,
+ 0x635A, 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6,
+ 0x65C3, 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713,
+ 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816,
+ 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834,
+ 0x681D, 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, 0x683A, 0x6825,
+ 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88,
+ 0x6BE6, 0x6BE4},
+ {0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, 0x6D76,
+ 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, 0x6D8D,
+ 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, 0x6D7C,
+ 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, 0x6D84,
+ 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3, 0x70D1,
+ 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, 0x70D4,
+ 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7277, 0x7276,
+ 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB, 0x7301, 0x73D3,
+ 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2,
+ 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF,
+ 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, 0x75C4,
+ 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, 0x771B, 0x7710,
+ 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771A, 0x7722, 0x7727,
+ 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, 0x782E, 0x782B, 0x7821,
+ 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953,
+ 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC,
+ 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87,
+ 0x7AD8, 0x7B10},
+ {0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12,
+ 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D,
+ 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C,
+ 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3,
+ 0x7FC2, 0x7FC0, 0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5,
+ 0x8101, 0x80FB, 0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344,
+ 0x8319, 0x8351, 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8342, 0x834E,
+ 0x831B, 0x832A, 0x8308, 0x833C, 0x834D, 0x8316, 0x8324, 0x8320, 0x8337,
+ 0x832F, 0x8329, 0x8347, 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B,
+ 0x8327, 0x8348, 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691,
+ 0x869E, 0x8687, 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699,
+ 0x86A1, 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843,
+ 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F,
+ 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 0x8C7B, 0x8CA4,
+ 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE,
+ 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0,
+ 0x90D9, 0x90DA, 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC,
+ 0x90E4, 0x9150},
+ {0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3,
+ 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053,
+ 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, 0x504A, 0x5062,
+ 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, 0x5064, 0x5046, 0x5040,
+ 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E,
+ 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550,
+ 0x5534, 0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x550C, 0x5532,
+ 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, 0x554B, 0x570A,
+ 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED,
+ 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3,
+ 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801,
+ 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58,
+ 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65,
+ 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B,
+ 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, 0x5A69, 0x5A47,
+ 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59,
+ 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26,
+ 0x5D25, 0x5D0F},
+ {0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4,
+ 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A,
+ 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4,
+ 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, 0x60C3,
+ 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E,
+ 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E,
+ 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6378, 0x6385,
+ 0x6381, 0x6391, 0x638D, 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B,
+ 0x6659, 0x665C, 0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D,
+ 0x686E, 0x68AE, 0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875,
+ 0x6874, 0x68B2, 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA,
+ 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4,
+ 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 0x6B37,
+ 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB,
+ 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4,
+ 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD,
+ 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2,
+ 0x6DCF, 0x6DC9},
+ {0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 0x70FA,
+ 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 0x70F3, 0x7110,
+ 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B, 0x7102,
+ 0x710E, 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317, 0x7307, 0x7311,
+ 0x7318, 0x730A, 0x7308, 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8,
+ 0x73F5, 0x7404, 0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF,
+ 0x740C, 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x75CB, 0x75CC,
+ 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, 0x772D, 0x7731,
+ 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735, 0x7848, 0x7852,
+ 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967,
+ 0x7969, 0x796A, 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6,
+ 0x79F7, 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30,
+ 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, 0x7B2D,
+ 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, 0x7CA3,
+ 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, 0x7D41,
+ 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95, 0x7F9C,
+ 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF,
+ 0x7FC9, 0x801F},
+ {0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B,
+ 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127, 0x811D, 0x8122,
+ 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, 0x8274, 0x8390, 0x83A3,
+ 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, 0x8381, 0x8395,
+ 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, 0x838C, 0x839D, 0x839B,
+ 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F,
+ 0x83A6, 0x8387, 0x83AE, 0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x86C2, 0x86C1,
+ 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4,
+ 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8,
+ 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, 0x8899,
+ 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, 0x89D6,
+ 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C,
+ 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9,
+ 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1,
+ 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, 0x9021, 0x90EF, 0x90EA, 0x90F0,
+ 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156, 0x9158,
+ 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4,
+ 0x91F9, 0x91EA},
+ {0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, 0x966D,
+ 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B,
+ 0x5095, 0x5094, 0x509E, 0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D,
+ 0x5068, 0x509C, 0x5092, 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311,
+ 0x53A4, 0x53A7, 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2,
+ 0x5593, 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D,
+ 0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5819, 0x581E,
+ 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848, 0x5825, 0x581C, 0x581B, 0x5833,
+ 0x583F, 0x5836, 0x582E, 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961,
+ 0x5AAF, 0x5A94, 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C,
+ 0x5AA5, 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83,
+ 0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D,
+ 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 0x5C30,
+ 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 0x5D51, 0x5D4E,
+ 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, 0x5D59, 0x5D42, 0x5D39,
+ 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41,
+ 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE,
+ 0x60C4, 0x6114},
+ {0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, 0x60FE,
+ 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B, 0x624A,
+ 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, 0x63C3, 0x649D,
+ 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 0x63F2, 0x63F5, 0x6461, 0x63DF,
+ 0x63BE, 0x63DD, 0x63DC, 0x63C4, 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC,
+ 0x63CB, 0x63C8, 0x63F0, 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564,
+ 0x655C, 0x6568, 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x667C, 0x666C,
+ 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, 0x6701, 0x690C, 0x68D3,
+ 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, 0x690F, 0x68D6, 0x68F7,
+ 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC,
+ 0x6908, 0x6970, 0x68B4, 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0,
+ 0x68FD, 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD,
+ 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915, 0x6925,
+ 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, 0x6B95,
+ 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, 0x6E47, 0x6E1F,
+ 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, 0x6E2B, 0x6E3F, 0x6E41,
+ 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40, 0x6E51, 0x6E3B, 0x6E03,
+ 0x6E2E, 0x6E5E},
+ {0x6E68, 0x6E5C, 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39,
+ 0x6E22, 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55,
+ 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F,
+ 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711F, 0x7128,
+ 0x713A, 0x711B, 0x724B, 0x725A, 0x7288, 0x7289, 0x7286, 0x7285, 0x728B,
+ 0x7312, 0x730B, 0x7330, 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732D,
+ 0x7326, 0x7323, 0x7335, 0x730C, 0x742E, 0x742C, 0x7430, 0x742B, 0x7416,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x741A, 0x7421,
+ 0x742D, 0x7431, 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB,
+ 0x752F, 0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF,
+ 0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D,
+ 0x7745, 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864,
+ 0x7865, 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868,
+ 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03,
+ 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B, 0x7B44, 0x7B48,
+ 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1,
+ 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D,
+ 0x7D5C, 0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E,
+ 0x7F3F, 0x7F65},
+ {0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE,
+ 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A,
+ 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F,
+ 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7,
+ 0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF,
+ 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6,
+ 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x83D5, 0x83FA,
+ 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3, 0x83EC, 0x83EE, 0x83C4, 0x83FB,
+ 0x83D7, 0x83E2, 0x841B, 0x83DB, 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3,
+ 0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7,
+ 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8,
+ 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9,
+ 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, 0x8A39,
+ 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52, 0x8A48, 0x8A51,
+ 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, 0x8CBA, 0x8CBE, 0x8CB0,
+ 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7,
+ 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF,
+ 0x8EF7, 0x8EFA},
+ {0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB,
+ 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 0x9106, 0x912C,
+ 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107,
+ 0x9105, 0x9103, 0x9161, 0x9164, 0x915F, 0x9162, 0x9160, 0x9201, 0x920A,
+ 0x9225, 0x9203, 0x921A, 0x9226, 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF,
+ 0x91FD, 0x9206, 0x9204, 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217,
+ 0x9205, 0x9216, 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9689, 0x9683,
+ 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E,
+ 0x9807, 0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD,
+ 0x50BF, 0x50C6, 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0,
+ 0x50C1, 0x50BA, 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A,
+ 0x5278, 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA,
+ 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF,
+ 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E,
+ 0x585D, 0x5859, 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7,
+ 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8,
+ 0x5ABB, 0x5AC6},
+ {0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6,
+ 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72,
+ 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A,
+ 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF,
+ 0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E,
+ 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225,
+ 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6433, 0x6443,
+ 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, 0x640C, 0x6426,
+ 0x6430, 0x6428, 0x6441, 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425,
+ 0x6427, 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592,
+ 0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694,
+ 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F,
+ 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948, 0x6949,
+ 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694C, 0x693B,
+ 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 0x6932, 0x6952, 0x692F, 0x697B,
+ 0x693C, 0x6B46, 0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D,
+ 0x6BFB, 0x6BFC},
+ {0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, 0x6E9F,
+ 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2, 0x6EBD, 0x6EC1,
+ 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, 0x6ECF, 0x6EB2, 0x6EBE,
+ 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1,
+ 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154,
+ 0x7152, 0x7163, 0x7160, 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A,
+ 0x7161, 0x7142, 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7144, 0x714D,
+ 0x715A, 0x724F, 0x728D, 0x728C, 0x7291, 0x7290, 0x728E, 0x733C, 0x7342,
+ 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, 0x7444, 0x744A, 0x744B, 0x7452,
+ 0x7451, 0x7457, 0x7440, 0x744F, 0x7450, 0x744E, 0x7442, 0x7446, 0x744D,
+ 0x7454, 0x74E1, 0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983,
+ 0x75EF, 0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610,
+ 0x75FB, 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755,
+ 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884, 0x7895, 0x7885,
+ 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787B, 0x797C,
+ 0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15,
+ 0x7A22, 0x7A13},
+ {0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D,
+ 0x7B74, 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78,
+ 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D,
+ 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94,
+ 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6,
+ 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C,
+ 0x8169, 0x815B, 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8144, 0x8161,
+ 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456,
+ 0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467,
+ 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507,
+ 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445,
+ 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439,
+ 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436,
+ 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450,
+ 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8,
+ 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD,
+ 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF,
+ 0x89E5, 0x89E4},
+ {0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, 0x8A7F, 0x8A61,
+ 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81, 0x8A74, 0x8A7A,
+ 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85,
+ 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93,
+ 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0,
+ 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF,
+ 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9044, 0x9049,
+ 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, 0x9116, 0x9114, 0x910B, 0x910E,
+ 0x916E, 0x916F, 0x9248, 0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265,
+ 0x925E, 0x9283, 0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260,
+ 0x9267, 0x926F, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250,
+ 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E,
+ 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD, 0x96F8,
+ 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D, 0x980E, 0x98AC,
+ 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B,
+ 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8,
+ 0x50F3, 0x50DB, 0x50EA, 0x50DD, 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF,
+ 0x50E3, 0x50E0},
+ {0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 0x5615,
+ 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613, 0x5602, 0x55FA,
+ 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, 0x5890, 0x5898, 0x5886,
+ 0x5881, 0x587F, 0x5874, 0x588B, 0x587A, 0x5887, 0x5891, 0x588E, 0x5876,
+ 0x5882, 0x5888, 0x587B, 0x5894, 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE,
+ 0x5AE5, 0x5AD5, 0x5AEA, 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0,
+ 0x5ADB, 0x5AEC, 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5BE3, 0x5C63,
+ 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, 0x5D8A, 0x5D89,
+ 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53,
+ 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4,
+ 0x5F44, 0x5F43, 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171,
+ 0x6173, 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A,
+ 0x615B, 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B,
+ 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D,
+ 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453,
+ 0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, 0x6477,
+ 0x6573, 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1,
+ 0x69B6, 0x69C9},
+ {0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E,
+ 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4,
+ 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, 0x69A1,
+ 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6, 0x6B4A,
+ 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE,
+ 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, 0x6F09,
+ 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6F36, 0x6F73,
+ 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07,
+ 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A,
+ 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180,
+ 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253,
+ 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, 0x7473,
+ 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, 0x7502, 0x7503, 0x757D,
+ 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, 0x760A, 0x7614, 0x76B8,
+ 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780, 0x776F, 0x777E, 0x7783,
+ 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E, 0x78A5,
+ 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, 0x7995,
+ 0x7994, 0x7993},
+ {0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28,
+ 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91,
+ 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284,
+ 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7,
+ 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4,
+ 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6,
+ 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8024, 0x805D,
+ 0x805C, 0x8189, 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215,
+ 0x8497, 0x84A4, 0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE,
+ 0x84AB, 0x84B9, 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0,
+ 0x849D, 0x84A7, 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9,
+ 0x84AF, 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4,
+ 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B,
+ 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, 0x8741,
+ 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A,
+ 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871A, 0x8730,
+ 0x8711, 0x88F7, 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC,
+ 0x88F6, 0x88FB},
+ {0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB,
+ 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68,
+ 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D,
+ 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04,
+ 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, 0x9122, 0x911F,
+ 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173,
+ 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x92A6, 0x929A,
+ 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, 0x9282, 0x9295,
+ 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7,
+ 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF,
+ 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784,
+ 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900,
+ 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2, 0x99BD,
+ 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F,
+ 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, 0x5106,
+ 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, 0x528B, 0x528C,
+ 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641, 0x564A, 0x5649,
+ 0x5646, 0x5658},
+ {0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A, 0x563A,
+ 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF, 0x58AC, 0x58A5,
+ 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8,
+ 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, 0x5D97,
+ 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A,
+ 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1,
+ 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x619B, 0x6193,
+ 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3,
+ 0x622D, 0x646E, 0x6470, 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F,
+ 0x648B, 0x648A, 0x648C, 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576,
+ 0x657A, 0x6579, 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2,
+ 0x66B7, 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15,
+ 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE,
+ 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40, 0x6A08, 0x69E6,
+ 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F,
+ 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2,
+ 0x6BA6, 0x6C01, 0x6C00, 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87,
+ 0x6FC6, 0x6F92},
+ {0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76,
+ 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93,
+ 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, 0x6F53, 0x6F8B,
+ 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF,
+ 0x719B, 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E,
+ 0x71A4, 0x71A1, 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358,
+ 0x7352, 0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7362, 0x7487,
+ 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C, 0x7479,
+ 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D, 0x761C, 0x7623,
+ 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, 0x778F,
+ 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4,
+ 0x78C8, 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2,
+ 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE,
+ 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, 0x7CCC,
+ 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, 0x7DFA,
+ 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC, 0x7FB0,
+ 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067,
+ 0x81A3, 0x819F},
+ {0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 0x8252,
+ 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E,
+ 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, 0x84FA,
+ 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, 0x84F7, 0x84EB, 0x84F3,
+ 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, 0x8528, 0x851D, 0x852E,
+ 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, 0x84E7, 0x84E8, 0x84F0,
+ 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8756, 0x8763,
+ 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761,
+ 0x875A, 0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, 0x875D,
+ 0x876F, 0x876C, 0x877A, 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775,
+ 0x8762, 0x8767, 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, 0x890B, 0x8917,
+ 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4,
+ 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1,
+ 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3,
+ 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9,
+ 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20,
+ 0x8E23, 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19,
+ 0x8E26, 0x8E27},
+ {0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, 0x8F24,
+ 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F,
+ 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E,
+ 0x9185, 0x9186, 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3,
+ 0x92C4, 0x92C0, 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9,
+ 0x92D7, 0x92DD, 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE,
+ 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x92B5, 0x92E1,
+ 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, 0x95AE, 0x95B0, 0x96A4, 0x96A2,
+ 0x96D3, 0x9705, 0x9708, 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0,
+ 0x97CF, 0x981E, 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827,
+ 0x98B2, 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC,
+ 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB,
+ 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, 0x9B46,
+ 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, 0x9B70, 0x9B68,
+ 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, 0x9CF7, 0x9D07, 0x9D00,
+ 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10,
+ 0x511C, 0x5113, 0x5117, 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670,
+ 0x5660, 0x566E},
+ {0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C, 0x571B,
+ 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC, 0x58C6, 0x5B17,
+ 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, 0x5B16, 0x5B28, 0x5B1A,
+ 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0,
+ 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68,
+ 0x5E66, 0x5E6F, 0x5EE9, 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC,
+ 0x619D, 0x61A8, 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x61BF, 0x61B8,
+ 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF, 0x64C9, 0x64BD, 0x6489, 0x64C3,
+ 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE,
+ 0x66C0, 0x66CA, 0x66CB, 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723,
+ 0x6A34, 0x6A66, 0x6A49, 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D,
+ 0x6A76, 0x6A5B, 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A,
+ 0x6A64, 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E,
+ 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7,
+ 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, 0x6FCB,
+ 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E,
+ 0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF,
+ 0x6FBF, 0x6FB8},
+ {0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2,
+ 0x71BF, 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7,
+ 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E,
+ 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, 0x749A,
+ 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D,
+ 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6,
+ 0x779A, 0x779D, 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7797, 0x78DD,
+ 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED,
+ 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5,
+ 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA,
+ 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF,
+ 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C,
+ 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, 0x7E0B,
+ 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C,
+ 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE,
+ 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, 0x81A7,
+ 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, 0x8553,
+ 0x8561, 0x8558},
+ {0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, 0x8563,
+ 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, 0x8555, 0x8567, 0x8560,
+ 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C, 0x8663, 0x8665, 0x8664,
+ 0x879B, 0x878F, 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798,
+ 0x8779, 0x8787, 0x87A3, 0x8785, 0x8790, 0x8791, 0x879D, 0x8784, 0x8794,
+ 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927,
+ 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8AE2, 0x8AF2,
+ 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE,
+ 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5,
+ 0x8CEE, 0x8CF1, 0x8CF0, 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33,
+ 0x8E3E, 0x8E38, 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30,
+ 0x8E3F, 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34,
+ 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, 0x9193,
+ 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308, 0x931F, 0x9306,
+ 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346,
+ 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D, 0x92FA, 0x9325, 0x9313, 0x92F9,
+ 0x92F7, 0x9334, 0x9302, 0x9324, 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A,
+ 0x9314, 0x930C},
+ {0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE,
+ 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, 0x970B,
+ 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F,
+ 0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5,
+ 0x99E4, 0x99F0, 0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4,
+ 0x9ABB, 0x9AF6, 0x9AFA, 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87,
+ 0x9B7C, 0x9B7E, 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9B7D, 0x9B88,
+ 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22,
+ 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5,
+ 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120,
+ 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E,
+ 0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25,
+ 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1,
+ 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3, 0x61B5, 0x61BC,
+ 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3,
+ 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D,
+ 0x6A96, 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87,
+ 0x6A93, 0x6A8E},
+ {0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85,
+ 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4,
+ 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, 0x6FE2,
+ 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, 0x7373,
+ 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1,
+ 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648,
+ 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x77B4, 0x77B1,
+ 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 0x78FB, 0x78FC, 0x78F2, 0x7905,
+ 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58,
+ 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00,
+ 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03,
+ 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8,
+ 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49, 0x7E40,
+ 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44, 0x7E3A, 0x7F45,
+ 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C, 0x81BB, 0x81C4, 0x81CC,
+ 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, 0x825B, 0x825A, 0x825C, 0x8583,
+ 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4,
+ 0x859A, 0x859E},
+ {0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596,
+ 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585,
+ 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA, 0x87AD,
+ 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3,
+ 0x87C2, 0x87CC, 0x87B7, 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF,
+ 0x87B8, 0x87BD, 0x87DE, 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941,
+ 0x8952, 0x8937, 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8B18, 0x8B16,
+ 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07, 0x8B0D,
+ 0x8B08, 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71,
+ 0x8C6F, 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50,
+ 0x8E4C, 0x8E47, 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2,
+ 0x919B, 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF,
+ 0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350,
+ 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367,
+ 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, 0x95C5, 0x95B7,
+ 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D, 0x9719, 0x979A,
+ 0x97A1, 0x979C},
+ {0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849,
+ 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F,
+ 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4,
+ 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03,
+ 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E,
+ 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF,
+ 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9D45, 0x9D42,
+ 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89,
+ 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22,
+ 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, 0x569A,
+ 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E,
+ 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, 0x61EB, 0x61D6,
+ 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, 0x64FC, 0x6594,
+ 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6,
+ 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B,
+ 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000,
+ 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203,
+ 0x71FD, 0x7376},
+ {0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, 0x74BB, 0x74C2, 0x7514,
+ 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, 0x765A, 0x76A6,
+ 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x78FF, 0x790C, 0x7913, 0x7914, 0x7909,
+ 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19,
+ 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30,
+ 0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60,
+ 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, 0x81D2,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x81D0, 0x825F,
+ 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD,
+ 0x85C7, 0x85C4, 0x85BF, 0x85CB, 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6,
+ 0x85D2, 0x8624, 0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2,
+ 0x87DB, 0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC,
+ 0x87D3, 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4,
+ 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950, 0x8951,
+ 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35, 0x8B47, 0x8B2F,
+ 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26, 0x8B36, 0x8B2E, 0x8B24,
+ 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE,
+ 0x8D04, 0x8D02, 0x8D00, 0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E,
+ 0x8E65, 0x8E67},
+ {0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48,
+ 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, 0x91AF,
+ 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B, 0x939D, 0x9389, 0x93A7,
+ 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, 0x9388, 0x9399, 0x939F, 0x938D,
+ 0x93B1, 0x9391, 0x93B2, 0x93A4, 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2,
+ 0x95D3, 0x95D1, 0x96B3, 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD,
+ 0x9723, 0x9722, 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x97A2, 0x97A5,
+ 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, 0x98B8,
+ 0x9941, 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11,
+ 0x9A0A, 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05,
+ 0x9B29, 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF,
+ 0x9BC1, 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C,
+ 0x9D53, 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57,
+ 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01,
+ 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, 0x9F55,
+ 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, 0x56A6, 0x56A7,
+ 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F,
+ 0x5DC3, 0x5E70},
+ {0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584,
+ 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB,
+ 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, 0x6BB0,
+ 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022, 0x7023,
+ 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C, 0x720A, 0x7207, 0x7202,
+ 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7,
+ 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7921, 0x791C,
+ 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, 0x7C2C,
+ 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F,
+ 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7,
+ 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, 0x8263, 0x85EB,
+ 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2,
+ 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, 0x85EF,
+ 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C,
+ 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A,
+ 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 0x895D, 0x8959, 0x8988, 0x89B7,
+ 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54,
+ 0x8B4B, 0x8B55},
+ {0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06,
+ 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73,
+ 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53,
+ 0x8FB4, 0x9140, 0x913F, 0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2,
+ 0x93DA, 0x93D0, 0x93F9, 0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA,
+ 0x93D4, 0x93EE, 0x93E3, 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7,
+ 0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x97B3, 0x97B7,
+ 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF,
+ 0x98BD, 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A,
+ 0x9A15, 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23,
+ 0x9A1E, 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37,
+ 0x9BEA, 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4,
+ 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77,
+ 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B,
+ 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73,
+ 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91,
+ 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58,
+ 0x5337, 0x56B2},
+ {0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 0x5FC0,
+ 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8, 0x66E3,
+ 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, 0x6AEF,
+ 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703F,
+ 0x703A, 0x7039, 0x7040, 0x703B, 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8,
+ 0x737D, 0x737C, 0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE,
+ 0x77CF, 0x77CD, 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x79B2, 0x7A6E,
+ 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, 0x7C4A, 0x7C47, 0x7C45, 0x7CEE,
+ 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9,
+ 0x820B, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600,
+ 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811,
+ 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A,
+ 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 0x8E88,
+ 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A, 0x908D, 0x9143,
+ 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, 0x9413, 0x93FB, 0x9420,
+ 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, 0x940D, 0x93F5,
+ 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8,
+ 0x940A, 0x93FF},
+ {0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E,
+ 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F,
+ 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32,
+ 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D,
+ 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7,
+ 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14,
+ 0x9C09, 0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9DA0, 0x9D94,
+ 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3,
+ 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5,
+ 0x9EE4, 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D,
+ 0x9F59, 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE,
+ 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC,
+ 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045,
+ 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0, 0x792D,
+ 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B,
+ 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626,
+ 0x861F, 0x8623, 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629,
+ 0x861E, 0x8625},
+ {0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, 0x896D,
+ 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A, 0x8B7B,
+ 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D, 0x9146,
+ 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 0x9436, 0x9429, 0x943D, 0x943C,
+ 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4,
+ 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0,
+ 0x9958, 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9A3F, 0x9ACD,
+ 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, 0x9C1D, 0x9C1C,
+ 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC,
+ 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5,
+ 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3,
+ 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18,
+ 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6, 0x56C5,
+ 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, 0x7056, 0x7057,
+ 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, 0x74D9, 0x74D7,
+ 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57, 0x7C5C, 0x7C59,
+ 0x7C5B, 0x7C5A},
+ {0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634, 0x8635,
+ 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826, 0x882A, 0x8825,
+ 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, 0x8B85,
+ 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, 0x8E96, 0x8E97,
+ 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, 0x944A, 0x944B, 0x944F, 0x9447,
+ 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB,
+ 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9A49, 0x9A52,
+ 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48,
+ 0x9C3F, 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32,
+ 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC,
+ 0x9DD1, 0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD,
+ 0x9EB6, 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2,
+ 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F,
+ 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12,
+ 0x6B0F, 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670,
+ 0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C,
+ 0x8631, 0x863B, 0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974,
+ 0x8973, 0x89FE},
+ {0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, 0x8F63,
+ 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800,
+ 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A,
+ 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF,
+ 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2,
+ 0x9DF0, 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0,
+ 0x9EF2, 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9F71, 0x9F70,
+ 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE,
+ 0x6B13, 0x705F, 0x7061, 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5,
+ 0x7938, 0x79B7, 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838,
+ 0x8837, 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D,
+ 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743,
+ 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, 0x9C66,
+ 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, 0x9E06, 0x9E05,
+ 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, 0x9EA0, 0x9F1E, 0x9F46,
+ 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 0x65B8, 0x6B18, 0x6B19, 0x6B17,
+ 0x6B1A, 0x7062, 0x7226, 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B,
+ 0x7CF6, 0x7E9A},
+ {0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, 0x8979,
+ 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, 0x8EA4, 0x8EA3,
+ 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, 0x9872, 0x995F, 0x9C68,
+ 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 0x9E0F, 0x9E12, 0x9E11, 0x9EA1,
+ 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066,
+ 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475,
+ 0x9A60, 0x9C74, 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9FA4, 0x7068,
+ 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, 0x8EA9,
+ 0x8EC9, 0x974B, 0x9873, 0x9874, 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66,
+ 0x9A67, 0x9B24, 0x9E15, 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C,
+ 0x8EA8, 0x9482, 0x9480, 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229,
+ 0x864B, 0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D,
+ 0x7069, 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR},
+};
+
+/*
+ * Mapping from Unicode back to Big5.
+ *
+ * This inverse is done the same way the SBCS ones are done: I
+ * provide a list of Big5 positions, sorted into ascending order of
+ * their Unicode values. Then we can binary-search through this
+ * list, referring to the above table for each comparison, to find
+ * the coordinates for a given code point.
+ *
+ * Generated by running the following sh+Perl over BIG5.TXT:
+
+cat BIG5.TXT | \
+sed -e $'s/^\\(0xA15A\t\\)0xFFFD/\\10xFF3F/' \
+ -e $'s/^\\(0xA1FE\t\\)0xFFFD/\\10x2571/' \
+ -e $'s/^\\(0xA240\t\\)0xFFFD/\\10x2572/' \
+ -e $'s/^\\(0xA2CC\t\\)0xFFFD/\\10x5341/' \
+ -e $'s/^\\(0xA2CE\t\\)0xFFFD/\\10x5345/' \
+ -e '/^0xA1C3/d' -e '/^0xA1C5/d' | \
+perl -ne '$a{$3}=[hex$1,hex$2] if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {$o=" ";for $k (sort keys %a) { ($r,$c) = @{$a{$k}}; ' \
+ -e '$o .= $C; $C = ", "; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= sprintf "{%d,%d}", $r-161,$c-64; } print "$o\n"; }'
+
+ */
+
+static const struct { unsigned char r, c; } big5_backward[] = {
+ {1,6}, {1,7}, {1,4}, {0,113}, {1,24}, {0,147}, {0,16}, {0,145}, {0,146},
+ {2,126}, {2,124}, {2,125}, {2,127}, {2,123}, {2,4}, {2,5}, {2,6}, {2,7},
+ {2,8}, {2,9}, {2,10}, {2,11}, {2,12}, {2,13}, {2,14}, {2,15}, {2,16},
+ {2,17}, {2,18}, {2,19}, {2,20}, {2,21}, {2,22}, {2,23}, {2,24}, {2,25},
+ {2,26}, {2,27}, {2,28}, {2,29}, {2,30}, {2,31}, {2,32}, {2,33}, {2,34},
+ {2,35}, {2,36}, {2,37}, {2,38}, {2,39}, {2,40}, {2,41}, {2,42}, {2,43},
+ {2,44}, {2,45}, {2,46}, {2,47}, {2,48}, {2,49}, {2,50}, {2,51}, {38,115},
+ {38,113}, {38,114}, {38,116}, {38,117}, {38,118}, {38,119}, {38,120},
+ {38,121}, {38,122}, {38,123}, {38,124}, {38,125}, {38,126}, {38,127},
+ {38,128}, {38,129}, {38,130}, {38,131}, {38,132}, {38,133}, {38,134},
+ {38,135}, {38,136}, {38,137}, {38,138}, {38,139}, {38,140}, {38,141},
+ {38,143}, {38,144}, {38,145}, {38,146}, {38,147}, {38,148}, {38,149},
+ {38,150}, {38,151}, {38,152}, {38,153}, {38,154}, {38,155}, {38,156},
+ {38,157}, {38,158}, {38,159}, {38,160}, {38,161}, {38,162}, {38,163},
+ {38,164}, {38,165}, {38,166}, {38,167}, {38,168}, {38,142}, {0,22},
+ {0,24}, {0,101}, {0,102}, {0,103}, {0,104}, {0,5}, {0,12}, {0,11},
+ {0,108}, {0,107}, {0,112}, {0,130}, {1,10}, {0,129}, {1,11}, {1,121},
+ {1,122}, {1,123}, {1,124}, {1,125}, {1,126}, {1,127}, {1,128}, {1,129},
+ {1,130}, {0,182}, {0,180}, {0,183}, {0,181}, {0,184}, {0,185}, {0,187},
+ {0,186}, {0,148}, {0,155}, {0,168}, {0,167}, {0,189}, {0,188}, {0,164},
+ {0,165}, {0,172}, {0,173}, {0,175}, {0,174}, {0,163}, {0,156}, {0,154},
+ {0,157}, {0,152}, {0,153}, {0,166}, {0,169}, {38,169}, {38,170}, {38,171},
+ {38,172}, {38,173}, {38,174}, {38,175}, {38,176}, {38,177}, {38,178},
+ {38,179}, {38,180}, {38,181}, {38,182}, {38,183}, {38,184}, {38,185},
+ {38,186}, {38,187}, {38,188}, {1,55}, {1,56}, {1,58}, {1,59}, {1,60},
+ {1,61}, {1,53}, {1,52}, {1,51}, {1,50}, {1,49}, {1,100}, {1,101}, {1,103},
+ {1,102}, {1,62}, {1,97}, {1,99}, {1,98}, {1,108}, {1,109}, {1,110},
+ {1,34}, {1,35}, {1,36}, {1,37}, {1,38}, {1,39}, {1,40}, {1,41}, {1,48},
+ {1,47}, {1,46}, {1,45}, {1,44}, {1,43}, {1,42}, {1,54}, {1,57}, {0,125},
+ {0,124}, {0,118}, {0,117}, {0,127}, {0,126}, {0,123}, {0,122}, {0,115},
+ {0,119}, {0,116}, {1,104}, {1,105}, {1,107}, {1,106}, {0,121}, {0,120},
+ {0,179}, {0,176}, {0,178}, {0,177}, {0,0}, {0,2}, {0,3}, {0,114}, {37,100},
+ {0,49}, {0,50}, {0,45}, {0,46}, {0,53}, {0,54}, {0,57}, {0,58}, {0,41},
+ {0,42}, {1,5}, {0,37}, {0,38}, {0,105}, {0,106}, {1,131}, {1,132},
+ {1,133}, {1,134}, {1,135}, {1,136}, {1,137}, {1,138}, {1,139}, {37,101},
+ {37,102}, {37,103}, {37,104}, {37,105}, {37,106}, {37,107}, {37,108},
+ {37,109}, {37,110}, {37,111}, {37,112}, {37,113}, {37,114}, {37,115},
+ {37,116}, {37,117}, {37,118}, {37,119}, {37,120}, {37,121}, {37,122},
+ {37,123}, {37,124}, {37,125}, {37,126}, {37,127}, {37,128}, {37,129},
+ {37,130}, {37,131}, {37,132}, {37,133}, {37,134}, {37,135}, {37,136},
+ {37,137}, {37,138}, {37,139}, {37,140}, {37,141}, {37,142}, {37,143},
+ {37,144}, {37,145}, {37,146}, {37,147}, {37,148}, {37,149}, {37,150},
+ {37,151}, {37,152}, {37,153}, {37,154}, {37,155}, {37,156}, {37,157},
+ {37,158}, {37,159}, {37,160}, {37,161}, {37,162}, {37,163}, {37,164},
+ {37,165}, {37,166}, {37,167}, {37,168}, {37,169}, {37,170}, {37,171},
+ {37,172}, {37,173}, {37,174}, {37,175}, {37,176}, {37,177}, {37,178},
+ {37,179}, {37,180}, {37,181}, {37,182}, {37,183}, {37,98}, {37,99},
+ {37,184}, {37,185}, {37,186}, {37,187}, {37,188}, {37,189}, {37,190},
+ {38,0}, {38,1}, {38,2}, {38,3}, {38,4}, {38,5}, {38,6}, {38,7}, {38,8},
+ {38,9}, {38,10}, {38,11}, {38,12}, {38,13}, {38,14}, {38,15}, {38,16},
+ {38,17}, {38,18}, {38,19}, {38,20}, {38,21}, {38,22}, {38,23}, {38,24},
+ {38,25}, {38,26}, {38,27}, {38,28}, {38,29}, {38,30}, {38,31}, {38,32},
+ {38,33}, {38,34}, {38,35}, {38,36}, {38,37}, {38,38}, {38,39}, {38,40},
+ {38,41}, {38,42}, {38,43}, {38,44}, {38,45}, {38,46}, {38,47}, {38,48},
+ {38,49}, {38,50}, {38,51}, {38,52}, {38,53}, {38,54}, {38,55}, {38,56},
+ {38,57}, {38,58}, {38,59}, {38,60}, {38,61}, {38,62}, {38,97}, {38,98},
+ {38,99}, {38,100}, {38,101}, {38,102}, {38,103}, {38,104}, {38,105},
+ {38,106}, {38,107}, {38,108}, {38,109}, {38,110}, {38,111}, {38,112},
+ {37,97}, {2,52}, {2,53}, {2,54}, {2,55}, {2,56}, {2,57}, {2,58}, {2,59},
+ {2,60}, {2,61}, {2,62}, {2,97}, {2,98}, {2,99}, {2,100}, {2,101}, {2,102},
+ {2,103}, {2,104}, {2,105}, {2,106}, {2,107}, {2,108}, {2,109}, {2,110},
+ {2,111}, {2,112}, {2,113}, {2,114}, {2,115}, {2,116}, {2,117}, {2,118},
+ {2,119}, {2,120}, {2,121}, {2,122}, {0,128}, {1,21}, {1,22}, {1,16},
+ {1,17}, {1,18}, {1,20}, {1,23}, {1,19}, {0,171}, {0,170}, {1,15}, {3,0},
+ {3,2}, {3,3}, {40,5}, {3,22}, {3,20}, {3,23}, {3,21}, {40,6}, {3,99},
+ {40,15}, {40,13}, {3,98}, {3,97}, {4,2}, {4,1}, {4,0}, {4,3}, {3,190},
+ {4,160}, {4,161}, {7,131}, {3,24}, {3,100}, {40,16}, {3,101}, {40,35},
+ {5,170}, {42,113}, {3,25}, {3,102}, {4,4}, {40,36}, {40,0}, {3,4},
+ {3,27}, {40,7}, {3,28}, {3,103}, {4,5}, {4,7}, {4,6}, {4,162}, {4,163},
+ {7,132}, {12,124}, {3,1}, {40,1}, {3,5}, {3,30}, {3,29}, {4,164}, {7,133},
+ {15,110}, {51,11}, {21,131}, {59,113}, {59,114}, {3,6}, {3,105}, {7,134},
+ {3,7}, {40,8}, {3,31}, {3,106}, {3,108}, {40,17}, {3,109}, {3,107},
+ {4,165}, {7,135}, {7,136}, {10,5}, {3,32}, {3,110}, {4,166}, {4,168},
+ {4,167}, {5,171}, {7,137}, {7,138}, {10,6}, {10,7}, {12,125}, {59,115},
+ {85,150}, {3,8}, {3,112}, {3,111}, {40,18}, {3,113}, {3,119}, {3,114},
+ {3,115}, {40,20}, {40,19}, {3,117}, {3,118}, {3,116}, {4,10}, {4,11},
+ {4,12}, {4,13}, {4,9}, {4,16}, {40,42}, {40,38}, {40,41}, {4,17}, {4,33},
+ {40,40}, {4,14}, {4,15}, {4,8}, {40,37}, {40,39}, {4,181}, {40,112},
+ {4,178}, {4,182}, {40,122}, {40,110}, {4,179}, {40,114}, {4,180}, {4,183},
+ {4,169}, {40,113}, {4,184}, {40,117}, {40,121}, {40,118}, {40,115},
+ {4,170}, {4,172}, {4,185}, {4,174}, {40,107}, {4,177}, {4,175}, {4,176},
+ {40,123}, {40,120}, {40,111}, {4,173}, {40,108}, {4,171}, {40,116},
+ {40,119}, {40,109}, {41,38}, {6,2}, {5,180}, {41,39}, {5,177}, {6,4},
+ {5,185}, {5,184}, {41,27}, {5,188}, {5,183}, {41,32}, {41,40}, {41,36},
+ {5,186}, {5,189}, {5,174}, {6,7}, {41,29}, {42,125}, {5,172}, {6,3},
+ {5,173}, {5,181}, {5,182}, {41,34}, {41,30}, {5,187}, {5,179}, {41,26},
+ {5,175}, {41,37}, {6,5}, {6,8}, {5,178}, {6,0}, {6,6}, {5,176}, {41,35},
+ {6,1}, {41,41}, {41,28}, {5,190}, {41,31}, {41,33}, {7,152}, {42,127},
+ {42,139}, {7,144}, {42,140}, {7,139}, {7,149}, {7,142}, {42,121}, {7,150},
+ {42,120}, {42,124}, {42,131}, {42,129}, {7,158}, {7,153}, {42,115},
+ {42,117}, {7,155}, {7,143}, {42,118}, {42,130}, {42,137}, {7,148},
+ {42,123}, {42,116}, {7,147}, {42,119}, {7,151}, {42,122}, {7,146},
+ {7,141}, {7,156}, {42,132}, {7,157}, {42,136}, {42,134}, {42,138},
+ {7,154}, {42,126}, {42,114}, {42,128}, {7,145}, {42,133}, {7,140},
+ {42,135}, {10,22}, {10,10}, {44,160}, {44,168}, {10,9}, {10,17}, {10,29},
+ {44,174}, {44,172}, {44,167}, {10,11}, {44,173}, {44,163}, {10,25},
+ {10,16}, {10,24}, {44,158}, {44,170}, {44,161}, {10,20}, {44,162},
+ {44,157}, {10,27}, {10,14}, {10,23}, {10,13}, {44,159}, {44,164}, {44,171},
+ {10,21}, {10,18}, {44,166}, {10,26}, {44,169}, {44,165}, {10,15}, {10,28},
+ {10,19}, {10,12}, {10,8}, {44,175}, {12,151}, {12,129}, {12,145}, {12,150},
+ {47,144}, {47,143}, {47,148}, {47,149}, {12,132}, {12,141}, {12,154},
+ {12,142}, {47,137}, {12,135}, {47,138}, {12,156}, {12,147}, {12,126},
+ {12,127}, {47,157}, {15,127}, {12,140}, {12,139}, {47,139}, {12,143},
+ {51,27}, {12,134}, {47,150}, {12,149}, {12,148}, {12,138}, {47,142},
+ {47,151}, {47,136}, {12,137}, {47,152}, {12,146}, {47,140}, {12,128},
+ {12,131}, {12,130}, {47,153}, {12,144}, {12,133}, {12,153}, {12,155},
+ {47,147}, {12,152}, {47,155}, {47,141}, {47,156}, {47,145}, {47,154},
+ {47,146}, {12,136}, {51,35}, {51,23}, {15,115}, {51,28}, {51,34}, {15,114},
+ {51,21}, {15,118}, {51,25}, {51,18}, {15,116}, {51,22}, {15,121}, {15,126},
+ {51,39}, {51,17}, {15,122}, {51,38}, {15,117}, {51,24}, {15,113}, {51,19},
+ {51,15}, {51,29}, {51,16}, {51,14}, {51,26}, {51,32}, {51,33}, {15,119},
+ {55,27}, {51,30}, {51,13}, {51,31}, {15,129}, {51,36}, {15,128}, {51,12},
+ {51,20}, {51,37}, {15,124}, {15,123}, {15,120}, {15,125}, {15,111},
+ {15,112}, {18,136}, {55,30}, {55,23}, {18,133}, {55,31}, {55,21}, {55,24},
+ {18,132}, {55,25}, {18,135}, {55,29}, {55,19}, {55,18}, {18,137}, {18,138},
+ {18,134}, {18,139}, {55,17}, {55,28}, {55,26}, {55,20}, {18,131}, {55,22},
+ {21,138}, {21,132}, {59,119}, {21,141}, {59,125}, {59,128}, {21,134},
+ {21,135}, {59,122}, {21,133}, {59,131}, {21,139}, {59,132}, {59,127},
+ {21,140}, {59,116}, {21,137}, {59,117}, {59,126}, {59,124}, {59,120},
+ {21,136}, {59,118}, {21,142}, {59,123}, {59,130}, {59,121}, {59,129},
+ {24,118}, {24,115}, {24,116}, {63,185}, {63,177}, {24,114}, {24,111},
+ {63,178}, {24,113}, {63,181}, {63,183}, {63,190}, {63,189}, {63,184},
+ {24,110}, {63,176}, {24,108}, {63,179}, {24,119}, {63,182}, {63,186},
+ {24,112}, {24,109}, {63,188}, {63,187}, {24,117}, {63,180}, {26,184},
+ {67,172}, {67,169}, {26,185}, {26,183}, {67,176}, {67,173}, {67,166},
+ {26,182}, {26,186}, {67,167}, {26,181}, {26,189}, {67,170}, {67,171},
+ {26,187}, {26,188}, {67,177}, {67,174}, {67,175}, {29,106}, {71,184},
+ {29,103}, {71,181}, {29,105}, {29,107}, {71,182}, {29,104}, {71,183},
+ {71,180}, {31,54}, {75,125}, {31,55}, {75,123}, {75,124}, {75,122},
+ {75,121}, {75,126}, {31,53}, {78,120}, {78,121}, {67,168}, {78,119},
+ {31,56}, {34,31}, {80,171}, {80,172}, {35,151}, {35,152}, {84,129},
+ {84,128}, {36,44}, {36,43}, {86,144}, {3,9}, {3,33}, {3,121}, {3,120},
+ {4,19}, {4,18}, {4,188}, {4,187}, {4,189}, {4,186}, {6,10}, {6,9},
+ {6,11}, {7,160}, {7,159}, {7,161}, {10,30}, {1,25}, {47,158}, {1,26},
+ {15,130}, {1,28}, {1,27}, {55,32}, {1,29}, {24,120}, {1,30}, {3,10},
+ {3,122}, {4,190}, {7,162}, {3,11}, {3,125}, {3,123}, {3,124}, {5,0},
+ {6,12}, {7,164}, {7,163}, {7,165}, {12,157}, {29,108}, {40,14}, {4,20},
+ {4,21}, {5,1}, {41,42}, {10,32}, {10,31}, {47,160}, {47,159}, {15,131},
+ {3,126}, {40,21}, {42,141}, {10,33}, {12,160}, {12,158}, {12,159},
+ {29,109}, {4,22}, {5,2}, {40,124}, {6,13}, {6,14}, {41,43}, {42,142},
+ {7,166}, {42,143}, {47,162}, {47,163}, {12,163}, {47,164}, {47,161},
+ {12,164}, {12,162}, {12,161}, {47,165}, {51,40}, {55,33}, {59,133},
+ {64,0}, {26,190}, {29,110}, {71,185}, {3,12}, {3,26}, {15,132}, {18,141},
+ {24,121}, {40,2}, {3,127}, {4,25}, {4,23}, {4,24}, {7,167}, {3,13},
+ {3,14}, {3,34}, {3,128}, {3,129}, {3,130}, {40,126}, {4,26}, {40,43},
+ {5,6}, {40,127}, {5,4}, {5,5}, {40,125}, {5,7}, {5,3}, {41,44}, {9,172},
+ {41,45}, {41,46}, {6,16}, {6,15}, {6,19}, {6,17}, {6,18}, {7,173},
+ {7,172}, {42,148}, {42,145}, {42,146}, {42,144}, {7,174}, {7,170},
+ {7,169}, {7,171}, {7,168}, {7,175}, {10,35}, {44,176}, {42,147}, {10,40},
+ {44,177}, {10,36}, {10,39}, {10,38}, {10,37}, {10,34}, {47,168}, {12,167},
+ {47,171}, {12,165}, {47,167}, {12,168}, {12,166}, {12,169}, {47,169},
+ {47,170}, {47,166}, {47,172}, {18,145}, {15,133}, {51,41}, {51,43},
+ {51,42}, {51,44}, {15,134}, {18,142}, {18,143}, {18,144}, {21,144},
+ {59,135}, {59,134}, {59,136}, {59,137}, {21,145}, {21,143}, {64,1},
+ {64,2}, {24,123}, {24,122}, {66,26}, {27,0}, {27,1}, {27,2}, {27,4},
+ {67,178}, {67,179}, {27,3}, {29,111}, {29,112}, {80,173}, {84,131},
+ {84,130}, {86,145}, {3,15}, {4,28}, {4,27}, {5,8}, {40,128}, {6,21},
+ {6,22}, {6,20}, {6,23}, {41,47}, {41,48}, {7,177}, {42,149}, {7,176},
+ {44,178}, {10,44}, {44,179}, {10,43}, {10,41}, {10,42}, {47,173}, {15,135},
+ {51,46}, {15,138}, {51,45}, {16,165}, {15,137}, {15,136}, {18,148},
+ {18,147}, {18,146}, {21,146}, {21,149}, {21,150}, {21,148}, {21,147},
+ {64,3}, {64,4}, {67,181}, {27,5}, {67,180}, {29,113}, {75,127}, {31,57},
+ {80,174}, {35,21}, {3,35}, {3,131}, {40,22}, {3,132}, {3,133}, {4,29},
+ {4,30}, {5,9}, {41,49}, {42,150}, {42,151}, {10,45}, {47,174}, {15,140},
+ {15,139}, {55,35}, {55,34}, {3,16}, {3,134}, {4,31}, {15,141}, {40,3},
+ {40,44}, {4,32}, {40,130}, {5,11}, {5,10}, {40,129}, {6,24}, {12,170},
+ {51,47}, {21,151}, {64,5}, {24,124}, {71,186}, {82,189}, {3,135}, {42,152},
+ {44,180}, {15,144}, {15,142}, {15,143}, {3,17}, {3,36}, {1,141}, {3,138},
+ {3,137}, {3,136}, {4,35}, {4,34}, {40,45}, {40,131}, {7,181}, {7,178},
+ {7,180}, {7,179}, {10,46}, {18,149}, {3,18}, {3,139}, {4,37}, {4,36},
+ {41,50}, {7,182}, {40,23}, {4,39}, {4,38}, {5,12}, {5,13}, {41,51},
+ {6,25}, {6,26}, {7,183}, {7,184}, {7,185}, {10,47}, {44,181}, {12,171},
+ {40,4}, {3,140}, {40,132}, {41,52}, {41,53}, {42,153}, {42,154}, {44,183},
+ {44,182}, {44,185}, {44,184}, {10,48}, {51,48}, {12,173}, {47,175},
+ {12,172}, {55,36}, {18,150}, {55,37}, {64,6}, {24,125}, {27,6}, {80,175},
+ {40,24}, {4,40}, {15,145}, {3,19}, {3,37}, {3,142}, {3,141}, {3,143},
+ {7,187}, {7,186}, {7,188}, {10,49}, {12,174}, {71,187}, {33,15}, {3,38},
+ {4,42}, {4,57}, {4,52}, {4,47}, {4,46}, {4,53}, {4,51}, {4,44}, {4,58},
+ {4,45}, {4,41}, {4,56}, {4,55}, {4,54}, {4,43}, {4,50}, {4,49}, {4,59},
+ {4,48}, {5,19}, {5,25}, {5,21}, {5,27}, {40,133}, {5,24}, {5,14}, {5,17},
+ {5,20}, {5,16}, {5,23}, {5,26}, {5,15}, {5,18}, {5,22}, {5,28}, {41,62},
+ {41,59}, {6,39}, {41,60}, {6,27}, {6,29}, {6,53}, {6,48}, {41,101},
+ {41,61}, {6,31}, {6,33}, {41,100}, {6,40}, {41,56}, {6,52}, {6,54},
+ {6,28}, {6,45}, {41,54}, {6,51}, {6,36}, {6,46}, {6,47}, {41,55}, {6,44},
+ {6,42}, {6,43}, {6,49}, {41,97}, {6,30}, {6,50}, {41,99}, {6,38}, {6,35},
+ {41,58}, {6,34}, {41,102}, {6,37}, {6,41}, {6,32}, {41,98}, {41,57},
+ {42,171}, {42,170}, {8,15}, {42,173}, {42,175}, {42,164}, {42,167},
+ {42,174}, {8,16}, {42,161}, {42,165}, {42,169}, {45,9}, {8,11}, {45,13},
+ {7,189}, {42,166}, {7,190}, {8,12}, {8,5}, {8,1}, {42,162}, {8,4},
+ {8,9}, {8,18}, {42,163}, {42,156}, {8,3}, {42,157}, {42,159}, {8,6},
+ {8,8}, {42,155}, {42,160}, {8,17}, {8,13}, {42,168}, {8,19}, {8,10},
+ {42,158}, {8,7}, {8,2}, {8,0}, {42,172}, {8,14}, {45,8}, {44,187},
+ {45,11}, {44,189}, {10,56}, {10,104}, {10,52}, {10,103}, {10,61}, {10,100},
+ {10,50}, {44,188}, {45,3}, {10,99}, {45,15}, {10,101}, {10,57}, {45,5},
+ {45,2}, {10,55}, {44,186}, {10,102}, {45,10}, {10,60}, {45,12}, {10,105},
+ {10,51}, {10,62}, {10,59}, {45,0}, {10,97}, {45,6}, {45,7}, {10,58},
+ {10,98}, {10,54}, {10,53}, {44,190}, {45,4}, {45,14}, {48,4}, {12,187},
+ {47,177}, {47,182}, {12,180}, {13,0}, {47,180}, {12,175}, {12,185},
+ {12,190}, {47,187}, {12,186}, {12,189}, {47,190}, {12,181}, {47,181},
+ {48,2}, {48,3}, {12,183}, {48,1}, {12,179}, {13,3}, {47,184}, {12,177},
+ {48,6}, {47,185}, {47,189}, {12,182}, {13,2}, {47,186}, {12,188}, {48,0},
+ {48,7}, {51,97}, {48,5}, {13,4}, {12,176}, {47,188}, {47,179}, {12,184},
+ {47,178}, {47,183}, {47,176}, {13,1}, {51,55}, {15,164}, {51,103},
+ {15,162}, {15,159}, {51,60}, {15,155}, {51,98}, {15,166}, {51,54},
+ {51,59}, {51,58}, {12,178}, {15,161}, {51,101}, {51,104}, {51,51},
+ {18,168}, {51,105}, {15,167}, {15,153}, {15,150}, {51,62}, {15,147},
+ {51,102}, {15,154}, {51,106}, {51,52}, {51,100}, {15,157}, {51,53},
+ {51,56}, {51,61}, {15,158}, {15,156}, {15,168}, {15,163}, {15,151},
+ {16,146}, {15,152}, {51,57}, {15,165}, {15,160}, {51,99}, {15,149},
+ {15,148}, {51,49}, {51,50}, {55,42}, {18,151}, {18,154}, {55,53}, {18,174},
+ {55,56}, {18,152}, {55,49}, {18,158}, {18,164}, {20,125}, {18,162},
+ {55,46}, {18,175}, {18,155}, {18,163}, {55,54}, {59,151}, {55,59},
+ {55,47}, {55,38}, {55,51}, {55,45}, {18,161}, {55,57}, {18,157}, {18,177},
+ {18,170}, {18,159}, {18,156}, {18,167}, {55,58}, {55,44}, {55,50},
+ {55,52}, {55,40}, {55,55}, {18,153}, {55,39}, {18,160}, {18,176}, {18,172},
+ {55,41}, {18,166}, {18,173}, {18,169}, {18,165}, {55,48}, {18,171},
+ {59,149}, {59,145}, {59,160}, {59,138}, {59,147}, {21,165}, {21,166},
+ {21,158}, {59,156}, {21,168}, {59,143}, {59,142}, {59,140}, {59,158},
+ {21,156}, {59,152}, {59,141}, {21,159}, {59,150}, {21,154}, {59,146},
+ {59,153}, {59,155}, {59,159}, {21,163}, {59,139}, {21,157}, {59,144},
+ {21,152}, {21,164}, {59,154}, {21,160}, {21,161}, {21,167}, {21,155},
+ {1,31}, {21,153}, {59,148}, {21,162}, {59,157}, {24,141}, {24,136},
+ {64,21}, {64,17}, {64,11}, {24,130}, {24,126}, {64,20}, {24,127}, {64,14},
+ {64,16}, {64,19}, {24,132}, {24,139}, {24,133}, {64,9}, {24,134}, {24,135},
+ {64,12}, {24,140}, {64,10}, {64,15}, {24,131}, {64,8}, {24,137}, {24,129},
+ {24,128}, {64,13}, {64,18}, {24,138}, {64,7}, {27,13}, {68,7}, {68,4},
+ {27,7}, {27,19}, {27,20}, {27,10}, {68,2}, {27,12}, {67,185}, {27,18},
+ {68,6}, {27,9}, {68,8}, {27,8}, {68,3}, {68,5}, {27,11}, {68,1}, {67,186},
+ {67,183}, {55,43}, {67,189}, {67,182}, {67,188}, {67,187}, {67,184},
+ {27,15}, {27,14}, {27,16}, {67,190}, {29,114}, {68,0}, {72,5}, {71,189},
+ {29,126}, {72,2}, {29,118}, {29,122}, {72,1}, {29,121}, {29,117}, {29,120},
+ {29,115}, {29,125}, {72,3}, {71,190}, {29,124}, {71,188}, {29,123},
+ {72,4}, {72,0}, {27,17}, {29,127}, {72,6}, {29,119}, {29,116}, {75,134},
+ {75,136}, {31,59}, {75,137}, {75,135}, {75,133}, {75,132}, {31,61},
+ {75,131}, {31,62}, {75,129}, {75,130}, {31,58}, {31,97}, {31,60}, {75,128},
+ {33,16}, {78,124}, {78,122}, {78,127}, {78,125}, {78,123}, {78,126},
+ {34,32}, {80,178}, {80,179}, {35,22}, {80,180}, {80,176}, {80,181},
+ {80,177}, {33,17}, {82,190}, {83,1}, {35,25}, {83,0}, {35,24}, {35,23},
+ {35,26}, {84,133}, {84,134}, {35,154}, {35,153}, {35,155}, {84,132},
+ {85,152}, {85,151}, {36,45}, {36,47}, {36,46}, {85,153}, {36,136},
+ {87,102}, {36,177}, {87,101}, {87,174}, {40,9}, {4,61}, {4,60}, {5,31},
+ {5,30}, {40,135}, {5,29}, {40,134}, {6,57}, {41,105}, {41,104}, {6,55},
+ {6,58}, {41,103}, {6,56}, {42,176}, {42,177}, {8,20}, {10,106}, {48,8},
+ {48,9}, {13,5}, {13,6}, {51,108}, {15,169}, {15,171}, {51,107}, {15,170},
+ {55,60}, {18,178}, {21,169}, {21,170}, {59,161}, {24,143}, {24,142},
+ {68,9}, {72,8}, {72,7}, {88,43}, {3,39}, {40,25}, {40,46}, {40,47},
+ {5,34}, {5,38}, {40,137}, {5,36}, {5,35}, {40,136}, {5,37}, {5,33},
+ {5,32}, {40,138}, {6,102}, {6,99}, {6,61}, {41,106}, {41,107}, {6,97},
+ {41,109}, {6,59}, {41,110}, {41,108}, {6,62}, {6,98}, {6,101}, {6,100},
+ {6,60}, {41,111}, {8,25}, {42,190}, {8,27}, {8,26}, {43,0}, {8,24},
+ {8,23}, {42,181}, {42,180}, {42,178}, {42,183}, {42,182}, {42,179},
+ {42,188}, {42,189}, {42,186}, {42,184}, {8,22}, {42,187}, {8,28}, {43,1},
+ {42,185}, {10,107}, {8,21}, {10,108}, {45,20}, {45,26}, {10,114}, {45,24},
+ {45,30}, {45,21}, {45,25}, {45,27}, {45,29}, {45,23}, {45,22}, {45,17},
+ {45,18}, {10,109}, {10,111}, {10,110}, {45,19}, {45,28}, {10,113},
+ {45,16}, {48,19}, {48,18}, {48,23}, {48,14}, {48,17}, {48,16}, {48,20},
+ {48,24}, {13,7}, {13,10}, {48,15}, {48,21}, {13,9}, {48,10}, {10,112},
+ {51,122}, {48,22}, {48,13}, {13,8}, {48,12}, {51,113}, {15,172}, {15,176},
+ {51,129}, {51,111}, {51,125}, {15,177}, {51,127}, {51,133}, {51,137},
+ {51,128}, {51,116}, {51,124}, {51,138}, {51,136}, {51,126}, {51,121},
+ {51,114}, {55,102}, {51,112}, {15,181}, {51,119}, {15,182}, {15,178},
+ {51,109}, {51,131}, {51,117}, {51,115}, {51,134}, {15,179}, {51,140},
+ {15,173}, {15,175}, {51,123}, {51,118}, {13,11}, {15,174}, {51,120},
+ {51,135}, {51,139}, {51,130}, {51,132}, {51,110}, {55,97}, {55,106},
+ {55,105}, {18,186}, {55,98}, {18,187}, {18,185}, {55,100}, {18,182},
+ {55,104}, {55,99}, {55,101}, {55,61}, {18,180}, {55,114}, {55,113},
+ {55,110}, {18,179}, {18,183}, {18,184}, {48,11}, {55,107}, {18,181},
+ {15,180}, {55,109}, {55,62}, {55,112}, {55,111}, {55,115}, {59,175},
+ {55,108}, {55,103}, {59,167}, {21,180}, {21,183}, {21,178}, {59,166},
+ {59,170}, {59,165}, {21,172}, {21,182}, {59,162}, {21,176}, {59,169},
+ {21,174}, {21,173}, {59,172}, {21,175}, {59,174}, {59,171}, {21,171},
+ {21,181}, {59,176}, {59,164}, {59,173}, {59,163}, {21,177}, {21,179},
+ {59,168}, {59,177}, {64,29}, {24,144}, {64,35}, {24,149}, {64,31},
+ {64,38}, {64,23}, {24,151}, {24,145}, {64,28}, {27,21}, {64,27}, {64,36},
+ {24,146}, {24,150}, {64,26}, {64,32}, {64,37}, {64,22}, {24,148}, {64,30},
+ {64,34}, {64,40}, {64,24}, {64,33}, {24,147}, {64,39}, {64,25}, {27,25},
+ {68,11}, {27,23}, {27,22}, {68,13}, {68,18}, {68,14}, {68,17}, {27,28},
+ {29,101}, {27,27}, {68,10}, {68,16}, {27,26}, {68,15}, {68,12}, {27,24},
+ {72,13}, {72,15}, {72,10}, {29,129}, {72,12}, {29,128}, {72,14}, {29,131},
+ {72,16}, {29,130}, {72,9}, {72,11}, {31,101}, {75,140}, {31,100}, {75,141},
+ {31,99}, {75,139}, {31,98}, {75,138}, {33,19}, {33,18}, {80,182}, {80,184},
+ {80,183}, {34,33}, {34,34}, {34,35}, {83,2}, {35,27}, {86,147}, {86,146},
+ {36,178}, {3,40}, {3,144}, {6,103}, {45,31}, {18,188}, {18,189}, {59,178},
+ {24,152}, {64,41}, {68,19}, {40,26}, {41,112}, {43,2}, {45,32}, {48,25},
+ {13,12}, {80,185}, {35,156}, {3,41}, {4,62}, {40,48}, {5,39}, {5,40},
+ {8,29}, {15,183}, {24,154}, {24,155}, {24,153}, {3,42}, {3,145}, {3,147},
+ {3,146}, {40,27}, {3,148}, {4,97}, {40,49}, {4,98}, {5,41}, {5,42},
+ {40,139}, {6,104}, {41,113}, {8,33}, {43,3}, {8,31}, {8,32}, {8,30},
+ {48,26}, {10,118}, {10,117}, {10,119}, {10,116}, {45,33}, {8,34}, {10,115},
+ {13,13}, {13,14}, {13,15}, {51,141}, {18,190}, {55,116}, {15,184},
+ {21,184}, {24,157}, {24,156}, {64,42}, {27,29}, {29,132}, {78,128},
+ {85,154}, {86,148}, {3,43}, {4,99}, {4,100}, {40,145}, {5,44}, {5,47},
+ {40,143}, {40,141}, {5,46}, {40,144}, {40,146}, {40,140}, {5,49}, {5,48},
+ {5,45}, {5,43}, {40,142}, {6,115}, {6,112}, {41,118}, {41,121}, {41,120},
+ {6,106}, {6,114}, {6,111}, {41,117}, {41,115}, {6,110}, {6,105}, {6,108},
+ {41,116}, {41,123}, {41,119}, {6,109}, {6,113}, {6,116}, {41,114},
+ {41,122}, {6,107}, {8,39}, {8,47}, {43,15}, {43,8}, {8,48}, {43,19},
+ {43,4}, {43,11}, {8,38}, {43,5}, {8,36}, {43,12}, {43,16}, {8,35},
+ {43,17}, {43,10}, {43,13}, {8,50}, {8,41}, {43,20}, {43,18}, {8,46},
+ {8,44}, {43,9}, {8,43}, {43,7}, {43,6}, {8,42}, {8,40}, {8,49}, {8,45},
+ {8,37}, {43,14}, {10,121}, {10,128}, {45,47}, {10,120}, {45,39}, {45,35},
+ {45,51}, {45,34}, {10,123}, {45,44}, {10,126}, {10,129}, {10,124},
+ {45,48}, {10,127}, {13,22}, {45,54}, {45,36}, {45,38}, {45,45}, {45,49},
+ {45,53}, {45,50}, {45,43}, {45,46}, {45,40}, {10,131}, {45,42}, {45,41},
+ {45,52}, {10,122}, {45,37}, {10,130}, {10,125}, {13,28}, {48,34}, {13,27},
+ {48,32}, {13,16}, {13,21}, {48,31}, {48,28}, {48,33}, {13,17}, {48,27},
+ {13,20}, {13,18}, {48,35}, {13,19}, {13,23}, {13,24}, {13,26}, {13,25},
+ {48,29}, {48,30}, {48,36}, {51,148}, {15,185}, {55,130}, {51,147},
+ {51,166}, {16,0}, {51,164}, {15,190}, {15,186}, {51,173}, {51,157},
+ {51,160}, {16,3}, {51,170}, {51,162}, {15,187}, {16,4}, {51,167}, {51,165},
+ {51,150}, {51,171}, {51,159}, {51,154}, {51,144}, {51,172}, {51,156},
+ {51,143}, {16,2}, {51,161}, {51,174}, {51,158}, {51,146}, {51,151},
+ {51,142}, {16,1}, {51,155}, {51,152}, {15,188}, {51,145}, {51,169},
+ {15,189}, {51,153}, {51,149}, {51,168}, {19,0}, {55,123}, {55,120},
+ {55,137}, {55,125}, {55,138}, {19,2}, {55,134}, {55,131}, {55,132},
+ {55,135}, {55,139}, {51,163}, {55,141}, {60,7}, {19,3}, {55,142}, {55,118},
+ {55,128}, {55,133}, {19,1}, {19,4}, {55,140}, {55,143}, {55,122}, {55,119},
+ {55,121}, {55,126}, {55,124}, {19,5}, {55,136}, {55,127}, {55,129},
+ {55,117}, {59,186}, {59,184}, {22,2}, {22,0}, {60,3}, {59,185}, {60,4},
+ {60,0}, {59,183}, {60,6}, {59,182}, {59,189}, {21,190}, {21,189}, {21,188},
+ {59,187}, {60,1}, {21,185}, {22,1}, {59,180}, {59,190}, {59,179}, {59,188},
+ {21,186}, {60,2}, {59,181}, {21,187}, {60,5}, {64,46}, {24,162}, {24,161},
+ {24,163}, {64,58}, {64,48}, {64,54}, {64,43}, {64,57}, {64,56}, {64,60},
+ {64,53}, {24,158}, {64,52}, {24,164}, {64,45}, {24,159}, {64,59}, {24,160},
+ {64,47}, {64,50}, {64,55}, {64,49}, {64,44}, {64,51}, {68,21}, {27,33},
+ {68,24}, {68,23}, {68,26}, {68,28}, {27,31}, {68,22}, {68,20}, {68,29},
+ {68,27}, {68,25}, {68,31}, {68,30}, {27,35}, {27,30}, {27,32}, {27,34},
+ {68,32}, {72,23}, {72,22}, {72,21}, {72,24}, {72,17}, {72,18}, {72,26},
+ {72,19}, {29,133}, {72,28}, {72,27}, {72,20}, {75,145}, {31,104}, {75,143},
+ {75,148}, {75,147}, {72,25}, {31,103}, {75,146}, {75,142}, {75,150},
+ {75,149}, {31,102}, {75,144}, {29,134}, {33,20}, {78,129}, {80,186},
+ {80,187}, {80,188}, {35,28}, {35,29}, {83,3}, {84,136}, {84,135}, {85,155},
+ {85,156}, {86,149}, {87,103}, {3,44}, {3,45}, {3,46}, {3,149}, {4,101},
+ {40,147}, {5,50}, {5,51}, {6,119}, {6,120}, {6,118}, {6,117}, {8,51},
+ {43,21}, {8,53}, {8,52}, {43,22}, {10,132}, {13,29}, {48,37}, {51,176},
+ {16,5}, {19,7}, {51,175}, {19,6}, {24,165}, {64,61}, {29,135}, {31,105},
+ {75,151}, {35,30}, {36,48}, {40,50}, {4,102}, {40,51}, {5,54}, {5,52},
+ {5,53}, {5,55}, {6,122}, {6,121}, {41,124}, {6,123}, {41,125}, {43,23},
+ {43,24}, {8,54}, {8,56}, {8,58}, {8,55}, {8,59}, {8,57}, {10,136},
+ {10,133}, {10,135}, {10,137}, {10,134}, {48,38}, {45,55}, {48,40},
+ {48,39}, {13,35}, {13,31}, {13,32}, {13,34}, {13,36}, {13,33}, {13,38},
+ {13,37}, {16,10}, {51,178}, {51,177}, {16,9}, {16,8}, {16,7}, {16,11},
+ {16,6}, {55,149}, {55,146}, {19,9}, {55,145}, {55,150}, {19,11}, {55,148},
+ {19,8}, {19,10}, {55,147}, {60,8}, {60,9}, {60,10}, {24,166}, {24,174},
+ {64,62}, {24,168}, {24,172}, {64,97}, {24,173}, {24,169}, {24,170},
+ {24,167}, {24,171}, {27,38}, {55,144}, {27,39}, {27,37}, {27,36}, {72,29},
+ {29,136}, {75,152}, {75,153}, {34,36}, {35,31}, {3,47}, {5,56}, {10,138},
+ {48,41}, {13,39}, {16,14}, {16,13}, {16,12}, {19,12}, {19,13}, {55,151},
+ {24,175}, {29,137}, {3,48}, {40,28}, {3,150}, {40,52}, {40,148}, {5,57},
+ {8,60}, {60,11}, {3,49}, {3,151}, {40,149}, {41,126}, {41,127}, {6,124},
+ {55,152}, {19,14}, {60,12}, {31,106}, {3,50}, {3,104}, {3,152}, {40,53},
+ {4,103}, {6,128}, {6,127}, {6,125}, {6,126}, {43,25}, {8,62}, {8,97},
+ {43,26}, {8,61}, {10,142}, {45,56}, {10,141}, {10,139}, {10,140}, {13,42},
+ {13,40}, {48,43}, {13,41}, {48,42}, {13,30}, {51,179}, {16,16}, {16,17},
+ {16,15}, {24,176}, {64,98}, {27,40}, {27,41}, {68,33}, {31,107}, {78,130},
+ {78,131}, {35,157}, {87,104}, {40,11}, {3,153}, {3,51}, {40,55}, {40,54},
+ {5,58}, {40,151}, {40,152}, {40,150}, {40,153}, {41,135}, {41,130},
+ {41,132}, {41,134}, {41,131}, {6,132}, {41,128}, {41,129}, {6,129},
+ {6,130}, {41,133}, {41,136}, {6,131}, {41,137}, {43,40}, {43,34}, {43,29},
+ {8,99}, {43,37}, {43,35}, {43,28}, {43,41}, {43,44}, {43,39}, {43,32},
+ {8,101}, {43,38}, {8,102}, {43,33}, {43,36}, {43,27}, {43,31}, {43,43},
+ {8,103}, {8,104}, {43,30}, {43,42}, {8,98}, {8,100}, {45,107}, {45,100},
+ {45,106}, {45,99}, {45,101}, {45,61}, {45,59}, {45,108}, {45,105},
+ {45,57}, {10,144}, {45,103}, {45,104}, {45,102}, {45,60}, {45,58},
+ {10,143}, {45,98}, {45,62}, {45,97}, {45,109}, {13,47}, {13,46}, {48,44},
+ {13,43}, {48,46}, {13,48}, {48,47}, {13,51}, {13,49}, {48,48}, {45,110},
+ {48,50}, {13,45}, {13,44}, {48,45}, {48,49}, {13,50}, {16,19}, {16,18},
+ {51,181}, {51,185}, {51,187}, {16,20}, {51,190}, {16,24}, {52,1}, {16,26},
+ {16,22}, {16,30}, {16,27}, {51,183}, {16,21}, {51,182}, {51,180}, {52,3},
+ {51,184}, {16,23}, {52,2}, {16,28}, {51,189}, {51,188}, {16,29}, {51,186},
+ {16,25}, {52,4}, {52,0}, {55,167}, {55,174}, {55,163}, {19,17}, {55,159},
+ {55,175}, {55,153}, {55,172}, {55,170}, {55,164}, {55,173}, {55,166},
+ {55,158}, {55,176}, {55,156}, {55,169}, {55,154}, {55,177}, {19,18},
+ {55,171}, {60,15}, {55,157}, {19,15}, {55,161}, {19,16}, {55,160},
+ {55,165}, {55,162}, {55,168}, {60,19}, {60,22}, {60,14}, {60,16}, {60,21},
+ {60,20}, {22,3}, {55,155}, {60,18}, {22,4}, {60,13}, {60,17}, {64,105},
+ {64,112}, {64,103}, {64,110}, {64,101}, {64,109}, {64,113}, {64,100},
+ {64,104}, {64,99}, {24,177}, {64,102}, {24,178}, {64,108}, {64,107},
+ {64,106}, {64,111}, {68,37}, {68,39}, {27,43}, {68,40}, {68,35}, {68,34},
+ {68,44}, {68,42}, {27,42}, {68,45}, {68,36}, {68,41}, {68,43}, {68,38},
+ {72,33}, {72,38}, {72,32}, {72,37}, {72,30}, {72,40}, {72,36}, {72,41},
+ {72,35}, {72,31}, {72,39}, {72,42}, {72,34}, {75,154}, {31,111}, {31,109},
+ {31,108}, {31,110}, {78,132}, {80,50}, {80,189}, {83,4}, {83,5}, {35,32},
+ {84,137}, {35,158}, {84,138}, {85,158}, {36,50}, {36,49}, {85,157},
+ {36,137}, {86,150}, {3,52}, {5,59}, {40,154}, {41,138}, {7,117}, {16,31},
+ {3,53}, {4,106}, {4,105}, {4,104}, {6,133}, {13,52}, {60,23}, {3,54},
+ {3,55}, {3,56}, {3,154}, {10,145}, {45,111}, {19,19}, {3,57}, {40,29},
+ {4,107}, {4,108}, {40,56}, {5,60}, {41,139}, {6,134}, {41,140}, {8,110},
+ {43,46}, {8,108}, {8,107}, {43,45}, {8,105}, {43,47}, {8,106}, {8,109},
+ {10,146}, {10,148}, {45,115}, {45,112}, {45,113}, {45,114}, {45,116},
+ {10,147}, {48,52}, {48,51}, {13,54}, {13,53}, {16,34}, {52,6}, {16,33},
+ {16,35}, {16,32}, {19,21}, {52,5}, {19,22}, {55,179}, {19,23}, {55,178},
+ {19,20}, {60,26}, {60,28}, {22,5}, {60,27}, {60,25}, {60,24}, {64,116},
+ {24,183}, {24,181}, {24,182}, {64,114}, {64,115}, {24,179}, {68,49},
+ {68,47}, {27,45}, {68,48}, {27,46}, {27,44}, {24,180}, {72,45}, {72,43},
+ {72,44}, {68,46}, {75,156}, {31,112}, {75,155}, {78,133}, {78,134},
+ {72,46}, {80,190}, {3,58}, {4,109}, {5,62}, {40,155}, {5,61}, {8,111},
+ {22,6}, {3,155}, {4,110}, {10,149}, {19,24}, {40,57}, {40,58}, {40,156},
+ {6,136}, {41,144}, {41,142}, {6,137}, {41,141}, {41,143}, {41,145},
+ {6,135}, {8,115}, {8,116}, {8,113}, {8,112}, {45,120}, {8,114}, {10,150},
+ {45,119}, {45,121}, {45,118}, {45,122}, {10,151}, {13,57}, {48,53},
+ {48,55}, {13,55}, {48,56}, {13,56}, {48,54}, {45,117}, {52,7}, {52,10},
+ {52,11}, {52,8}, {16,39}, {16,38}, {16,36}, {16,37}, {52,9}, {16,40},
+ {19,26}, {19,27}, {19,28}, {60,29}, {60,31}, {60,33}, {22,8}, {22,7},
+ {19,25}, {60,32}, {60,30}, {64,120}, {64,118}, {64,124}, {24,184},
+ {64,125}, {64,122}, {24,185}, {64,119}, {64,117}, {64,123}, {27,48},
+ {68,51}, {64,121}, {27,50}, {68,52}, {27,49}, {27,52}, {68,53}, {27,47},
+ {27,51}, {72,51}, {72,49}, {72,48}, {72,50}, {72,47}, {34,38}, {83,6},
+ {83,7}, {84,139}, {85,159}, {37,21}, {8,117}, {6,138}, {10,152}, {3,59},
+ {3,156}, {4,111}, {40,157}, {6,139}, {41,146}, {45,123}, {10,153},
+ {24,186}, {3,60}, {5,97}, {22,9}, {3,61}, {3,157}, {3,158}, {4,113},
+ {4,112}, {40,158}, {5,98}, {41,147}, {6,140}, {43,49}, {43,50}, {43,51},
+ {8,118}, {8,119}, {43,48}, {8,120}, {10,154}, {45,124}, {48,58}, {13,58},
+ {48,57}, {16,41}, {52,12}, {16,42}, {52,13}, {19,29}, {60,34}, {64,127},
+ {64,126}, {24,187}, {27,53}, {68,54}, {29,138}, {72,52}, {31,113},
+ {36,51}, {86,152}, {43,52}, {45,125}, {16,43}, {55,180}, {22,10}, {33,21},
+ {6,142}, {6,141}, {10,155}, {48,59}, {16,45}, {18,3}, {16,46}, {16,44},
+ {19,30}, {64,128}, {24,188}, {27,54}, {40,12}, {40,159}, {41,149},
+ {6,143}, {41,148}, {6,144}, {8,124}, {43,55}, {43,54}, {8,123}, {8,121},
+ {8,122}, {43,53}, {10,157}, {45,126}, {10,160}, {10,156}, {10,162},
+ {10,158}, {10,159}, {10,161}, {13,61}, {13,60}, {13,59}, {52,15}, {16,47},
+ {16,50}, {16,48}, {52,14}, {16,53}, {16,49}, {52,16}, {16,52}, {16,51},
+ {55,182}, {55,181}, {19,33}, {19,31}, {19,32}, {55,183}, {22,11}, {60,36},
+ {22,12}, {60,35}, {68,55}, {27,56}, {64,129}, {27,55}, {24,189}, {75,158},
+ {72,53}, {31,114}, {75,157}, {81,0}, {83,8}, {83,9}, {3,159}, {4,114},
+ {40,59}, {6,146}, {6,148}, {40,162}, {41,152}, {41,151}, {41,150},
+ {40,161}, {40,160}, {5,100}, {6,147}, {6,145}, {5,99}, {8,125}, {43,56},
+ {8,126}, {41,157}, {41,159}, {41,158}, {43,57}, {41,154}, {6,152},
+ {6,150}, {41,153}, {41,155}, {41,161}, {6,149}, {41,156}, {41,165},
+ {8,128}, {41,162}, {6,151}, {41,160}, {41,163}, {8,127}, {8,129}, {41,164},
+ {43,111}, {43,98}, {43,62}, {43,110}, {43,105}, {10,167}, {8,130},
+ {43,106}, {43,109}, {10,163}, {43,108}, {8,131}, {8,136}, {8,134},
+ {43,99}, {43,60}, {43,101}, {8,141}, {43,112}, {10,164}, {43,102},
+ {10,165}, {8,137}, {43,104}, {45,141}, {10,166}, {43,59}, {8,138},
+ {10,168}, {8,139}, {8,135}, {8,140}, {43,103}, {43,58}, {43,107}, {8,132},
+ {43,61}, {43,100}, {43,97}, {8,133}, {45,127}, {45,128}, {45,138},
+ {48,97}, {45,139}, {10,174}, {45,142}, {45,132}, {10,173}, {45,134},
+ {45,135}, {45,137}, {10,169}, {13,99}, {45,133}, {45,129}, {13,100},
+ {45,143}, {13,62}, {48,61}, {45,136}, {48,60}, {45,131}, {45,140},
+ {10,172}, {13,97}, {10,178}, {13,98}, {45,144}, {48,62}, {10,171},
+ {13,102}, {10,177}, {10,176}, {10,175}, {13,101}, {45,145}, {13,103},
+ {10,170}, {45,130}, {16,54}, {48,100}, {48,102}, {48,104}, {13,104},
+ {13,110}, {52,19}, {48,108}, {48,99}, {16,56}, {52,17}, {13,109}, {13,107},
+ {48,110}, {52,18}, {48,101}, {13,108}, {48,105}, {13,111}, {48,107},
+ {13,106}, {48,106}, {48,109}, {48,103}, {13,105}, {16,57}, {48,98},
+ {16,55}, {16,58}, {52,21}, {52,30}, {19,36}, {16,60}, {16,99}, {19,37},
+ {52,32}, {16,106}, {55,185}, {52,22}, {16,98}, {16,101}, {16,62}, {52,20},
+ {52,34}, {52,37}, {56,9}, {52,35}, {55,189}, {16,97}, {16,104}, {16,108},
+ {52,29}, {55,184}, {52,33}, {16,59}, {55,186}, {52,36}, {55,188}, {52,25},
+ {19,34}, {52,23}, {52,24}, {16,103}, {16,102}, {52,27}, {16,107}, {52,31},
+ {16,100}, {52,28}, {16,105}, {19,38}, {19,35}, {55,187}, {52,26}, {16,61},
+ {19,43}, {19,47}, {56,0}, {22,17}, {19,45}, {56,4}, {19,49}, {60,37},
+ {56,6}, {22,19}, {19,41}, {19,44}, {56,7}, {56,8}, {56,14}, {19,51},
+ {22,20}, {56,10}, {56,15}, {56,3}, {22,30}, {22,21}, {19,50}, {56,1},
+ {56,16}, {22,29}, {19,48}, {22,14}, {56,13}, {19,52}, {56,5}, {55,190},
+ {19,42}, {56,2}, {56,11}, {22,13}, {22,18}, {19,39}, {56,12}, {22,16},
+ {19,40}, {22,28}, {64,131}, {60,48}, {60,40}, {64,130}, {60,44}, {60,46},
+ {60,43}, {22,27}, {60,42}, {22,31}, {64,146}, {22,26}, {25,0}, {60,49},
+ {64,132}, {22,24}, {60,41}, {60,45}, {24,190}, {22,15}, {60,38}, {60,39},
+ {25,1}, {22,23}, {22,25}, {22,22}, {60,47}, {64,136}, {64,137}, {64,142},
+ {27,61}, {64,149}, {25,7}, {25,6}, {64,144}, {27,60}, {64,133}, {25,5},
+ {64,148}, {25,3}, {25,4}, {64,145}, {68,106}, {27,58}, {19,46}, {64,147},
+ {27,99}, {64,139}, {27,59}, {27,98}, {64,134}, {64,138}, {64,135},
+ {64,141}, {25,8}, {27,57}, {25,2}, {68,58}, {64,143}, {27,97}, {27,100},
+ {64,140}, {27,62}, {68,57}, {68,62}, {29,142}, {68,56}, {72,99}, {68,105},
+ {27,104}, {27,102}, {29,140}, {68,102}, {68,98}, {27,108}, {72,56},
+ {27,106}, {68,97}, {72,54}, {68,101}, {68,104}, {68,61}, {27,107},
+ {27,101}, {72,55}, {29,141}, {68,103}, {27,103}, {27,105}, {68,100},
+ {27,109}, {68,99}, {68,60}, {68,59}, {29,139}, {68,107}, {72,58}, {75,160},
+ {29,144}, {72,98}, {72,62}, {75,161}, {29,145}, {72,97}, {72,60}, {31,116},
+ {75,159}, {72,57}, {72,59}, {31,117}, {29,147}, {31,115}, {29,146},
+ {31,119}, {72,61}, {29,143}, {78,143}, {78,135}, {75,167}, {78,136},
+ {75,163}, {33,22}, {75,165}, {75,164}, {31,118}, {75,162}, {75,166},
+ {78,144}, {78,140}, {78,142}, {78,137}, {78,138}, {78,141}, {78,139},
+ {34,39}, {34,42}, {34,41}, {34,40}, {35,33}, {83,10}, {35,34}, {81,1},
+ {35,159}, {84,140}, {35,160}, {36,52}, {36,138}, {86,153}, {86,154},
+ {86,155}, {88,122}, {3,160}, {40,60}, {4,115}, {5,102}, {5,103}, {5,101},
+ {5,104}, {6,154}, {6,153}, {43,113}, {8,143}, {8,142}, {48,111}, {16,109},
+ {16,110}, {19,53}, {60,50}, {22,32}, {22,33}, {60,52}, {60,54}, {60,53},
+ {64,151}, {64,150}, {25,9}, {64,152}, {68,108}, {27,110}, {29,148},
+ {31,120}, {33,23}, {31,121}, {3,161}, {41,166}, {43,114}, {8,145},
+ {8,144}, {8,146}, {10,179}, {45,146}, {45,147}, {48,112}, {13,112},
+ {16,111}, {19,54}, {56,17}, {3,162}, {3,62}, {3,163}, {40,61}, {4,119},
+ {4,118}, {4,116}, {4,117}, {5,107}, {40,169}, {40,171}, {5,106}, {40,163},
+ {40,164}, {40,170}, {40,166}, {40,168}, {5,105}, {40,165}, {40,172},
+ {40,167}, {6,161}, {6,170}, {6,168}, {41,176}, {41,173}, {41,181},
+ {6,166}, {41,182}, {6,159}, {41,179}, {6,165}, {41,175}, {41,174},
+ {6,163}, {41,180}, {6,164}, {8,147}, {6,158}, {41,177}, {41,167}, {6,155},
+ {6,174}, {41,172}, {41,178}, {6,160}, {6,162}, {41,168}, {41,169},
+ {41,170}, {6,173}, {6,167}, {6,172}, {41,171}, {6,171}, {6,157}, {6,156},
+ {6,169}, {8,161}, {43,126}, {43,119}, {8,156}, {8,175}, {43,115}, {43,122},
+ {43,124}, {43,127}, {8,170}, {43,123}, {43,116}, {8,168}, {43,120},
+ {43,128}, {8,153}, {43,125}, {8,163}, {8,162}, {43,118}, {8,151}, {8,152},
+ {8,150}, {8,174}, {8,166}, {8,160}, {8,148}, {43,121}, {8,159}, {8,149},
+ {8,167}, {8,176}, {45,148}, {8,164}, {43,117}, {8,154}, {8,157}, {8,158},
+ {8,172}, {8,173}, {8,171}, {8,165}, {8,169}, {8,155}, {10,180}, {45,154},
+ {11,1}, {10,184}, {10,186}, {11,0}, {45,166}, {10,189}, {48,113}, {13,113},
+ {11,3}, {45,151}, {45,159}, {10,190}, {45,158}, {45,155}, {45,163},
+ {45,165}, {10,183}, {10,187}, {11,2}, {13,115}, {45,160}, {10,185},
+ {11,5}, {45,153}, {10,188}, {13,114}, {10,182}, {45,150}, {45,157},
+ {45,149}, {45,152}, {45,156}, {48,114}, {11,4}, {45,161}, {45,162},
+ {45,164}, {10,181}, {13,129}, {48,126}, {13,127}, {13,128}, {48,116},
+ {48,132}, {13,118}, {52,38}, {48,134}, {48,128}, {48,119}, {48,137},
+ {48,122}, {13,124}, {52,61}, {48,125}, {13,126}, {13,117}, {48,139},
+ {48,127}, {13,120}, {48,120}, {48,117}, {48,118}, {13,121}, {48,133},
+ {48,140}, {13,123}, {48,124}, {48,123}, {13,131}, {13,130}, {13,116},
+ {13,122}, {13,125}, {48,136}, {48,130}, {13,119}, {48,115}, {48,138},
+ {48,129}, {48,131}, {48,135}, {52,39}, {16,119}, {16,139}, {16,138},
+ {16,127}, {52,57}, {52,53}, {52,50}, {52,102}, {16,122}, {16,114},
+ {52,55}, {19,104}, {16,118}, {52,97}, {16,140}, {16,137}, {52,59},
+ {52,42}, {16,136}, {52,99}, {52,41}, {16,125}, {16,129}, {52,98}, {52,51},
+ {16,130}, {16,124}, {52,40}, {19,56}, {52,101}, {52,49}, {16,135},
+ {52,52}, {52,100}, {16,134}, {56,18}, {16,115}, {52,47}, {16,120},
+ {16,131}, {16,126}, {52,56}, {52,46}, {52,44}, {52,62}, {16,112}, {16,132},
+ {16,116}, {19,55}, {52,60}, {16,117}, {16,113}, {16,128}, {16,123},
+ {16,121}, {52,48}, {16,133}, {52,45}, {52,58}, {52,54}, {56,20}, {56,19},
+ {52,43}, {56,36}, {19,58}, {56,42}, {56,25}, {56,39}, {60,55}, {19,61},
+ {56,43}, {56,46}, {19,60}, {56,28}, {56,45}, {56,44}, {19,62}, {56,21},
+ {19,57}, {19,99}, {19,97}, {56,41}, {56,31}, {19,101}, {56,48}, {56,40},
+ {56,49}, {19,109}, {19,107}, {56,38}, {56,37}, {56,35}, {56,29}, {19,100},
+ {19,98}, {48,121}, {56,22}, {60,119}, {56,23}, {19,59}, {19,106}, {60,57},
+ {19,102}, {19,103}, {56,24}, {56,47}, {60,56}, {56,32}, {56,27}, {19,105},
+ {56,33}, {56,30}, {19,110}, {22,48}, {60,60}, {60,113}, {60,118}, {60,106},
+ {22,44}, {60,123}, {22,41}, {60,58}, {60,59}, {22,34}, {22,43}, {60,100},
+ {22,46}, {22,47}, {60,101}, {60,114}, {60,120}, {22,42}, {22,36}, {60,99},
+ {60,61}, {60,122}, {60,104}, {60,105}, {60,62}, {60,116}, {60,107},
+ {60,117}, {60,109}, {22,37}, {64,153}, {22,40}, {22,38}, {60,121},
+ {60,112}, {60,108}, {60,97}, {25,19}, {60,111}, {22,45}, {60,103},
+ {60,102}, {22,39}, {22,35}, {64,174}, {60,115}, {60,110}, {60,98},
+ {64,169}, {64,154}, {64,165}, {64,172}, {25,17}, {19,108}, {64,170},
+ {25,12}, {25,11}, {64,177}, {64,155}, {64,168}, {64,156}, {64,167},
+ {25,15}, {64,171}, {56,34}, {64,178}, {64,163}, {25,18}, {68,122},
+ {27,111}, {64,176}, {64,175}, {25,20}, {68,109}, {27,112}, {68,110},
+ {64,159}, {64,160}, {64,157}, {64,162}, {64,158}, {64,179}, {25,14},
+ {27,113}, {25,16}, {25,21}, {64,161}, {64,173}, {64,166}, {68,113},
+ {25,10}, {27,116}, {72,106}, {68,118}, {68,117}, {68,119}, {68,116},
+ {27,117}, {27,123}, {27,120}, {27,121}, {68,111}, {68,114}, {68,124},
+ {27,129}, {27,127}, {68,115}, {56,26}, {27,114}, {68,121}, {68,112},
+ {27,130}, {68,120}, {25,13}, {27,119}, {64,164}, {27,122}, {27,126},
+ {27,128}, {27,125}, {27,124}, {27,118}, {68,123}, {27,115}, {27,131},
+ {29,152}, {29,153}, {72,105}, {29,162}, {29,159}, {29,150}, {29,157},
+ {72,107}, {29,155}, {29,149}, {29,156}, {72,104}, {31,123}, {29,151},
+ {29,158}, {31,122}, {72,103}, {72,102}, {29,160}, {29,161}, {72,101},
+ {72,100}, {31,124}, {72,110}, {29,154}, {72,108}, {31,125}, {31,130},
+ {75,170}, {75,172}, {31,127}, {75,173}, {75,169}, {75,171}, {31,128},
+ {31,131}, {75,168}, {31,126}, {31,129}, {33,25}, {72,109}, {33,24},
+ {33,30}, {78,148}, {33,28}, {33,29}, {78,151}, {78,147}, {33,26}, {78,145},
+ {34,43}, {78,149}, {78,150}, {78,146}, {33,27}, {81,2}, {81,5}, {81,6},
+ {81,4}, {81,7}, {34,44}, {81,3}, {83,14}, {35,36}, {83,13}, {83,12},
+ {83,11}, {35,35}, {35,37}, {84,141}, {35,162}, {35,161}, {85,161},
+ {85,160}, {85,163}, {36,139}, {36,53}, {86,157}, {85,162}, {86,156},
+ {36,141}, {36,140}, {36,179}, {87,105}, {87,175}, {3,164}, {56,50},
+ {72,111}, {5,108}, {41,183}, {6,177}, {6,175}, {6,176}, {43,129}, {8,177},
+ {11,6}, {45,167}, {45,168}, {11,7}, {48,142}, {13,132}, {13,133}, {48,141},
+ {16,147}, {16,143}, {52,103}, {16,150}, {16,149}, {16,142}, {16,145},
+ {16,148}, {16,144}, {56,54}, {16,141}, {19,111}, {19,113}, {19,114},
+ {56,53}, {56,56}, {19,112}, {56,51}, {56,55}, {56,52}, {22,49}, {60,124},
+ {25,22}, {64,180}, {29,163}, {27,132}, {68,125}, {27,133}, {27,134},
+ {68,127}, {68,126}, {68,128}, {72,113}, {72,112}, {75,175}, {75,174},
+ {31,132}, {31,133}, {81,8}, {3,165}, {56,57}, {19,116}, {19,115}, {60,125},
+ {78,152}, {35,163}, {86,158}, {3,166}, {13,134}, {16,152}, {16,151},
+ {56,58}, {56,59}, {22,50}, {64,181}, {25,23}, {72,114}, {3,167}, {4,120},
+ {8,178}, {43,130}, {45,169}, {11,8}, {16,153}, {56,60}, {19,117}, {22,51},
+ {68,129}, {68,130}, {75,176}, {33,31}, {87,176}, {3,168}, {43,131},
+ {8,179}, {11,9}, {45,170}, {13,135}, {48,146}, {48,144}, {48,145},
+ {13,136}, {48,143}, {16,155}, {16,156}, {52,104}, {16,157}, {16,154},
+ {56,61}, {56,62}, {60,126}, {25,25}, {25,24}, {75,177}, {78,153}, {81,10},
+ {81,9}, {83,15}, {40,30}, {11,10}, {3,169}, {4,121}, {5,110}, {5,109},
+ {5,111}, {5,112}, {40,174}, {40,173}, {41,184}, {6,178}, {41,187},
+ {41,186}, {41,185}, {41,188}, {8,180}, {43,137}, {43,133}, {43,142},
+ {8,187}, {8,185}, {43,138}, {43,134}, {43,141}, {8,184}, {9,0}, {43,136},
+ {43,132}, {8,190}, {43,139}, {8,183}, {43,140}, {8,186}, {8,188}, {43,144},
+ {43,143}, {43,135}, {8,182}, {8,181}, {8,189}, {45,175}, {45,181},
+ {11,16}, {11,13}, {45,172}, {45,177}, {11,19}, {11,11}, {45,176}, {11,14},
+ {11,17}, {45,179}, {11,12}, {45,184}, {11,15}, {11,18}, {45,173}, {45,178},
+ {45,182}, {45,174}, {45,171}, {45,183}, {45,180}, {13,144}, {13,137},
+ {13,140}, {13,143}, {48,149}, {13,138}, {48,147}, {13,142}, {13,139},
+ {48,150}, {13,141}, {52,108}, {16,159}, {52,107}, {52,109}, {16,158},
+ {16,163}, {48,148}, {52,106}, {52,110}, {16,160}, {52,105}, {16,162},
+ {16,161}, {56,103}, {56,98}, {19,118}, {19,122}, {19,119}, {56,101},
+ {56,104}, {19,120}, {19,121}, {19,126}, {60,135}, {56,102}, {19,124},
+ {56,99}, {56,97}, {19,125}, {56,100}, {22,57}, {60,127}, {22,54}, {22,55},
+ {22,53}, {60,132}, {60,131}, {60,128}, {22,59}, {60,130}, {19,123},
+ {60,134}, {60,129}, {22,56}, {22,52}, {22,58}, {60,133}, {25,28}, {64,184},
+ {64,183}, {64,182}, {25,26}, {25,27}, {68,133}, {68,136}, {27,136},
+ {27,135}, {68,137}, {68,132}, {27,138}, {68,134}, {27,137}, {68,131},
+ {68,135}, {29,169}, {29,166}, {72,123}, {72,122}, {72,121}, {72,116},
+ {72,117}, {29,167}, {29,164}, {29,168}, {72,115}, {29,165}, {72,118},
+ {72,119}, {72,124}, {72,120}, {75,178}, {31,135}, {78,156}, {31,134},
+ {78,154}, {78,155}, {33,32}, {34,46}, {81,11}, {34,45}, {83,17}, {83,18},
+ {35,38}, {83,16}, {35,164}, {86,159}, {36,142}, {87,106}, {87,107},
+ {3,170}, {5,113}, {5,114}, {6,179}, {43,145}, {11,20}, {13,145}, {16,164},
+ {15,146}, {19,127}, {19,128}, {18,140}, {56,105}, {22,60}, {64,186},
+ {64,185}, {3,171}, {5,115}, {43,146}, {9,2}, {9,1}, {45,185}, {45,186},
+ {48,151}, {48,152}, {13,146}, {13,147}, {13,148}, {52,111}, {16,166},
+ {19,130}, {19,129}, {60,136}, {62,58}, {64,187}, {72,125}, {33,33},
+ {35,39}, {3,172}, {4,124}, {4,125}, {4,123}, {4,126}, {4,122}, {5,118},
+ {40,182}, {5,117}, {5,119}, {40,177}, {40,176}, {40,179}, {40,178},
+ {40,181}, {5,116}, {40,175}, {40,180}, {41,189}, {6,189}, {41,190},
+ {42,3}, {6,188}, {42,7}, {42,2}, {42,5}, {6,181}, {6,182}, {6,183},
+ {6,184}, {7,0}, {42,1}, {6,186}, {7,1}, {42,0}, {42,6}, {6,185}, {42,4},
+ {6,187}, {6,180}, {6,190}, {9,23}, {43,148}, {9,3}, {9,13}, {9,14},
+ {9,6}, {9,24}, {9,8}, {43,156}, {9,19}, {43,151}, {9,9}, {43,166},
+ {43,167}, {43,159}, {43,152}, {9,22}, {43,164}, {9,17}, {9,15}, {43,165},
+ {43,163}, {43,155}, {43,147}, {43,154}, {9,10}, {9,16}, {9,4}, {43,158},
+ {43,157}, {43,149}, {9,18}, {43,161}, {43,150}, {9,21}, {43,168}, {9,5},
+ {9,12}, {43,153}, {43,162}, {9,20}, {9,7}, {9,11}, {43,160}, {46,27},
+ {11,28}, {11,41}, {46,22}, {46,12}, {11,34}, {46,10}, {11,27}, {46,5},
+ {11,37}, {46,18}, {45,190}, {46,1}, {46,4}, {45,187}, {46,17}, {46,33},
+ {11,32}, {46,6}, {46,24}, {45,189}, {46,31}, {46,32}, {46,35}, {46,26},
+ {46,11}, {46,19}, {11,38}, {11,25}, {11,33}, {11,45}, {11,22}, {11,24},
+ {46,3}, {11,42}, {11,35}, {46,29}, {46,0}, {11,44}, {11,39}, {46,9},
+ {11,43}, {46,16}, {46,8}, {11,36}, {46,28}, {46,20}, {11,30}, {46,34},
+ {46,7}, {11,26}, {46,25}, {46,15}, {11,31}, {46,21}, {11,23}, {45,188},
+ {11,40}, {13,163}, {11,29}, {46,14}, {46,13}, {46,2}, {46,30}, {46,23},
+ {11,21}, {48,172}, {13,170}, {48,173}, {48,161}, {13,159}, {13,171},
+ {48,154}, {48,163}, {48,171}, {48,153}, {48,180}, {13,149}, {48,179},
+ {48,174}, {48,175}, {13,157}, {13,168}, {48,165}, {48,166}, {48,176},
+ {48,167}, {48,162}, {48,156}, {48,157}, {48,170}, {48,164}, {13,150},
+ {13,154}, {48,178}, {48,158}, {13,166}, {13,162}, {13,165}, {13,172},
+ {13,155}, {13,167}, {48,169}, {13,169}, {13,152}, {13,151}, {48,155},
+ {48,159}, {13,160}, {48,177}, {48,168}, {48,160}, {13,164}, {13,161},
+ {13,153}, {13,156}, {52,132}, {52,116}, {52,117}, {52,121}, {52,136},
+ {52,133}, {52,126}, {52,125}, {16,173}, {52,129}, {52,144}, {52,112},
+ {52,145}, {52,131}, {52,149}, {52,137}, {16,172}, {52,135}, {16,167},
+ {16,188}, {16,178}, {16,182}, {16,181}, {52,113}, {52,142}, {52,148},
+ {52,140}, {52,147}, {52,128}, {52,114}, {52,146}, {52,130}, {16,170},
+ {16,183}, {52,139}, {16,176}, {52,138}, {52,115}, {16,184}, {16,186},
+ {52,141}, {16,187}, {16,169}, {52,122}, {52,143}, {16,175}, {16,185},
+ {52,124}, {52,134}, {52,119}, {52,123}, {16,180}, {52,118}, {16,168},
+ {16,177}, {16,174}, {52,127}, {13,158}, {56,128}, {16,171}, {16,179},
+ {56,131}, {56,153}, {56,142}, {19,150}, {19,145}, {56,125}, {19,146},
+ {56,141}, {56,134}, {56,147}, {19,142}, {56,107}, {56,149}, {19,132},
+ {56,115}, {19,135}, {19,134}, {19,151}, {56,109}, {56,143}, {56,144},
+ {19,137}, {19,133}, {56,123}, {19,144}, {56,118}, {56,145}, {19,140},
+ {56,137}, {56,150}, {56,112}, {56,117}, {56,111}, {19,139}, {56,130},
+ {60,158}, {56,113}, {19,143}, {56,122}, {56,146}, {19,138}, {56,119},
+ {56,116}, {56,133}, {19,141}, {19,131}, {19,153}, {56,136}, {56,135},
+ {56,108}, {19,136}, {56,148}, {56,124}, {56,126}, {56,139}, {56,138},
+ {56,106}, {19,147}, {19,149}, {56,114}, {56,121}, {56,129}, {19,148},
+ {56,120}, {56,132}, {56,151}, {56,140}, {56,152}, {56,110}, {60,178},
+ {22,102}, {60,176}, {60,155}, {60,160}, {60,153}, {60,172}, {60,139},
+ {60,146}, {60,170}, {60,180}, {60,156}, {60,143}, {60,162}, {60,167},
+ {60,147}, {60,164}, {60,144}, {60,151}, {60,152}, {22,104}, {60,171},
+ {60,169}, {60,140}, {60,174}, {60,175}, {60,177}, {22,108}, {22,100},
+ {52,120}, {60,148}, {60,166}, {60,149}, {22,97}, {22,113}, {60,173},
+ {22,111}, {22,107}, {60,138}, {22,99}, {60,141}, {22,112}, {60,157},
+ {60,137}, {22,105}, {60,161}, {60,145}, {22,106}, {60,154}, {22,62},
+ {19,152}, {60,163}, {56,127}, {60,142}, {60,168}, {22,101}, {60,165},
+ {22,98}, {60,159}, {22,109}, {60,150}, {60,179}, {22,103}, {61,134},
+ {22,110}, {65,10}, {65,8}, {65,30}, {65,6}, {65,24}, {22,61}, {25,31},
+ {65,2}, {65,29}, {65,7}, {65,21}, {25,36}, {25,29}, {65,27}, {65,0},
+ {65,26}, {25,47}, {65,17}, {65,33}, {25,45}, {65,9}, {25,30}, {65,11},
+ {65,25}, {25,39}, {65,4}, {25,43}, {25,33}, {65,13}, {65,3}, {64,188},
+ {65,23}, {25,40}, {65,32}, {64,189}, {25,37}, {65,19}, {25,38}, {65,5},
+ {65,16}, {65,12}, {65,14}, {25,32}, {65,31}, {25,46}, {65,15}, {65,34},
+ {64,190}, {65,20}, {25,35}, {25,44}, {25,42}, {65,1}, {65,22}, {25,41},
+ {25,34}, {65,18}, {65,28}, {68,149}, {68,145}, {68,141}, {68,161},
+ {68,158}, {27,141}, {68,165}, {68,148}, {27,152}, {68,155}, {68,144},
+ {68,154}, {27,149}, {68,174}, {68,171}, {68,157}, {68,142}, {68,162},
+ {68,164}, {27,145}, {68,152}, {68,147}, {68,138}, {27,142}, {27,150},
+ {68,167}, {27,151}, {68,139}, {68,173}, {68,160}, {68,166}, {27,148},
+ {68,163}, {68,170}, {27,153}, {27,147}, {68,156}, {68,143}, {68,175},
+ {68,140}, {68,168}, {27,144}, {68,150}, {68,151}, {27,143}, {27,140},
+ {68,146}, {27,146}, {27,139}, {68,169}, {68,172}, {68,153}, {72,138},
+ {72,130}, {72,126}, {29,182}, {29,171}, {29,176}, {29,172}, {72,140},
+ {72,151}, {29,170}, {72,132}, {72,141}, {68,159}, {72,142}, {29,177},
+ {72,157}, {29,181}, {29,184}, {72,128}, {29,180}, {72,155}, {72,156},
+ {72,146}, {72,145}, {72,137}, {72,147}, {72,154}, {72,153}, {29,175},
+ {29,173}, {72,139}, {72,136}, {72,133}, {72,152}, {29,183}, {72,150},
+ {29,179}, {29,178}, {72,144}, {72,127}, {72,129}, {72,131}, {72,149},
+ {72,143}, {29,174}, {72,134}, {72,148}, {72,135}, {31,143}, {76,5},
+ {31,136}, {75,181}, {76,1}, {31,138}, {76,8}, {75,188}, {75,183}, {76,9},
+ {75,179}, {75,190}, {31,145}, {76,4}, {76,10}, {75,189}, {31,137},
+ {76,0}, {75,180}, {31,144}, {76,7}, {75,185}, {31,140}, {75,187}, {75,184},
+ {31,146}, {75,186}, {31,139}, {31,142}, {76,3}, {75,182}, {76,6}, {76,2},
+ {33,35}, {78,167}, {33,40}, {33,41}, {33,34}, {78,166}, {78,163}, {78,164},
+ {33,38}, {78,158}, {78,162}, {33,37}, {78,159}, {33,39}, {33,36}, {78,157},
+ {78,161}, {78,165}, {81,17}, {81,14}, {81,23}, {81,22}, {81,20}, {81,15},
+ {34,50}, {81,16}, {34,49}, {31,141}, {81,19}, {34,48}, {81,24}, {81,18},
+ {81,13}, {78,160}, {34,47}, {81,12}, {83,22}, {83,21}, {81,21}, {35,40},
+ {83,25}, {83,26}, {83,20}, {83,24}, {83,19}, {84,145}, {83,23}, {35,167},
+ {35,165}, {84,143}, {84,146}, {84,142}, {84,144}, {35,166}, {85,165},
+ {85,166}, {36,54}, {85,164}, {86,162}, {36,143}, {86,160}, {86,161},
+ {87,108}, {37,22}, {87,179}, {87,177}, {87,178}, {87,180}, {88,123},
+ {3,173}, {5,120}, {9,25}, {43,169}, {46,36}, {48,181}, {48,183}, {48,182},
+ {48,184}, {16,189}, {52,151}, {48,185}, {52,150}, {52,152}, {52,153},
+ {56,154}, {19,155}, {56,155}, {56,157}, {19,156}, {19,154}, {56,156},
+ {60,186}, {60,184}, {60,183}, {60,182}, {60,181}, {22,114}, {60,185},
+ {25,48}, {65,35}, {65,37}, {25,49}, {65,36}, {27,155}, {27,154}, {68,176},
+ {72,159}, {72,158}, {72,160}, {29,185}, {76,11}, {31,147}, {78,168},
+ {33,42}, {81,25}, {36,55}, {3,174}, {4,127}, {5,121}, {7,2}, {9,26},
+ {9,27}, {11,46}, {48,186}, {22,115}, {69,145}, {29,186}, {33,43}, {3,175},
+ {5,122}, {43,171}, {9,28}, {43,170}, {46,37}, {11,47}, {46,38}, {11,48},
+ {48,188}, {13,174}, {13,173}, {52,158}, {52,156}, {52,157}, {52,155},
+ {52,154}, {56,158}, {56,161}, {19,158}, {56,159}, {19,157}, {56,160},
+ {60,187}, {65,38}, {65,39}, {65,40}, {68,179}, {68,178}, {27,156},
+ {68,177}, {68,180}, {72,161}, {72,162}, {72,163}, {76,12}, {31,148},
+ {33,44}, {81,26}, {35,168}, {40,31}, {11,49}, {46,39}, {13,175}, {16,190},
+ {19,159}, {56,162}, {22,117}, {22,116}, {65,41}, {65,42}, {27,157},
+ {27,158}, {72,165}, {72,164}, {78,169}, {86,163}, {3,176}, {40,32},
+ {4,128}, {7,3}, {42,8}, {11,50}, {22,118}, {3,177}, {46,40}, {11,51},
+ {46,41}, {31,149}, {3,178}, {43,172}, {46,42}, {49,2}, {49,1}, {48,190},
+ {48,189}, {49,3}, {49,0}, {17,0}, {17,1}, {19,160}, {56,163}, {56,164},
+ {56,165}, {61,1}, {61,2}, {61,0}, {60,189}, {60,190}, {22,119}, {65,43},
+ {68,183}, {68,182}, {68,181}, {68,184}, {72,167}, {72,166}, {29,187},
+ {72,168}, {31,150}, {76,13}, {78,170}, {81,27}, {85,167}, {3,179},
+ {4,130}, {4,129}, {9,29}, {40,33}, {40,62}, {5,123}, {40,183}, {42,9},
+ {42,10}, {9,30}, {43,173}, {11,52}, {46,43}, {46,44}, {13,176}, {13,180},
+ {49,4}, {13,179}, {13,177}, {13,178}, {52,159}, {17,2}, {19,163}, {19,161},
+ {19,162}, {56,166}, {25,50}, {3,180}, {40,97}, {4,131}, {40,100}, {4,134},
+ {40,99}, {4,133}, {4,132}, {7,4}, {40,98}, {40,184}, {40,188}, {40,190},
+ {41,0}, {5,133}, {5,134}, {40,187}, {5,129}, {40,185}, {40,189}, {5,130},
+ {5,125}, {5,126}, {5,132}, {40,186}, {5,124}, {7,5}, {5,127}, {5,128},
+ {5,131}, {42,27}, {42,25}, {42,12}, {7,17}, {42,19}, {7,12}, {42,13},
+ {42,21}, {42,18}, {7,15}, {42,17}, {7,22}, {42,26}, {7,24}, {7,26},
+ {42,11}, {7,13}, {42,28}, {7,20}, {7,23}, {44,5}, {7,7}, {7,30}, {7,21},
+ {42,14}, {7,10}, {7,25}, {42,22}, {7,8}, {7,9}, {44,3}, {42,15}, {7,16},
+ {7,27}, {42,29}, {42,16}, {7,14}, {7,19}, {43,174}, {7,28}, {42,23},
+ {7,18}, {7,29}, {7,6}, {42,20}, {7,11}, {42,24}, {44,4}, {9,42}, {9,58},
+ {43,181}, {9,49}, {44,11}, {9,34}, {9,37}, {44,2}, {43,179}, {43,183},
+ {9,45}, {9,47}, {43,186}, {9,54}, {9,40}, {9,38}, {9,39}, {9,53}, {44,7},
+ {9,48}, {43,185}, {43,187}, {9,46}, {9,51}, {43,188}, {44,10}, {11,53},
+ {9,57}, {9,35}, {44,9}, {44,13}, {43,184}, {44,15}, {44,0}, {9,44},
+ {43,180}, {9,43}, {9,61}, {9,50}, {43,178}, {46,53}, {9,56}, {9,60},
+ {44,1}, {44,6}, {9,62}, {9,55}, {9,41}, {9,31}, {9,36}, {43,182}, {9,32},
+ {44,14}, {43,176}, {43,175}, {43,189}, {43,177}, {9,59}, {13,181},
+ {9,52}, {43,190}, {9,33}, {11,102}, {44,12}, {46,60}, {46,97}, {46,100},
+ {46,55}, {46,103}, {46,106}, {46,108}, {46,52}, {11,54}, {11,59}, {49,9},
+ {11,109}, {46,101}, {46,109}, {46,59}, {46,51}, {49,36}, {11,62}, {46,98},
+ {46,56}, {46,58}, {11,101}, {46,61}, {11,61}, {46,48}, {46,104}, {46,107},
+ {11,58}, {11,104}, {46,45}, {11,106}, {11,56}, {11,110}, {46,105},
+ {46,47}, {11,107}, {49,30}, {44,8}, {11,60}, {11,55}, {46,54}, {46,46},
+ {11,108}, {11,100}, {46,99}, {11,105}, {11,103}, {46,57}, {11,97},
+ {46,49}, {11,98}, {11,99}, {46,50}, {46,102}, {11,57}, {46,62}, {49,12},
+ {13,189}, {14,3}, {49,21}, {49,27}, {49,23}, {49,10}, {49,13}, {49,6},
+ {49,7}, {14,10}, {13,186}, {49,22}, {49,31}, {14,5}, {13,182}, {14,0},
+ {49,14}, {14,2}, {49,15}, {49,25}, {14,4}, {49,40}, {49,8}, {13,188},
+ {13,187}, {14,8}, {49,5}, {49,38}, {49,26}, {49,39}, {49,33}, {49,19},
+ {49,34}, {49,28}, {49,37}, {49,35}, {14,9}, {49,20}, {13,185}, {13,184},
+ {14,1}, {14,7}, {49,32}, {14,6}, {49,17}, {17,3}, {49,41}, {49,16},
+ {49,11}, {13,190}, {14,11}, {13,183}, {49,24}, {49,29}, {17,37}, {52,161},
+ {52,165}, {17,18}, {17,16}, {17,7}, {52,163}, {52,162}, {17,27}, {52,168},
+ {17,21}, {52,186}, {53,7}, {17,4}, {52,183}, {52,176}, {17,39}, {52,160},
+ {52,188}, {17,36}, {17,24}, {17,35}, {17,14}, {52,172}, {52,190}, {52,182},
+ {17,15}, {17,9}, {53,5}, {52,189}, {53,0}, {17,17}, {17,25}, {53,2},
+ {52,170}, {52,187}, {52,175}, {53,4}, {17,30}, {17,6}, {17,28}, {52,180},
+ {52,178}, {52,179}, {17,19}, {52,174}, {52,173}, {17,8}, {52,167},
+ {53,6}, {17,10}, {52,177}, {17,40}, {17,34}, {52,166}, {17,31}, {17,29},
+ {17,38}, {52,184}, {17,33}, {49,18}, {52,185}, {17,32}, {53,1}, {17,5},
+ {52,181}, {17,23}, {52,169}, {17,22}, {17,20}, {17,12}, {17,11}, {56,167},
+ {53,3}, {52,171}, {56,188}, {17,13}, {20,1}, {17,26}, {19,174}, {56,182},
+ {19,188}, {56,170}, {19,171}, {19,167}, {57,9}, {19,173}, {19,177},
+ {19,172}, {19,181}, {57,13}, {57,4}, {56,177}, {19,186}, {19,180},
+ {56,189}, {19,164}, {57,10}, {57,3}, {19,168}, {56,183}, {19,183},
+ {57,21}, {57,22}, {19,165}, {57,8}, {19,185}, {56,187}, {56,173}, {56,174},
+ {19,189}, {56,178}, {56,185}, {56,179}, {19,187}, {20,4}, {56,175},
+ {56,168}, {56,169}, {56,171}, {19,170}, {56,184}, {19,184}, {20,2},
+ {56,186}, {57,19}, {57,11}, {19,166}, {57,17}, {19,178}, {19,176},
+ {57,23}, {19,175}, {57,1}, {56,180}, {56,190}, {20,7}, {57,5}, {57,2},
+ {56,176}, {20,3}, {57,15}, {57,12}, {57,20}, {19,169}, {57,0}, {20,6},
+ {57,7}, {19,179}, {19,182}, {57,6}, {20,5}, {56,181}, {52,164}, {57,16},
+ {57,14}, {57,18}, {56,172}, {20,0}, {61,33}, {61,32}, {61,6}, {22,125},
+ {61,31}, {61,9}, {61,10}, {22,135}, {61,40}, {22,130}, {61,30}, {61,3},
+ {22,136}, {22,126}, {61,18}, {61,8}, {61,11}, {61,35}, {22,120}, {61,42},
+ {61,34}, {22,129}, {61,23}, {22,140}, {22,139}, {22,133}, {61,41},
+ {22,121}, {61,21}, {61,12}, {61,25}, {61,37}, {22,141}, {22,123}, {61,20},
+ {61,13}, {22,132}, {22,131}, {61,16}, {61,26}, {61,36}, {61,7}, {61,17},
+ {22,124}, {61,27}, {22,137}, {22,128}, {61,14}, {22,127}, {61,5}, {61,19},
+ {61,39}, {19,190}, {25,112}, {61,22}, {65,44}, {61,24}, {61,38}, {22,134},
+ {61,15}, {22,122}, {22,138}, {27,176}, {61,4}, {61,29}, {61,28}, {65,106},
+ {25,109}, {65,61}, {65,100}, {25,98}, {65,46}, {25,111}, {25,55}, {65,45},
+ {65,112}, {25,113}, {65,49}, {65,99}, {65,51}, {65,115}, {65,111},
+ {25,53}, {25,97}, {69,19}, {25,110}, {25,61}, {65,47}, {65,110}, {25,99},
+ {65,107}, {65,120}, {65,53}, {65,62}, {65,118}, {65,108}, {25,60},
+ {65,60}, {25,54}, {25,52}, {25,104}, {65,58}, {65,55}, {65,56}, {65,114},
+ {65,119}, {65,117}, {25,58}, {65,121}, {25,62}, {25,103}, {65,48},
+ {68,186}, {65,57}, {25,56}, {25,108}, {25,105}, {25,59}, {65,101},
+ {65,52}, {25,106}, {65,103}, {25,100}, {25,102}, {25,51}, {65,105},
+ {65,97}, {65,50}, {25,101}, {65,113}, {65,116}, {65,59}, {65,104},
+ {25,57}, {27,159}, {65,102}, {68,185}, {65,109}, {65,54}, {69,4}, {69,14},
+ {27,162}, {69,13}, {69,25}, {27,164}, {69,11}, {69,15}, {27,175}, {69,6},
+ {27,167}, {69,18}, {72,176}, {27,179}, {27,178}, {69,20}, {69,3}, {69,30},
+ {27,173}, {27,163}, {69,23}, {69,27}, {69,32}, {69,21}, {69,9}, {27,166},
+ {27,169}, {27,177}, {27,172}, {69,12}, {65,98}, {69,8}, {69,31}, {27,168},
+ {27,171}, {69,33}, {27,160}, {69,22}, {68,187}, {69,28}, {31,159},
+ {69,10}, {27,161}, {69,5}, {27,165}, {68,188}, {25,107}, {69,1}, {69,26},
+ {69,2}, {69,0}, {27,170}, {69,24}, {68,190}, {69,17}, {69,16}, {69,29},
+ {69,7}, {27,174}, {72,179}, {30,9}, {29,190}, {73,0}, {72,171}, {30,1},
+ {72,183}, {30,8}, {30,3}, {72,181}, {76,15}, {72,187}, {73,2}, {72,186},
+ {72,169}, {72,184}, {73,4}, {73,6}, {29,189}, {73,5}, {30,4}, {30,10},
+ {30,7}, {72,190}, {30,6}, {72,185}, {72,173}, {72,178}, {72,189}, {30,5},
+ {30,2}, {29,188}, {30,0}, {72,177}, {68,189}, {72,172}, {72,175}, {73,1},
+ {72,180}, {72,170}, {76,14}, {73,3}, {72,174}, {72,188}, {76,17}, {31,163},
+ {31,151}, {31,155}, {76,19}, {76,25}, {76,23}, {31,153}, {31,154},
+ {31,161}, {76,26}, {76,18}, {31,156}, {76,22}, {76,21}, {76,27}, {31,162},
+ {31,157}, {31,160}, {76,20}, {31,164}, {31,158}, {31,165}, {31,152},
+ {76,24}, {76,16}, {78,183}, {33,49}, {78,180}, {78,182}, {33,47}, {78,178},
+ {78,179}, {78,174}, {72,182}, {78,175}, {33,48}, {78,171}, {33,45},
+ {78,184}, {33,46}, {78,172}, {78,173}, {78,177}, {33,51}, {33,50},
+ {78,176}, {34,56}, {81,31}, {81,37}, {34,57}, {81,28}, {34,54}, {34,51},
+ {81,39}, {34,55}, {34,52}, {81,30}, {81,33}, {81,34}, {81,35}, {81,38},
+ {78,181}, {81,29}, {34,53}, {81,36}, {81,40}, {81,32}, {83,29}, {35,42},
+ {83,32}, {35,43}, {83,40}, {83,31}, {83,28}, {83,30}, {83,34}, {83,37},
+ {83,36}, {83,39}, {83,27}, {35,41}, {83,35}, {83,38}, {83,41}, {83,33},
+ {84,147}, {84,148}, {84,152}, {84,153}, {84,150}, {84,151}, {84,149},
+ {35,169}, {36,56}, {85,171}, {85,168}, {85,169}, {85,170}, {36,57},
+ {86,165}, {86,164}, {87,111}, {36,180}, {87,109}, {87,112}, {87,110},
+ {87,181}, {37,23}, {37,37}, {88,99}, {88,44}, {88,98}, {88,144}, {88,145},
+ {3,181}, {5,135}, {41,1}, {42,30}, {7,31}, {7,34}, {42,31}, {7,32},
+ {7,33}, {44,24}, {44,26}, {44,21}, {44,18}, {44,20}, {9,100}, {9,98},
+ {44,22}, {9,99}, {44,19}, {44,16}, {9,97}, {44,23}, {44,17}, {9,101},
+ {44,25}, {46,111}, {46,115}, {11,119}, {46,118}, {11,111}, {11,114},
+ {11,116}, {11,118}, {11,115}, {46,114}, {46,113}, {11,113}, {46,116},
+ {46,117}, {46,110}, {11,117}, {11,112}, {46,112}, {49,55}, {49,56},
+ {49,57}, {14,16}, {14,12}, {49,46}, {49,54}, {49,59}, {14,17}, {49,44},
+ {49,50}, {49,43}, {49,53}, {49,49}, {14,13}, {14,15}, {49,58}, {49,42},
+ {49,45}, {49,51}, {49,52}, {49,60}, {49,48}, {14,14}, {17,45}, {53,14},
+ {53,16}, {53,12}, {53,24}, {53,10}, {53,23}, {17,41}, {53,8}, {57,27},
+ {53,18}, {17,44}, {53,19}, {53,22}, {53,26}, {53,15}, {53,20}, {17,42},
+ {17,43}, {53,25}, {53,13}, {53,9}, {53,27}, {53,17}, {53,21}, {53,11},
+ {20,8}, {20,9}, {57,37}, {20,15}, {57,25}, {57,34}, {57,24}, {20,12},
+ {57,32}, {57,30}, {57,31}, {20,10}, {57,35}, {57,28}, {57,26}, {20,11},
+ {57,29}, {57,33}, {20,13}, {57,36}, {61,48}, {61,55}, {61,57}, {61,97},
+ {22,154}, {61,43}, {22,146}, {61,58}, {22,151}, {61,98}, {22,142},
+ {61,61}, {61,45}, {61,62}, {61,44}, {22,156}, {61,56}, {22,143}, {61,99},
+ {22,148}, {61,49}, {22,153}, {61,60}, {61,47}, {61,54}, {61,50}, {61,46},
+ {22,145}, {22,152}, {22,150}, {22,147}, {22,155}, {22,144}, {61,53},
+ {22,149}, {20,14}, {61,59}, {61,51}, {61,52}, {65,129}, {25,116}, {65,125},
+ {65,131}, {65,127}, {25,118}, {65,126}, {65,130}, {65,122}, {65,124},
+ {25,117}, {65,128}, {65,123}, {25,119}, {25,114}, {65,132}, {25,115},
+ {69,39}, {69,36}, {69,48}, {69,42}, {69,44}, {27,180}, {69,38}, {69,46},
+ {69,45}, {69,43}, {69,49}, {27,183}, {69,40}, {69,47}, {27,181}, {69,35},
+ {69,37}, {27,182}, {69,34}, {69,50}, {69,41}, {73,10}, {30,17}, {73,21},
+ {73,19}, {30,11}, {73,9}, {73,12}, {73,13}, {73,8}, {30,21}, {30,22},
+ {73,7}, {73,22}, {73,17}, {30,15}, {30,12}, {73,16}, {73,14}, {30,18},
+ {73,18}, {30,13}, {30,14}, {73,15}, {30,16}, {73,11}, {73,20}, {30,19},
+ {73,23}, {73,24}, {30,20}, {31,167}, {31,174}, {76,28}, {76,34}, {76,32},
+ {31,170}, {31,169}, {31,166}, {76,30}, {31,172}, {31,171}, {31,168},
+ {76,33}, {76,29}, {76,31}, {31,173}, {33,55}, {78,187}, {33,52}, {33,53},
+ {78,189}, {33,54}, {78,186}, {78,185}, {81,44}, {78,188}, {81,45},
+ {34,58}, {81,43}, {81,42}, {81,41}, {34,59}, {35,44}, {83,42}, {83,43},
+ {84,156}, {84,155}, {35,170}, {84,154}, {85,172}, {85,173}, {86,166},
+ {87,113}, {87,182}, {88,124}, {37,57}, {88,134}, {3,182}, {9,102},
+ {9,103}, {11,120}, {31,175}, {3,183}, {9,104}, {14,18}, {22,157}, {3,184},
+ {17,46}, {25,120}, {40,34}, {46,119}, {49,61}, {65,133}, {31,176},
+ {3,185}, {9,105}, {46,120}, {46,121}, {57,38}, {20,16}, {61,100}, {22,158},
+ {65,134}, {27,184}, {34,60}, {3,186}, {57,39}, {3,187}, {5,137}, {41,2},
+ {5,136}, {7,37}, {7,36}, {7,35}, {42,32}, {9,106}, {9,107}, {44,27},
+ {46,122}, {46,125}, {11,122}, {46,123}, {11,121}, {46,124}, {11,123},
+ {49,98}, {49,97}, {49,62}, {14,19}, {53,29}, {53,30}, {17,47}, {53,28},
+ {53,31}, {20,18}, {17,48}, {20,17}, {57,43}, {57,42}, {57,40}, {57,41},
+ {57,44}, {61,102}, {61,101}, {61,105}, {61,104}, {61,103}, {25,121},
+ {65,137}, {65,136}, {25,122}, {65,135}, {69,51}, {69,52}, {27,185},
+ {73,25}, {73,26}, {81,50}, {34,61}, {81,49}, {81,48}, {81,46}, {81,47},
+ {35,171}, {83,44}, {85,174}, {87,183}, {3,188}, {40,101}, {4,135},
+ {40,102}, {41,3}, {41,4}, {42,38}, {42,34}, {42,33}, {9,108}, {42,37},
+ {7,39}, {42,35}, {7,38}, {42,39}, {42,36}, {44,31}, {46,126}, {44,29},
+ {44,36}, {9,109}, {9,112}, {44,37}, {44,33}, {44,34}, {44,28}, {9,111},
+ {44,30}, {9,110}, {44,35}, {44,32}, {46,130}, {11,125}, {11,126}, {46,133},
+ {46,127}, {46,132}, {46,128}, {11,124}, {46,131}, {46,129}, {49,104},
+ {49,101}, {49,103}, {14,24}, {14,23}, {14,21}, {49,100}, {49,105},
+ {14,20}, {14,22}, {49,102}, {53,39}, {49,99}, {49,106}, {53,34}, {53,38},
+ {53,37}, {57,46}, {57,57}, {53,40}, {53,35}, {57,45}, {17,52}, {17,51},
+ {53,33}, {53,36}, {17,53}, {17,50}, {17,49}, {53,32}, {53,41}, {57,48},
+ {57,55}, {20,20}, {57,54}, {57,51}, {20,22}, {57,53}, {57,47}, {57,49},
+ {57,52}, {57,50}, {20,21}, {57,56}, {20,19}, {22,159}, {61,109}, {61,108},
+ {61,106}, {22,162}, {22,161}, {61,110}, {61,107}, {65,138}, {25,123},
+ {22,160}, {61,112}, {61,111}, {65,141}, {65,139}, {27,186}, {25,124},
+ {65,140}, {69,54}, {27,187}, {69,53}, {69,62}, {69,61}, {69,59}, {69,58},
+ {69,55}, {69,56}, {69,57}, {69,60}, {69,97}, {73,31}, {73,28}, {73,29},
+ {30,23}, {73,27}, {73,33}, {73,32}, {73,30}, {76,36}, {76,37}, {31,177},
+ {31,178}, {76,35}, {33,57}, {78,190}, {33,56}, {34,62}, {34,97}, {35,45},
+ {83,46}, {83,45}, {84,157}, {85,175}, {36,58}, {86,168}, {86,167},
+ {86,169}, {4,136}, {46,134}, {14,25}, {17,54}, {53,42}, {4,137}, {40,103},
+ {3,189}, {41,5}, {42,44}, {42,42}, {42,43}, {42,40}, {7,40}, {42,41},
+ {44,45}, {9,115}, {44,43}, {44,39}, {44,42}, {44,38}, {9,117}, {44,41},
+ {9,114}, {9,113}, {9,116}, {44,44}, {44,40}, {11,130}, {11,133}, {46,142},
+ {46,141}, {46,140}, {11,127}, {46,149}, {46,139}, {11,129}, {49,111},
+ {46,146}, {46,144}, {11,132}, {46,136}, {46,147}, {46,138}, {46,148},
+ {46,145}, {46,137}, {11,128}, {46,150}, {46,135}, {11,131}, {49,116},
+ {49,107}, {49,118}, {49,110}, {49,121}, {49,122}, {49,108}, {49,120},
+ {49,117}, {49,115}, {49,119}, {14,31}, {14,29}, {49,113}, {49,109},
+ {49,112}, {49,123}, {49,114}, {14,30}, {46,143}, {14,26}, {14,28},
+ {53,56}, {53,45}, {53,43}, {53,44}, {53,51}, {53,52}, {53,48}, {17,59},
+ {53,53}, {53,50}, {53,47}, {17,57}, {53,46}, {17,55}, {17,58}, {53,49},
+ {53,57}, {14,27}, {17,56}, {53,55}, {53,54}, {17,60}, {57,62}, {57,97},
+ {20,32}, {57,103}, {57,105}, {57,98}, {20,26}, {57,102}, {57,101},
+ {20,27}, {20,33}, {20,34}, {57,104}, {20,24}, {57,61}, {57,59}, {57,99},
+ {57,58}, {20,31}, {57,60}, {57,100}, {57,106}, {20,25}, {20,30}, {20,28},
+ {20,29}, {20,23}, {22,169}, {61,119}, {22,168}, {61,123}, {61,113},
+ {61,124}, {61,114}, {61,115}, {61,125}, {61,122}, {61,120}, {61,121},
+ {61,117}, {61,116}, {61,126}, {22,165}, {61,118}, {22,170}, {22,164},
+ {22,171}, {22,172}, {22,167}, {22,166}, {65,142}, {25,126}, {25,125},
+ {65,147}, {27,188}, {25,127}, {25,129}, {65,148}, {22,163}, {25,128},
+ {65,144}, {65,146}, {65,143}, {65,145}, {69,107}, {69,106}, {69,103},
+ {28,0}, {73,34}, {28,1}, {69,102}, {27,190}, {69,104}, {69,101}, {69,98},
+ {69,105}, {69,99}, {69,100}, {27,189}, {76,41}, {73,38}, {73,37}, {73,39},
+ {76,38}, {30,26}, {73,35}, {30,24}, {30,28}, {30,27}, {73,36}, {73,40},
+ {30,25}, {76,45}, {31,181}, {33,58}, {31,182}, {31,179}, {76,42}, {76,40},
+ {76,43}, {76,46}, {31,180}, {76,44}, {76,39}, {79,2}, {79,5}, {81,53},
+ {79,0}, {83,47}, {79,6}, {34,98}, {79,4}, {33,59}, {79,1}, {79,3},
+ {79,7}, {81,54}, {81,52}, {34,99}, {81,51}, {35,46}, {35,173}, {85,177},
+ {35,172}, {85,179}, {85,176}, {85,178}, {36,144}, {87,114}, {4,138},
+ {44,46}, {49,124}, {49,125}, {17,61}, {61,127}, {30,29}, {34,100},
+ {36,59}, {87,115}, {4,139}, {44,47}, {1,32}, {46,151}, {46,152}, {49,126},
+ {49,127}, {17,62}, {17,97}, {57,107}, {61,130}, {61,129}, {61,128},
+ {65,149}, {65,150}, {65,151}, {25,130}, {69,109}, {69,108}, {73,41},
+ {30,30}, {30,31}, {76,50}, {76,47}, {76,48}, {76,49}, {79,9}, {79,8},
+ {33,60}, {81,55}, {84,158}, {4,140}, {11,134}, {17,98}, {61,131}, {4,141},
+ {49,128}, {17,99}, {20,35}, {20,36}, {4,142}, {4,143}, {41,6}, {7,42},
+ {7,41}, {11,135}, {46,153}, {57,108}, {4,144}, {4,145}, {4,146}, {4,147},
+ {7,43}, {7,44}, {42,46}, {42,45}, {9,118}, {44,50}, {44,48}, {44,49},
+ {46,154}, {46,155}, {11,139}, {11,137}, {11,138}, {11,136}, {14,32},
+ {14,36}, {14,35}, {49,129}, {14,34}, {14,33}, {49,130}, {17,102}, {53,59},
+ {53,58}, {17,100}, {17,101}, {20,38}, {20,37}, {57,110}, {57,109},
+ {17,103}, {22,173}, {61,133}, {22,174}, {61,132}, {65,152}, {69,110},
+ {28,2}, {73,42}, {76,51}, {34,102}, {34,101}, {36,60}, {4,148}, {44,51},
+ {17,104}, {65,153}, {25,131}, {42,47}, {42,48}, {44,52}, {9,120}, {9,121},
+ {9,119}, {11,143}, {11,144}, {11,141}, {11,142}, {46,156}, {46,157},
+ {11,140}, {49,131}, {14,40}, {14,41}, {17,107}, {49,137}, {14,46},
+ {14,44}, {49,138}, {49,133}, {14,43}, {14,42}, {14,37}, {49,136}, {49,135},
+ {49,132}, {14,45}, {49,134}, {14,38}, {14,39}, {17,108}, {53,97}, {53,98},
+ {17,109}, {53,60}, {53,62}, {53,100}, {53,99}, {53,61}, {17,105}, {17,106},
+ {57,118}, {20,43}, {20,42}, {57,112}, {20,40}, {57,115}, {20,44}, {57,116},
+ {20,45}, {57,113}, {20,39}, {20,41}, {57,117}, {57,114}, {57,111},
+ {61,146}, {61,135}, {22,176}, {22,179}, {22,178}, {22,183}, {22,182},
+ {61,147}, {61,145}, {61,138}, {61,142}, {61,141}, {22,180}, {61,144},
+ {61,140}, {61,148}, {61,139}, {22,181}, {22,175}, {22,177}, {61,137},
+ {65,155}, {25,135}, {65,159}, {25,134}, {65,156}, {25,133}, {61,136},
+ {61,143}, {65,158}, {25,136}, {65,160}, {65,157}, {65,154}, {69,113},
+ {69,117}, {69,119}, {69,115}, {69,114}, {69,112}, {28,5}, {28,3}, {28,8},
+ {28,9}, {69,116}, {28,6}, {69,111}, {28,7}, {25,132}, {69,118}, {28,4},
+ {73,44}, {73,43}, {73,51}, {73,45}, {73,50}, {73,47}, {30,32}, {73,49},
+ {30,33}, {30,34}, {73,48}, {73,46}, {31,184}, {76,52}, {31,183}, {76,55},
+ {76,53}, {76,54}, {31,185}, {79,13}, {33,97}, {79,14}, {33,61}, {79,15},
+ {33,62}, {79,12}, {79,16}, {79,10}, {34,103}, {81,56}, {34,104}, {35,47},
+ {79,11}, {35,48}, {35,174}, {84,159}, {36,62}, {85,180}, {36,61}, {86,170},
+ {36,181}, {36,182}, {88,140}, {11,145}, {46,158}, {20,46}, {20,47},
+ {4,149}, {5,138}, {41,7}, {42,49}, {7,45}, {9,122}, {11,146}, {11,147},
+ {11,148}, {53,102}, {49,139}, {14,47}, {17,110}, {53,101}, {57,120},
+ {20,49}, {57,119}, {20,48}, {61,149}, {28,10}, {69,123}, {69,120},
+ {69,121}, {69,122}, {76,56}, {79,17}, {83,49}, {83,48}, {85,181}, {4,150},
+ {44,53}, {14,48}, {20,50}, {61,150}, {65,161}, {28,11}, {73,52}, {79,18},
+ {83,50}, {4,151}, {9,123}, {11,151}, {46,159}, {11,152}, {11,150},
+ {11,149}, {49,140}, {14,49}, {14,50}, {14,51}, {17,112}, {53,103},
+ {17,111}, {57,121}, {17,113}, {20,51}, {61,151}, {22,184}, {22,185},
+ {25,137}, {25,138}, {28,12}, {30,36}, {73,53}, {30,35}, {76,57}, {31,186},
+ {79,19}, {83,51}, {4,152}, {7,46}, {44,56}, {44,55}, {9,124}, {44,54},
+ {9,125}, {44,57}, {46,165}, {11,155}, {11,154}, {46,167}, {46,166},
+ {11,159}, {11,158}, {11,153}, {46,161}, {46,162}, {46,163}, {11,160},
+ {46,160}, {11,156}, {46,164}, {11,157}, {49,143}, {49,147}, {49,145},
+ {49,144}, {49,148}, {49,149}, {49,150}, {49,142}, {49,141}, {14,53},
+ {14,54}, {49,151}, {49,146}, {53,112}, {49,152}, {14,55}, {14,52},
+ {53,106}, {53,105}, {53,107}, {53,108}, {53,110}, {53,109}, {53,114},
+ {17,117}, {17,114}, {17,118}, {53,104}, {17,119}, {53,113}, {17,116},
+ {53,111}, {17,115}, {57,124}, {57,126}, {57,122}, {57,123}, {57,127},
+ {57,129}, {57,130}, {57,125}, {57,128}, {20,52}, {61,155}, {61,160},
+ {61,152}, {61,156}, {61,161}, {61,157}, {22,186}, {23,3}, {22,189},
+ {61,153}, {61,154}, {25,142}, {23,6}, {22,190}, {23,4}, {22,188}, {61,159},
+ {23,5}, {61,158}, {23,1}, {22,187}, {23,2}, {61,162}, {65,166}, {65,168},
+ {23,0}, {65,163}, {25,140}, {65,169}, {25,141}, {65,167}, {65,162},
+ {65,165}, {65,170}, {25,139}, {65,164}, {28,14}, {69,127}, {69,126},
+ {28,17}, {28,15}, {69,124}, {28,13}, {69,125}, {28,16}, {73,61}, {73,97},
+ {73,62}, {73,54}, {73,58}, {73,57}, {73,55}, {30,38}, {30,39}, {30,37},
+ {73,56}, {73,59}, {73,60}, {30,40}, {32,0}, {76,99}, {31,188}, {76,59},
+ {31,190}, {32,1}, {31,189}, {76,98}, {76,60}, {31,187}, {76,97}, {76,58},
+ {76,62}, {76,61}, {79,21}, {33,100}, {33,101}, {33,98}, {33,99}, {79,20},
+ {81,59}, {34,105}, {81,57}, {81,58}, {83,52}, {83,55}, {83,53}, {83,54},
+ {84,160}, {35,175}, {86,171}, {87,116}, {36,183}, {87,184}, {87,185},
+ {37,38}, {4,153}, {11,161}, {57,131}, {61,163}, {4,154}, {7,47}, {9,126},
+ {46,168}, {46,169}, {14,56}, {57,132}, {20,53}, {23,7}, {32,2}, {76,100},
+ {81,60}, {83,56}, {4,155}, {44,97}, {44,58}, {44,60}, {44,62}, {44,61},
+ {44,59}, {9,127}, {11,162}, {46,178}, {46,173}, {46,170}, {46,177},
+ {11,164}, {11,165}, {46,176}, {46,175}, {46,174}, {46,171}, {46,172},
+ {46,179}, {11,163}, {14,60}, {14,100}, {14,99}, {49,161}, {49,155},
+ {49,153}, {14,97}, {53,121}, {14,58}, {49,158}, {49,162}, {49,164},
+ {49,160}, {49,154}, {14,98}, {49,159}, {49,157}, {14,57}, {49,165},
+ {14,101}, {49,163}, {14,61}, {49,156}, {14,62}, {14,59}, {17,121},
+ {53,122}, {53,115}, {53,117}, {53,119}, {53,120}, {53,118}, {17,122},
+ {53,123}, {53,116}, {57,136}, {20,54}, {57,144}, {57,133}, {57,145},
+ {57,134}, {57,135}, {57,143}, {57,142}, {57,139}, {17,120}, {20,55},
+ {57,137}, {57,140}, {20,56}, {57,141}, {57,138}, {61,174}, {61,178},
+ {23,14}, {65,176}, {23,17}, {61,176}, {61,173}, {61,168}, {61,170},
+ {61,171}, {61,164}, {23,13}, {23,12}, {23,8}, {61,167}, {23,15}, {23,16},
+ {61,166}, {61,169}, {61,177}, {23,10}, {23,11}, {61,175}, {61,165},
+ {65,178}, {25,144}, {65,180}, {61,172}, {65,182}, {25,148}, {65,183},
+ {65,179}, {25,145}, {65,175}, {25,147}, {65,172}, {65,177}, {65,181},
+ {65,174}, {23,9}, {65,171}, {25,146}, {65,173}, {28,20}, {69,129},
+ {28,24}, {28,22}, {25,143}, {69,136}, {69,137}, {28,19}, {69,135},
+ {69,138}, {28,21}, {28,18}, {69,131}, {69,128}, {69,133}, {69,130},
+ {28,25}, {69,132}, {69,134}, {28,23}, {30,42}, {73,104}, {73,98}, {73,102},
+ {73,108}, {73,109}, {73,105}, {73,106}, {73,103}, {73,100}, {30,44},
+ {30,41}, {73,99}, {73,101}, {30,43}, {73,107}, {32,6}, {76,106}, {76,101},
+ {32,5}, {32,3}, {76,108}, {32,4}, {76,104}, {76,105}, {76,102}, {76,109},
+ {79,22}, {32,7}, {76,103}, {76,110}, {76,107}, {79,26}, {79,23}, {33,102},
+ {79,27}, {79,29}, {79,28}, {79,24}, {79,25}, {81,99}, {34,106}, {81,62},
+ {81,98}, {81,61}, {81,100}, {81,97}, {83,58}, {83,61}, {83,57}, {35,49},
+ {83,59}, {83,60}, {83,62}, {35,50}, {35,52}, {35,51}, {84,161}, {84,163},
+ {84,162}, {85,182}, {87,117}, {87,186}, {4,156}, {42,50}, {9,128},
+ {44,99}, {9,129}, {9,130}, {44,98}, {46,184}, {46,183}, {11,166}, {11,169},
+ {11,168}, {11,167}, {46,180}, {46,182}, {46,181}, {49,168}, {14,103},
+ {49,172}, {49,171}, {49,170}, {49,166}, {14,102}, {14,106}, {14,109},
+ {14,110}, {49,167}, {49,169}, {14,108}, {14,107}, {14,105}, {14,104},
+ {53,130}, {53,128}, {53,124}, {17,123}, {53,125}, {17,124}, {53,126},
+ {53,127}, {53,129}, {17,125}, {57,149}, {57,148}, {57,147}, {57,146},
+ {61,182}, {23,18}, {61,179}, {61,181}, {23,19}, {23,20}, {61,180},
+ {66,1}, {65,185}, {65,186}, {25,151}, {25,149}, {25,150}, {66,3}, {66,2},
+ {65,190}, {65,189}, {65,188}, {65,187}, {66,0}, {65,184}, {69,139},
+ {69,144}, {69,142}, {69,141}, {69,140}, {69,143}, {73,110}, {30,45},
+ {32,8}, {76,112}, {32,9}, {76,111}, {79,31}, {79,30}, {33,103}, {81,101},
+ {34,107}, {83,97}, {36,97}, {85,183}, {87,119}, {87,118}, {40,104},
+ {11,170}, {11,171}, {53,131}, {23,22}, {4,157}, {7,50}, {7,49}, {7,48},
+ {44,100}, {9,132}, {9,131}, {11,174}, {46,186}, {46,189}, {46,187},
+ {11,172}, {11,173}, {46,185}, {46,188}, {14,117}, {49,179}, {49,181},
+ {49,180}, {14,114}, {49,175}, {14,112}, {14,111}, {14,115}, {14,113},
+ {14,116}, {49,178}, {49,173}, {49,174}, {49,177}, {49,176}, {53,134},
+ {53,135}, {53,133}, {53,132}, {17,126}, {20,61}, {57,150}, {57,152},
+ {57,154}, {20,60}, {20,58}, {57,151}, {20,59}, {57,153}, {20,57}, {62,1},
+ {61,183}, {61,186}, {61,190}, {23,26}, {61,188}, {61,187}, {61,184},
+ {61,185}, {23,24}, {62,0}, {23,23}, {23,28}, {23,27}, {23,25}, {61,189},
+ {66,9}, {66,8}, {66,4}, {25,152}, {66,7}, {66,6}, {25,153}, {28,30},
+ {69,146}, {28,31}, {28,27}, {28,29}, {28,26}, {28,28}, {73,111}, {30,48},
+ {73,113}, {73,112}, {66,5}, {30,50}, {30,49}, {30,46}, {30,47}, {76,117},
+ {76,115}, {32,10}, {76,116}, {76,118}, {76,114}, {76,113}, {79,32},
+ {33,106}, {33,104}, {33,105}, {81,102}, {81,103}, {34,109}, {34,108},
+ {83,99}, {83,100}, {83,98}, {85,184}, {85,185}, {4,158}, {41,8}, {7,51},
+ {44,101}, {9,134}, {9,133}, {44,102}, {47,0}, {11,175}, {46,190}, {11,176},
+ {14,118}, {49,184}, {49,182}, {49,188}, {14,119}, {49,183}, {49,187},
+ {49,185}, {49,186}, {53,136}, {53,138}, {17,127}, {53,137}, {17,128},
+ {20,98}, {20,97}, {20,62}, {57,155}, {62,4}, {23,29}, {23,30}, {62,3},
+ {62,2}, {66,10}, {25,155}, {25,154}, {66,11}, {66,12}, {28,33}, {28,32},
+ {73,117}, {69,147}, {69,149}, {69,148}, {73,116}, {73,114}, {73,118},
+ {73,115}, {30,51}, {76,119}, {32,11}, {76,120}, {76,121}, {33,107},
+ {33,108}, {35,53}, {36,145}, {4,159}, {47,1}, {49,189}, {14,120}, {18,122},
+ {18,121}, {20,100}, {57,157}, {20,99}, {57,156}, {62,5}, {25,156},
+ {66,13}, {25,157}, {35,54}, {83,101}, {5,139}, {9,135}, {44,103}, {11,178},
+ {11,177}, {47,2}, {47,3}, {50,0}, {50,2}, {14,121}, {50,4}, {50,7},
+ {50,5}, {50,6}, {50,3}, {49,190}, {14,122}, {50,8}, {50,1}, {53,147},
+ {17,134}, {53,156}, {17,131}, {53,149}, {17,135}, {17,129}, {53,144},
+ {53,157}, {53,145}, {53,142}, {17,133}, {17,130}, {53,148}, {53,151},
+ {17,132}, {53,152}, {17,136}, {53,153}, {53,143}, {53,150}, {53,154},
+ {53,146}, {53,141}, {53,139}, {53,155}, {57,159}, {57,164}, {57,160},
+ {57,166}, {20,103}, {53,140}, {57,161}, {20,101}, {57,158}, {20,108},
+ {57,162}, {20,107}, {57,163}, {20,109}, {20,104}, {20,110}, {20,105},
+ {20,106}, {20,102}, {57,165}, {23,33}, {62,16}, {62,19}, {62,7}, {62,12},
+ {62,6}, {23,35}, {62,10}, {62,8}, {23,34}, {62,15}, {62,14}, {62,11},
+ {62,13}, {62,9}, {25,161}, {62,18}, {23,31}, {62,17}, {66,29}, {25,168},
+ {66,24}, {25,167}, {66,14}, {66,16}, {25,160}, {66,21}, {66,20}, {66,23},
+ {25,165}, {66,18}, {66,17}, {25,164}, {25,159}, {66,19}, {25,162},
+ {66,25}, {66,27}, {66,22}, {66,15}, {25,163}, {28,41}, {25,158}, {66,28},
+ {69,153}, {28,34}, {69,155}, {28,35}, {28,37}, {69,158}, {69,150},
+ {25,166}, {69,156}, {69,152}, {23,32}, {28,40}, {28,36}, {28,38}, {28,39},
+ {30,54}, {69,157}, {69,151}, {28,42}, {69,154}, {73,128}, {73,123},
+ {73,133}, {30,52}, {73,125}, {30,56}, {73,131}, {73,122}, {73,119},
+ {73,134}, {32,17}, {30,57}, {73,130}, {73,120}, {30,55}, {73,124},
+ {30,59}, {73,121}, {73,126}, {30,58}, {73,129}, {73,132}, {76,139},
+ {76,140}, {76,124}, {76,131}, {76,129}, {32,15}, {76,136}, {73,127},
+ {76,127}, {76,137}, {32,14}, {76,126}, {76,125}, {76,135}, {76,132},
+ {76,134}, {76,122}, {76,138}, {32,12}, {76,133}, {76,142}, {76,130},
+ {32,16}, {32,13}, {76,128}, {76,123}, {76,141}, {30,53}, {79,35}, {79,33},
+ {79,39}, {33,112}, {79,37}, {79,36}, {33,114}, {79,42}, {33,113}, {79,43},
+ {79,40}, {33,110}, {79,41}, {79,34}, {33,111}, {33,109}, {81,107},
+ {79,38}, {79,44}, {81,104}, {34,114}, {34,112}, {81,106}, {81,108},
+ {81,105}, {34,113}, {34,110}, {34,111}, {34,115}, {35,56}, {83,106},
+ {83,105}, {83,103}, {83,102}, {83,104}, {35,55}, {35,57}, {35,176},
+ {84,165}, {84,164}, {85,186}, {85,188}, {85,190}, {85,189}, {85,187},
+ {36,99}, {36,98}, {36,147}, {36,146}, {36,148}, {86,173}, {86,172},
+ {87,187}, {87,120}, {87,188}, {37,24}, {37,25}, {88,45}, {37,62}, {5,140},
+ {44,104}, {47,5}, {47,6}, {47,4}, {11,179}, {47,7}, {47,8}, {47,9},
+ {50,9}, {50,15}, {50,13}, {14,123}, {50,11}, {50,12}, {50,14}, {50,10},
+ {17,137}, {53,158}, {17,139}, {53,160}, {17,138}, {53,159}, {57,168},
+ {20,111}, {57,170}, {57,167}, {53,161}, {20,112}, {57,169}, {62,22},
+ {23,36}, {62,20}, {23,37}, {62,21}, {23,38}, {25,169}, {66,33}, {66,30},
+ {66,32}, {25,170}, {25,171}, {66,31}, {69,159}, {69,160}, {28,43},
+ {69,162}, {69,161}, {1,33}, {73,138}, {73,139}, {73,135}, {73,136},
+ {30,60}, {30,61}, {73,137}, {32,23}, {32,19}, {32,24}, {32,20}, {32,22},
+ {32,18}, {32,21}, {33,115}, {76,143}, {81,110}, {81,109}, {83,107},
+ {35,58}, {35,59}, {86,1}, {84,166}, {86,0}, {87,189}, {88,100}, {5,141},
+ {7,52}, {44,105}, {9,136}, {11,182}, {47,12}, {11,180}, {47,10}, {11,185},
+ {11,181}, {11,186}, {11,184}, {47,11}, {11,183}, {14,127}, {14,126},
+ {50,26}, {14,135}, {50,19}, {50,25}, {14,131}, {50,18}, {50,24}, {50,22},
+ {14,130}, {14,132}, {50,21}, {14,125}, {50,20}, {14,136}, {14,133},
+ {14,137}, {14,134}, {50,17}, {50,16}, {50,23}, {14,128}, {14,124},
+ {14,129}, {53,176}, {53,169}, {20,117}, {53,168}, {17,143}, {17,150},
+ {17,147}, {17,153}, {17,152}, {17,148}, {53,162}, {53,165}, {53,164},
+ {17,144}, {53,166}, {53,175}, {17,145}, {53,163}, {53,172}, {53,173},
+ {17,146}, {53,170}, {17,151}, {17,141}, {17,149}, {53,167}, {17,140},
+ {53,171}, {53,174}, {57,187}, {57,178}, {20,114}, {57,185}, {57,182},
+ {57,174}, {57,183}, {20,116}, {57,175}, {57,171}, {23,44}, {57,180},
+ {20,113}, {57,186}, {20,120}, {20,122}, {57,173}, {20,121}, {57,176},
+ {20,115}, {57,184}, {57,177}, {57,181}, {57,179}, {20,118}, {57,172},
+ {20,123}, {17,142}, {20,119}, {20,124}, {23,40}, {62,29}, {62,31},
+ {62,33}, {62,37}, {62,27}, {62,25}, {23,42}, {62,32}, {62,36}, {62,28},
+ {62,24}, {62,23}, {62,34}, {62,26}, {62,30}, {23,43}, {23,41}, {62,38},
+ {23,39}, {62,35}, {66,50}, {25,174}, {66,42}, {28,56}, {66,52}, {25,177},
+ {66,56}, {25,183}, {66,37}, {66,53}, {66,34}, {66,55}, {66,38}, {25,190},
+ {25,187}, {66,54}, {66,48}, {25,173}, {25,181}, {25,180}, {25,179},
+ {25,185}, {66,35}, {25,186}, {66,49}, {25,182}, {25,172}, {66,51},
+ {25,175}, {25,176}, {25,184}, {66,40}, {66,39}, {66,36}, {66,44}, {66,41},
+ {66,45}, {25,189}, {66,57}, {25,178}, {66,46}, {66,47}, {66,43}, {25,188},
+ {69,167}, {28,48}, {28,57}, {28,53}, {69,164}, {28,50}, {28,54}, {69,176},
+ {28,44}, {69,168}, {28,52}, {69,171}, {69,166}, {28,51}, {28,55}, {69,165},
+ {28,49}, {69,175}, {28,46}, {69,174}, {69,173}, {28,58}, {68,50}, {28,45},
+ {69,172}, {69,163}, {28,59}, {69,170}, {28,47}, {69,169}, {30,98},
+ {30,103}, {30,62}, {73,152}, {73,143}, {73,155}, {73,147}, {73,153},
+ {30,104}, {30,97}, {73,140}, {73,146}, {73,156}, {73,149}, {73,154},
+ {73,142}, {73,150}, {30,99}, {73,148}, {30,102}, {30,101}, {73,144},
+ {73,145}, {73,141}, {73,151}, {30,100}, {73,158}, {73,157}, {76,154},
+ {76,150}, {32,31}, {76,144}, {32,25}, {32,41}, {76,156}, {32,33}, {32,29},
+ {76,147}, {32,36}, {32,39}, {76,158}, {32,28}, {76,149}, {32,37}, {76,160},
+ {76,157}, {76,145}, {32,32}, {32,26}, {32,40}, {76,152}, {32,35}, {76,146},
+ {32,30}, {76,159}, {32,34}, {32,27}, {76,153}, {32,38}, {76,151}, {76,155},
+ {79,46}, {79,52}, {33,121}, {79,55}, {33,116}, {33,117}, {79,47}, {79,54},
+ {79,49}, {33,122}, {33,119}, {79,45}, {33,118}, {79,51}, {79,53}, {33,120},
+ {79,50}, {79,48}, {81,120}, {34,119}, {34,120}, {34,116}, {34,117},
+ {81,116}, {81,114}, {81,118}, {34,122}, {81,119}, {81,112}, {81,111},
+ {81,115}, {81,113}, {34,118}, {81,117}, {83,108}, {35,62}, {35,61},
+ {83,109}, {83,111}, {83,110}, {35,97}, {84,171}, {84,168}, {84,169},
+ {84,167}, {84,170}, {35,178}, {84,172}, {35,177}, {86,2}, {36,149},
+ {36,151}, {86,174}, {36,150}, {87,121}, {88,0}, {88,2}, {87,190}, {88,1},
+ {37,44}, {5,142}, {11,187}, {49,47}, {14,138}, {17,154}, {57,188},
+ {57,189}, {73,159}, {32,42}, {76,161}, {33,123}, {81,122}, {81,121},
+ {35,98}, {84,173}, {86,3}, {36,184}, {41,9}, {9,137}, {7,53}, {47,13},
+ {50,32}, {50,27}, {50,31}, {50,29}, {14,139}, {50,30}, {50,28}, {53,177},
+ {57,190}, {58,0}, {62,41}, {62,42}, {23,46}, {23,47}, {62,40}, {62,43},
+ {62,39}, {23,45}, {26,0}, {23,48}, {66,58}, {28,60}, {69,177}, {28,61},
+ {30,105}, {73,162}, {73,160}, {73,161}, {76,164}, {76,163}, {76,162},
+ {81,123}, {34,121}, {81,124}, {86,4}, {36,185}, {87,122}, {5,143},
+ {9,139}, {9,138}, {47,15}, {11,188}, {47,14}, {50,34}, {14,140}, {53,178},
+ {50,33}, {17,156}, {53,181}, {53,179}, {53,180}, {17,155}, {58,2},
+ {58,3}, {58,1}, {23,51}, {62,45}, {62,44}, {62,46}, {23,50}, {23,49},
+ {69,178}, {69,180}, {28,62}, {69,179}, {73,163}, {30,106}, {79,57},
+ {79,56}, {34,123}, {81,125}, {34,125}, {34,124}, {83,112}, {84,174},
+ {35,179}, {5,144}, {47,16}, {11,189}, {50,37}, {14,142}, {50,36}, {50,35},
+ {14,141}, {53,187}, {53,189}, {53,182}, {53,183}, {17,157}, {53,184},
+ {17,158}, {53,188}, {53,185}, {53,186}, {17,159}, {20,126}, {20,127},
+ {58,4}, {62,47}, {62,48}, {66,62}, {26,3}, {26,1}, {26,2}, {66,59},
+ {66,60}, {66,61}, {69,185}, {69,186}, {28,97}, {69,183}, {69,182},
+ {69,184}, {69,181}, {30,109}, {73,164}, {30,107}, {30,108}, {76,166},
+ {32,43}, {76,165}, {78,104}, {79,58}, {79,59}, {33,124}, {33,125},
+ {32,44}, {81,126}, {81,127}, {83,113}, {35,99}, {5,145}, {5,146}, {11,190},
+ {9,140}, {14,143}, {47,17}, {20,128}, {5,147}, {12,1}, {47,18}, {47,19},
+ {12,0}, {12,2}, {5,148}, {47,20}, {14,145}, {50,38}, {14,147}, {14,144},
+ {14,146}, {54,1}, {17,160}, {54,0}, {53,190}, {62,49}, {66,97}, {28,98},
+ {30,110}, {73,166}, {73,165}, {76,167}, {84,175}, {5,149}, {42,51},
+ {44,106}, {12,3}, {47,21}, {50,40}, {14,148}, {50,39}, {14,149}, {54,3},
+ {17,162}, {54,2}, {54,4}, {17,161}, {58,6}, {58,7}, {58,5}, {20,129},
+ {23,52}, {23,53}, {26,5}, {66,99}, {66,98}, {26,4}, {69,187}, {69,188},
+ {73,167}, {32,48}, {32,47}, {32,45}, {32,46}, {32,49}, {79,60}, {33,127},
+ {33,126}, {81,128}, {83,114}, {36,101}, {36,100}, {5,150}, {48,187},
+ {23,55}, {20,130}, {23,54}, {26,6}, {5,151}, {40,105}, {5,152}, {5,153},
+ {44,107}, {42,54}, {42,55}, {7,55}, {42,52}, {7,54}, {7,57}, {42,53},
+ {7,59}, {7,58}, {42,56}, {7,56}, {9,145}, {9,143}, {44,109}, {9,142},
+ {9,147}, {9,149}, {9,146}, {44,112}, {44,108}, {9,150}, {9,144}, {7,60},
+ {9,148}, {44,111}, {44,110}, {9,141}, {47,27}, {12,7}, {12,8}, {47,29},
+ {47,23}, {47,26}, {47,35}, {47,33}, {12,9}, {47,39}, {12,12}, {47,36},
+ {47,28}, {47,25}, {58,9}, {47,34}, {12,4}, {47,37}, {47,22}, {47,31},
+ {12,6}, {12,11}, {47,32}, {12,15}, {12,13}, {47,24}, {12,10}, {47,30},
+ {12,14}, {12,5}, {47,38}, {14,154}, {14,163}, {14,152}, {14,150}, {50,42},
+ {14,158}, {14,155}, {50,44}, {14,157}, {50,43}, {50,41}, {50,46}, {14,162},
+ {14,160}, {58,8}, {50,47}, {50,45}, {14,151}, {14,153}, {14,156}, {14,159},
+ {14,161}, {54,14}, {17,164}, {54,5}, {54,7}, {54,8}, {54,16}, {54,12},
+ {54,10}, {54,13}, {54,17}, {17,165}, {17,169}, {54,6}, {54,15}, {17,167},
+ {17,166}, {54,11}, {54,9}, {17,163}, {17,168}, {20,136}, {58,17}, {58,15},
+ {20,138}, {58,10}, {62,97}, {20,137}, {58,14}, {58,11}, {20,133}, {20,139},
+ {58,16}, {20,135}, {58,13}, {26,7}, {20,134}, {58,12}, {20,140}, {20,132},
+ {20,131}, {62,55}, {62,53}, {62,59}, {62,51}, {62,98}, {62,56}, {62,50},
+ {23,59}, {23,99}, {62,61}, {62,54}, {23,62}, {23,60}, {62,62}, {23,57},
+ {23,56}, {62,57}, {23,61}, {20,141}, {62,60}, {62,52}, {23,58}, {23,97},
+ {23,98}, {26,12}, {26,8}, {26,13}, {66,102}, {66,101}, {66,103}, {26,10},
+ {66,100}, {26,11}, {66,106}, {66,105}, {66,104}, {26,9}, {70,1}, {70,4},
+ {28,104}, {70,3}, {28,103}, {28,99}, {28,100}, {28,101}, {70,0}, {69,190},
+ {28,102}, {70,2}, {69,189}, {73,169}, {73,179}, {30,113}, {30,112},
+ {73,173}, {73,175}, {73,170}, {73,174}, {73,168}, {73,177}, {30,111},
+ {73,176}, {73,172}, {73,178}, {73,171}, {32,52}, {76,168}, {76,174},
+ {32,56}, {32,58}, {32,55}, {32,54}, {32,53}, {32,51}, {76,169}, {76,172},
+ {32,50}, {76,173}, {32,57}, {76,171}, {76,170}, {33,128}, {33,129},
+ {79,97}, {79,61}, {79,62}, {81,130}, {81,129}, {34,126}, {83,116},
+ {35,100}, {83,115}, {84,176}, {86,5}, {36,102}, {88,3}, {88,4}, {36,152},
+ {5,154}, {9,151}, {58,18}, {26,14}, {32,59}, {76,175}, {5,155}, {14,165},
+ {14,164}, {58,19}, {73,180}, {5,156}, {12,16}, {58,20}, {58,21}, {58,22},
+ {26,15}, {30,114}, {5,157}, {9,152}, {47,40}, {14,166}, {50,48}, {17,170},
+ {58,23}, {23,100}, {26,16}, {30,115}, {32,60}, {33,130}, {83,117},
+ {5,158}, {9,153}, {14,167}, {54,18}, {20,142}, {26,17}, {66,107}, {70,5},
+ {5,159}, {20,143}, {62,99}, {26,18}, {5,160}, {44,113}, {47,41}, {12,17},
+ {50,50}, {14,170}, {14,168}, {14,169}, {14,171}, {50,49}, {54,23},
+ {54,20}, {54,22}, {17,171}, {17,173}, {17,172}, {54,19}, {17,174},
+ {54,21}, {58,24}, {58,25}, {58,26}, {62,102}, {62,103}, {62,101}, {62,104},
+ {23,101}, {62,100}, {26,19}, {70,10}, {70,6}, {70,9}, {70,11}, {70,8},
+ {70,7}, {73,181}, {73,182}, {73,183}, {30,116}, {30,117}, {76,177},
+ {76,176}, {76,178}, {79,99}, {79,98}, {81,132}, {81,133}, {81,131},
+ {35,101}, {83,118}, {83,119}, {86,6}, {86,175}, {87,123}, {5,161},
+ {7,61}, {32,61}, {5,162}, {54,24}, {58,27}, {37,1}, {41,10}, {41,11},
+ {41,13}, {5,163}, {41,14}, {41,12}, {42,98}, {42,99}, {42,59}, {42,97},
+ {7,97}, {7,98}, {42,60}, {42,58}, {42,57}, {42,61}, {7,62}, {42,62},
+ {47,42}, {44,118}, {9,156}, {44,117}, {44,119}, {9,155}, {44,124},
+ {9,159}, {44,114}, {44,128}, {44,134}, {9,166}, {44,131}, {9,163},
+ {44,121}, {44,127}, {44,129}, {44,116}, {9,162}, {9,157}, {44,122},
+ {9,164}, {9,167}, {9,161}, {9,154}, {44,126}, {44,120}, {44,133}, {9,169},
+ {9,165}, {9,160}, {44,125}, {14,172}, {44,123}, {9,158}, {9,168}, {44,115},
+ {44,130}, {44,132}, {12,34}, {12,28}, {12,36}, {12,33}, {47,49}, {47,52},
+ {12,29}, {47,43}, {12,22}, {12,32}, {12,35}, {12,37}, {47,98}, {47,55},
+ {12,21}, {47,97}, {12,25}, {12,23}, {12,18}, {47,47}, {47,62}, {47,51},
+ {47,54}, {47,101}, {12,38}, {47,61}, {12,30}, {47,56}, {47,100}, {47,53},
+ {47,57}, {47,60}, {47,45}, {47,99}, {47,59}, {47,44}, {47,48}, {12,31},
+ {12,26}, {12,19}, {12,24}, {12,20}, {12,39}, {47,46}, {50,101}, {12,27},
+ {47,58}, {45,1}, {50,104}, {14,186}, {50,54}, {50,99}, {50,61}, {50,114},
+ {50,106}, {50,62}, {50,105}, {50,56}, {50,60}, {50,117}, {14,189},
+ {50,109}, {50,100}, {14,173}, {50,115}, {50,52}, {50,108}, {14,188},
+ {14,183}, {50,51}, {14,181}, {14,180}, {14,185}, {50,107}, {14,177},
+ {14,184}, {47,50}, {58,28}, {50,102}, {50,58}, {14,187}, {50,59}, {50,97},
+ {14,190}, {50,53}, {50,111}, {50,110}, {50,118}, {14,179}, {14,176},
+ {50,116}, {50,112}, {50,103}, {50,98}, {14,182}, {14,178}, {50,55},
+ {14,174}, {50,113}, {14,175}, {50,57}, {54,30}, {54,32}, {54,37}, {54,57},
+ {17,188}, {17,178}, {54,29}, {17,189}, {17,190}, {54,40}, {54,47},
+ {54,53}, {54,34}, {54,41}, {18,0}, {54,55}, {54,50}, {17,186}, {17,184},
+ {54,46}, {54,42}, {54,28}, {17,175}, {54,33}, {54,25}, {17,183}, {17,185},
+ {54,38}, {54,35}, {17,180}, {54,51}, {17,177}, {54,36}, {54,58}, {54,44},
+ {54,43}, {17,176}, {17,187}, {17,179}, {54,26}, {54,31}, {54,48}, {54,54},
+ {18,1}, {54,27}, {54,39}, {54,45}, {17,182}, {54,56}, {54,49}, {54,52},
+ {17,181}, {58,44}, {58,32}, {20,151}, {58,61}, {58,103}, {58,106},
+ {20,149}, {58,40}, {58,99}, {58,41}, {58,55}, {20,162}, {58,51}, {20,159},
+ {58,52}, {58,29}, {58,100}, {20,168}, {58,97}, {58,53}, {58,108}, {58,48},
+ {62,136}, {58,111}, {20,166}, {58,46}, {58,58}, {20,169}, {20,148},
+ {58,50}, {58,109}, {58,43}, {58,36}, {58,47}, {58,35}, {58,33}, {20,144},
+ {58,101}, {58,42}, {58,104}, {58,105}, {20,152}, {20,157}, {20,153},
+ {20,161}, {58,62}, {20,154}, {58,54}, {58,38}, {20,146}, {58,30}, {58,98},
+ {58,107}, {58,37}, {20,160}, {58,112}, {58,49}, {58,45}, {20,145},
+ {20,165}, {58,60}, {20,167}, {58,56}, {20,156}, {20,150}, {20,158},
+ {20,147}, {20,164}, {58,57}, {58,39}, {58,59}, {58,34}, {58,102}, {58,110},
+ {58,31}, {62,135}, {62,157}, {23,21}, {62,140}, {62,138}, {62,117},
+ {23,105}, {62,133}, {62,153}, {62,129}, {23,113}, {62,152}, {62,127},
+ {20,163}, {62,143}, {62,128}, {62,150}, {23,112}, {23,104}, {62,106},
+ {62,114}, {62,139}, {62,131}, {62,156}, {62,134}, {23,118}, {62,151},
+ {23,109}, {62,137}, {62,145}, {62,118}, {62,144}, {62,161}, {62,113},
+ {62,146}, {62,159}, {62,107}, {20,155}, {62,121}, {62,120}, {23,111},
+ {62,124}, {62,126}, {62,141}, {62,158}, {23,114}, {23,115}, {62,112},
+ {23,107}, {62,116}, {62,154}, {23,116}, {23,108}, {23,110}, {23,117},
+ {62,160}, {62,147}, {62,142}, {62,123}, {62,122}, {23,106}, {62,108},
+ {23,103}, {62,132}, {62,109}, {62,130}, {62,119}, {62,155}, {23,102},
+ {62,115}, {62,111}, {62,149}, {62,110}, {26,32}, {66,147}, {66,130},
+ {66,108}, {66,138}, {26,24}, {66,123}, {66,133}, {26,27}, {66,126},
+ {26,25}, {66,111}, {66,141}, {66,110}, {66,129}, {66,109}, {66,127},
+ {66,136}, {66,134}, {66,122}, {66,117}, {66,115}, {66,116}, {66,135},
+ {66,146}, {66,124}, {26,26}, {66,119}, {66,139}, {26,29}, {66,118},
+ {66,112}, {66,128}, {26,33}, {26,21}, {26,30}, {66,120}, {66,114},
+ {26,23}, {62,148}, {26,22}, {66,131}, {26,20}, {26,35}, {26,28}, {66,132},
+ {66,121}, {66,113}, {66,140}, {66,125}, {26,34}, {66,144}, {26,31},
+ {66,143}, {66,137}, {66,142}, {66,145}, {70,51}, {70,52}, {70,39},
+ {70,38}, {70,34}, {28,116}, {28,108}, {70,54}, {70,53}, {62,105}, {70,31},
+ {70,35}, {70,29}, {70,48}, {70,33}, {70,55}, {70,26}, {70,24}, {70,36},
+ {70,46}, {70,41}, {28,118}, {70,15}, {70,45}, {28,119}, {62,125}, {70,27},
+ {70,18}, {70,21}, {70,59}, {70,28}, {70,19}, {70,17}, {70,14}, {28,112},
+ {70,37}, {28,111}, {28,115}, {70,32}, {70,40}, {28,105}, {70,56}, {70,60},
+ {28,107}, {70,23}, {70,43}, {70,47}, {70,20}, {70,57}, {28,114}, {28,113},
+ {70,12}, {28,117}, {70,50}, {70,22}, {70,42}, {70,16}, {70,30}, {70,25},
+ {28,109}, {28,110}, {70,44}, {70,61}, {70,58}, {70,49}, {70,13}, {28,106},
+ {74,9}, {74,0}, {74,3}, {30,123}, {74,5}, {73,185}, {74,1}, {74,7},
+ {30,120}, {30,124}, {30,118}, {73,187}, {74,12}, {74,6}, {73,188},
+ {74,21}, {74,15}, {73,184}, {77,6}, {73,190}, {30,119}, {74,10}, {74,20},
+ {30,127}, {74,17}, {73,189}, {74,4}, {74,8}, {74,2}, {74,22}, {74,19},
+ {74,16}, {30,121}, {30,122}, {30,126}, {73,186}, {74,23}, {30,125},
+ {74,13}, {74,11}, {74,14}, {77,19}, {77,0}, {77,5}, {77,18}, {77,4},
+ {76,187}, {77,1}, {32,98}, {76,180}, {77,13}, {77,15}, {76,179}, {32,97},
+ {77,17}, {77,9}, {32,104}, {77,16}, {77,2}, {32,106}, {76,185}, {74,18},
+ {77,10}, {77,7}, {76,181}, {77,21}, {32,100}, {32,101}, {76,183}, {77,8},
+ {77,20}, {77,11}, {76,189}, {32,103}, {32,99}, {77,12}, {76,190}, {77,22},
+ {76,184}, {77,3}, {77,14}, {76,186}, {76,188}, {33,139}, {76,182},
+ {32,105}, {33,132}, {32,62}, {32,102}, {33,136}, {79,115}, {79,105},
+ {79,100}, {79,106}, {79,116}, {79,120}, {79,119}, {33,138}, {33,137},
+ {79,107}, {79,121}, {79,110}, {79,102}, {79,104}, {79,103}, {79,109},
+ {79,114}, {79,101}, {79,108}, {79,113}, {33,135}, {79,111}, {33,133},
+ {79,112}, {33,131}, {33,134}, {81,149}, {79,117}, {34,130}, {81,141},
+ {81,145}, {81,137}, {81,140}, {81,148}, {34,128}, {81,153}, {81,146},
+ {81,138}, {81,154}, {81,147}, {34,131}, {34,132}, {81,151}, {81,139},
+ {34,127}, {34,129}, {81,134}, {81,142}, {81,136}, {81,152}, {81,150},
+ {81,135}, {81,143}, {83,126}, {34,133}, {81,144}, {35,103}, {35,105},
+ {35,102}, {83,131}, {83,123}, {83,121}, {83,125}, {83,122}, {83,127},
+ {83,129}, {35,106}, {35,108}, {83,128}, {35,109}, {35,107}, {83,130},
+ {35,104}, {35,180}, {84,177}, {84,183}, {35,182}, {83,124}, {84,182},
+ {84,189}, {84,180}, {84,187}, {84,186}, {83,120}, {84,181}, {79,118},
+ {84,190}, {84,179}, {84,184}, {84,188}, {84,178}, {86,10}, {35,181},
+ {84,185}, {86,180}, {86,11}, {86,9}, {86,7}, {86,8}, {86,12}, {36,153},
+ {86,178}, {86,176}, {86,181}, {86,179}, {86,182}, {36,154}, {86,177},
+ {87,124}, {88,5}, {88,6}, {88,7}, {88,135}, {88,125}, {41,15}, {9,170},
+ {12,40}, {50,120}, {50,119}, {15,0}, {18,2}, {54,60}, {54,59}, {20,170},
+ {23,120}, {23,119}, {23,121}, {66,148}, {70,62}, {74,24}, {74,26},
+ {74,25}, {32,107}, {77,23}, {79,122}, {88,101}, {5,164}, {44,137},
+ {44,138}, {44,136}, {44,135}, {9,171}, {47,105}, {47,103}, {47,102},
+ {12,41}, {12,43}, {12,42}, {47,104}, {50,132}, {50,129}, {50,127},
+ {15,1}, {50,130}, {15,6}, {50,124}, {50,139}, {50,141}, {50,125}, {15,3},
+ {50,142}, {50,137}, {50,123}, {50,128}, {50,138}, {50,134}, {50,131},
+ {15,8}, {50,140}, {50,126}, {50,135}, {50,121}, {15,7}, {15,4}, {50,133},
+ {50,136}, {50,122}, {15,5}, {15,2}, {18,12}, {54,101}, {18,11}, {54,104},
+ {54,107}, {18,8}, {18,6}, {54,62}, {54,105}, {54,103}, {54,100}, {54,108},
+ {54,109}, {54,111}, {54,112}, {54,61}, {18,5}, {54,98}, {54,97}, {54,110},
+ {18,7}, {54,99}, {18,9}, {18,4}, {54,102}, {18,13}, {18,10}, {54,106},
+ {20,177}, {58,127}, {58,116}, {20,174}, {62,167}, {58,125}, {58,113},
+ {20,172}, {58,118}, {20,175}, {58,122}, {58,120}, {20,178}, {20,171},
+ {58,114}, {58,117}, {20,176}, {58,115}, {58,126}, {58,124}, {58,119},
+ {58,121}, {58,123}, {20,173}, {62,168}, {62,174}, {62,164}, {62,170},
+ {23,122}, {62,166}, {23,128}, {23,127}, {23,126}, {62,173}, {23,129},
+ {23,130}, {62,163}, {62,176}, {23,131}, {23,125}, {23,124}, {62,172},
+ {23,132}, {62,162}, {62,165}, {62,175}, {62,171}, {66,180}, {66,169},
+ {23,123}, {26,42}, {66,157}, {66,178}, {66,158}, {26,37}, {66,155},
+ {66,164}, {66,156}, {26,39}, {66,150}, {66,177}, {26,40}, {66,174},
+ {66,175}, {66,151}, {26,45}, {66,166}, {66,160}, {66,167}, {66,154},
+ {66,179}, {66,171}, {66,165}, {66,149}, {26,41}, {66,172}, {26,44},
+ {66,176}, {66,170}, {26,38}, {66,168}, {66,162}, {26,36}, {66,153},
+ {66,161}, {66,173}, {66,159}, {66,163}, {28,129}, {62,169}, {70,114},
+ {70,123}, {70,113}, {70,109}, {70,106}, {28,130}, {70,104}, {26,43},
+ {70,97}, {28,128}, {70,103}, {28,127}, {70,108}, {70,105}, {70,121},
+ {70,116}, {70,110}, {70,115}, {28,123}, {70,107}, {70,126}, {70,98},
+ {70,99}, {70,122}, {28,124}, {70,127}, {28,126}, {70,128}, {70,112},
+ {66,152}, {70,118}, {70,111}, {70,120}, {70,117}, {70,102}, {28,121},
+ {70,125}, {28,122}, {70,100}, {28,125}, {74,36}, {70,119}, {70,124},
+ {74,33}, {28,120}, {30,128}, {74,43}, {74,39}, {74,37}, {74,32}, {74,47},
+ {30,132}, {74,28}, {74,40}, {74,41}, {74,31}, {74,30}, {74,44}, {74,34},
+ {74,29}, {74,35}, {74,46}, {74,27}, {74,45}, {74,42}, {30,130}, {30,129},
+ {30,131}, {74,38}, {79,139}, {77,25}, {32,113}, {77,29}, {77,26}, {77,33},
+ {77,39}, {77,28}, {77,48}, {32,110}, {77,42}, {77,31}, {77,43}, {77,38},
+ {77,45}, {77,30}, {32,115}, {32,114}, {77,32}, {77,46}, {77,24}, {77,44},
+ {32,108}, {77,36}, {77,35}, {77,40}, {77,27}, {32,112}, {32,116}, {77,34},
+ {77,41}, {32,117}, {77,37}, {32,109}, {32,111}, {79,135}, {79,133},
+ {79,140}, {79,137}, {79,141}, {79,126}, {79,134}, {79,145}, {77,47},
+ {79,130}, {33,143}, {70,101}, {79,125}, {79,138}, {79,132}, {79,129},
+ {79,124}, {79,123}, {79,144}, {79,128}, {79,127}, {33,141}, {79,136},
+ {33,140}, {33,142}, {79,131}, {79,143}, {81,158}, {81,159}, {34,137},
+ {81,156}, {34,134}, {81,164}, {34,138}, {81,166}, {81,155}, {79,142},
+ {81,168}, {81,157}, {34,135}, {81,163}, {81,165}, {81,160}, {81,167},
+ {81,162}, {81,161}, {34,136}, {83,133}, {83,134}, {83,136}, {35,110},
+ {35,111}, {83,137}, {83,135}, {83,132}, {85,2}, {85,5}, {85,1}, {35,186},
+ {85,3}, {35,185}, {35,184}, {35,183}, {85,4}, {86,17}, {86,15}, {86,14},
+ {85,0}, {86,16}, {85,6}, {86,13}, {86,185}, {86,151}, {86,183}, {36,155},
+ {86,184}, {86,186}, {87,127}, {36,186}, {87,126}, {87,125}, {36,187},
+ {37,26}, {88,46}, {88,103}, {88,102}, {88,104}, {5,165}, {47,106},
+ {50,143}, {50,144}, {58,128}, {85,7}, {87,128}, {5,166}, {12,44}, {47,107},
+ {54,113}, {18,14}, {58,130}, {58,129}, {20,179}, {23,133}, {70,129},
+ {28,131}, {28,132}, {30,133}, {36,188}, {5,167}, {47,108}, {9,173},
+ {47,110}, {47,109}, {12,45}, {50,145}, {50,152}, {15,9}, {50,150},
+ {50,148}, {50,155}, {50,146}, {50,147}, {15,10}, {15,14}, {50,156},
+ {15,13}, {50,154}, {50,151}, {50,149}, {15,11}, {15,12}, {50,153},
+ {18,16}, {54,114}, {18,21}, {54,130}, {18,20}, {54,132}, {54,120},
+ {18,18}, {54,131}, {54,115}, {18,19}, {54,127}, {54,123}, {54,125},
+ {54,119}, {54,126}, {18,15}, {54,122}, {54,121}, {54,117}, {54,128},
+ {54,124}, {54,116}, {54,118}, {18,17}, {54,129}, {20,182}, {58,141},
+ {58,137}, {58,139}, {58,134}, {58,133}, {58,131}, {58,138}, {58,140},
+ {58,136}, {58,135}, {20,180}, {20,181}, {58,143}, {23,141}, {62,178},
+ {62,184}, {62,179}, {62,180}, {62,185}, {23,143}, {23,135}, {23,142},
+ {62,177}, {58,132}, {23,138}, {23,136}, {62,183}, {62,182}, {23,137},
+ {23,139}, {62,181}, {23,134}, {23,140}, {66,182}, {26,52}, {67,2},
+ {67,1}, {66,187}, {26,54}, {67,0}, {66,183}, {66,184}, {26,46}, {26,48},
+ {66,189}, {66,181}, {26,50}, {26,49}, {66,185}, {66,190}, {66,188},
+ {26,51}, {66,186}, {58,142}, {26,47}, {70,130}, {70,137}, {28,134},
+ {70,141}, {28,138}, {70,133}, {70,131}, {70,140}, {28,133}, {70,139},
+ {28,135}, {28,136}, {70,132}, {28,137}, {70,138}, {70,134}, {70,135},
+ {70,136}, {26,53}, {74,48}, {74,60}, {30,138}, {74,55}, {74,57}, {30,136},
+ {74,49}, {74,53}, {74,56}, {30,134}, {30,137}, {74,59}, {74,51}, {74,52},
+ {74,58}, {74,50}, {74,54}, {30,135}, {77,50}, {77,49}, {32,119}, {77,55},
+ {32,121}, {32,118}, {77,51}, {32,122}, {77,52}, {77,53}, {77,56}, {32,120},
+ {79,150}, {79,153}, {79,147}, {79,149}, {79,148}, {79,151}, {79,152},
+ {77,54}, {79,146}, {34,141}, {81,172}, {81,175}, {81,177}, {81,170},
+ {81,171}, {81,174}, {81,176}, {34,142}, {34,140}, {34,139}, {81,173},
+ {81,169}, {83,138}, {35,112}, {83,139}, {85,9}, {35,187}, {85,11},
+ {35,188}, {85,8}, {85,10}, {36,104}, {86,18}, {36,103}, {86,189}, {86,188},
+ {86,187}, {88,8}, {88,9}, {88,11}, {88,10}, {41,16}, {5,168}, {12,46},
+ {54,133}, {20,183}, {62,186}, {33,144}, {81,178}, {7,99}, {18,23},
+ {18,22}, {58,144}, {20,184}, {58,146}, {58,145}, {62,187}, {23,144},
+ {67,3}, {67,6}, {67,5}, {67,4}, {70,142}, {70,144}, {70,143}, {30,140},
+ {30,139}, {32,123}, {77,57}, {77,59}, {77,58}, {33,145}, {81,180},
+ {81,179}, {83,140}, {35,113}, {35,189}, {86,20}, {86,19}, {37,27},
+ {7,100}, {47,111}, {12,47}, {54,136}, {54,134}, {54,135}, {58,148},
+ {58,149}, {63,3}, {58,147}, {62,188}, {63,1}, {63,0}, {63,2}, {23,145},
+ {62,190}, {62,189}, {63,4}, {67,9}, {67,7}, {67,8}, {70,147}, {70,145},
+ {70,146}, {74,61}, {77,60}, {77,61}, {33,146}, {81,181}, {83,141},
+ {35,114}, {85,12}, {86,21}, {36,105}, {86,190}, {88,12}, {7,101}, {12,49},
+ {12,50}, {47,112}, {47,113}, {12,48}, {15,20}, {15,18}, {15,17}, {15,24},
+ {15,16}, {15,25}, {50,157}, {15,22}, {15,19}, {15,23}, {15,21}, {15,15},
+ {18,31}, {18,25}, {54,140}, {18,30}, {18,32}, {18,26}, {18,27}, {54,138},
+ {18,24}, {54,139}, {18,29}, {54,137}, {18,28}, {21,4}, {21,6}, {58,152},
+ {21,5}, {20,185}, {20,189}, {23,164}, {63,9}, {58,154}, {20,190}, {58,157},
+ {58,158}, {21,3}, {58,160}, {58,162}, {58,163}, {58,151}, {58,150},
+ {58,164}, {21,2}, {58,161}, {58,159}, {21,0}, {20,187}, {21,7}, {58,155},
+ {58,156}, {58,153}, {21,1}, {20,188}, {20,186}, {63,8}, {23,159}, {23,154},
+ {23,149}, {23,165}, {23,150}, {23,146}, {23,161}, {23,158}, {23,160},
+ {23,151}, {23,156}, {23,147}, {23,148}, {63,16}, {63,13}, {63,5}, {63,10},
+ {23,162}, {63,17}, {23,163}, {23,153}, {63,7}, {63,15}, {63,11}, {63,14},
+ {63,12}, {23,157}, {63,6}, {23,152}, {67,12}, {26,56}, {26,59}, {67,14},
+ {26,101}, {67,13}, {26,61}, {28,143}, {67,15}, {26,100}, {67,11}, {26,102},
+ {26,57}, {23,155}, {26,60}, {26,58}, {26,62}, {26,98}, {26,55}, {26,103},
+ {26,99}, {26,97}, {67,10}, {28,150}, {28,146}, {28,153}, {70,150},
+ {28,154}, {70,162}, {70,155}, {28,139}, {70,163}, {70,157}, {28,149},
+ {70,158}, {28,148}, {70,161}, {28,142}, {70,159}, {70,149}, {28,141},
+ {74,106}, {28,147}, {28,144}, {28,152}, {70,148}, {70,152}, {28,140},
+ {70,151}, {70,153}, {70,154}, {28,151}, {70,156}, {70,160}, {70,164},
+ {28,155}, {30,146}, {74,101}, {74,107}, {74,104}, {74,62}, {74,108},
+ {74,97}, {74,103}, {30,141}, {30,147}, {74,109}, {30,143}, {30,153},
+ {30,148}, {74,111}, {74,105}, {30,144}, {74,98}, {30,154}, {74,99},
+ {74,100}, {30,155}, {30,152}, {28,145}, {30,142}, {74,112}, {30,156},
+ {30,149}, {74,110}, {30,145}, {30,150}, {30,151}, {32,131}, {77,100},
+ {77,109}, {77,106}, {77,108}, {32,128}, {77,101}, {77,107}, {32,124},
+ {77,103}, {32,132}, {77,99}, {77,104}, {77,111}, {74,102}, {77,105},
+ {77,98}, {32,125}, {77,97}, {32,126}, {77,112}, {32,127}, {77,110},
+ {32,130}, {77,62}, {32,129}, {77,102}, {79,156}, {79,170}, {79,165},
+ {79,167}, {79,155}, {33,147}, {79,154}, {33,150}, {33,149}, {79,169},
+ {79,161}, {79,158}, {79,164}, {79,157}, {79,159}, {79,168}, {79,166},
+ {33,148}, {79,173}, {79,171}, {79,162}, {79,172}, {79,163}, {81,185},
+ {34,143}, {82,1}, {85,15}, {34,150}, {79,160}, {81,183}, {34,146},
+ {81,184}, {81,189}, {34,148}, {34,149}, {81,182}, {82,0}, {82,2}, {81,186},
+ {81,188}, {81,190}, {81,187}, {82,3}, {34,145}, {34,151}, {34,147},
+ {34,144}, {83,144}, {35,119}, {83,142}, {83,146}, {83,147}, {35,117},
+ {83,148}, {83,145}, {83,143}, {35,120}, {35,116}, {83,149}, {35,118},
+ {35,115}, {35,190}, {36,0}, {85,14}, {85,13}, {85,16}, {85,17}, {36,1},
+ {86,22}, {86,27}, {36,106}, {86,24}, {86,23}, {86,26}, {86,25}, {87,3},
+ {36,156}, {87,2}, {87,0}, {87,1}, {36,190}, {36,189}, {87,129}, {87,130},
+ {37,0}, {88,13}, {88,14}, {37,39}, {37,45}, {88,105}, {88,136}, {7,102},
+ {54,141}, {54,142}, {63,18}, {67,16}, {70,165}, {32,134}, {32,133},
+ {79,174}, {82,4}, {87,4}, {7,103}, {50,158}, {15,26}, {18,33}, {63,20},
+ {63,19}, {28,156}, {70,166}, {28,157}, {77,113}, {33,151}, {37,54},
+ {7,104}, {44,139}, {50,159}, {18,34}, {54,143}, {54,144}, {58,165},
+ {21,8}, {23,166}, {63,22}, {63,21}, {63,23}, {67,17}, {67,18}, {26,104},
+ {30,157}, {28,158}, {30,158}, {77,117}, {77,114}, {77,116}, {77,115},
+ {32,135}, {79,175}, {82,6}, {82,5}, {42,100}, {15,28}, {15,27}, {50,160},
+ {54,145}, {58,167}, {58,166}, {21,9}, {63,25}, {63,26}, {63,24}, {23,168},
+ {23,167}, {26,106}, {26,105}, {70,167}, {74,115}, {74,113}, {74,114},
+ {30,159}, {77,119}, {77,118}, {79,178}, {79,177}, {79,176}, {82,7},
+ {88,106}, {7,105}, {12,51}, {12,52}, {15,29}, {15,30}, {50,162}, {50,161},
+ {54,146}, {18,40}, {18,38}, {18,35}, {18,39}, {18,37}, {18,36}, {21,10},
+ {58,170}, {23,173}, {21,12}, {21,17}, {58,172}, {21,19}, {21,18}, {21,21},
+ {58,171}, {58,168}, {21,15}, {21,11}, {21,13}, {58,169}, {21,20}, {21,16},
+ {21,14}, {23,175}, {23,174}, {23,172}, {23,176}, {23,170}, {23,171},
+ {23,169}, {63,27}, {67,20}, {26,108}, {26,109}, {26,107}, {67,19},
+ {67,21}, {70,170}, {70,172}, {28,167}, {70,173}, {28,160}, {70,169},
+ {28,159}, {28,169}, {28,165}, {28,166}, {28,162}, {70,168}, {28,161},
+ {70,174}, {70,171}, {28,168}, {28,163}, {28,164}, {74,117}, {74,119},
+ {74,118}, {74,120}, {30,160}, {74,116}, {32,139}, {77,120}, {32,136},
+ {32,140}, {32,138}, {32,137}, {79,179}, {79,182}, {79,181}, {79,180},
+ {33,152}, {82,8}, {82,9}, {34,152}, {82,10}, {34,153}, {35,122}, {35,121},
+ {85,18}, {36,2}, {85,19}, {86,28}, {36,107}, {36,108}, {87,5}, {37,2},
+ {7,106}, {18,42}, {18,41}, {63,28}, {63,29}, {26,110}, {74,121}, {28,170},
+ {74,122}, {77,121}, {7,107}, {47,114}, {12,54}, {12,53}, {50,163},
+ {15,31}, {50,164}, {54,149}, {54,148}, {54,147}, {58,174}, {21,24},
+ {58,173}, {21,23}, {58,175}, {21,22}, {63,31}, {63,34}, {63,32}, {63,33},
+ {63,37}, {63,30}, {63,38}, {63,35}, {63,36}, {26,112}, {67,22}, {26,111},
+ {70,178}, {70,176}, {28,171}, {70,175}, {70,177}, {28,172}, {74,123},
+ {74,124}, {32,141}, {82,12}, {82,14}, {82,11}, {82,13}, {83,150}, {85,20},
+ {88,47}, {7,108}, {12,55}, {50,165}, {50,167}, {50,166}, {54,152},
+ {18,44}, {54,150}, {18,43}, {54,153}, {54,154}, {54,151}, {58,187},
+ {21,32}, {58,179}, {58,185}, {21,27}, {21,30}, {58,178}, {21,25}, {58,182},
+ {63,44}, {21,29}, {58,177}, {58,183}, {58,180}, {58,186}, {58,176},
+ {58,184}, {21,28}, {21,31}, {58,181}, {21,26}, {23,178}, {63,40}, {23,177},
+ {63,47}, {63,46}, {23,184}, {23,185}, {63,48}, {23,179}, {63,45}, {23,183},
+ {63,50}, {63,41}, {63,43}, {23,180}, {63,39}, {63,42}, {63,49}, {23,181},
+ {63,51}, {23,182}, {26,113}, {67,27}, {67,33}, {67,25}, {67,34}, {67,24},
+ {67,29}, {67,35}, {67,32}, {67,31}, {67,30}, {67,23}, {67,28}, {67,26},
+ {28,177}, {28,174}, {70,187}, {71,1}, {71,3}, {71,0}, {70,184}, {70,186},
+ {71,5}, {71,2}, {70,188}, {71,6}, {70,185}, {71,4}, {28,175}, {28,181},
+ {28,179}, {70,179}, {28,180}, {28,176}, {70,180}, {70,182}, {70,181},
+ {70,189}, {70,190}, {28,178}, {28,173}, {70,183}, {74,134}, {30,162},
+ {74,125}, {30,163}, {30,166}, {74,130}, {74,127}, {30,165}, {74,131},
+ {74,132}, {74,126}, {74,135}, {74,128}, {74,133}, {30,164}, {30,161},
+ {74,129}, {77,127}, {32,144}, {32,142}, {32,145}, {32,143}, {77,126},
+ {77,123}, {77,122}, {77,125}, {77,124}, {80,5}, {33,158}, {79,187},
+ {79,186}, {33,153}, {80,1}, {80,0}, {79,183}, {80,3}, {79,188}, {33,157},
+ {79,185}, {80,2}, {79,184}, {33,154}, {33,156}, {79,189}, {33,155},
+ {79,190}, {80,4}, {82,18}, {34,158}, {82,15}, {82,19}, {34,155}, {82,17},
+ {34,160}, {34,157}, {82,16}, {34,159}, {82,20}, {34,154}, {35,124},
+ {35,126}, {83,153}, {35,125}, {83,151}, {34,156}, {83,152}, {35,123},
+ {36,3}, {36,5}, {85,22}, {36,4}, {85,21}, {86,33}, {36,109}, {86,32},
+ {36,110}, {86,30}, {86,29}, {86,34}, {86,35}, {87,6}, {86,31}, {87,134},
+ {87,131}, {87,132}, {87,133}, {37,28}, {88,17}, {88,16}, {88,15}, {88,48},
+ {88,126}, {88,107}, {37,46}, {7,109}, {15,32}, {23,186}, {28,182},
+ {74,136}, {33,159}, {82,21}, {88,108}, {7,110}, {9,174}, {12,57}, {12,56},
+ {15,35}, {50,168}, {15,33}, {50,169}, {15,34}, {54,159}, {54,155},
+ {18,45}, {54,158}, {54,157}, {54,156}, {18,46}, {54,160}, {54,161},
+ {59,3}, {59,1}, {59,5}, {59,6}, {59,12}, {59,8}, {59,10}, {59,2}, {58,188},
+ {59,9}, {59,11}, {59,4}, {59,7}, {58,189}, {21,34}, {59,0}, {58,190},
+ {21,33}, {21,35}, {23,189}, {63,53}, {63,55}, {63,54}, {63,59}, {23,187},
+ {63,56}, {63,52}, {63,57}, {63,58}, {23,188}, {23,190}, {63,60}, {67,39},
+ {67,38}, {67,36}, {67,37}, {26,115}, {26,117}, {26,114}, {26,116},
+ {71,13}, {71,14}, {71,9}, {71,10}, {28,184}, {28,189}, {28,183}, {28,190},
+ {28,185}, {71,11}, {71,12}, {71,8}, {29,0}, {28,187}, {28,186}, {28,188},
+ {71,7}, {74,138}, {30,168}, {74,140}, {30,170}, {74,143}, {74,139},
+ {74,137}, {74,142}, {30,169}, {74,141}, {30,167}, {32,147}, {32,150},
+ {77,129}, {32,148}, {77,128}, {32,146}, {32,149}, {80,6}, {80,7}, {80,8},
+ {33,160}, {80,9}, {33,161}, {34,162}, {82,24}, {82,25}, {82,23}, {82,22},
+ {82,26}, {34,161}, {83,157}, {83,155}, {83,156}, {83,158}, {83,154},
+ {83,159}, {85,24}, {85,25}, {85,23}, {36,6}, {86,36}, {36,111}, {86,37},
+ {87,8}, {87,7}, {7,111}, {21,36}, {24,0}, {26,118}, {30,172}, {30,171},
+ {34,163}, {35,60}, {36,7}, {7,112}, {15,36}, {24,1}, {82,27}, {42,102},
+ {7,113}, {7,116}, {7,115}, {7,114}, {42,101}, {44,141}, {44,143}, {9,175},
+ {9,177}, {44,140}, {44,142}, {9,176}, {44,145}, {44,144}, {44,146},
+ {47,118}, {47,116}, {12,60}, {47,115}, {12,99}, {12,62}, {12,59}, {12,100},
+ {12,61}, {12,98}, {12,97}, {47,117}, {12,58}, {15,42}, {50,171}, {50,177},
+ {15,39}, {15,46}, {15,41}, {50,174}, {50,176}, {15,44}, {50,170}, {50,173},
+ {15,40}, {15,37}, {50,172}, {15,43}, {50,175}, {15,45}, {15,38}, {54,163},
+ {54,166}, {18,48}, {18,58}, {18,54}, {54,164}, {18,62}, {18,55}, {18,60},
+ {18,50}, {18,47}, {18,49}, {18,61}, {54,165}, {18,53}, {18,56}, {18,52},
+ {18,57}, {54,167}, {18,59}, {18,51}, {54,162}, {59,13}, {21,37}, {59,15},
+ {21,39}, {21,41}, {59,14}, {21,38}, {21,42}, {21,40}, {24,7}, {63,99},
+ {24,15}, {63,62}, {24,16}, {24,5}, {63,97}, {24,10}, {63,98}, {24,3},
+ {24,2}, {24,13}, {24,12}, {24,11}, {24,9}, {24,14}, {63,61}, {24,4},
+ {24,6}, {24,8}, {26,120}, {26,123}, {26,127}, {26,121}, {26,126}, {26,124},
+ {26,119}, {26,125}, {26,122}, {71,18}, {29,3}, {29,1}, {71,19}, {29,4},
+ {29,2}, {71,17}, {71,16}, {30,176}, {71,15}, {30,174}, {30,173}, {74,144},
+ {29,5}, {30,175}, {74,145}, {30,178}, {74,146}, {30,177}, {32,152},
+ {77,131}, {32,151}, {32,156}, {32,154}, {32,155}, {33,163}, {32,153},
+ {77,130}, {74,147}, {33,162}, {33,164}, {34,164}, {34,165}, {83,160},
+ {36,158}, {36,157}, {7,118}, {41,21}, {15,47}, {41,18}, {41,19}, {41,17},
+ {41,20}, {42,106}, {42,103}, {42,108}, {42,104}, {7,119}, {7,122},
+ {42,105}, {7,121}, {42,107}, {7,120}, {44,149}, {44,151}, {9,180},
+ {44,147}, {44,150}, {44,148}, {9,178}, {9,181}, {9,179}, {47,120},
+ {47,124}, {47,121}, {12,103}, {12,104}, {47,123}, {47,125}, {47,127},
+ {12,101}, {47,126}, {12,102}, {54,174}, {47,122}, {50,178}, {50,187},
+ {50,185}, {50,180}, {50,181}, {50,186}, {50,188}, {15,49}, {50,183},
+ {50,179}, {15,48}, {15,50}, {50,182}, {50,189}, {50,184}, {18,97},
+ {54,177}, {54,169}, {54,175}, {54,176}, {18,98}, {54,168}, {54,170},
+ {47,119}, {54,172}, {54,173}, {54,171}, {21,44}, {59,22}, {74,148},
+ {59,23}, {59,20}, {18,99}, {21,46}, {59,19}, {59,25}, {59,24}, {21,43},
+ {59,28}, {59,18}, {59,27}, {59,16}, {59,26}, {59,21}, {21,45}, {63,106},
+ {63,101}, {63,107}, {63,102}, {63,100}, {63,103}, {24,17}, {63,105},
+ {63,104}, {24,18}, {26,129}, {26,128}, {67,46}, {67,49}, {67,41}, {67,45},
+ {26,130}, {67,44}, {67,42}, {67,48}, {67,43}, {67,40}, {67,47}, {71,25},
+ {29,8}, {80,10}, {71,22}, {71,23}, {71,21}, {59,17}, {29,7}, {71,26},
+ {71,20}, {29,6}, {29,9}, {71,24}, {74,149}, {30,179}, {74,150}, {74,151},
+ {77,132}, {32,157}, {80,11}, {80,12}, {80,13}, {82,29}, {82,28}, {83,162},
+ {83,161}, {85,27}, {85,28}, {85,26}, {86,38}, {36,112}, {7,123}, {12,106},
+ {12,105}, {15,53}, {15,52}, {51,0}, {51,1}, {50,190}, {15,51}, {54,181},
+ {54,182}, {54,178}, {18,100}, {54,179}, {54,180}, {59,31}, {59,33},
+ {59,29}, {59,32}, {21,47}, {59,30}, {21,48}, {60,51}, {24,21}, {24,20},
+ {24,19}, {63,108}, {63,109}, {67,51}, {67,53}, {26,134}, {26,131},
+ {26,133}, {26,132}, {67,52}, {67,50}, {71,33}, {71,30}, {71,31}, {29,13},
+ {71,32}, {71,27}, {71,28}, {29,10}, {29,11}, {71,29}, {29,12}, {74,155},
+ {74,156}, {74,153}, {74,154}, {30,180}, {74,152}, {77,136}, {77,133},
+ {77,135}, {32,160}, {77,139}, {32,159}, {77,137}, {77,140}, {77,138},
+ {77,134}, {32,158}, {80,15}, {80,16}, {80,14}, {80,18}, {33,165}, {33,166},
+ {82,31}, {34,167}, {80,17}, {82,30}, {34,166}, {83,165}, {83,166},
+ {35,127}, {83,164}, {83,163}, {85,29}, {36,8}, {87,9}, {87,136}, {87,135},
+ {37,3}, {37,29}, {87,137}, {88,49}, {37,47}, {7,124}, {9,182}, {24,22},
+ {35,128}, {7,125}, {12,107}, {18,101}, {21,49}, {33,167}, {9,183},
+ {47,129}, {47,128}, {51,2}, {15,56}, {15,54}, {15,58}, {51,4}, {15,57},
+ {15,55}, {51,3}, {18,104}, {54,188}, {18,103}, {18,105}, {55,2}, {18,107},
+ {54,190}, {55,0}, {54,183}, {18,106}, {55,3}, {54,185}, {54,186}, {54,184},
+ {18,102}, {55,1}, {54,187}, {54,189}, {59,45}, {59,44}, {59,42}, {59,34},
+ {59,49}, {59,37}, {59,47}, {59,54}, {59,46}, {21,57}, {21,53}, {59,35},
+ {59,41}, {21,55}, {59,40}, {21,56}, {21,58}, {59,43}, {21,50}, {21,51},
+ {59,55}, {59,53}, {59,52}, {59,38}, {59,50}, {21,54}, {21,52}, {59,51},
+ {59,36}, {59,39}, {59,48}, {67,122}, {63,119}, {63,112}, {63,131},
+ {63,140}, {63,115}, {24,33}, {63,128}, {24,23}, {24,25}, {24,37}, {63,113},
+ {24,26}, {24,28}, {24,38}, {24,27}, {24,36}, {63,121}, {63,110}, {24,34},
+ {63,120}, {24,30}, {63,138}, {24,35}, {63,136}, {63,124}, {63,134},
+ {24,32}, {63,111}, {63,137}, {63,132}, {63,139}, {24,24}, {24,39},
+ {24,29}, {63,117}, {63,125}, {63,129}, {63,133}, {24,31}, {63,116},
+ {63,114}, {63,126}, {63,123}, {63,122}, {63,127}, {63,130}, {63,135},
+ {67,56}, {26,135}, {67,100}, {67,58}, {26,140}, {26,144}, {67,109},
+ {67,117}, {67,102}, {26,136}, {67,106}, {63,118}, {26,137}, {67,113},
+ {67,118}, {67,110}, {67,112}, {67,121}, {67,114}, {67,62}, {67,105},
+ {26,145}, {26,141}, {67,60}, {67,107}, {26,139}, {67,101}, {26,138},
+ {67,115}, {67,98}, {67,57}, {26,142}, {67,120}, {67,59}, {67,111},
+ {67,108}, {67,103}, {67,55}, {67,54}, {67,97}, {67,116}, {26,143},
+ {67,119}, {67,61}, {67,99}, {29,18}, {29,26}, {29,21}, {71,100}, {71,97},
+ {71,39}, {29,16}, {29,15}, {29,22}, {71,37}, {29,20}, {71,49}, {71,35},
+ {71,36}, {29,14}, {71,99}, {29,24}, {71,52}, {71,57}, {71,51}, {74,174},
+ {71,47}, {71,55}, {71,53}, {71,40}, {71,34}, {71,61}, {29,23}, {71,62},
+ {71,56}, {71,45}, {71,43}, {71,38}, {71,46}, {71,59}, {71,42}, {71,58},
+ {71,98}, {29,19}, {71,54}, {71,60}, {71,50}, {71,44}, {29,17}, {67,104},
+ {71,48}, {29,25}, {71,41}, {74,180}, {30,183}, {74,179}, {74,176},
+ {75,4}, {30,187}, {75,1}, {74,184}, {75,3}, {74,169}, {74,182}, {30,189},
+ {74,161}, {74,159}, {75,2}, {75,0}, {74,190}, {74,173}, {74,172}, {74,162},
+ {31,0}, {74,168}, {74,178}, {74,189}, {31,3}, {75,5}, {32,168}, {31,5},
+ {30,190}, {74,166}, {74,175}, {74,158}, {74,160}, {30,181}, {31,2},
+ {30,186}, {74,167}, {74,183}, {74,177}, {31,1}, {74,157}, {32,163},
+ {74,185}, {74,188}, {30,188}, {74,171}, {31,4}, {30,185}, {30,184},
+ {74,181}, {74,187}, {30,182}, {74,164}, {74,186}, {74,165}, {74,170},
+ {77,146}, {77,151}, {32,165}, {32,167}, {77,157}, {32,161}, {77,172},
+ {77,163}, {77,152}, {77,153}, {77,162}, {32,174}, {77,161}, {77,145},
+ {77,160}, {77,148}, {77,173}, {32,173}, {32,171}, {77,149}, {77,168},
+ {77,154}, {77,167}, {77,169}, {77,144}, {32,166}, {77,170}, {77,158},
+ {32,170}, {77,155}, {32,172}, {77,164}, {32,164}, {77,150}, {77,165},
+ {77,159}, {74,163}, {77,166}, {77,147}, {32,169}, {77,171}, {32,162},
+ {77,142}, {80,32}, {80,25}, {33,169}, {80,20}, {80,35}, {80,27}, {77,156},
+ {80,37}, {80,21}, {33,168}, {80,31}, {33,170}, {33,178}, {33,176},
+ {80,33}, {33,177}, {80,23}, {80,24}, {80,29}, {80,34}, {77,141}, {33,171},
+ {80,42}, {80,39}, {80,43}, {80,30}, {80,26}, {80,40}, {82,42}, {80,28},
+ {33,174}, {33,173}, {77,143}, {33,175}, {80,36}, {80,38}, {33,172},
+ {80,41}, {80,19}, {80,22}, {82,51}, {82,35}, {34,171}, {82,49}, {82,33},
+ {34,172}, {82,44}, {82,40}, {34,177}, {82,50}, {82,34}, {82,37}, {34,169},
+ {82,52}, {82,45}, {82,48}, {34,175}, {34,180}, {34,178}, {82,41}, {82,36},
+ {34,173}, {34,174}, {82,32}, {34,170}, {34,168}, {34,176}, {82,47},
+ {34,179}, {82,43}, {82,53}, {34,181}, {82,39}, {82,46}, {83,179}, {84,2},
+ {83,181}, {83,188}, {82,38}, {83,186}, {83,169}, {84,0}, {35,131},
+ {83,173}, {83,190}, {83,180}, {35,130}, {84,4}, {83,182}, {83,187},
+ {83,189}, {83,167}, {84,1}, {83,178}, {83,183}, {83,171}, {83,175},
+ {84,3}, {83,185}, {83,168}, {83,172}, {83,174}, {83,184}, {35,129},
+ {83,177}, {83,170}, {83,176}, {85,33}, {85,38}, {36,15}, {85,40}, {36,9},
+ {85,36}, {85,42}, {36,14}, {36,10}, {36,11}, {85,32}, {85,39}, {36,13},
+ {85,37}, {36,12}, {85,31}, {85,35}, {85,34}, {85,30}, {85,41}, {36,113},
+ {86,45}, {86,48}, {86,44}, {86,46}, {86,47}, {86,41}, {86,42}, {86,39},
+ {86,43}, {86,40}, {36,114}, {36,115}, {87,11}, {87,13}, {87,12}, {87,14},
+ {36,160}, {87,10}, {36,159}, {36,161}, {87,139}, {87,140}, {37,4},
+ {87,138}, {88,19}, {88,18}, {88,20}, {37,31}, {88,21}, {37,30}, {88,22},
+ {88,50}, {88,53}, {88,52}, {37,40}, {88,51}, {37,50}, {37,48}, {37,49},
+ {37,55}, {88,128}, {88,129}, {88,127}, {88,137}, {9,184}, {55,4}, {59,56},
+ {71,101}, {82,54}, {9,185}, {12,108}, {15,59}, {55,5}, {55,6}, {18,108},
+ {21,61}, {59,58}, {59,57}, {21,99}, {21,60}, {59,59}, {21,62}, {21,98},
+ {21,97}, {21,59}, {24,40}, {63,144}, {63,142}, {63,143}, {63,141},
+ {26,146}, {26,149}, {26,151}, {26,150}, {26,147}, {26,148}, {71,103},
+ {71,102}, {29,27}, {71,104}, {71,105}, {29,28}, {75,13}, {75,11}, {77,179},
+ {75,9}, {75,10}, {31,6}, {75,6}, {75,14}, {75,8}, {75,12}, {77,175},
+ {77,177}, {77,178}, {32,179}, {77,174}, {32,178}, {77,176}, {32,175},
+ {32,176}, {32,177}, {75,7}, {33,181}, {80,46}, {80,44}, {80,45}, {33,179},
+ {33,182}, {33,180}, {82,55}, {82,56}, {34,182}, {84,5}, {84,7}, {84,6},
+ {35,132}, {36,16}, {85,45}, {85,44}, {85,43}, {9,186}, {40,106}, {41,24},
+ {5,169}, {41,22}, {41,25}, {41,23}, {42,110}, {7,129}, {7,130}, {42,112},
+ {7,127}, {42,111}, {42,109}, {7,128}, {7,126}, {44,152}, {44,155},
+ {9,189}, {44,154}, {44,153}, {9,188}, {9,187}, {10,0}, {44,156}, {9,190},
+ {47,134}, {12,110}, {12,111}, {12,112}, {47,135}, {47,131}, {12,109},
+ {47,132}, {47,133}, {47,130}, {15,100}, {15,97}, {51,5}, {15,98}, {15,101},
+ {51,6}, {15,62}, {15,60}, {15,61}, {15,99}, {18,109}, {55,9}, {18,117},
+ {55,8}, {55,11}, {18,113}, {55,10}, {21,107}, {18,111}, {18,114}, {18,110},
+ {18,115}, {18,116}, {18,112}, {55,7}, {21,103}, {59,61}, {59,99}, {59,98},
+ {21,108}, {21,104}, {21,105}, {59,60}, {59,62}, {59,97}, {21,100},
+ {21,102}, {21,106}, {21,101}, {63,147}, {63,145}, {63,146}, {24,42},
+ {24,43}, {63,148}, {24,41}, {26,152}, {26,154}, {26,153}, {67,123},
+ {67,124}, {71,107}, {71,106}, {31,7}, {31,8}, {75,15}, {31,9}, {77,182},
+ {77,180}, {77,181}, {32,180}, {80,47}, {34,183}, {32,181}, {10,1},
+ {15,102}, {51,7}, {55,12}, {18,118}, {21,109}, {59,100}, {59,102},
+ {21,111}, {21,110}, {21,112}, {21,113}, {59,101}, {24,46}, {24,47},
+ {24,45}, {26,155}, {24,44}, {63,149}, {26,156}, {71,108}, {75,16},
+ {31,10}, {32,182}, {80,48}, {80,52}, {33,185}, {80,49}, {33,186}, {33,184},
+ {80,53}, {33,187}, {80,51}, {82,57}, {33,183}, {34,184}, {87,141},
+ {10,2}, {18,120}, {18,119}, {21,114}, {59,104}, {59,103}, {21,115},
+ {63,153}, {24,51}, {24,48}, {63,152}, {24,50}, {63,150}, {24,49}, {63,151},
+ {67,125}, {26,157}, {71,111}, {29,29}, {71,109}, {29,30}, {29,31},
+ {71,110}, {29,32}, {75,17}, {31,14}, {31,11}, {31,16}, {75,19}, {31,12},
+ {75,18}, {31,15}, {31,13}, {77,185}, {77,187}, {32,183}, {77,186},
+ {32,184}, {77,184}, {77,183}, {80,55}, {80,54}, {33,188}, {80,56},
+ {82,62}, {34,186}, {82,61}, {82,58}, {34,185}, {82,59}, {82,60}, {84,8},
+ {84,9}, {35,133}, {36,19}, {85,46}, {36,17}, {36,18}, {85,47}, {36,116},
+ {36,117}, {86,49}, {37,5}, {87,143}, {37,7}, {87,142}, {87,144}, {37,6},
+ {88,23}, {88,109}, {10,3}, {24,52}, {67,126}, {71,112}, {31,17}, {31,18},
+ {10,4}, {29,33}, {34,187}, {12,113}, {31,19}, {36,162}, {12,114}, {55,13},
+ {59,105}, {59,107}, {59,106}, {63,157}, {63,154}, {24,53}, {24,54},
+ {63,155}, {63,156}, {67,128}, {67,133}, {26,158}, {67,127}, {67,129},
+ {67,136}, {67,131}, {67,135}, {67,132}, {67,130}, {67,134}, {26,159},
+ {71,115}, {71,113}, {29,35}, {29,34}, {71,114}, {29,36}, {75,22}, {75,21},
+ {31,20}, {75,20}, {77,188}, {77,190}, {78,1}, {78,0}, {32,185}, {77,189},
+ {80,97}, {33,189}, {80,61}, {80,98}, {33,190}, {80,59}, {80,62}, {80,60},
+ {80,57}, {34,0}, {80,58}, {82,97}, {82,99}, {82,98}, {84,10}, {84,11},
+ {85,48}, {36,119}, {36,118}, {87,15}, {87,16}, {37,8}, {87,145}, {37,41},
+ {12,115}, {21,116}, {67,138}, {67,137}, {71,117}, {71,116}, {32,186},
+ {78,3}, {78,2}, {80,101}, {80,99}, {80,102}, {80,100}, {34,188}, {82,100},
+ {82,101}, {82,102}, {85,49}, {86,50}, {87,146}, {12,116}, {75,23},
+ {78,4}, {12,117}, {26,160}, {75,24}, {34,1}, {80,103}, {34,189}, {84,12},
+ {84,13}, {36,20}, {87,17}, {12,118}, {18,123}, {18,124}, {55,14}, {21,117},
+ {21,118}, {59,108}, {21,119}, {24,58}, {24,60}, {63,159}, {63,160},
+ {63,158}, {24,55}, {24,56}, {24,59}, {24,57}, {67,139}, {26,161}, {26,162},
+ {71,124}, {29,39}, {71,119}, {71,118}, {71,123}, {29,37}, {31,27},
+ {71,120}, {71,125}, {71,122}, {71,121}, {29,38}, {31,25}, {75,26},
+ {31,21}, {75,27}, {75,25}, {31,24}, {31,22}, {31,26}, {31,23}, {78,5},
+ {78,10}, {78,6}, {78,9}, {32,187}, {76,148}, {78,8}, {78,7}, {34,4},
+ {34,2}, {34,5}, {34,3}, {80,104}, {80,105}, {80,106}, {34,6}, {82,106},
+ {35,0}, {82,104}, {35,1}, {82,103}, {82,105}, {34,190}, {84,17}, {84,14},
+ {84,15}, {84,16}, {85,50}, {36,22}, {36,21}, {86,52}, {86,51}, {36,120},
+ {36,163}, {37,9}, {37,32}, {88,24}, {88,110}, {88,111}, {12,119}, {59,109},
+ {63,161}, {67,140}, {67,141}, {26,163}, {26,164}, {71,126}, {29,40},
+ {32,188}, {80,107}, {34,7}, {82,109}, {35,2}, {82,108}, {82,110}, {82,107},
+ {85,53}, {84,18}, {84,19}, {35,134}, {85,52}, {85,51}, {86,53}, {88,112},
+ {12,120}, {12,121}, {15,103}, {51,8}, {55,15}, {21,120}, {21,123},
+ {21,121}, {59,110}, {21,125}, {21,122}, {21,124}, {24,62}, {63,162},
+ {63,163}, {71,128}, {24,61}, {24,97}, {24,98}, {67,143}, {67,142},
+ {26,165}, {26,166}, {67,144}, {71,127}, {26,168}, {29,41}, {26,167},
+ {31,28}, {71,129}, {29,43}, {29,42}, {71,130}, {71,133}, {71,131},
+ {71,132}, {29,44}, {31,33}, {31,31}, {31,30}, {75,29}, {31,32}, {75,28},
+ {78,11}, {75,30}, {31,29}, {75,31}, {78,14}, {78,12}, {78,13}, {78,18},
+ {34,11}, {78,17}, {78,20}, {78,19}, {78,16}, {78,15}, {32,189}, {80,110},
+ {80,109}, {34,10}, {34,8}, {34,9}, {80,108}, {82,113}, {35,3}, {82,112},
+ {82,111}, {35,4}, {84,24}, {84,23}, {84,21}, {84,20}, {35,136}, {35,135},
+ {84,25}, {86,54}, {36,121}, {85,55}, {36,23}, {85,54}, {84,22}, {86,55},
+ {36,164}, {37,33}, {88,25}, {88,113}, {12,122}, {55,16}, {78,21}, {12,123},
+ {67,146}, {67,145}, {75,32}, {78,23}, {78,22}, {34,12}, {82,114}, {82,115},
+ {35,137}, {88,114}, {15,104}, {21,127}, {21,126}, {63,164}, {63,166},
+ {24,100}, {63,165}, {24,99}, {24,101}, {63,167}, {67,148}, {67,150},
+ {67,149}, {67,152}, {26,169}, {67,151}, {67,147}, {67,153}, {71,140},
+ {71,143}, {71,145}, {71,135}, {71,139}, {71,136}, {29,46}, {29,49},
+ {29,51}, {71,137}, {71,138}, {29,50}, {71,141}, {71,144}, {71,142},
+ {29,52}, {29,48}, {71,134}, {29,45}, {29,47}, {31,35}, {75,38}, {75,36},
+ {75,35}, {75,41}, {75,40}, {75,39}, {75,34}, {31,34}, {75,33}, {75,37},
+ {31,36}, {78,26}, {78,30}, {78,27}, {78,29}, {78,28}, {78,25}, {78,31},
+ {78,34}, {78,32}, {78,33}, {33,0}, {32,190}, {78,24}, {78,35}, {80,115},
+ {80,118}, {80,120}, {80,119}, {80,113}, {80,117}, {80,112}, {80,114},
+ {34,13}, {80,111}, {80,116}, {82,128}, {82,117}, {35,5}, {35,6}, {82,116},
+ {82,121}, {82,127}, {82,119}, {82,126}, {82,123}, {82,122}, {82,125},
+ {82,120}, {82,118}, {82,124}, {84,32}, {84,30}, {35,138}, {84,29},
+ {84,35}, {84,33}, {35,139}, {84,28}, {84,26}, {84,27}, {35,141}, {84,31},
+ {35,140}, {84,34}, {85,56}, {85,62}, {85,57}, {36,27}, {85,97}, {36,26},
+ {85,61}, {85,60}, {36,25}, {85,59}, {36,24}, {85,58}, {86,61}, {86,97},
+ {86,62}, {86,59}, {36,123}, {86,56}, {86,60}, {86,99}, {86,98}, {86,57},
+ {86,58}, {36,122}, {87,18}, {36,167}, {87,19}, {36,165}, {36,166},
+ {87,147}, {37,10}, {88,54}, {37,42}, {88,115}, {37,43}, {88,116}, {88,117},
+ {88,131}, {88,130}, {37,58}, {88,141}, {15,105}, {63,169}, {63,168},
+ {26,170}, {26,171}, {67,154}, {71,146}, {75,44}, {29,53}, {31,37},
+ {75,42}, {75,45}, {31,38}, {78,36}, {75,43}, {80,121}, {34,14}, {82,129},
+ {84,38}, {84,36}, {84,37}, {85,98}, {36,28}, {86,100}, {36,170}, {36,124},
+ {36,168}, {36,169}, {87,148}, {37,34}, {15,106}, {80,122}, {51,9},
+ {24,102}, {67,155}, {26,172}, {67,156}, {71,148}, {71,147}, {31,40},
+ {29,54}, {29,55}, {71,151}, {71,150}, {71,149}, {75,46}, {75,49}, {75,48},
+ {75,47}, {31,39}, {78,40}, {78,38}, {78,37}, {78,39}, {34,15}, {80,124},
+ {80,125}, {34,16}, {80,123}, {82,131}, {82,130}, {82,133}, {35,7},
+ {82,132}, {84,39}, {84,41}, {84,40}, {85,99}, {85,102}, {85,100}, {85,101},
+ {86,101}, {36,125}, {87,20}, {87,21}, {87,22}, {37,11}, {37,35}, {88,118},
+ {15,107}, {29,56}, {31,41}, {80,126}, {86,102}, {88,132}, {51,10},
+ {37,59}, {15,108}, {75,50}, {80,127}, {82,134}, {85,103}, {86,103},
+ {15,109}, {67,157}, {67,158}, {26,173}, {26,174}, {71,153}, {29,58},
+ {29,57}, {71,152}, {78,41}, {80,128}, {80,130}, {80,129}, {34,19},
+ {34,18}, {34,17}, {36,30}, {85,104}, {36,29}, {86,105}, {86,104}, {37,12},
+ {87,149}, {18,125}, {63,170}, {67,161}, {67,159}, {67,160}, {71,162},
+ {71,157}, {71,154}, {71,161}, {71,163}, {29,60}, {71,160}, {71,156},
+ {71,155}, {71,159}, {71,158}, {29,59}, {75,61}, {75,56}, {75,54}, {75,97},
+ {75,55}, {75,51}, {75,57}, {75,52}, {78,50}, {75,53}, {75,98}, {75,60},
+ {31,42}, {75,59}, {75,58}, {75,62}, {78,42}, {78,45}, {78,44}, {78,52},
+ {78,47}, {78,51}, {78,49}, {78,48}, {78,46}, {78,43}, {33,3}, {33,2},
+ {33,4}, {33,1}, {78,53}, {80,136}, {80,139}, {80,137}, {80,141}, {80,142},
+ {80,134}, {34,24}, {80,135}, {80,133}, {80,140}, {80,132}, {80,131},
+ {34,23}, {34,21}, {34,20}, {80,138}, {82,143}, {82,149}, {35,10}, {82,144},
+ {82,147}, {82,151}, {35,11}, {82,146}, {82,138}, {82,137}, {82,150},
+ {82,141}, {82,139}, {82,148}, {82,140}, {35,9}, {35,8}, {82,135}, {82,136},
+ {82,145}, {82,142}, {84,44}, {84,47}, {34,22}, {84,45}, {84,51}, {84,49},
+ {84,43}, {84,54}, {84,42}, {35,143}, {84,50}, {84,46}, {35,142}, {84,53},
+ {84,52}, {85,107}, {85,106}, {85,113}, {85,109}, {85,112}, {36,32},
+ {85,110}, {85,111}, {85,105}, {85,108}, {36,31}, {36,127}, {86,116},
+ {86,111}, {86,115}, {86,118}, {86,114}, {86,110}, {36,129}, {86,113},
+ {86,117}, {36,128}, {86,108}, {84,48}, {86,112}, {86,109}, {86,106},
+ {86,107}, {36,126}, {87,26}, {87,28}, {87,31}, {87,27}, {87,32}, {87,25},
+ {87,23}, {36,171}, {87,29}, {36,173}, {36,172}, {87,24}, {87,30}, {87,154},
+ {37,13}, {87,155}, {87,153}, {87,150}, {87,152}, {87,151}, {88,26},
+ {88,28}, {88,27}, {88,57}, {88,56}, {88,55}, {88,58}, {37,51}, {37,52},
+ {88,138}, {88,142}, {18,126}, {59,111}, {63,173}, {24,103}, {63,171},
+ {63,172}, {67,162}, {67,163}, {26,177}, {26,175}, {67,164}, {26,176},
+ {71,168}, {71,171}, {71,165}, {71,172}, {71,164}, {71,166}, {71,167},
+ {71,170}, {29,97}, {71,175}, {71,174}, {29,61}, {71,169}, {71,173},
+ {29,62}, {75,108}, {31,47}, {75,103}, {31,43}, {75,100}, {75,106},
+ {75,109}, {31,48}, {75,105}, {75,102}, {75,110}, {75,101}, {75,107},
+ {31,44}, {75,99}, {31,45}, {31,46}, {75,104}, {78,105}, {78,58}, {78,59},
+ {78,62}, {78,60}, {78,54}, {78,57}, {78,101}, {78,61}, {33,5}, {78,103},
+ {78,100}, {33,6}, {78,102}, {78,55}, {78,98}, {78,99}, {78,97}, {80,146},
+ {80,148}, {80,151}, {80,145}, {34,25}, {80,153}, {80,144}, {80,154},
+ {80,150}, {80,152}, {80,156}, {80,149}, {80,157}, {80,147}, {80,143},
+ {34,26}, {80,155}, {34,27}, {35,13}, {78,56}, {82,177}, {82,168}, {35,15},
+ {82,164}, {35,16}, {82,173}, {82,167}, {82,157}, {35,14}, {82,170},
+ {82,165}, {82,166}, {82,152}, {82,159}, {82,174}, {82,171}, {82,163},
+ {82,175}, {82,158}, {82,153}, {82,172}, {82,155}, {82,169}, {82,160},
+ {82,176}, {82,156}, {35,12}, {82,154}, {82,161}, {82,162}, {84,61},
+ {84,59}, {84,98}, {84,110}, {84,101}, {84,60}, {84,56}, {84,103}, {84,62},
+ {84,99}, {84,58}, {84,106}, {84,55}, {84,97}, {84,102}, {84,104}, {84,107},
+ {84,57}, {84,111}, {84,112}, {84,105}, {84,109}, {84,100}, {85,129},
+ {85,132}, {36,33}, {85,131}, {85,136}, {85,134}, {36,34}, {85,125},
+ {85,115}, {85,114}, {36,36}, {85,127}, {85,128}, {85,124}, {85,116},
+ {85,121}, {84,108}, {85,117}, {36,35}, {85,123}, {85,122}, {85,118},
+ {85,130}, {85,119}, {86,123}, {85,133}, {85,135}, {85,126}, {85,120},
+ {86,124}, {86,126}, {86,120}, {36,130}, {86,133}, {86,131}, {36,131},
+ {86,130}, {86,129}, {86,122}, {86,119}, {86,125}, {86,134}, {86,121},
+ {86,127}, {87,41}, {87,46}, {87,36}, {87,39}, {36,174}, {87,43}, {87,50},
+ {86,128}, {87,37}, {87,47}, {87,51}, {87,42}, {87,35}, {87,45}, {87,44},
+ {87,49}, {87,48}, {86,132}, {87,40}, {87,34}, {87,38}, {37,14}, {37,15},
+ {87,33}, {87,166}, {87,157}, {87,165}, {87,162}, {87,163}, {87,156},
+ {87,159}, {87,167}, {87,161}, {87,160}, {87,158}, {87,164}, {88,29},
+ {88,30}, {88,32}, {88,31}, {88,34}, {88,33}, {88,60}, {88,59}, {88,119},
+ {88,120}, {88,133}, {37,56}, {37,60}, {88,143}, {37,61}, {18,127},
+ {35,144}, {85,137}, {37,16}, {37,17}, {18,128}, {63,174}, {24,104},
+ {71,176}, {75,112}, {75,113}, {75,111}, {78,107}, {78,106}, {33,7},
+ {80,159}, {78,108}, {80,158}, {82,179}, {35,17}, {35,19}, {82,178},
+ {35,18}, {84,113}, {84,115}, {84,114}, {85,138}, {36,37}, {36,175},
+ {87,168}, {88,35}, {88,146}, {18,129}, {67,165}, {29,98}, {75,115},
+ {75,114}, {78,109}, {35,20}, {35,145}, {86,135}, {88,139}, {18,130},
+ {26,178}, {29,99}, {82,180}, {87,52}, {21,128}, {78,110}, {37,36},
+ {21,129}, {29,100}, {33,8}, {87,53}, {21,130}, {71,177}, {31,50}, {75,116},
+ {75,117}, {31,49}, {78,111}, {33,12}, {33,10}, {33,11}, {33,9}, {80,160},
+ {34,28}, {84,117}, {84,116}, {84,119}, {84,118}, {35,146}, {85,139},
+ {85,141}, {85,140}, {36,38}, {86,136}, {87,54}, {87,55}, {36,176},
+ {88,36}, {88,61}, {37,53}, {59,112}, {75,118}, {78,112}, {82,181},
+ {63,175}, {78,113}, {80,162}, {80,161}, {87,56}, {37,18}, {88,37},
+ {88,62}, {24,105}, {71,178}, {71,179}, {75,119}, {24,106}, {34,29},
+ {80,163}, {85,143}, {36,39}, {85,144}, {85,142}, {87,57}, {87,169},
+ {24,107}, {78,116}, {78,115}, {78,114}, {80,164}, {80,168}, {80,167},
+ {80,166}, {80,165}, {34,30}, {82,182}, {84,121}, {35,147}, {84,120},
+ {85,145}, {86,139}, {86,138}, {36,132}, {86,137}, {87,60}, {87,59},
+ {87,58}, {26,179}, {75,120}, {33,13}, {82,183}, {82,184}, {86,140},
+ {87,61}, {87,170}, {88,38}, {88,121}, {88,148}, {26,180}, {33,14},
+ {80,169}, {82,185}, {85,146}, {87,62}, {29,102}, {78,117}, {80,170},
+ {82,186}, {82,187}, {82,188}, {84,126}, {84,122}, {36,40}, {84,125},
+ {84,124}, {35,148}, {84,123}, {35,150}, {35,149}, {85,148}, {85,147},
+ {36,41}, {36,42}, {36,134}, {86,141}, {36,133}, {87,99}, {87,100},
+ {87,98}, {87,97}, {37,20}, {87,171}, {87,172}, {87,173}, {37,19}, {88,39},
+ {88,42}, {88,41}, {88,40}, {88,147}, {31,51}, {34,37}, {84,127}, {85,149},
+ {36,135}, {86,142}, {88,149}, {31,52}, {78,118}, {86,143}, {88,97},
+ {40,10}, {60,188}, {0,10}, {0,23}, {0,25}, {0,27}, {0,31}, {0,32},
+ {0,35}, {0,36}, {0,39}, {0,40}, {0,43}, {0,44}, {0,47}, {0,48}, {0,51},
+ {0,52}, {0,55}, {0,56}, {0,59}, {0,60}, {0,134}, {0,135}, {0,138},
+ {0,139}, {0,136}, {0,137}, {0,28}, {0,13}, {0,15}, {0,17}, {0,18},
+ {0,19}, {0,20}, {0,61}, {0,62}, {0,97}, {0,98}, {0,99}, {0,100}, {0,140},
+ {0,141}, {0,142}, {0,158}, {0,159}, {0,160}, {0,161}, {0,162}, {1,12},
+ {1,13}, {1,14}, {0,9}, {0,109}, {1,3}, {1,8}, {0,110}, {0,29}, {0,30},
+ {0,111}, {0,143}, {0,1}, {0,144}, {0,4}, {1,1}, {1,111}, {1,112}, {1,113},
+ {1,114}, {1,115}, {1,116}, {1,117}, {1,118}, {1,119}, {1,120}, {0,7},
+ {0,6}, {0,149}, {0,151}, {0,150}, {0,8}, {1,9}, {1,143}, {1,144}, {1,145},
+ {1,146}, {1,147}, {1,148}, {1,149}, {1,150}, {1,151}, {1,152}, {1,153},
+ {1,154}, {1,155}, {1,156}, {1,157}, {1,158}, {1,159}, {1,160}, {1,161},
+ {1,162}, {1,163}, {1,164}, {1,165}, {1,166}, {1,167}, {1,168}, {1,2},
+ {0,132}, {1,169}, {1,170}, {1,171}, {1,172}, {1,173}, {1,174}, {1,175},
+ {1,176}, {1,177}, {1,178}, {1,179}, {1,180}, {1,181}, {1,182}, {1,183},
+ {1,184}, {1,185}, {1,186}, {1,187}, {1,188}, {1,189}, {1,190}, {2,0},
+ {2,1}, {2,2}, {2,3}, {0,33}, {0,21}, {0,34}, {0,14}
+};
+
+/* This returns ERROR if the code point doesn't exist. */
+long int big5_to_unicode(int r, int c)
+{
+ assert(r >= 0 && r < 94);
+ assert(c >= 0 && c < 191);
+ return big5_forward[r][c];
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_big5(long int unicode, int *r, int *c)
+{
+ int rr, cc;
+ long int uu;
+ int i, j, k;
+
+ i = -1;
+ j = lenof(big5_backward);
+ while (j - i > 1) {
+ k = (i + j) / 2;
+ rr = big5_backward[k].r;
+ cc = big5_backward[k].c;
+ uu = big5_forward[rr][cc];
+ if (unicode > uu)
+ i = k;
+ else if (unicode < uu)
+ j = k;
+ else {
+ *r = rr;
+ *c = cc;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+
+int main(void)
+{
+ int r, c, rr, cc, ret;
+ long int u, uu;
+
+ /*
+ * N.B. Big5 <-> Unicode round-trip mapping is known not to
+ * work, because of the various duplicate characters:
+ *
+ * - 0xA15A (0,26) and 0xA1C4 (0,132) are both U+FF3F
+ * - 0xA1FE (0,190) and 0xA2AC (1,108) are both U+2571
+ * - 0xA240 (1,0) and 0xA2AD (1,109) are both U+2572
+ * - 0xA2CC (1,140) and 0xA451 (3,17) are both U+5341
+ * - 0xA2CE (1,142) and 0xA4CA (3,138) are both U+5345
+ */
+
+ for (r = 0; r < 94; r++) {
+ for (c = 0; c < 191; c++) {
+ u = big5_to_unicode(r, c);
+ if (u != ERROR) {
+ ret = unicode_to_big5(u, &rr, &cc);
+ if (!ret)
+ printf("(%d,%d) -> U-%08lx but didn't convert back\n",
+ r, c, u);
+ else if (rr != r || cc != c)
+ printf("(%d,%d) -> U-%08lx -> (%d,%d)\n",
+ r, c, u, rr, cc);
+ }
+ }
+ }
+
+ for (u = 0; u < 0x10000L; u++) {
+ ret = unicode_to_big5(u, &r, &c);
+ if (ret) {
+ uu = big5_to_unicode(r, c);
+ if (uu == ERROR)
+ printf("U-%08lx -> (%d,%d) but didn't convert back\n",
+ u, r, c);
+ else if (uu != u)
+ printf("U-%08lx -> (%d,%d) -> U-%08lx\n", u, r, c, uu);
+ }
+ }
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/charset/charset.h b/app/tools/halibut/charset/charset.h
new file mode 100644
index 0000000..c8e9f16
--- /dev/null
+++ b/app/tools/halibut/charset/charset.h
@@ -0,0 +1,229 @@
+/*
+ * charset.h - header file for general character set conversion
+ * routines.
+ */
+
+#ifndef charset_charset_h
+#define charset_charset_h
+
+#include <stddef.h>
+
+/*
+ * Enumeration that lists all the multibyte or single-byte
+ * character sets known to this library.
+ */
+typedef enum {
+ CS_NONE, /* used for reporting errors, etc */
+ CS_ASCII, /* ordinary US-ASCII is worth having! */
+ CS_ISO8859_1,
+ CS_ISO8859_1_X11, /* X font encoding with VT100 glyphs */
+ CS_ISO8859_2,
+ CS_ISO8859_3,
+ CS_ISO8859_4,
+ CS_ISO8859_5,
+ CS_ISO8859_6,
+ CS_ISO8859_7,
+ CS_ISO8859_8,
+ CS_ISO8859_9,
+ CS_ISO8859_10,
+ CS_ISO8859_11,
+ CS_ISO8859_13,
+ CS_ISO8859_14,
+ CS_ISO8859_15,
+ CS_ISO8859_16,
+ CS_CP437,
+ CS_CP850,
+ CS_CP866,
+ CS_CP1250,
+ CS_CP1251,
+ CS_CP1252,
+ CS_CP1253,
+ CS_CP1254,
+ CS_CP1255,
+ CS_CP1256,
+ CS_CP1257,
+ CS_CP1258,
+ CS_KOI8_R,
+ CS_KOI8_U,
+ CS_KOI8_RU,
+ CS_JISX0201,
+ CS_MAC_ROMAN,
+ CS_MAC_TURKISH,
+ CS_MAC_CROATIAN,
+ CS_MAC_ICELAND,
+ CS_MAC_ROMANIAN,
+ CS_MAC_GREEK,
+ CS_MAC_CYRILLIC,
+ CS_MAC_THAI,
+ CS_MAC_CENTEURO,
+ CS_MAC_SYMBOL,
+ CS_MAC_DINGBATS,
+ CS_MAC_ROMAN_OLD,
+ CS_MAC_CROATIAN_OLD,
+ CS_MAC_ICELAND_OLD,
+ CS_MAC_ROMANIAN_OLD,
+ CS_MAC_GREEK_OLD,
+ CS_MAC_CYRILLIC_OLD,
+ CS_MAC_UKRAINE,
+ CS_MAC_VT100,
+ CS_MAC_VT100_OLD,
+ CS_VISCII,
+ CS_HP_ROMAN8,
+ CS_DEC_MCS,
+ CS_UTF8,
+ CS_UTF7,
+ CS_UTF7_CONSERVATIVE,
+ CS_UTF16,
+ CS_UTF16BE,
+ CS_UTF16LE,
+ CS_EUC_JP,
+ CS_EUC_CN,
+ CS_EUC_KR,
+ CS_ISO2022_JP,
+ CS_ISO2022_KR,
+ CS_BIG5,
+ CS_SHIFT_JIS,
+ CS_HZ,
+ CS_CP949,
+ CS_PDF,
+ CS_PSSTD,
+ CS_CTEXT,
+ CS_ISO2022,
+ CS_BS4730,
+ CS_DEC_GRAPHICS,
+ CS_EUC_TW
+} charset_t;
+
+typedef struct {
+ unsigned long s0, s1;
+} charset_state;
+
+/*
+ * This macro is used to initialise a charset_state structure:
+ *
+ * charset_state mystate = CHARSET_INIT_STATE;
+ */
+#define CHARSET_INIT_STATE { 0L, 0L } /* a suitable initialiser */
+
+/*
+ * This external variable contains the same data, but is provided
+ * for easy structure-copy assignment:
+ *
+ * mystate = charset_init_state;
+ */
+extern const charset_state charset_init_state;
+
+/*
+ * Routine to convert a MB/SB character set to Unicode.
+ *
+ * This routine accepts some number of bytes, updates a state
+ * variable, and outputs some number of Unicode characters. There
+ * are no guarantees. You can't even guarantee that at most one
+ * Unicode character will be output per byte you feed in; for
+ * example, suppose you're reading UTF-8, you've seen E1 80, and
+ * then you suddenly see FE. Now you need to output _two_ error
+ * characters - one for the incomplete sequence E1 80, and one for
+ * the completely invalid UTF-8 byte FE.
+ *
+ * Returns the number of wide characters output; will never output
+ * more than the size of the buffer (as specified on input).
+ * Advances the `input' pointer and decrements `inlen', to indicate
+ * how far along the input string it got.
+ *
+ * The sequence of `errlen' wide characters pointed to by `errstr'
+ * will be used to indicate a conversion error. If `errstr' is
+ * NULL, `errlen' will be ignored, and the library will choose
+ * something sensible to do on its own. For Unicode, this will be
+ * U+FFFD (REPLACEMENT CHARACTER).
+ */
+
+int charset_to_unicode(const char **input, int *inlen,
+ wchar_t *output, int outlen,
+ int charset, charset_state *state,
+ const wchar_t *errstr, int errlen);
+
+/*
+ * Routine to convert Unicode to an MB/SB character set.
+ *
+ * This routine accepts some number of Unicode characters, updates
+ * a state variable, and outputs some number of bytes.
+ *
+ * Returns the number of bytes output; will never output more than
+ * the size of the buffer (as specified on input), and will never
+ * output a partial MB character. Advances the `input' pointer and
+ * decrements `inlen', to indicate how far along the input string
+ * it got.
+ *
+ * If `error' is non-NULL and a character is found which cannot be
+ * expressed in the output charset, conversion will terminate at
+ * that character (so `input' points to the offending character)
+ * and `*error' will be set to TRUE; if `error' is non-NULL and no
+ * difficult characters are encountered, `*error' will be set to
+ * FALSE. If `error' is NULL, difficult characters will simply be
+ * ignored.
+ *
+ * If `input' is NULL, this routine will output the necessary bytes
+ * to reset the encoding state in any way which might be required
+ * at the end of an output piece of text.
+ */
+
+int charset_from_unicode(const wchar_t **input, int *inlen,
+ char *output, int outlen,
+ int charset, charset_state *state, int *error);
+
+/*
+ * Convert X11 encoding names to and from our charset identifiers.
+ */
+const char *charset_to_xenc(int charset);
+int charset_from_xenc(const char *name);
+
+/*
+ * Convert MIME encoding names to and from our charset identifiers.
+ */
+const char *charset_to_mimeenc(int charset);
+int charset_from_mimeenc(const char *name);
+
+/*
+ * Convert our own encoding names to and from our charset
+ * identifiers.
+ */
+const char *charset_to_localenc(int charset);
+int charset_from_localenc(const char *name);
+int charset_localenc_nth(int n);
+
+/*
+ * Convert Mac OS script/region/font to our charset identifiers.
+ */
+int charset_from_macenc(int script, int region, int sysvers,
+ const char *fontname);
+
+/*
+ * Upgrade a charset identifier to a superset charset which is
+ * often confused with it. For example, people whose MUAs report
+ * their mail as ASCII or ISO8859-1 often in practice turn out to
+ * be using CP1252 quote characters, so when parsing incoming mail
+ * it is prudent to treat ASCII and ISO8859-1 as aliases for CP1252
+ * - and since it's a superset of both, this will cause no
+ * genuinely correct mail to be parsed wrongly.
+ */
+int charset_upgrade(int charset);
+
+/*
+ * This function returns TRUE if the input charset is a vaguely
+ * sensible superset of ASCII. That is, it returns FALSE for 7-bit
+ * encoding formats such as HZ and UTF-7.
+ */
+int charset_contains_ascii(int charset);
+
+/*
+ * This function tries to deduce the CS_* identifier of the charset
+ * used in the current C locale. It falls back to CS_ASCII if it
+ * can't figure it out at all, so it will always return a valid
+ * charset.
+ *
+ * (Note that you should have already called setlocale(LC_CTYPE,
+ * "") to guarantee that this function will do the right thing.)
+ */
+int charset_from_locale(void);
+
+#endif /* charset_charset_h */
diff --git a/app/tools/halibut/charset/cns11643.c b/app/tools/halibut/charset/cns11643.c
new file mode 100644
index 0000000..1b5a0f0
--- /dev/null
+++ b/app/tools/halibut/charset/cns11643.c
@@ -0,0 +1,13104 @@
+/*
+ * CNS 11643 implementation for libcharset. (This is the character set
+ * itself, not any particular multibyte encoding of it. Multibyte
+ * encodings of this character set are handled separately.)
+ */
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * There are two versions of CNS 11643, the 1986 one and the 1992 one.
+ * The 1986 version has three 94x94 planes of characters; the 1992 version
+ * has seven.
+ *
+ * Planes 1 and 2 appear to be identical between them. Plane 3 in the
+ * 1992 version was apparently derived from plane 14 in the 1986 one,
+ * but had more characters.
+ *
+ * Code tables for the 1992 standard are available from the ISO-IR.
+ *
+ * The 1992 standard contains:
+ * Plane 1: 5401 hanzi, plus some other stuff
+ * Plane 2: 7650 hanzi
+ * Plane 3: 6148 hanzi
+ * Plane 4: 7298 hanzi
+ * Plane 5: 8603 hanzi
+ * Plane 6: 6388 hanzi
+ * Plane 7: 6539 hanzi
+ *
+ * There are two sources of Unicode conversion tables:
+ * http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/CNS11643.TXT
+ * and
+ * http://www.unicode.org/Public/UNIDATA/Unihan.txt
+ *
+ * CNS11643.TXT is for the 1986 standard, so it only covers the first
+ * two and a bit planes. Unihan (in its kIRG_TSource tag) covers all
+ * seven planes of the 1992 standard, but only worries about the
+ * hanzi. We thus use both.
+ *
+ * One code point in CNS 11643, 0x46E3B, is referenced twice in Unihan, at
+ * U+4695 and U+278AE. We map it to the former.
+ *
+ * IRG source T3 includes not only plane 3 but also "some additional
+ * characters". We filter out the latter.
+ *
+ * First, extract the non-hanzi from CNS11643.TXT:
+grep -v '^#' CNS11643.TXT | grep -v '<CJK>' > CNS.TXT
+ * Then, extract the hanzi from Unihan.txt, converting to the usual
+ * Unicode format as we go:
+grep -v '^#' Unihan.txt | sed -n \
+ 's/^U+\([0-9A-F]*\).kIRG_TSource.\([0-9A-F]\)-\([0-9A-F]*\)$/0x\2\3 0x\1/p' \
+ | grep -v ' 0x278AE$' | grep -v '^0x36[4567]' >> CNS.TXT
+ * Mappings that are claimed as duplicates in CNS11643.TXT, but which have
+ * compatibility mappings now.
+cat <<EOF >> CNS.TXT
+0x1243E 0x3038 # HANGZHOU NUMERAL TEN
+0x1243F 0x3039 # HANGZHOU NUMERAL TWENTY
+0x12440 0x303A # HANGZHOU NUMERAL THIRTY
+EOF
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12721,$_+0x2F00),(0..6)'>>CNS.TXT
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12721,$_+0x2F00),(8..13)'>>CNS.TXT
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12721,$_+0x2F00),(15..18)'>>CNS.TXT
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12721,$_+0x2F00),(20..32)'>>CNS.TXT
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12721,$_+0x2F01),(33..93)'>>CNS.TXT
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12821,$_+0x2F5F),(0..93)'>>CNS.TXT
+perl -e 'map printf("0x%05X\t0x%04X\n",$_+0x12921,$_+0x2FBD),(0..24)'>>CNS.TXT
+ */
+/*
+ * These tables are generated from CNS.TXT generated above.
+ */
+
+/*
+ * I'm about to rely on the magic value ERROR not being above 0xFFFF.
+ */
+enum { compile_time_assertion = 1 / ((ERROR &~ 0xFFFF) == 0) };
+
+/*
+ * Mapping from CNS 11643 to Unicode. For these purposes each plane is
+ * considered to be a 94x94 square array, with coordinates running
+ * from (0,0) to (93,93).
+ *
+ * Since Unicode values used in this character set are bounded
+ * above by 0x30000, we can store 18 rather than 32 bits per entry.
+ * We do this by having two separate tables, one storing 16 bits
+ * per entry and another storing 2.
+ *
+ * The first table is generated by running the following sh+Perl
+ * over CNS.TXT:
+
+cat CNS.TXT | \
+perl -ne '$a{$1,hex$2,hex$3}=hex$4 if /^0x(\S)(\S\S)(\S\S)\s+0x(\S+)\s/;' \
+ -e 'END {$o=" "; for $p (0..6) { for $r (0..93) { for $c (0..93) {' \
+ -e '$k=$a{$p+1,$r+33,$c+33};' \
+ -e '$o .= (defined $k ? sprintf"0x%04x, ", $k & 0xFFFF : " ERROR, ");' \
+ -e '(print "$o\n"), $o=" " if length $o > 70; } } } print "$o\n"; }'
+
+ */
+static const unsigned short cns11643_forward_16[7*94*94] = {
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x30fb, 0xff1b, 0xff1a, 0xff1f,
+ 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52, 0x00b7, 0xfe54,
+ 0xfe55, 0xfe56, 0xfe57, 0xfe31, 0x2014, 0xfe32, 0x2013, ERROR, ERROR,
+ ERROR, ERROR, 0xff08, 0xff09, 0xfe35, 0xfe36, 0xff5b, 0xff5d, 0xfe37,
+ 0xfe38, 0x3014, 0x3015, 0xfe39, 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c,
+ 0x300a, 0x300b, 0xfe3d, 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c,
+ 0x300d, 0xfe41, 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a,
+ 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2032, 0x2035, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7, 0x3003,
+ 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605, 0x25c7, 0x25c6,
+ 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105, 0x203e, ERROR, 0xff3f,
+ ERROR, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60,
+ 0xfe61, 0xff0b, 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e,
+ 0xff1d, 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63,
+ 0xfe64, 0xfe66, 0xfe65, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f,
+ 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2641, 0x2609, 0x2191, 0x2193, 0x2192, 0x2190, 0x2196, 0x2197, 0x2199,
+ 0x2198, 0x2016, 0xff5c, 0xff0f, 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5,
+ 0x3012, 0xffe0, 0xffe1, 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a,
+ 0xfe6b, 0x33d5, 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f,
+ 0x33c4, 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587,
+ 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, 0x2589, 0x253c,
+ 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, 0x2502, 0x2595, 0x250c,
+ 0x2510, 0x2514, 0x2518, 0x256d, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e,
+ 0x256a, 0x2561, 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15,
+ 0xff16, 0xff17, 0xff18, 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164,
+ 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024,
+ 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x3038, 0x3039, 0x303a, 0xff21,
+ 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a,
+ 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
+ 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41, 0xff42,
+ 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b,
+ 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
+ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393,
+ 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6,
+ 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6,
+ 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d,
+ 0x310e, 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+ 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f,
+ 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479,
+ 0x247a, 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
+ 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x2f00, 0x2f01, 0x2f02,
+ 0x2f03, 0x2f04, 0x2f05, 0x2f06, 0x4ea0, 0x2f08, 0x2f09, 0x2f0a, 0x2f0b,
+ 0x2f0c, 0x2f0d, 0x51ab, 0x2f0f, 0x2f10, 0x2f11, 0x2f12, 0x52f9, 0x2f14,
+ 0x2f15, 0x2f16, 0x2f17, 0x2f18, 0x2f19, 0x2f1a, 0x2f1b, 0x2f1c, 0x2f1d,
+ 0x2f1e, 0x2f1f, 0x2f20, 0x2f22, 0x2f23, 0x2f24, 0x2f25, 0x2f26, 0x2f27,
+ 0x2f28, 0x2f29, 0x2f2a, 0x2f2b, 0x2f2c, 0x2f2d, 0x2f2e, 0x2f2f, 0x2f30,
+ 0x2f31, 0x2f32, 0x2f33, 0x2f34, 0x2f35, 0x2f36, 0x2f37, 0x2f38, 0x2f39,
+ 0x2f3a, 0x2f3b, 0x2f3c, 0x2f3d, 0x2f3e, 0x2f3f, 0x2f40, 0x2f41, 0x2f42,
+ 0x2f43, 0x2f44, 0x2f45, 0x2f46, 0x2f47, 0x2f48, 0x2f49, 0x2f4a, 0x2f4b,
+ 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f, 0x2f50, 0x2f51, 0x2f52, 0x2f53, 0x2f54,
+ 0x2f55, 0x2f56, 0x2f57, 0x2f58, 0x2f59, 0x2f5a, 0x2f5b, 0x2f5c, 0x2f5d,
+ 0x2f5e, 0x2f5f, 0x2f60, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f65, 0x2f66,
+ 0x2f67, 0x2f68, 0x2f69, 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6d, 0x2f6e, 0x2f6f,
+ 0x2f70, 0x2f71, 0x2f72, 0x2f73, 0x2f74, 0x2f75, 0x2f76, 0x2f77, 0x2f78,
+ 0x2f79, 0x2f7a, 0x2f7b, 0x2f7c, 0x2f7d, 0x2f7e, 0x2f7f, 0x2f80, 0x2f81,
+ 0x2f82, 0x2f83, 0x2f84, 0x2f85, 0x2f86, 0x2f87, 0x2f88, 0x2f89, 0x2f8a,
+ 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92, 0x2f93,
+ 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a, 0x2f9b, 0x2f9c,
+ 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2, 0x2fa3, 0x2fa4, 0x2fa5,
+ 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa, 0x2fab, 0x2fac, 0x2fad, 0x2fae,
+ 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2, 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7,
+ 0x2fb8, 0x2fb9, 0x2fba, 0x2fbb, 0x2fbc, 0x2fbd, 0x2fbe, 0x2fbf, 0x2fc0,
+ 0x2fc1, 0x2fc2, 0x2fc3, 0x2fc4, 0x2fc5, 0x2fc6, 0x2fc7, 0x2fc8, 0x2fc9,
+ 0x2fca, 0x2fcb, 0x2fcc, 0x2fcd, 0x2fce, 0x2fcf, 0x2fd0, 0x2fd1, 0x2fd2,
+ 0x2fd3, 0x2fd4, 0x2fd5, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x2400, 0x2401, 0x2402,
+ 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240a, 0x240b,
+ 0x240c, 0x240d, 0x240e, 0x240f, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414,
+ 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d,
+ 0x241e, 0x241f, 0x2421, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x4e00, 0x4e59, 0x4e01, 0x4e03,
+ 0x4e43, 0x4e5d, 0x4e86, 0x4e8c, 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0,
+ 0x5200, 0x5201, 0x529b, 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b,
+ 0x4e08, 0x4e0a, 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e,
+ 0x4e8e, 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8, 0x5c0f,
+ 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2, 0x5df3, 0x5dfe,
+ 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d,
+ 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94,
+ 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb,
+ 0x4ec4, 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6,
+ 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348,
+ 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f, 0x5df4,
+ 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236, 0x624b, 0x624e,
+ 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728,
+ 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b,
+ 0x722a, 0x7236, 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e, 0x4ee5,
+ 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4, 0x4ed9, 0x4ede,
+ 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9, 0x51fa, 0x51f8, 0x520a,
+ 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317, 0x531d, 0x4edf, 0x534a, 0x5349,
+ 0x5361, 0x5360, 0x536f, 0x536e, 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec,
+ 0x53ee, 0x53e9, 0x53e8, 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea,
+ 0x53f2, 0x53f1, 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916,
+ 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17, 0x5fc5,
+ 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6, 0x672e, 0x672c,
+ 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41,
+ 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f,
+ 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae,
+ 0x76bf, 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb,
+ 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5,
+ 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b, 0x5149,
+ 0x5147, 0x5146, 0x5148, 0x5168, 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211,
+ 0x5212, 0x520e, 0x5216, 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371,
+ 0x5409, 0x540f, 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411,
+ 0x540d, 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919, 0x591a,
+ 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979, 0x5982, 0x5981,
+ 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89, 0x5bfa, 0x5c16, 0x5c79,
+ 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e,
+ 0x620c, 0x620d, 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8,
+ 0x65ec, 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735,
+ 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60,
+ 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001, 0x8003,
+ 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c, 0x81e3, 0x81ea,
+ 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e, 0x8272, 0x827e, 0x866b,
+ 0x8840, 0x884c, 0x8863, 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f,
+ 0x4f47, 0x4f57, 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51,
+ 0x4f3d, 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x4f5c,
+ 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48, 0x4f5a, 0x514c,
+ 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225, 0x5224, 0x5229, 0x522a,
+ 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac, 0x5323, 0x5373, 0x5375, 0x541d,
+ 0x542d, 0x541e, 0x543e, 0x5426, 0x544e, 0x5427, 0x5446, 0x5443, 0x5433,
+ 0x5448, 0x5442, 0x541b, 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e,
+ 0x5435, 0x5436, 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c,
+ 0x56ea, 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d, 0x5992,
+ 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4, 0x5993, 0x598a,
+ 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c,
+ 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb,
+ 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62,
+ 0x5f77, 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8,
+ 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289,
+ 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538, 0x65f1,
+ 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c, 0x6756, 0x675e,
+ 0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e,
+ 0x6c99, 0x6c81, 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90,
+ 0x6c70, 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076, 0x707c,
+ 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2, 0x7396, 0x752c,
+ 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3, 0x79c1, 0x79c0, 0x79bf,
+ 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093, 0x809d, 0x8098, 0x809b, 0x809a,
+ 0x80b2, 0x826f, 0x8292, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37,
+ 0x8c46, 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b,
+ 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa,
+ 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab, 0x4eac,
+ 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86,
+ 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f,
+ 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178,
+ 0x51bd, 0x51fd, 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236,
+ 0x5241, 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377,
+ 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x5496, 0x5478,
+ 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492, 0x5486, 0x547c, 0x5490,
+ 0x5471, 0x5476, 0x548c, 0x549a, 0x5462, 0x5468, 0x548b, 0x547d, 0x548e,
+ 0x56fa, 0x5783, 0x5777, 0x576a, 0x5769, 0x5761, 0x5766, 0x5764, 0x577c,
+ 0x591c, 0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4,
+ 0x59b9, 0x59ae, 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca,
+ 0x59af, 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46, 0x5cb7,
+ 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18, 0x5e1a, 0x5e16,
+ 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96,
+ 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd,
+ 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016,
+ 0x602a, 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215,
+ 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2,
+ 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da, 0x62b1,
+ 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e, 0x65a7, 0x65bc,
+ 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602, 0x660e, 0x6600, 0x660f,
+ 0x6615, 0x660a, 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771,
+ 0x679c, 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a, 0x6772,
+ 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3, 0x6ce8, 0x6cf3,
+ 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe, 0x6cbc, 0x6ce2, 0x6cab,
+ 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9, 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5,
+ 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1, 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc,
+ 0x6cd6, 0x6ce0, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d,
+ 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0,
+ 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940, 0x7941,
+ 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b,
+ 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4,
+ 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad,
+ 0x82bd, 0x829f, 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3,
+ 0x82b0, 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce,
+ 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577,
+ 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x9642, 0x96b9, 0x96e8,
+ 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae, 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf,
+ 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd, 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca,
+ 0x4fd7, 0x4fae, 0x4fd0, 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7,
+ 0x5157, 0x5192, 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c,
+ 0x524b, 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8, 0x54a6,
+ 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4, 0x54c8, 0x54af,
+ 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b,
+ 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f,
+ 0x594e, 0x5950, 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5,
+ 0x59ea, 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4,
+ 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2,
+ 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c, 0x5f89,
+ 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d, 0x6070, 0x6068,
+ 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc,
+ 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1,
+ 0x62f7, 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f, 0x661f,
+ 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1, 0x67d4, 0x67d0,
+ 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef, 0x67c4, 0x67d1, 0x67b4,
+ 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de, 0x67f3, 0x67b0, 0x67d9, 0x67e2,
+ 0x67dd, 0x67d2, 0x6b6a, 0x6b83, 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f,
+ 0x6cc9, 0x6d0b, 0x6d32, 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e,
+ 0x6d17, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27,
+ 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272, 0x726f,
+ 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb, 0x73b2, 0x73cd,
+ 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab,
+ 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8,
+ 0x76c6, 0x76c3, 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe,
+ 0x76fc, 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949,
+ 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81,
+ 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6,
+ 0x80e5, 0x80da, 0x80c3, 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de,
+ 0x80e4, 0x80dd, 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db,
+ 0x82e6, 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306, 0x8650,
+ 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4, 0x8a08, 0x8a02,
+ 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4, 0x8ecd, 0x8ecc, 0x8ff0,
+ 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca,
+ 0x90ce, 0x90c1, 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b,
+ 0x964c, 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8,
+ 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023,
+ 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1, 0x5021,
+ 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a, 0x4ffe, 0x502b,
+ 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb,
+ 0x5256, 0x525c, 0x5254, 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d,
+ 0x53df, 0x54e8, 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506,
+ 0x54fa, 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x54e6,
+ 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2, 0x57d4, 0x57cb,
+ 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a, 0x5a11, 0x5a18, 0x5a1c,
+ 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20, 0x5a23, 0x5a29, 0x5a25, 0x5a0c,
+ 0x5a09, 0x5b6b, 0x5c58, 0x5bb0, 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5,
+ 0x5bb9, 0x5bb8, 0x5c04, 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb,
+ 0x5cea, 0x5ce8, 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b,
+ 0x5eab, 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f, 0x609a,
+ 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3, 0x6308, 0x62ff,
+ 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346, 0x634f, 0x6349, 0x633a,
+ 0x6350, 0x633d, 0x632a, 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549,
+ 0x6599, 0x65c1, 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c,
+ 0x6645, 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848,
+ 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c,
+ 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27, 0x6c28,
+ 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87, 0x6d66, 0x6d78,
+ 0x6d77, 0x6d59, 0x6d93, 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69,
+ 0x6d8c, 0x6d8a, 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4,
+ 0x70d9, 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de, 0x7554,
+ 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7, 0x75b2, 0x75b3,
+ 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b, 0x76b0, 0x76ca, 0x76cd,
+ 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728, 0x77e9, 0x7830, 0x7827, 0x7838,
+ 0x781d, 0x7834, 0x7837, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955,
+ 0x7950, 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4,
+ 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9,
+ 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b, 0x7f3a,
+ 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8004, 0x8018, 0x8015, 0x8019,
+ 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105, 0x80ed, 0x80f4,
+ 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed,
+ 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b,
+ 0x8352, 0x8354, 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f,
+ 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x8654,
+ 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3, 0x869c, 0x8870,
+ 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18, 0x8a10, 0x8a0e, 0x8a0c,
+ 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16, 0x8a0f, 0x8a11, 0x8c48, 0x8c7a,
+ 0x8c79, 0x8ca1, 0x8ca2, 0x8d77, 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1,
+ 0x9001, 0x9006, 0x8ff7, 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005,
+ 0x8ff8, 0x9095, 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8,
+ 0x91dd, 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8, 0x9ad8,
+ 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c, 0x5047, 0x5043,
+ 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e, 0x5055, 0x5075, 0x5074,
+ 0x5077, 0x504f, 0x500f, 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a,
+ 0x526f, 0x52d2, 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f,
+ 0x5340, 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e,
+ 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564,
+ 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4, 0x57fa,
+ 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36, 0x5a41, 0x5a49,
+ 0x5a66, 0x5a6a, 0x5a40, 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70,
+ 0x5bc7, 0x5bc5, 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07,
+ 0x5c60, 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2, 0x5e38,
+ 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5, 0x5ebe, 0x5f35,
+ 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97, 0x5f99, 0x5f9e, 0x5f98,
+ 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3, 0x6089, 0x60a0, 0x60a8, 0x60cb,
+ 0x60b4, 0x60e6, 0x60bd, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8,
+ 0x60d5, 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248,
+ 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398,
+ 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b, 0x6369,
+ 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557, 0x555f, 0x654f,
+ 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc,
+ 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7,
+ 0x671b, 0x6881, 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1,
+ 0x68a7, 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894,
+ 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x6beb, 0x6bec,
+ 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2, 0x6de1, 0x6dcc, 0x6de4,
+ 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb, 0x6daf, 0x6dd1, 0x6dae, 0x6dde,
+ 0x6df9, 0x6db8, 0x6df7, 0x6df5, 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda,
+ 0x6deb, 0x6dd8, 0x6dea, 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa,
+ 0x6dec, 0x6dbf, 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d,
+ 0x727d, 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7, 0x751c,
+ 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4, 0x75d5, 0x75b5,
+ 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c,
+ 0x7736, 0x7738, 0x773a, 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d,
+ 0x79fb, 0x7a92, 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19,
+ 0x7b1e, 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e,
+ 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32,
+ 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124, 0x8202,
+ 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398, 0x8378, 0x83a2,
+ 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377,
+ 0x837b, 0x837c, 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6,
+ 0x86c4, 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f, 0x8a2a,
+ 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b, 0x8a22, 0x8c49,
+ 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa, 0x8ca7, 0x8d67, 0x8d66,
+ 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019, 0x900d, 0x901a, 0x9017, 0x9023,
+ 0x901f, 0x901d, 0x9010, 0x9015, 0x901e, 0x9020, 0x900f, 0x9022, 0x9016,
+ 0x901b, 0x9014, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6,
+ 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678,
+ 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5, 0x9ebb,
+ 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509a,
+ 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db,
+ 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598,
+ 0x5582, 0x559c, 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae,
+ 0x559f, 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589,
+ 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831,
+ 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x5a77, 0x5a9a, 0x5a7f,
+ 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71, 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0,
+ 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c, 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45,
+ 0x5e3d, 0x5e40, 0x5e43, 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c,
+ 0x5f6d, 0x5fa9, 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0,
+ 0x611c, 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3, 0x638c,
+ 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2, 0x63e3, 0x63d0,
+ 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452,
+ 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af,
+ 0x666e, 0x6670, 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677,
+ 0x66fe, 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7,
+ 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3,
+ 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e, 0x6c2f,
+ 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67, 0x6e4a, 0x6e20,
+ 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d,
+ 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e,
+ 0x6ecb, 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c, 0x724c,
+ 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a, 0x742a, 0x7433,
+ 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f, 0x741b, 0x7426, 0x7428,
+ 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2, 0x75db, 0x75e3, 0x75d9, 0x75d8,
+ 0x75de, 0x75e0, 0x767b, 0x767c, 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f,
+ 0x77ed, 0x785d, 0x786c, 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00,
+ 0x7a98, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50,
+ 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66, 0x7d62,
+ 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052, 0x8085, 0x8155,
+ 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146, 0x813e, 0x814c, 0x8153,
+ 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5,
+ 0x840b, 0x83c1, 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c,
+ 0x83cc, 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407,
+ 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4,
+ 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x8a54, 0x8a5b, 0x8a50, 0x8a46,
+ 0x8a34, 0x8a3a, 0x8a36, 0x8a56, 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3,
+ 0x8cbd, 0x8cc1, 0x8cbb, 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8,
+ 0x8d8a, 0x8d85, 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc,
+ 0x8ddb, 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163, 0x9165,
+ 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d, 0x9210, 0x9207,
+ 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593, 0x9592, 0x958e, 0x968a,
+ 0x968e, 0x968b, 0x967d, 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1,
+ 0x96c5, 0x96c4, 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806,
+ 0x9808, 0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad,
+ 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5,
+ 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8, 0x55d3,
+ 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4, 0x55ef, 0x55da,
+ 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851,
+ 0x5858, 0x5857, 0x585a, 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862,
+ 0x5852, 0x584b, 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9, 0x5ec8,
+ 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148, 0x611f, 0x60f3,
+ 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c, 0x6144, 0x614d, 0x613e,
+ 0x6134, 0x6127, 0x610d, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, 0x643e,
+ 0x641e, 0x642a, 0x642d, 0x643d, 0x642c, 0x640f, 0x641c, 0x6414, 0x640d,
+ 0x6436, 0x6416, 0x6417, 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689,
+ 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d,
+ 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b, 0x6b47,
+ 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6,
+ 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba,
+ 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4,
+ 0x714e, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166,
+ 0x714c, 0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337,
+ 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441,
+ 0x743f, 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df, 0x775b,
+ 0x776b, 0x7766, 0x775e, 0x7763, 0x7779, 0x776a, 0x776c, 0x775c, 0x7765,
+ 0x7768, 0x7762, 0x77ee, 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889,
+ 0x787c, 0x7891, 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd,
+ 0x7a1c, 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93, 0x7d79,
+ 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a, 0x7f72, 0x7fa9,
+ 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178,
+ 0x8165, 0x816e, 0x8173, 0x816b, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247,
+ 0x8482, 0x8477, 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c,
+ 0x845b, 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e,
+ 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb,
+ 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3, 0x8a6b,
+ 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c, 0x8a63, 0x8aa0,
+ 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e,
+ 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2,
+ 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa,
+ 0x8dea, 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x8f9f,
+ 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c, 0x9055, 0x9050,
+ 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e, 0x9041, 0x9112, 0x9117,
+ 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237, 0x9257, 0x9238, 0x923d, 0x9240,
+ 0x923e, 0x925b, 0x924b, 0x9264, 0x9251, 0x9234, 0x9249, 0x924d, 0x9245,
+ 0x9239, 0x923f, 0x925a, 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb,
+ 0x96c9, 0x96ca, 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776,
+ 0x9810, 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e, 0x9f13,
+ 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da, 0x50d5, 0x50cf,
+ 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3, 0x5283, 0x5282, 0x5331,
+ 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609,
+ 0x560d, 0x560e, 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718,
+ 0x5716, 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d,
+ 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9,
+ 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84, 0x5d87,
+ 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46,
+ 0x5f70, 0x5fb9, 0x6147, 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f,
+ 0x615a, 0x6158, 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478,
+ 0x645f, 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995, 0x69c1,
+ 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab, 0x69b4, 0x69d0,
+ 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3, 0x6b49, 0x6b4c, 0x6c33,
+ 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4, 0x6f29, 0x6f3e, 0x6f20, 0x6f2c,
+ 0x6f0f, 0x6f02, 0x6f22, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32,
+ 0x6f23, 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2,
+ 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e,
+ 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1, 0x76e3,
+ 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7, 0x78b3, 0x78a9,
+ 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed,
+ 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f,
+ 0x7bb8, 0x7b87, 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c,
+ 0x7dbd, 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2,
+ 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x7f70, 0x7fe0,
+ 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150, 0x8180, 0x818f, 0x8188,
+ 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa, 0x8207, 0x8214, 0x821e, 0x824b,
+ 0x84c9, 0x84bf, 0x84c6, 0x84c4, 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb,
+ 0x84b8, 0x84c0, 0x84d3, 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c,
+ 0x873b, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3,
+ 0x8902, 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa, 0x8aa5,
+ 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3,
+ 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15,
+ 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062,
+ 0x905d, 0x905b, 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174,
+ 0x9278, 0x92ac, 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c,
+ 0x92a8, 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4,
+ 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6,
+ 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3, 0x9ebc,
+ 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9, 0x5102, 0x5108,
+ 0x5109, 0x5105, 0x51dc, 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0,
+ 0x53b2, 0x562e, 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653,
+ 0x564e, 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb, 0x5b0b,
+ 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb, 0x5c64, 0x5c65,
+ 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2, 0x5eda, 0x5edf, 0x5edd,
+ 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7, 0x5fb5, 0x6176, 0x6167, 0x616e,
+ 0x615d, 0x6155, 0x6182, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190,
+ 0x61ab, 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469,
+ 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493,
+ 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4, 0x66b1,
+ 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd, 0x6a21, 0x6a13,
+ 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4,
+ 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86,
+ 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97,
+ 0x6f58, 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8,
+ 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x747e, 0x7480,
+ 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626, 0x7621, 0x7622, 0x769a,
+ 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c, 0x7791, 0x778b, 0x78cb, 0x78c5,
+ 0x78ba, 0x78ca, 0x78be, 0x78d5, 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40,
+ 0x7a3d, 0x7a37, 0x7a3b, 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4,
+ 0x7bc6, 0x7bc7, 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def,
+ 0x7dfb, 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9, 0x8026,
+ 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517, 0x853d, 0x851a,
+ 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec,
+ 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778,
+ 0x8768, 0x8759, 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907,
+ 0x8912, 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95,
+ 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd,
+ 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1, 0x8d6d,
+ 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f, 0x8e29, 0x8e1f,
+ 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a,
+ 0x8f1c, 0x8f1e, 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130,
+ 0x912d, 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2, 0x92c7, 0x92f0,
+ 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707, 0x9709, 0x9760, 0x978d,
+ 0x978b, 0x978f, 0x9821, 0x982b, 0x981c, 0x98b3, 0x990a, 0x9913, 0x9912,
+ 0x9918, 0x99dd, 0x99d0, 0x99df, 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9,
+ 0x9ab7, 0x9aee, 0x9aef, 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06,
+ 0x9d09, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118,
+ 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668, 0x5665,
+ 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be, 0x58c7, 0x58c5,
+ 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191,
+ 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5,
+ 0x64c1, 0x64cb, 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd,
+ 0x64bf, 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4,
+ 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39,
+ 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7,
+ 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6, 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9,
+ 0x71d0, 0x71d2, 0x71c8, 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3,
+ 0x71c4, 0x7368, 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c,
+ 0x750d, 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e, 0x7a46,
+ 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4, 0x7bdb, 0x7be1,
+ 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11, 0x7e08, 0x7e1b, 0x7e23,
+ 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee,
+ 0x8028, 0x81b3, 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a,
+ 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e,
+ 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925,
+ 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed, 0x8af3,
+ 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44, 0x8e31, 0x8e34,
+ 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6,
+ 0x9075, 0x9074, 0x9078, 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320,
+ 0x9336, 0x92f8, 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7, 0x96a8,
+ 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713, 0x970f, 0x975b,
+ 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b, 0x9837, 0x982d, 0x9839,
+ 0x9824, 0x9910, 0x9928, 0x991e, 0x991b, 0x9921, 0x991a, 0x99ed, 0x99e2,
+ 0x99f1, 0x9ab8, 0x9abc, 0x9afb, 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23,
+ 0x9d26, 0x9d28, 0x9d12, 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a,
+ 0x511f, 0x5121, 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687,
+ 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c, 0x5fbd,
+ 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234, 0x64ce, 0x64ca,
+ 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582,
+ 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb,
+ 0x6aa3, 0x6a7e, 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08,
+ 0x6fd8, 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80,
+ 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee,
+ 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c, 0x76ea,
+ 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa,
+ 0x78f4, 0x78ef, 0x7901, 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d,
+ 0x7bfe, 0x7bf7, 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf,
+ 0x7cd9, 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35, 0x7e3f,
+ 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070, 0x806f, 0x8073,
+ 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf, 0x81bd, 0x81c9, 0x81be,
+ 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594,
+ 0x85af, 0x859b, 0x8587, 0x85a8, 0x858a, 0x85a6, 0x8667, 0x87c0, 0x87d1,
+ 0x87b3, 0x87d2, 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b,
+ 0x8936, 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b,
+ 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa,
+ 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084, 0x9081,
+ 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d, 0x9382, 0x9328,
+ 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e, 0x936c, 0x935b, 0x9370,
+ 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8,
+ 0x96d6, 0x971c, 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b, 0x9ecf,
+ 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2, 0x5695, 0x56ae,
+ 0x58d9, 0x58d8, 0x5b38, 0x5f5e, 0x61e3, 0x6233, 0x64f4, 0x64f2, 0x64fe,
+ 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7, 0x66dc, 0x6726, 0x6ab3, 0x6aac,
+ 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2, 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf,
+ 0x7009, 0x700b, 0x6ffe, 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc,
+ 0x71fe, 0x71f8, 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658,
+ 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23, 0x7c21,
+ 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52, 0x7e59, 0x7f48,
+ 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9,
+ 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba, 0x85b9, 0x87ef, 0x87ec, 0x87f2,
+ 0x87e0, 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50,
+ 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49,
+ 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a, 0x9397,
+ 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9, 0x96db, 0x96de,
+ 0x9724, 0x97a3, 0x97a6, 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e,
+ 0x9853, 0x98ba, 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1,
+ 0x9b03, 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133, 0x56a5,
+ 0x56a8, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2, 0x61f7,
+ 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5, 0x6add, 0x6ada,
+ 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d, 0x7015, 0x7018, 0x7206,
+ 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587,
+ 0x7586, 0x765f, 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e,
+ 0x7c3f, 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69,
+ 0x7e6a, 0x7e73, 0x7f85, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd,
+ 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58, 0x8b49,
+ 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a, 0x8e7c, 0x8e72,
+ 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a,
+ 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc,
+ 0x93dd, 0x93d6, 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc,
+ 0x96b4, 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x9858,
+ 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d, 0x9be8, 0x9be7,
+ 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a, 0x9d6c, 0x9e92, 0x9e97,
+ 0x9e93, 0x9eb4, 0x52f8, 0x56b7, 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40,
+ 0x5b43, 0x5b7d, 0x5bf6, 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519,
+ 0x66e6, 0x6727, 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf,
+ 0x7662, 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82, 0x7f4c,
+ 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa, 0x8606, 0x860b,
+ 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c,
+ 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85,
+ 0x8e82, 0x91b4, 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4,
+ 0x9952, 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d,
+ 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138,
+ 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c, 0x721b,
+ 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc,
+ 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821, 0x881f, 0x896a, 0x896c,
+ 0x89bd, 0x8b74, 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f,
+ 0x8faf, 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957, 0x9a45,
+ 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d, 0x9c25, 0x9daf,
+ 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19, 0x9f5c, 0x9f66, 0x9f67,
+ 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9, 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e,
+ 0x61ff, 0x6524, 0x6b0a, 0x6b61, 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a,
+ 0x766e, 0x766c, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972,
+ 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148,
+ 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b, 0x9dd3,
+ 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6, 0x6200, 0x6523,
+ 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65,
+ 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090,
+ 0x908f, 0x9463, 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b,
+ 0x9a57, 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f,
+ 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50,
+ 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x8b96, 0x8277, 0x8d1b,
+ 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744, 0x97c6, 0x9870, 0x9a5f, 0x9b22,
+ 0x9b58, 0x9c5f, 0x9df9, 0x9dfa, 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72,
+ 0x5ef3, 0x6b16, 0x7063, 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1,
+ 0x9472, 0x9470, 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da,
+ 0x8b9a, 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f, 0x9e1a,
+ 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x4e42, 0x4e5c,
+ 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, 0x4e8d, 0x56d7, 0x5c6e,
+ 0x5f73, 0x4e0f, 0x5187, 0x4e0e, 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8,
+ 0x5198, 0x52fc, 0x536c, 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff,
+ 0x65e1, 0x6bb3, 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc,
+ 0x4ee9, 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x5209, 0x531c, 0x534c, 0x5722,
+ 0x5723, 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36, 0x6c43,
+ 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a, 0x961e, 0x4f0e,
+ 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d,
+ 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213,
+ 0x5210, 0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df,
+ 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e,
+ 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4, 0x5fcf,
+ 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, 0x6260, 0x625a,
+ 0x6265, 0x6537, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738, 0x673b, 0x673a,
+ 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a,
+ 0x6c54, 0x6c4b, 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a,
+ 0x767f, 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624, 0x9620,
+ 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64, 0x4f3e, 0x4f67,
+ 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33, 0x4f3f, 0x4f61, 0x518f,
+ 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad, 0x52ae, 0x5309, 0x5363, 0x5372,
+ 0x538e, 0x538f, 0x5430, 0x5437, 0x542a, 0x5454, 0x5445, 0x5419, 0x541c,
+ 0x5425, 0x5418, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee,
+ 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906,
+ 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f, 0x5c88,
+ 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95, 0x5de0, 0x5e0a,
+ 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78,
+ 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1,
+ 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a,
+ 0x6283, 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a,
+ 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x6759, 0x6755, 0x674c, 0x6748,
+ 0x675d, 0x674d, 0x675a, 0x674b, 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67,
+ 0x6c6b, 0x6c84, 0x6c8b, 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d,
+ 0x6c87, 0x6c95, 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074,
+ 0x707a, 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594, 0x7595,
+ 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, 0x809c, 0x8290,
+ 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a, 0x8283, 0x8284, 0x8c78,
+ 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630,
+ 0x9628, 0x962f, 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80,
+ 0x4f87, 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a,
+ 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92,
+ 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392, 0x5394,
+ 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b, 0x547a, 0x547e,
+ 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f, 0x5461, 0x5460, 0x5498,
+ 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b,
+ 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce, 0x59b2,
+ 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1, 0x59bd, 0x59c0,
+ 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93, 0x5b95, 0x5c44, 0x5c47,
+ 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf, 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3,
+ 0x5cad, 0x5ca2, 0x5caa, 0x5ca7, 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6,
+ 0x5e17, 0x5e14, 0x5e19, 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82,
+ 0x5f7e, 0x5f7d, 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b,
+ 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214, 0x623d,
+ 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca, 0x62ae, 0x62b3,
+ 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609,
+ 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605,
+ 0x65fd, 0x6611, 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792,
+ 0x6776, 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a,
+ 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794,
+ 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2, 0x6cba,
+ 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d,
+ 0x6c80, 0x6cde, 0x6cc0, 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf,
+ 0x6ce9, 0x6cd1, 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091,
+ 0x7096, 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1, 0x73ad,
+ 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8, 0x753f, 0x7540,
+ 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1, 0x76f0, 0x76f5, 0x77f8,
+ 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78,
+ 0x7a7b, 0x7afb, 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8,
+ 0x80b5, 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b,
+ 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1,
+ 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5, 0x8fd7,
+ 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d, 0x963c, 0x963a,
+ 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4,
+ 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0,
+ 0x4fb9, 0x4fec, 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397,
+ 0x5396, 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x54c3,
+ 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6, 0x54a0, 0x5470,
+ 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0, 0x57b5, 0x579e, 0x579f,
+ 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b, 0x5794, 0x5798, 0x578f, 0x5799,
+ 0x57a5, 0x579a, 0x5795, 0x58f4, 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee,
+ 0x5a00, 0x59f1, 0x59dd, 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2,
+ 0x59f7, 0x59db, 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed,
+ 0x5ba8, 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf, 0x5cc8,
+ 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22, 0x5e23, 0x5e20,
+ 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e,
+ 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053,
+ 0x6047, 0x6049, 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044,
+ 0x6058, 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5,
+ 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300,
+ 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622, 0x6633,
+ 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f, 0x6710, 0x67c1,
+ 0x67f2, 0x67c8, 0x67ba, 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7,
+ 0x67c5, 0x67eb, 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6,
+ 0x67ee, 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9, 0x67ca,
+ 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6, 0x6bd6, 0x6bd8,
+ 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d, 0x6d1f, 0x6d3c, 0x6d3f,
+ 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04, 0x6d19, 0x6d3a, 0x6d1a, 0x6d11,
+ 0x6d00, 0x6d1d, 0x6d42, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40,
+ 0x6d07, 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f,
+ 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249,
+ 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8, 0x73c5,
+ 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7, 0x73be, 0x73c3,
+ 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7,
+ 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7,
+ 0x76fb, 0x76fa, 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810,
+ 0x780f, 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945,
+ 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x7a7e, 0x7ad1,
+ 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f, 0x7c80, 0x7c81, 0x7d03,
+ 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d, 0x7fbe, 0x8007, 0x800e, 0x800f,
+ 0x8014, 0x8037, 0x80d8, 0x80c7, 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0,
+ 0x80c5, 0x80e3, 0x80d9, 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7,
+ 0x80e6, 0x80cd, 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307,
+ 0x82e8, 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4, 0x82e0,
+ 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673, 0x8841, 0x884e,
+ 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1,
+ 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7,
+ 0x90cb, 0x90c8, 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a,
+ 0x964e, 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5,
+ 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020,
+ 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e, 0x525f,
+ 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2, 0x5517, 0x5512,
+ 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511,
+ 0x5505, 0x54f1, 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503,
+ 0x550b, 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9, 0x57c1,
+ 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15, 0x5a0f, 0x5a17,
+ 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad, 0x5bac, 0x5c03, 0x5c56,
+ 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1, 0x5cf7, 0x5d00, 0x5cf9, 0x5e29,
+ 0x5e28, 0x5ea8, 0x5eae, 0x5eaa, 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d,
+ 0x605a, 0x6067, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d,
+ 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246,
+ 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358, 0x6354,
+ 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338, 0x6357, 0x6340,
+ 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f,
+ 0x6647, 0x6651, 0x6712, 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833,
+ 0x683b, 0x684b, 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d,
+ 0x682f, 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828,
+ 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31,
+ 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, 0x6be8, 0x6be3, 0x6be2,
+ 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64, 0x6d76, 0x6d0d, 0x6d61, 0x6d92,
+ 0x6d58, 0x6d62, 0x6d6d, 0x6d6f, 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86,
+ 0x6d5e, 0x6d67, 0x6d60, 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98,
+ 0x6d2f, 0x6d68, 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b,
+ 0x6d7d, 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5, 0x70c6,
+ 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300,
+ 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9,
+ 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db,
+ 0x73d4, 0x73dd, 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4,
+ 0x74f5, 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0,
+ 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713,
+ 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821, 0x7829,
+ 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c, 0x7953, 0x7952,
+ 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de,
+ 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8,
+ 0x7b10, 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85, 0x7d1e,
+ 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f, 0x7d12, 0x7d0f,
+ 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d, 0x7f5b, 0x7f96, 0x7f92,
+ 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e, 0x8039, 0x80fa, 0x80f2, 0x80f9,
+ 0x80f5, 0x8101, 0x80fb, 0x8100, 0x8201, 0x822f, 0x8225, 0x8333, 0x832d,
+ 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c,
+ 0x8322, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316,
+ 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2, 0x86a8,
+ 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686, 0x868b, 0x869a,
+ 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d,
+ 0x8690, 0x8694, 0x8843, 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880,
+ 0x8871, 0x887f, 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47,
+ 0x8c57, 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6,
+ 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc,
+ 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x914e, 0x914f, 0x91d5, 0x91e2,
+ 0x91da, 0x965c, 0x965f, 0x96bc, 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070,
+ 0x506a, 0x5061, 0x505e, 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048,
+ 0x504d, 0x5041, 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069,
+ 0x506b, 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d, 0x539c,
+ 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a, 0x5551, 0x5562,
+ 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c, 0x5532, 0x5565, 0x554e,
+ 0x5539, 0x5548, 0x552d, 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb,
+ 0x5814, 0x57e2, 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808,
+ 0x57f8, 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5,
+ 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1,
+ 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c, 0x5a53,
+ 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b, 0x5a48, 0x5a8e,
+ 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56,
+ 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b,
+ 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1, 0x5eb4,
+ 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96, 0x5f9f, 0x608a,
+ 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3, 0x60d4, 0x60cf, 0x60e4,
+ 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db, 0x60b7, 0x60ca, 0x60bf, 0x60c3,
+ 0x60cd, 0x60c0, 0x6332, 0x6365, 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e,
+ 0x63ad, 0x639d, 0x6397, 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e,
+ 0x63af, 0x6375, 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f,
+ 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887, 0x6890,
+ 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f, 0x68a3, 0x68ac,
+ 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877, 0x6892, 0x687c, 0x686b,
+ 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0,
+ 0x6889, 0x68a4, 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36,
+ 0x6b33, 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a,
+ 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7,
+ 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0, 0x6dba,
+ 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7,
+ 0x6dcd, 0x6de3, 0x6dbb, 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c,
+ 0x70f0, 0x7104, 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100,
+ 0x70f8, 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff, 0x730f,
+ 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401, 0x73fd, 0x7407,
+ 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b, 0x73f4, 0x7408, 0x7564,
+ 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f,
+ 0x7689, 0x76d3, 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733,
+ 0x773d, 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a,
+ 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963,
+ 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b3b, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24, 0x7b33,
+ 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f, 0x7b32, 0x7b38,
+ 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38,
+ 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f,
+ 0x7d4a, 0x7d3b, 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca,
+ 0x7fcb, 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x801e,
+ 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811b, 0x812d,
+ 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127, 0x811d, 0x8122, 0x8211,
+ 0x8238, 0x8233, 0x823a, 0x8234, 0x8232, 0x8274, 0x8390, 0x83a3, 0x83a8,
+ 0x838d, 0x837a, 0x8373, 0x83a4, 0x8374, 0x838f, 0x8381, 0x8395, 0x8399,
+ 0x8375, 0x8394, 0x83a9, 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa,
+ 0x838b, 0x837e, 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6,
+ 0x8387, 0x83ae, 0x8376, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2, 0x86c1,
+ 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8, 0x86cc, 0x86b4,
+ 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8,
+ 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899,
+ 0x889b, 0x8897, 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6,
+ 0x89d9, 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c,
+ 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9,
+ 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea, 0x90f0,
+ 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9, 0x9156, 0x9158,
+ 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4,
+ 0x91f9, 0x91ea, 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588,
+ 0x967c, 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083, 0x508c,
+ 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087, 0x515f, 0x51d4,
+ 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8, 0x55a5, 0x55ad, 0x5577,
+ 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f, 0x55b5, 0x5581, 0x55a3, 0x5592,
+ 0x55a4, 0x557d, 0x558c, 0x55a6, 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c,
+ 0x5829, 0x5837, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848,
+ 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838,
+ 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae, 0x5a37,
+ 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c,
+ 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1,
+ 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b,
+ 0x5d3f, 0x5d35, 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d,
+ 0x5d31, 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36,
+ 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9,
+ 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x60f2, 0x610a, 0x6116,
+ 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc, 0x60fe, 0x60c1, 0x6103, 0x6118,
+ 0x611d, 0x6110, 0x60ff, 0x6104, 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0,
+ 0x63ce, 0x63e5, 0x63e8, 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0,
+ 0x63f6, 0x63d5, 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc,
+ 0x63c4, 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568, 0x6565,
+ 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c, 0x666c, 0x667b,
+ 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904,
+ 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb,
+ 0x68e4, 0x68f6, 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908,
+ 0x6970, 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd,
+ 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de,
+ 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95, 0x6bbd,
+ 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47, 0x6e1f, 0x6e49,
+ 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d,
+ 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e,
+ 0x6e5e, 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64, 0x6e77,
+ 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a, 0x7120, 0x711e,
+ 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711f,
+ 0x7128, 0x713a, 0x711b, 0x724b, 0x725a, 0x7288, 0x7289, 0x7286, 0x7285,
+ 0x728b, 0x7312, 0x730b, 0x7330, 0x7322, 0x7331, 0x7333, 0x7327, 0x7332,
+ 0x732d, 0x7326, 0x7323, 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b,
+ 0x7416, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429,
+ 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da, 0x7746,
+ 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b, 0x774c, 0x77de,
+ 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d, 0x7871, 0x786a, 0x786e,
+ 0x7870, 0x7869, 0x7868, 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970,
+ 0x7a02, 0x7a0a, 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a,
+ 0x7b47, 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2,
+ 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67,
+ 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1,
+ 0x7fd7, 0x8051, 0x804f, 0x8050, 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152,
+ 0x814f, 0x8147, 0x813d, 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8,
+ 0x81f9, 0x8204, 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9,
+ 0x8423, 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5, 0x83d8,
+ 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9, 0x8409, 0x840f,
+ 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5, 0x83fa, 0x83c7, 0x83d1,
+ 0x83ea, 0x8413, 0x839a, 0x83c3, 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7,
+ 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3,
+ 0x86da, 0x86ea, 0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8,
+ 0x86d1, 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0,
+ 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995,
+ 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51, 0x8a4a,
+ 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9,
+ 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6,
+ 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7,
+ 0x8efa, 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f, 0x9106,
+ 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb, 0x9101, 0x9100,
+ 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f, 0x9162, 0x9160, 0x9201,
+ 0x920a, 0x9225, 0x9203, 0x921a, 0x9226, 0x920f, 0x920c, 0x9200, 0x9212,
+ 0x91ff, 0x91fd, 0x9206, 0x9204, 0x9227, 0x9202, 0x921c, 0x9224, 0x9219,
+ 0x9217, 0x9205, 0x9216, 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e,
+ 0x9688, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0,
+ 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca, 0x50b4,
+ 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb, 0x50c9, 0x50b6,
+ 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc,
+ 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf,
+ 0x55d2, 0x558d, 0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd,
+ 0x55d9, 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849,
+ 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863,
+ 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4,
+ 0x5ab6, 0x5acd, 0x5ab9, 0x5a90, 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33,
+ 0x5d71, 0x5d63, 0x5d4a, 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67,
+ 0x5d62, 0x5df0, 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc,
+ 0x5ec6, 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f, 0x6129,
+ 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5, 0x63f1, 0x63eb,
+ 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433, 0x6443, 0x641f, 0x6415,
+ 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428,
+ 0x6441, 0x6435, 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b,
+ 0x63e7, 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686,
+ 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720,
+ 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935, 0x696c,
+ 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969, 0x6940, 0x696f,
+ 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c, 0x693b, 0x694b, 0x6937,
+ 0x695c, 0x694f, 0x6951, 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46,
+ 0x6b45, 0x6b43, 0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0x6bfb, 0x6bfc, 0x6bf9,
+ 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0, 0x6e9f, 0x6e93,
+ 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2, 0x6ebd, 0x6ec1, 0x6e9e,
+ 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6, 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3,
+ 0x6edc, 0x6ed8, 0x6e99, 0x6e92, 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf,
+ 0x6eb3, 0x6ed0, 0x6eca, 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152,
+ 0x7163, 0x7160, 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161,
+ 0x7142, 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e, 0x733c,
+ 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444, 0x744a, 0x744b,
+ 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450, 0x744e, 0x7442, 0x7446,
+ 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577,
+ 0x6983, 0x75ef, 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8,
+ 0x7610, 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd,
+ 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754,
+ 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787b,
+ 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19, 0x7a12, 0x7a17,
+ 0x7a15, 0x7a22, 0x7a13, 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb,
+ 0x7b66, 0x7b64, 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71,
+ 0x7b70, 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b, 0x7d83,
+ 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d, 0x7f6b, 0x7f67,
+ 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb, 0x7fdc, 0x8021, 0x8164,
+ 0x8160, 0x8177, 0x815c, 0x8169, 0x815b, 0x8162, 0x8172, 0x6721, 0x815e,
+ 0x8176, 0x8167, 0x816f, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240,
+ 0x8242, 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d,
+ 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a,
+ 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b, 0x842f,
+ 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c, 0x8452, 0x846f,
+ 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433, 0x8468, 0x847e, 0x8444,
+ 0x842b, 0x8460, 0x8454, 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c,
+ 0x86fa, 0x86d6, 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6,
+ 0x870d, 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da,
+ 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x89e1, 0x89e0,
+ 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f, 0x8a61, 0x8a3f, 0x8a77,
+ 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81, 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b,
+ 0x8c4a, 0x8c65, 0x8c64, 0x8c66, 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68,
+ 0x8d69, 0x8d91, 0x8d8c, 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90,
+ 0x8d92, 0x8df0, 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3,
+ 0x8de2, 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044, 0x9049,
+ 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114, 0x910b, 0x910e,
+ 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a, 0x9266, 0x9233, 0x9265,
+ 0x925e, 0x9283, 0x922e, 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260,
+ 0x9267, 0x926f, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250,
+ 0x9272, 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e,
+ 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8,
+ 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab, 0x9b5b,
+ 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4, 0x50d7, 0x50e8,
+ 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef,
+ 0x50e3, 0x50e0, 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac,
+ 0x5627, 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c, 0x5890,
+ 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a, 0x5887, 0x5891,
+ 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894, 0x588f, 0x58fe, 0x596b,
+ 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea, 0x5ada, 0x5aed, 0x5aeb, 0x5af3,
+ 0x5ae2, 0x5ae0, 0x5adb, 0x5aec, 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf,
+ 0x5b77, 0x5be0, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a,
+ 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79,
+ 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6, 0x612c,
+ 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153, 0x6172, 0x616c,
+ 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165, 0x613b, 0x616a, 0x6161,
+ 0x6156, 0x6229, 0x6227, 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474,
+ 0x6476, 0x6472, 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482,
+ 0x645e, 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c,
+ 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f,
+ 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x69a0, 0x69ce, 0x6996,
+ 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999, 0x698e, 0x69a7, 0x698d, 0x69a9,
+ 0x69be, 0x69af, 0x69bf, 0x69c4, 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca,
+ 0x699a, 0x69cf, 0x69b3, 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997,
+ 0x6990, 0x69c2, 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e,
+ 0x6b9f, 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19, 0x6f1a,
+ 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36, 0x6f73, 0x6ef9,
+ 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e,
+ 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f,
+ 0x6f0d, 0x6f1e, 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185,
+ 0x7182, 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297,
+ 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471,
+ 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8, 0x7781,
+ 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e, 0x7783, 0x78b2,
+ 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0,
+ 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994,
+ 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c, 0x7b8a,
+ 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e, 0x7b85, 0x7b98,
+ 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf, 0x7cbc, 0x7cba, 0x7da7,
+ 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1, 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce,
+ 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc, 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f,
+ 0x7da6, 0x7dae, 0x7da9, 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5,
+ 0x7fde, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d,
+ 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd, 0x84aa,
+ 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2, 0x8494, 0x84c7,
+ 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf,
+ 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733,
+ 0x8723, 0x8728, 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b,
+ 0x8743, 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d,
+ 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738,
+ 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x88f0, 0x88ec, 0x88eb, 0x899d,
+ 0x89a1, 0x899f, 0x899e, 0x89e9, 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b,
+ 0x8a92, 0x8a8f, 0x8a96, 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7,
+ 0x8d96, 0x8e09, 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07,
+ 0x8e06, 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124, 0x9121,
+ 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4, 0x9276, 0x929b,
+ 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6, 0x929a, 0x92ab, 0x9279,
+ 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d,
+ 0x9288, 0x92a1, 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287,
+ 0x92a9, 0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d,
+ 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f,
+ 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7, 0x9ab1,
+ 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2,
+ 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6,
+ 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef,
+ 0x5648, 0x5642, 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a, 0x563a,
+ 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af, 0x58ac, 0x58a5,
+ 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7, 0x5af6, 0x5b03, 0x5af8,
+ 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05, 0x5b0f, 0x5c67, 0x5d99, 0x5d97,
+ 0x5d9f, 0x5d92, 0x5da2, 0x5d93, 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a,
+ 0x5d9e, 0x5e69, 0x5e5d, 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1,
+ 0x5f49, 0x5fb2, 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189,
+ 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485, 0x6497,
+ 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f, 0x6468, 0x64b1,
+ 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0,
+ 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5,
+ 0x69f8, 0x6a15, 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b,
+ 0x6a1d, 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40,
+ 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18,
+ 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41, 0x6f26,
+ 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f,
+ 0x6f85, 0x6f5a, 0x6f96, 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52,
+ 0x6f50, 0x6f57, 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d,
+ 0x6f67, 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a, 0x71a9,
+ 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa, 0x719c, 0x71a7,
+ 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e, 0x735f, 0x7360, 0x735d,
+ 0x735b, 0x7361, 0x735a, 0x7359, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486,
+ 0x7481, 0x747d, 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e,
+ 0x7625, 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b,
+ 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd,
+ 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76, 0x7a39,
+ 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac, 0x7bce, 0x7baf,
+ 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb,
+ 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1,
+ 0x7df0, 0x7dee, 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb,
+ 0x7fea, 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x819e,
+ 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253, 0x8252, 0x8250,
+ 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500, 0x8529, 0x850e, 0x8509,
+ 0x850d, 0x851f, 0x850a, 0x8527, 0x851c, 0x84fb, 0x852b, 0x84fa, 0x8508,
+ 0x850c, 0x84f4, 0x852a, 0x84f2, 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc,
+ 0x8512, 0x84ea, 0x84e9, 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502,
+ 0x84fd, 0x851e, 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef,
+ 0x84f9, 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b, 0x8752,
+ 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750, 0x874e, 0x875f,
+ 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c, 0x8765, 0x874f, 0x877b,
+ 0x8775, 0x8762, 0x8767, 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b,
+ 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2,
+ 0x89a4, 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3,
+ 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8,
+ 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1, 0x8d9b,
+ 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b, 0x8e16, 0x8e11,
+ 0x8e19, 0x8e26, 0x8e27, 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17,
+ 0x8e1a, 0x8f2c, 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17,
+ 0x9073, 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182, 0x9184,
+ 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6, 0x92cf, 0x92f1,
+ 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc, 0x92ef, 0x92c2, 0x92e8,
+ 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd, 0x92d5, 0x92c9, 0x92e0, 0x92de,
+ 0x92e7, 0x92d1, 0x92d3, 0x92b5, 0x92e1, 0x9325, 0x92c6, 0x92b4, 0x957c,
+ 0x95ac, 0x95ab, 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708,
+ 0x9702, 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d,
+ 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa,
+ 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc, 0x9ab3,
+ 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43, 0x9b67, 0x9b74,
+ 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc,
+ 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08,
+ 0x9d05, 0x9d04, 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117,
+ 0x511a, 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x5673,
+ 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c, 0x571b, 0x58c8,
+ 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc, 0x58c6, 0x5b17, 0x5b19,
+ 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10, 0x5b16, 0x5b28, 0x5b1a, 0x5b20,
+ 0x5b1e, 0x5bef, 0x5dac, 0x5db1, 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae,
+ 0x5daa, 0x5da8, 0x5db2, 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66,
+ 0x5e6f, 0x5ee9, 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x5fbb,
+ 0x619d, 0x61a8, 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba,
+ 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c, 0x65a2,
+ 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd, 0x66bb, 0x66ba,
+ 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e,
+ 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f,
+ 0x6a41, 0x6a6a, 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60,
+ 0x6a3c, 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54,
+ 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06,
+ 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba, 0x6fac,
+ 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf,
+ 0x6fb2, 0x6fb0, 0x71c5, 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1,
+ 0x71cb, 0x71d4, 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6,
+ 0x71da, 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495, 0x74a1,
+ 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633, 0x763c, 0x7635,
+ 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d, 0x77a1, 0x779c, 0x779b,
+ 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea,
+ 0x78de, 0x78e3, 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4,
+ 0x7a44, 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde,
+ 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4,
+ 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20, 0x7e13,
+ 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d,
+ 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef,
+ 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab,
+ 0x81b0, 0x81ac, 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256,
+ 0x8257, 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x8540,
+ 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, 0x8563, 0x853e,
+ 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555, 0x8567, 0x8560, 0x858c,
+ 0x8566, 0x855d, 0x8554, 0x8565, 0x856c, 0x8663, 0x8665, 0x8664, 0x87a4,
+ 0x879b, 0x878f, 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798,
+ 0x8779, 0x8787, 0x87a3, 0x8785, 0x8790, 0x8791, 0x879d, 0x8784, 0x8794,
+ 0x879c, 0x879a, 0x8789, 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927,
+ 0x8931, 0x8922, 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0,
+ 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91, 0x8c92,
+ 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5,
+ 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d,
+ 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39,
+ 0x8f37, 0x8f34, 0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135,
+ 0x9136, 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308,
+ 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312,
+ 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9313,
+ 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329, 0x9339, 0x9335,
+ 0x932a, 0x9314, 0x930c, 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316,
+ 0x95bc, 0x95cd, 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd,
+ 0x96a9, 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929, 0x999e,
+ 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea, 0x99e9, 0x99e7,
+ 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa, 0x9af9, 0x9af7, 0x9b33,
+ 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e, 0x9b7b, 0x9b82, 0x9b93, 0x9b92,
+ 0x9b90, 0x9b7a, 0x9b95, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e,
+ 0x9d14, 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88,
+ 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d,
+ 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681, 0x58d6,
+ 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23, 0x5b2c, 0x5b27,
+ 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a,
+ 0x5fbe, 0x61c3, 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8,
+ 0x61de, 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580,
+ 0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f,
+ 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x6a95, 0x6a83, 0x6aa8,
+ 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a, 0x6a85, 0x6a8c, 0x6a92, 0x6b5b,
+ 0x6bad, 0x6c09, 0x6fcc, 0x6fa9, 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed,
+ 0x6fe7, 0x6fe6, 0x6fde, 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1,
+ 0x71e8, 0x71f2, 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497,
+ 0x74b2, 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, 0x76a4,
+ 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4, 0x77b1, 0x77a8,
+ 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc, 0x78ff, 0x78f2, 0x7905,
+ 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58,
+ 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00,
+ 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03,
+ 0x7c01, 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8,
+ 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40,
+ 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4, 0x81cc,
+ 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a, 0x825c, 0x8583,
+ 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4,
+ 0x859a, 0x859e, 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557,
+ 0x858e, 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668, 0x87be,
+ 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5, 0x87bc, 0x87ae,
+ 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af, 0x87c4, 0x87ca, 0x87b4,
+ 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de, 0x87b2, 0x8935, 0x8933, 0x893c,
+ 0x893e, 0x8941, 0x8952, 0x8937, 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2,
+ 0x89f3, 0x8b1e, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f,
+ 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a,
+ 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40, 0x9085,
+ 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f, 0x91a1, 0x919d,
+ 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356, 0x9347, 0x937c, 0x9358,
+ 0x935c, 0x9376, 0x9349, 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c,
+ 0x936a, 0x9379, 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b,
+ 0x9361, 0x935e, 0x9363, 0x9367, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9,
+ 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x979e, 0x979d, 0x97d5, 0x97d4,
+ 0x97f1, 0x9841, 0x9844, 0x984a, 0x9849, 0x9845, 0x9843, 0x9925, 0x992b,
+ 0x992c, 0x992a, 0x9933, 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998,
+ 0x99a3, 0x99a1, 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6,
+ 0x99fb, 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1, 0x9ba5,
+ 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41, 0x9d67, 0x9d36,
+ 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45, 0x9d42, 0x9d43, 0x9d3e,
+ 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0,
+ 0x9ec8, 0x9eda, 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0,
+ 0x5131, 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699,
+ 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df,
+ 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db, 0x66da,
+ 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6,
+ 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c,
+ 0x700d, 0x7001, 0x7005, 0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026,
+ 0x6ffc, 0x6ff7, 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2, 0x7514,
+ 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, 0x765a, 0x76a6,
+ 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x790c, 0x7913, 0x7914, 0x7909, 0x7910,
+ 0x7912, 0x7911, 0x79ad, 0x79ac, 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20,
+ 0x7c1f, 0x7c2d, 0x7c1d, 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c,
+ 0x7e50, 0x7e56, 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57,
+ 0x7e53, 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3, 0x85b5,
+ 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8, 0x85c5, 0x85b1,
+ 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6,
+ 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4,
+ 0x87dc, 0x87d3, 0x87ed, 0x87d8, 0x87e3, 0x87d7, 0x87d9, 0x8801, 0x87f4,
+ 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951,
+ 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e, 0x8b24,
+ 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98, 0x8c97, 0x8cfe,
+ 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e,
+ 0x8e65, 0x8e67, 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46,
+ 0x8f47, 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b, 0x939d,
+ 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395, 0x9388, 0x9399,
+ 0x939f, 0x9380, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4, 0x93a8, 0x93b4,
+ 0x93a3, 0x95d2, 0x95d3, 0x95d1, 0x96b3, 0x96d7, 0x96da, 0x5dc2, 0x96df,
+ 0x96d8, 0x96dd, 0x9723, 0x9722, 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab,
+ 0x97a4, 0x97aa, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa,
+ 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b,
+ 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c, 0x9b4b,
+ 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6,
+ 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b,
+ 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a,
+ 0x9e8e, 0x9e8c, 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a,
+ 0x9f29, 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4,
+ 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db,
+ 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x5fbf, 0x61fb, 0x6507,
+ 0x6510, 0x650d, 0x6509, 0x650c, 0x650e, 0x6584, 0x65de, 0x65dd, 0x66de,
+ 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1, 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0,
+ 0x6aeb, 0x6acf, 0x6acd, 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027,
+ 0x7020, 0x7016, 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024,
+ 0x701c, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6, 0x72a4,
+ 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516, 0x7660, 0x77c9,
+ 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921, 0x791c, 0x7917, 0x791e,
+ 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec,
+ 0x7cea, 0x7e76, 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72,
+ 0x7e74, 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe,
+ 0x8078, 0x81d7, 0x81d5, 0x820b, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1,
+ 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8,
+ 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c, 0x880b,
+ 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962, 0x895a, 0x895b,
+ 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6,
+ 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b,
+ 0x8b55, 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d, 0x8e78,
+ 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51, 0x8f4f, 0x8f50,
+ 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad, 0x93de, 0x93c7, 0x93cf,
+ 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec, 0x93cc, 0x93d9, 0x93a9, 0x93e6,
+ 0x93ca, 0x93d4, 0x93ee, 0x93e3, 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2,
+ 0x93a5, 0x93e7, 0x957d, 0x95da, 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c,
+ 0x9728, 0x9726, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c,
+ 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947,
+ 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2, 0x9b0b,
+ 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0, 0x9bde, 0x9be4,
+ 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5,
+ 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71,
+ 0x9d80, 0x9d78, 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75,
+ 0x9d70, 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f,
+ 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41,
+ 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x56b5, 0x56b3, 0x58e3,
+ 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef, 0x5fc0, 0x5fc1, 0x61f9, 0x6517,
+ 0x6516, 0x6515, 0x6513, 0x65df, 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0,
+ 0x6aea, 0x6ae8, 0x6af9, 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f,
+ 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x702a,
+ 0x7040, 0x703b, 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c,
+ 0x74ba, 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2, 0x7a6e,
+ 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47, 0x7c45, 0x7cee,
+ 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9,
+ 0x8268, 0x8269, 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6,
+ 0x8604, 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817,
+ 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d,
+ 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143, 0x9141,
+ 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb, 0x9420, 0x940f,
+ 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400,
+ 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x943c,
+ 0x940a, 0x93ff, 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0,
+ 0x95df, 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c, 0x994b,
+ 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36, 0x9a29, 0x9a2e,
+ 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10, 0x9b12, 0x9b11, 0x9c0b,
+ 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8, 0x9c40, 0x9c07, 0x9c0e, 0x9c06,
+ 0x9c17, 0x9c14, 0x9c09, 0x9d9f, 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98,
+ 0x9d90, 0x9d9b, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a,
+ 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7,
+ 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139, 0x5298,
+ 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1,
+ 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044,
+ 0x704a, 0x7048, 0x7049, 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e,
+ 0x7517, 0x766a, 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2,
+ 0x7e8a, 0x7e87, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030,
+ 0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627,
+ 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x8829, 0x881d, 0x881b,
+ 0x8820, 0x8824, 0x881c, 0x882b, 0x884a, 0x896d, 0x8969, 0x896e, 0x896b,
+ 0x89fa, 0x8b79, 0x8b78, 0x8b45, 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf,
+ 0x8e8e, 0x8e8c, 0x8f5e, 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9,
+ 0x943f, 0x943b, 0x9436, 0x9429, 0x943d, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a, 0x97bf,
+ 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956, 0x9a39, 0x9a3d,
+ 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f, 0x9acd, 0x9b15, 0x9b17,
+ 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23,
+ 0x9c28, 0x9c29, 0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7,
+ 0x9dca, 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9,
+ 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2,
+ 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb, 0x5971,
+ 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520, 0x6526, 0x6522,
+ 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056, 0x7057, 0x7052, 0x721e,
+ 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad,
+ 0x7935, 0x79b4, 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634, 0x8635,
+ 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826, 0x882a, 0x8825,
+ 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84, 0x8b82, 0x8b86, 0x8b85,
+ 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a, 0x8e92, 0x8e90, 0x8e96, 0x8e97,
+ 0x8f60, 0x8f62, 0x9147, 0x944c, 0x9450, 0x944a, 0x944b, 0x944f, 0x9447,
+ 0x9445, 0x9448, 0x9449, 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb,
+ 0x9954, 0x995b, 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a,
+ 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c, 0x9c37,
+ 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde, 0x9dda, 0x9dcb,
+ 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5,
+ 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b,
+ 0x9f95, 0x9fa2, 0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8,
+ 0x882f, 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb,
+ 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381,
+ 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e, 0x8833,
+ 0x8976, 0x8974, 0x8973, 0x89fe, 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45,
+ 0x8d19, 0x8e98, 0x8f64, 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457,
+ 0x945e, 0x97c4, 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20,
+ 0x9c52, 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4, 0x9df6,
+ 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec, 0x9df4, 0x9df3,
+ 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3, 0x9f06, 0x9f1c, 0x9f38,
+ 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3,
+ 0x56cd, 0x5b4e, 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061,
+ 0x705d, 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6,
+ 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b,
+ 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7, 0x97e5,
+ 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62, 0x9c5e, 0x9c60,
+ 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09,
+ 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76,
+ 0x56d4, 0x652e, 0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226,
+ 0x72aa, 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x7e98,
+ 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648, 0x8979, 0x897a,
+ 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5, 0x8ea4, 0x8ea3, 0x946e,
+ 0x946d, 0x946f, 0x9471, 0x9473, 0x9749, 0x9872, 0x995f, 0x9c68, 0x9c6e,
+ 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10, 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5,
+ 0x9f09, 0x9f47, 0x9f78, 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f,
+ 0x883c, 0x8db2, 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60,
+ 0x9b2e, 0x9c74, 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a,
+ 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961, 0x99ab,
+ 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48, 0x6207, 0x6b1e,
+ 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9e19,
+ 0x864b, 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d,
+ 0x7069, 0x706a, 0x7229, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x4e28, 0x4e36, 0x4e3f, 0x4e85,
+ 0x4e05, 0x4e04, 0x5182, 0x5196, 0x5338, 0x5369, 0x53b6, 0x4e2a, 0x4e87,
+ 0x4e49, 0x51e2, 0x4e46, 0x4e8f, 0x4ebc, 0x4ebe, 0x5166, 0x51e3, 0x5204,
+ 0x529c, 0x5344, 0x5902, 0x590a, 0x5b80, 0x5ddb, 0x5e7a, 0x5e7f, 0x5ef4,
+ 0x5f50, 0x5f51, 0x5f61, 0x961d, 0x000b, 0x4e63, 0x4e62, 0x4ea3, 0x5185,
+ 0x4ec5, 0x4ecf, 0x4ece, 0x4ecc, 0x5184, 0x5186, 0xf817, 0x34c5, 0x51e4,
+ 0x5205, 0x529e, 0x529d, 0x52fd, 0x5300, 0x533a, 0x3539, 0x5346, 0x535d,
+ 0x5386, 0x53b7, 0x3555, 0x53cc, 0x355b, 0x53ce, 0x5721, 0x37a2, 0x5e00,
+ 0x5f0c, 0x6237, 0x6238, 0x6534, 0x6535, 0x65e0, 0x3e26, 0x738d, 0x4e97,
+ 0x4ee0, 0x3432, 0x01a9, 0x4ee7, 0x3433, 0x4ee6, 0x3434, 0x36a2, 0x3431,
+ 0x34b0, 0x56d8, 0x518b, 0x518c, 0x5199, 0x51e5, 0xf850, 0x520b, 0x34dc,
+ 0x361e, 0x5304, 0x5303, 0x5307, 0xf82a, 0x531e, 0x535f, 0x536d, 0x5389,
+ 0x53ba, 0x53d0, 0x3565, 0x53f6, 0x53f7, 0x53f9, 0x3564, 0x53f4, 0x361d,
+ 0x3626, 0x5724, 0x5904, 0x5918, 0x5932, 0x5930, 0x5934, 0x368e, 0x5975,
+ 0x374a, 0x5b82, 0x5bf9, 0x5c14, 0x378b, 0x37a6, 0x37a4, 0x37a5, 0x37a7,
+ 0x382f, 0x3832, 0x5e81, 0x5e83, 0x5f0d, 0x5f52, 0x38d4, 0x5fca, 0x5fc7,
+ 0x6239, 0x39c5, 0x624f, 0x65e7, 0x672f, 0x6b7a, 0x6c39, 0x3cba, 0x3cb9,
+ 0x6c37, 0x6c44, 0x6c45, 0x738c, 0x7592, 0x7676, 0x9093, 0x9092, 0x48b3,
+ 0x49ba, 0x4e21, 0x4e20, 0x4e22, 0x4e68, 0x4e89, 0x4e98, 0x4ef9, 0x4eef,
+ 0x343b, 0x343c, 0x4ef8, 0x4f06, 0x4f03, 0x4efc, 0x4eee, 0x4f16, 0x3439,
+ 0x4f28, 0x4f1c, 0x4f07, 0x4f1a, 0x4efa, 0x4f17, 0x514a, 0x34b2, 0x5172,
+ 0xf815, 0x51b4, 0x51b3, 0x51b2, 0x34c7, 0x51e8, 0x342b, 0x5214, 0x520f,
+ 0x5215, 0x5218, 0x52a8, 0xf82c, 0x534b, 0x534f, 0x353b, 0x5350, 0x3544,
+ 0x538b, 0x3542, 0x53be, 0x355c, 0x53d2, 0x5416, 0x53ff, 0x3567, 0x5400,
+ 0x3566, 0x5405, 0x5413, 0x5415, 0xf83b, 0x361f, 0x56e3, 0x5735, 0x5736,
+ 0x5731, 0x5732, 0x58ee, 0x5905, 0x4e54, 0x368f, 0x5936, 0x3690, 0x36a8,
+ 0x36a4, 0x597a, 0x36a3, 0x5986, 0x373d, 0x374c, 0x5b86, 0x5f53, 0x5c18,
+ 0x378c, 0x5c3d, 0x5c78, 0x37a8, 0x37ad, 0x37af, 0x1d46, 0x5c80, 0x3829,
+ 0x5e08, 0x3836, 0x3871, 0x3870, 0x386f, 0x5ef5, 0x5f0e, 0x38a9, 0x38aa,
+ 0x38fb, 0x5fd3, 0x5fda, 0x38fc, 0x5fdb, 0x39ae, 0x620f, 0x625d, 0x625f,
+ 0x6267, 0x6257, 0x9f50, 0x3ac3, 0x65eb, 0x65ea, 0x3b30, 0x6737, 0x3b41,
+ 0x6732, 0x6736, 0x6b22, 0x6bce, 0x3c8c, 0x6c58, 0x6c51, 0x6c77, 0x6c3c,
+ 0x3cbb, 0x6c5a, 0x3c86, 0x6c53, 0x706f, 0x7072, 0x706e, 0xf835, 0x3da1,
+ 0x7073, 0x72b1, 0x72b2, 0x3ea8, 0x738f, 0x3eaa, 0x3eab, 0x4096, 0x793c,
+ 0x41c2, 0x808d, 0x808e, 0x4493, 0x827b, 0x4494, 0x8d71, 0x8fb9, 0x9096,
+ 0x909a, 0x49bb, 0x4e24, 0x4e71, 0xf81b, 0x4e9c, 0x4f45, 0x4f4a, 0x4f39,
+ 0x4f37, 0x3443, 0x4f32, 0x4f42, 0x3442, 0x4f44, 0x4f4b, 0x3444, 0x4f40,
+ 0x4f35, 0x4f31, 0x5151, 0xf80e, 0x5150, 0x514e, 0x34b3, 0x34b7, 0x519d,
+ 0x34c8, 0x51b5, 0x51b8, 0x51ec, 0x5223, 0x5227, 0x5226, 0x521f, 0x522b,
+ 0x5220, 0x52b4, 0x52b3, 0x3518, 0x5325, 0x533b, 0x5374, 0x3547, 0x3546,
+ 0x3545, 0x356b, 0x3569, 0x544d, 0x3572, 0x3571, 0x543a, 0x356c, 0x356f,
+ 0x5444, 0x544c, 0x5423, 0x541a, 0x5432, 0x544b, 0x5421, 0x3573, 0x5434,
+ 0x5449, 0x5450, 0x5422, 0x543f, 0x5451, 0x545a, 0x542f, 0x3576, 0x56e9,
+ 0x56f2, 0x56f3, 0x56ef, 0x56ed, 0x56ec, 0x56e6, 0x5748, 0x3627, 0x5744,
+ 0x573f, 0x573c, 0x5753, 0x5756, 0x3630, 0x575f, 0x5743, 0x5758, 0x5757,
+ 0x3629, 0x362a, 0x362f, 0x5746, 0x362c, 0x573d, 0x362d, 0x5742, 0x5754,
+ 0x5755, 0x58f1, 0x58f2, 0x58f0, 0x590b, 0x9ea6, 0x56f1, 0x593d, 0x3693,
+ 0x5994, 0x598c, 0x36ad, 0x599c, 0x36ac, 0x36ab, 0x599f, 0x36a9, 0x599b,
+ 0x36ae, 0x5989, 0x599a, 0x36aa, 0x6588, 0x374e, 0x5b8d, 0x3750, 0x5bfe,
+ 0x5bff, 0x5bfd, 0x5c2b, 0x37b2, 0x5c84, 0x5c8e, 0x5c9c, 0x37b5, 0x37b6,
+ 0x5c85, 0x5df5, 0x5e09, 0x3839, 0x383b, 0x5e0b, 0x3872, 0x5e92, 0x5e90,
+ 0x5f03, 0x38ac, 0x5f1e, 0x5f63, 0x3908, 0x5fe7, 0x5ffe, 0x5fe6, 0x5fdc,
+ 0x5fce, 0x3903, 0x5ffc, 0x5fdf, 0x5fec, 0x5ff6, 0x25d7, 0x5ff2, 0x5ff0,
+ 0x5ff9, 0x390b, 0x6213, 0x39af, 0xf8b2, 0x623b, 0x623c, 0x6282, 0x39ce,
+ 0x39cb, 0x39cc, 0x6278, 0x628b, 0x39cd, 0x629e, 0x62a5, 0x629b, 0x629c,
+ 0x6299, 0x628d, 0x6285, 0x629d, 0x6275, 0x3a80, 0x3aaf, 0x3ad3, 0x65f6,
+ 0x3ad5, 0x3ad4, 0x3ad7, 0x66f5, 0x675b, 0x3b42, 0x6754, 0x6752, 0x3b44,
+ 0x6758, 0x6744, 0x674a, 0x6761, 0x3cc6, 0x6c7f, 0x6c91, 0x6c9e, 0x3cc0,
+ 0x6c6e, 0x6c7c, 0x6c9f, 0x6c75, 0x3cbe, 0x6c56, 0x6ca2, 0x6c79, 0x3cca,
+ 0x6ca1, 0x3cc4, 0x6caa, 0x6ca0, 0x3cc2, 0x7079, 0x7077, 0x707e, 0x3da4,
+ 0x7075, 0x707b, 0x7264, 0x3e29, 0x72bb, 0x72bc, 0x72c7, 0x72b9, 0x72be,
+ 0x72b6, 0x3e60, 0x3e5e, 0x7398, 0x3ead, 0x3eae, 0x3eac, 0x3f57, 0x7593,
+ 0x7680, 0x3fdd, 0x7683, 0x76c0, 0x76c1, 0x400e, 0x4097, 0x77f4, 0x77f5,
+ 0x4127, 0x7acc, 0x7acd, 0x7cfa, 0x809f, 0x8091, 0x8097, 0x8094, 0x4495,
+ 0x8286, 0x828c, 0xf98f, 0x8295, 0x4498, 0x866c, 0x459d, 0x8fb5, 0x8fbe,
+ 0x8fc7, 0x488a, 0x8fc1, 0x90a9, 0x90a4, 0x48b5, 0x48b6, 0x48b7, 0x90a8,
+ 0x9627, 0x9626, 0x962b, 0x9633, 0x9634, 0x9629, 0x4e3d, 0x3428, 0x4e9d,
+ 0x4f93, 0x4f8a, 0x344d, 0x3449, 0x4f6d, 0x4f8e, 0x4fa0, 0x4fa2, 0x4fa1,
+ 0x4f9f, 0x4fa3, 0x0209, 0x4f72, 0x3451, 0x4f8c, 0x5156, 0xf80f, 0xf811,
+ 0x5190, 0x34cb, 0x34ca, 0x34cc, 0x51ed, 0x51fe, 0x522f, 0x06ec, 0x523c,
+ 0x5234, 0x5239, 0x52b9, 0x52b5, 0x52bf, 0x5355, 0x353d, 0x5376, 0x537a,
+ 0x5393, 0x3548, 0x53c1, 0x53c2, 0x53d5, 0x5485, 0x3578, 0x545f, 0x5493,
+ 0x5489, 0x5479, 0x9efe, 0x548f, 0x5469, 0x546d, 0x357a, 0x5494, 0x546a,
+ 0x548a, 0x3577, 0x56fd, 0x56fb, 0x56f8, 0x3621, 0x56fc, 0x56f6, 0x5765,
+ 0x5781, 0x5763, 0x5767, 0x3631, 0x576e, 0x5778, 0x577f, 0x3633, 0x3634,
+ 0x58f3, 0x594b, 0x594c, 0x36c1, 0x36b0, 0x36b4, 0x59ad, 0x36b8, 0x59c4,
+ 0x36bc, 0x59c2, 0x59b0, 0x36bf, 0x36b5, 0x36b1, 0x36bd, 0x59bf, 0x36bb,
+ 0x59c9, 0x59b8, 0x59ac, 0x36b3, 0x36b6, 0x36ba, 0x59b7, 0x59d7, 0x36b7,
+ 0x5b60, 0x3740, 0x5b96, 0x5b9e, 0x5b94, 0x5b9f, 0x5b9d, 0x3752, 0x5c00,
+ 0x5c19, 0x3790, 0x3791, 0x5c49, 0x5c4a, 0x37be, 0x5cbb, 0x5cc1, 0x37c0,
+ 0x37c1, 0x37b9, 0x5cb9, 0x5c9e, 0x5cb4, 0x5cba, 0x5df6, 0x5e13, 0x5e12,
+ 0x5e77, 0x3879, 0x5e98, 0x387b, 0x5e99, 0x5e9d, 0x5ef8, 0x38a0, 0x5ef9,
+ 0x3429, 0x5f06, 0x5f21, 0x38ae, 0x5f25, 0x5f55, 0x38cd, 0x38cb, 0x38d9,
+ 0x5f84, 0x5f83, 0x6030, 0x6007, 0x390c, 0x6036, 0x3901, 0x3905, 0x3902,
+ 0x5fe9, 0x603d, 0x6008, 0x3913, 0x3911, 0x62ba, 0x62b2, 0x39e4, 0x62b7,
+ 0x62e4, 0x62a7, 0x39da, 0x39d5, 0x39d3, 0x62d5, 0x62e1, 0x62dd, 0x62a6,
+ 0x62c1, 0x62c5, 0x62c0, 0x62df, 0x62e0, 0x62de, 0x39d6, 0x6589, 0x3ab4,
+ 0x65a6, 0x65ba, 0x3ad9, 0x65ff, 0x3ad8, 0x6617, 0x6618, 0x6601, 0x65fe,
+ 0x3b33, 0x670c, 0x3b48, 0x676b, 0x6796, 0x6782, 0x678a, 0x3b47, 0x67a3,
+ 0x3b4b, 0x67a2, 0x678f, 0x3b4a, 0x67f9, 0x6780, 0x6b26, 0x6b27, 0x6b68,
+ 0x6b69, 0x3c5a, 0x6b81, 0x6bb4, 0x6bd1, 0x3c8e, 0x3cb4, 0x6c1c, 0x3ccd,
+ 0x3ccc, 0x3ccf, 0x3ccb, 0x3cce, 0x6c97, 0x6c6c, 0x6cdf, 0x3cd2, 0x6cea,
+ 0x3cd1, 0x6ce4, 0x6cd8, 0x6cb2, 0x6cce, 0x6cc8, 0x3da6, 0x708b, 0x7088,
+ 0x7090, 0x708f, 0x3daa, 0x7087, 0x7089, 0x708d, 0x7081, 0x3da8, 0x708c,
+ 0x3e13, 0x3e1a, 0x7240, 0x3e1d, 0x3e1e, 0x7265, 0x7266, 0x7268, 0x3e65,
+ 0x3e66, 0x72cd, 0x72d3, 0x72db, 0x3e64, 0x72cf, 0x73a7, 0x73a3, 0x739e,
+ 0x3eb0, 0x73af, 0x3eb3, 0x3eb5, 0x73aa, 0x739c, 0x3f19, 0x7542, 0x7544,
+ 0x753b, 0x7541, 0x233f, 0x759b, 0x759e, 0x3f75, 0x79c4, 0x79c3, 0x79c6,
+ 0x412b, 0x412c, 0x79c7, 0x412d, 0x79ca, 0x592e, 0x41c3, 0x7acf, 0x7c76,
+ 0x7c74, 0x7cff, 0x7cfc, 0x34ba, 0x4350, 0x7f59, 0x80a8, 0x43d3, 0x43d0,
+ 0x80b0, 0x43dc, 0x80b3, 0x43d2, 0x80a4, 0x80b6, 0x80a7, 0x80ac, 0x43db,
+ 0x80a6, 0x5367, 0x820e, 0x82c4, 0x833e, 0x829c, 0x44a5, 0x449f, 0x449a,
+ 0x449c, 0x44a2, 0x82aa, 0x449b, 0x82c9, 0x44a3, 0x449d, 0x82a6, 0x82b2,
+ 0x4588, 0x461a, 0x488d, 0x8fcc, 0x8fd9, 0x8fca, 0x8fd8, 0x8fcf, 0x90b7,
+ 0x48b8, 0x90ad, 0x90b9, 0x9637, 0x49c3, 0x9641, 0x963e, 0x96b6, 0x9751,
+ 0x9763, 0x4e57, 0x4e79, 0x4eb2, 0x4eb0, 0x4eaf, 0x4eb1, 0x4fd2, 0x4fd5,
+ 0x345d, 0x4fbe, 0x4fb8, 0x4fb0, 0x4fb1, 0x4fc8, 0x345a, 0x3457, 0x4fc6,
+ 0x4fcc, 0x4fe5, 0x4fe3, 0x4fb4, 0x516a, 0x34b8, 0x519f, 0x34c2, 0x51c1,
+ 0x34cf, 0x51c2, 0x51c3, 0x5245, 0x5248, 0x34e7, 0x34e9, 0x524f, 0x4452,
+ 0x34e8, 0x52c5, 0x52ca, 0x52c4, 0x5327, 0x5358, 0x537d, 0x354a, 0x53dd,
+ 0x53dc, 0x53da, 0x53d9, 0x54b9, 0x3580, 0x54d0, 0x54b4, 0x54ca, 0x3587,
+ 0x54a3, 0x54da, 0x54a4, 0x3584, 0x54b2, 0x549e, 0x549f, 0x54b5, 0x3582,
+ 0x3581, 0x54cd, 0x3583, 0x54cc, 0x3622, 0x5700, 0x57ac, 0x5791, 0x578e,
+ 0x578d, 0x5792, 0x57a1, 0x5790, 0x57a6, 0x57a8, 0x363b, 0x579c, 0x5796,
+ 0x57a7, 0x363a, 0x3638, 0x3639, 0x3636, 0x58f5, 0x3685, 0x5909, 0x5908,
+ 0x3c54, 0x5952, 0x369a, 0x36c4, 0x59df, 0x36c5, 0x59eb, 0x59ef, 0x59f0,
+ 0x59d5, 0x5a0d, 0x5a04, 0x59f9, 0x5a02, 0x59f8, 0x59e2, 0x59d9, 0x59e7,
+ 0x5b6a, 0x3754, 0x3755, 0x5bab, 0x3756, 0x5c1b, 0x5c2f, 0x3796, 0x663c,
+ 0x3795, 0x3794, 0x37c4, 0x5cd1, 0x5cdc, 0x5ce6, 0x5ce1, 0x5ccd, 0xf87a,
+ 0x5ce2, 0x5cdd, 0x5ce5, 0x5dfb, 0x5dfa, 0x5e1e, 0x3844, 0x5ea1, 0x387d,
+ 0x387e, 0x5efc, 0x5efb, 0x5f2f, 0x38b2, 0x38b6, 0x5f66, 0xf899, 0x38dc,
+ 0x38df, 0x605c, 0x3928, 0x604e, 0x6051, 0x3919, 0x3910, 0x6023, 0x6031,
+ 0x607c, 0x6052, 0x392c, 0x6060, 0x604a, 0x6061, 0x391b, 0x6218, 0x39c2,
+ 0x39ef, 0x39e3, 0x39e5, 0x39ea, 0x39e6, 0x39ee, 0x631f, 0x6317, 0x62ea,
+ 0x6321, 0x6304, 0x6305, 0x39e8, 0x6531, 0x6544, 0x6540, 0x3a85, 0x6542,
+ 0x65be, 0x3ae0, 0x6629, 0x661b, 0x3add, 0x6623, 0x662c, 0x661a, 0x6630,
+ 0x663b, 0x661e, 0x6637, 0x6638, 0x3ae1, 0x670e, 0x3b51, 0x3b55, 0x67e8,
+ 0x67d6, 0x3b52, 0x67c7, 0x67bc, 0x6852, 0x67bf, 0x67d5, 0x67fe, 0x8363,
+ 0x67fb, 0xf8df, 0x67b1, 0x6801, 0x6805, 0x6800, 0x67d7, 0x409e, 0x6b2a,
+ 0x6b6b, 0x3c52, 0x3c5e, 0x3c60, 0x3c5f, 0x6be1, 0x3c92, 0x3cd6, 0x6d23,
+ 0x6cff, 0x6d14, 0x6d05, 0x6d13, 0x6d06, 0x6d21, 0x3cde, 0x6d15, 0x6caf,
+ 0x6cf4, 0x6d02, 0x6d45, 0xf8fe, 0x6d26, 0x3cd9, 0x6d44, 0x3cdd, 0x6d24,
+ 0x70a5, 0x3dac, 0x70a3, 0x3db0, 0x70a2, 0x70bb, 0x70a0, 0x70aa, 0x3daf,
+ 0x3dae, 0x70a8, 0x70b6, 0x70b2, 0x70a7, 0x3dad, 0x3dab, 0x70b9, 0x722e,
+ 0x3e16, 0x723c, 0x3e30, 0x726d, 0x3e33, 0x3e31, 0x72e7, 0x72ed, 0x3e6e,
+ 0x72ec, 0x72e5, 0x72e2, 0x3eb1, 0x73c4, 0x73bd, 0x73cf, 0x73c9, 0x73c1,
+ 0x73d0, 0x3eb7, 0x73ce, 0x74ed, 0x74eb, 0x3f1a, 0x74ef, 0x7549, 0x7550,
+ 0x7546, 0x754a, 0x3f59, 0x754d, 0x75a6, 0x3f7a, 0x3f78, 0x3f7b, 0x75a8,
+ 0x3fde, 0x3fec, 0x76c7, 0x76ff, 0x401e, 0x76fd, 0x77e6, 0x780a, 0x409b,
+ 0x7804, 0x780b, 0x7807, 0x409d, 0x7815, 0x7808, 0x40fd, 0x79d3, 0x79d4,
+ 0x79d0, 0x79d7, 0x7a7c, 0x4194, 0x4193, 0x7a7d, 0x7a83, 0x7a82, 0x41c6,
+ 0x7ad4, 0x7ad5, 0x7ad3, 0x7ad0, 0x7ad2, 0x7afe, 0x7afc, 0x7c77, 0x7c7c,
+ 0x7c7b, 0x42b8, 0xf96a, 0x42b7, 0x42b9, 0x4353, 0x5133, 0x4352, 0x4351,
+ 0x7f8f, 0x80d3, 0x43e3, 0x80cb, 0x80d2, 0x43e2, 0x8109, 0x80e2, 0x80df,
+ 0x80c6, 0x4463, 0x8224, 0x82f7, 0x82d8, 0x82dd, 0x44aa, 0x44a6, 0x82f8,
+ 0x82fc, 0x44a8, 0x44a9, 0x82e9, 0x44ab, 0x82ee, 0x44ac, 0x82d0, 0x830e,
+ 0x82e2, 0x830b, 0x82fd, 0x5179, 0x8676, 0x459e, 0x8678, 0x459f, 0x45a0,
+ 0x8675, 0x867d, 0x460f, 0x8842, 0x8866, 0x461c, 0x898c, 0x8a05, 0x46ae,
+ 0x8a06, 0x46b0, 0x8c9f, 0x47d4, 0x8ff1, 0x8fe7, 0x8fe9, 0x8fef, 0x90c2,
+ 0x90bc, 0x48bb, 0x90c6, 0x90c0, 0x48c1, 0x48c2, 0x90cd, 0x90c9, 0x48be,
+ 0x90c4, 0x48e5, 0x9581, 0x49c6, 0x9cec, 0x5032, 0x4ff9, 0x501d, 0x4fff,
+ 0x5004, 0x4ff0, 0x5003, 0x462e, 0x5002, 0x4ffc, 0x4ff2, 0x5024, 0x5008,
+ 0x5036, 0x502e, 0x3465, 0x5010, 0x5038, 0x5039, 0x4ffd, 0x5056, 0x4ffb,
+ 0x51a3, 0x51a6, 0x51a1, 0x34d1, 0x34d0, 0x51c7, 0x51c9, 0x5260, 0x5264,
+ 0x5259, 0x5265, 0x5267, 0x5257, 0x5263, 0x34ee, 0x5253, 0x34ef, 0x52cf,
+ 0x351e, 0x52ce, 0x52d0, 0x52d1, 0x52cc, 0x354b, 0x354d, 0x3556, 0x550d,
+ 0x54f4, 0x3592, 0x5513, 0x54ef, 0x54f5, 0x54f9, 0x5502, 0x5500, 0x3593,
+ 0x3590, 0x5518, 0x54f0, 0x54f6, 0xf841, 0x3597, 0x5519, 0x3623, 0x5705,
+ 0x57c9, 0x363f, 0x57b7, 0x57cd, 0x3643, 0x3642, 0x3644, 0x57be, 0x57bb,
+ 0x3645, 0x57db, 0x57c8, 0x57c4, 0x57c5, 0x57d1, 0x57ca, 0x57c0, 0x36d9,
+ 0x36de, 0x5a21, 0x5a2a, 0x36cf, 0x5a1d, 0x36cd, 0x5a0b, 0x36dd, 0x36ce,
+ 0x36d3, 0x36d6, 0x5a22, 0x36dc, 0x36d1, 0x5a24, 0x36d0, 0x5a14, 0x5a31,
+ 0x36d5, 0x5a2f, 0x5a1a, 0x5a12, 0x36d4, 0x36db, 0x5a26, 0x172e, 0x3743,
+ 0x5bbc, 0x5bbb, 0x5bb7, 0x5c05, 0x5c06, 0x5c52, 0x5c53, 0x37cd, 0x37d1,
+ 0x5cfa, 0x5ceb, 0x37ca, 0x5cf3, 0x5cf5, 0x5ce9, 0x5cef, 0x37d4, 0x5e2a,
+ 0x5e30, 0x5e2e, 0x5e2c, 0x5e2f, 0x5eaf, 0x5ea9, 0x3886, 0x5efd, 0x5f32,
+ 0x5f8e, 0x5f93, 0x5f8f, 0x604f, 0x6099, 0x3933, 0x607e, 0x3937, 0x6074,
+ 0x604b, 0x6073, 0x6075, 0x392a, 0x391f, 0x6056, 0x60a9, 0x608b, 0x60a6,
+ 0x3939, 0x6093, 0x60ae, 0x609e, 0x60a7, 0x6245, 0x39f2, 0x39f8, 0x632e,
+ 0x39f7, 0x6352, 0x6330, 0x635b, 0x39f4, 0x6319, 0x631b, 0x39f1, 0x6331,
+ 0x635d, 0x6337, 0x6335, 0x6353, 0x39f5, 0x635c, 0x633f, 0x654b, 0x3a87,
+ 0x4369, 0x658b, 0x3ab6, 0x659a, 0x6650, 0x6646, 0x664e, 0x6640, 0x3ae9,
+ 0x664b, 0x6648, 0x3aeb, 0x6660, 0x6644, 0x664d, 0x3b34, 0x6837, 0x6824,
+ 0x3b62, 0x3b5c, 0x681b, 0x6836, 0x3b60, 0x682c, 0x6819, 0x6856, 0x6847,
+ 0x683e, 0x681e, 0xf8e1, 0x6815, 0x6822, 0x6827, 0x6859, 0x6858, 0x6855,
+ 0x6830, 0x6823, 0x6b2e, 0x6b2b, 0x6b30, 0x6b6c, 0x3c61, 0x6b8b, 0x3c7f,
+ 0x6be9, 0x6bea, 0x6be5, 0x6d6b, 0x3ce5, 0x3ce6, 0x6d73, 0x6d57, 0x3ce9,
+ 0x3cf3, 0x6d5d, 0x6d56, 0x6d8f, 0x6d5b, 0x6d1c, 0x6d9a, 0x6d9b, 0x6d99,
+ 0x3cee, 0x6d81, 0x6d71, 0x3ced, 0x3cec, 0x6d72, 0x6d5c, 0x6d96, 0x70c4,
+ 0x70db, 0x70cc, 0x70d0, 0x70e3, 0x70df, 0x3db3, 0x70d6, 0x70ee, 0x70d5,
+ 0x3db5, 0x3e27, 0x3e35, 0x3e36, 0x727a, 0x3e71, 0x72f5, 0x7302, 0x3eb8,
+ 0x3ec2, 0x73e2, 0x73ec, 0x73d5, 0x73f9, 0x73df, 0x73e6, 0x3ec8, 0x3ec0,
+ 0x3ec1, 0x3ec4, 0x73e4, 0x73e1, 0x74f3, 0x3f1f, 0x3f1c, 0x3f1d, 0x3f4d,
+ 0x7556, 0x7555, 0x7558, 0x7557, 0x755e, 0x75c3, 0x3f87, 0x3f82, 0x75b4,
+ 0x3f7d, 0x75b1, 0x3fdf, 0x4000, 0x76cb, 0x76cc, 0x772a, 0x4020, 0x7716,
+ 0x770f, 0x4022, 0x4024, 0x773f, 0x772b, 0x770e, 0x7724, 0x4021, 0x7721,
+ 0x7718, 0x77dd, 0x40a4, 0x40a5, 0x7824, 0x7836, 0x4101, 0x7958, 0x7959,
+ 0x4103, 0x7962, 0x79da, 0x79d9, 0x4137, 0x79e1, 0x79e5, 0x79e8, 0x79db,
+ 0x4138, 0x79e2, 0x79f0, 0x4199, 0x4198, 0x4197, 0x41c9, 0x7ada, 0x7add,
+ 0x41c7, 0x7adb, 0x7adc, 0x41d9, 0x41db, 0x7b0d, 0x7b0b, 0x7b14, 0x7c8e,
+ 0x7c86, 0x427b, 0x7c87, 0x7c83, 0x7c8b, 0x427c, 0x42bd, 0x42bc, 0x42c3,
+ 0x7d24, 0x42c1, 0x42bf, 0x42c4, 0x7d25, 0x7f62, 0x7f93, 0x7f99, 0x7f97,
+ 0x437e, 0x437f, 0x7fc4, 0x7fc6, 0x800a, 0x43b4, 0x43b3, 0x8040, 0x803c,
+ 0x803b, 0x80f6, 0x80ff, 0x80ee, 0x8104, 0x8103, 0x8107, 0xf983, 0x43e6,
+ 0x80f7, 0x4459, 0x445a, 0x822d, 0x4464, 0x8227, 0x8229, 0x831f, 0x8357,
+ 0x44b4, 0x44b9, 0x44b7, 0x44b5, 0x8321, 0x44c1, 0x44b1, 0x8318, 0x8358,
+ 0x44b3, 0x44ba, 0x458c, 0x458b, 0x458d, 0x8684, 0x869f, 0x869b, 0x8689,
+ 0x86a6, 0x8692, 0x868f, 0x86a0, 0x884f, 0x8878, 0x887a, 0x886e, 0x887b,
+ 0x8884, 0x8873, 0x4678, 0x4677, 0x8a0d, 0x8a0b, 0x8a19, 0x46b2, 0x47d6,
+ 0x8ed0, 0x4845, 0x4892, 0x4895, 0x8ff9, 0x9009, 0x9008, 0x48c6, 0x90de,
+ 0x9151, 0x48e7, 0x48e8, 0x91db, 0x91df, 0x91de, 0x91d6, 0x91e0, 0x9585,
+ 0x9660, 0x9659, 0x49cb, 0x9656, 0x49cd, 0x49f1, 0x96bd, 0x4b22, 0x3421,
+ 0x5042, 0x5059, 0x346f, 0x5044, 0x5066, 0x5052, 0x5054, 0x5071, 0x5050,
+ 0x507b, 0x507c, 0x5058, 0x3470, 0x3464, 0x5079, 0x506c, 0x5078, 0x51a8,
+ 0x51d1, 0x51cf, 0x5268, 0x5276, 0x52d4, 0x352d, 0x53a0, 0x53c4, 0x3558,
+ 0x5558, 0x554c, 0x5568, 0x35a6, 0x5549, 0x35a4, 0x359f, 0x555d, 0x5529,
+ 0x0dae, 0x5554, 0x5553, 0x35a3, 0x555a, 0x35a0, 0x553a, 0x553f, 0x552b,
+ 0x57ea, 0x364a, 0x57ef, 0x3647, 0x3648, 0x57dd, 0x57fe, 0xf855, 0x57de,
+ 0x57e6, 0x3649, 0x57e8, 0x57ff, 0x5803, 0x58f7, 0x68a6, 0x591f, 0x369e,
+ 0x595b, 0x595d, 0x595e, 0x1637, 0x36e8, 0x5a2b, 0x36ec, 0x5a3b, 0x36ed,
+ 0x36e6, 0x5a61, 0x5a3a, 0x5a6e, 0x5a4b, 0x5a6b, 0x36eb, 0x36e7, 0x5a45,
+ 0x5a4e, 0x5a68, 0x5a3d, 0x5a71, 0x5a3f, 0x5a6f, 0x5a75, 0x36e9, 0x5a73,
+ 0x5a2c, 0x5a59, 0x5a54, 0x5a4f, 0x5a63, 0x375c, 0x375d, 0x5bc8, 0x3760,
+ 0x5bc3, 0x375b, 0x5c5b, 0x5c61, 0x3799, 0x5d21, 0x5d0a, 0x5d09, 0x37d8,
+ 0x5d2c, 0x5d08, 0x37da, 0x37dd, 0x5d2a, 0x5d15, 0x37e0, 0x5d10, 0x5d13,
+ 0x37e5, 0x5d2f, 0x5d18, 0x37d7, 0x5de3, 0x5e39, 0x5e35, 0x5e3a, 0x5e32,
+ 0x384e, 0x388c, 0x3888, 0xf88d, 0x5ebb, 0x5eba, 0x5f34, 0x5f39, 0x38ce,
+ 0xf89c, 0x38e5, 0x38e6, 0x6098, 0x3932, 0x60d0, 0x3940, 0x3947, 0x394c,
+ 0x60d7, 0x60aa, 0x3935, 0x60a1, 0x60a4, 0x3930, 0x60ee, 0x3943, 0x60e7,
+ 0x394d, 0x60e8, 0x60de, 0x39b7, 0x39f3, 0x637e, 0x638b, 0x3a02, 0x3a0b,
+ 0x6379, 0x6386, 0x6393, 0x3a04, 0x6373, 0x636a, 0xf8ba, 0x636c, 0x3a08,
+ 0x637f, 0x39fc, 0x63b2, 0x63ba, 0x39ff, 0x3a00, 0x6366, 0x6374, 0x3a8b,
+ 0x655a, 0x3a8d, 0x654e, 0x654d, 0x658d, 0x658e, 0x65ad, 0x3aca, 0x65c7,
+ 0x65ca, 0x3acb, 0x65c9, 0xf8cb, 0x65e3, 0x6657, 0x3af3, 0x6663, 0x6667,
+ 0x671a, 0x6719, 0x6716, 0x3b36, 0x3b6a, 0x689e, 0x68b6, 0x6898, 0x6873,
+ 0x3b6b, 0x689a, 0x688e, 0x68b7, 0x68db, 0x68a5, 0x686c, 0x68c1, 0x6884,
+ 0x3b71, 0x3b68, 0x6895, 0x687a, 0x6899, 0x3b72, 0x68b8, 0x68b9, 0x6870,
+ 0x3c2e, 0x6b35, 0x3c62, 0x6b90, 0x6bbb, 0x6bed, 0x3c98, 0x3cb5, 0x3ceb,
+ 0x6dc1, 0x6dc3, 0x6dce, 0x3cfb, 0x3cf8, 0x6dad, 0x6e04, 0x3cf5, 0x6db9,
+ 0x3d08, 0x6de7, 0xf907, 0x6e08, 0x6e06, 0x3d0a, 0x6e0a, 0x6db0, 0x3d06,
+ 0x6df8, 0x6e0c, 0x3cfd, 0x6db1, 0x3cfa, 0x6e02, 0x6e07, 0x6e09, 0x6e01,
+ 0x6e17, 0x6dff, 0x6e12, 0x3dba, 0x3db9, 0x7103, 0x7107, 0x7101, 0x70f5,
+ 0x70f1, 0x7108, 0x70f2, 0x710f, 0x3dbb, 0x70fe, 0x3e18, 0x3e40, 0x3e3d,
+ 0x731a, 0x7310, 0x730e, 0x7402, 0x73f3, 0x3ecd, 0x3ec9, 0x73fb, 0x3ecb,
+ 0x3eca, 0x3ece, 0x751b, 0x7523, 0x7561, 0x7568, 0x3f5e, 0x7567, 0x75d3,
+ 0x3f91, 0x3f8c, 0x7690, 0x3fe1, 0x4002, 0x76d5, 0x76d7, 0x76d6, 0x7730,
+ 0x402b, 0x7726, 0x402a, 0x7740, 0x3e14, 0x771e, 0x40ad, 0x40a3, 0x40ab,
+ 0x7847, 0x40af, 0x784b, 0x7851, 0x784f, 0x7842, 0x7846, 0x4104, 0x796e,
+ 0x796c, 0x79f2, 0x4144, 0x79f1, 0x79f5, 0x79f3, 0x79f9, 0x413d, 0x4147,
+ 0x419c, 0x7a9a, 0x7a93, 0x7a91, 0x7ae1, 0x41e0, 0x41e4, 0x7b21, 0x7b1c,
+ 0x7b16, 0x7b17, 0x7b36, 0x7b1f, 0x4280, 0x7c93, 0x7c99, 0x7c9a, 0x7c9c,
+ 0x42ca, 0x7d49, 0x42d4, 0x7d34, 0x7d37, 0x42d2, 0x7d2d, 0x42cb, 0x7d4c,
+ 0x42ce, 0x42d3, 0x7d48, 0x4344, 0x4348, 0x7f3b, 0x4345, 0x4381, 0x4386,
+ 0x4385, 0x8008, 0x801a, 0x43a3, 0x801d, 0x43b5, 0x8049, 0x8045, 0x8044,
+ 0x7c9b, 0x43fa, 0x43f9, 0x812a, 0x812e, 0x43fb, 0x43f2, 0x8131, 0x43ef,
+ 0x811a, 0x8134, 0x8117, 0x445b, 0x4466, 0x44ce, 0x831d, 0x8371, 0x8384,
+ 0x8380, 0x8372, 0x83a1, 0x35b4, 0x8379, 0x8391, 0x44c8, 0x839f, 0x83ad,
+ 0x44d1, 0x44c5, 0x8323, 0x44d2, 0x8385, 0x839c, 0x83b7, 0x8658, 0x865a,
+ 0x458f, 0x8657, 0x86b2, 0x45a7, 0x86ae, 0x45a5, 0x45a4, 0x4611, 0x8845,
+ 0x889c, 0x8894, 0x88a3, 0x888f, 0x88a5, 0x88a9, 0x88a6, 0x888a, 0x88a0,
+ 0x8890, 0x8992, 0x8991, 0x8994, 0x46b5, 0x8a26, 0x8a32, 0x8a28, 0x46b4,
+ 0x46bd, 0x8a1c, 0x46bb, 0x8a2b, 0x8a20, 0x46b9, 0x8a29, 0x46c2, 0x46be,
+ 0x46ba, 0x8a21, 0x8c3a, 0x3ab7, 0x8c5b, 0x8c58, 0x8c7c, 0x4758, 0x8ca6,
+ 0x8cae, 0x8cad, 0x8d65, 0x479b, 0x8d7e, 0x479c, 0x8d7c, 0x8d7f, 0x8d7a,
+ 0x8dbd, 0x47da, 0x47de, 0x8dc0, 0x8dbb, 0x8ead, 0x8eaf, 0x8ed6, 0x484d,
+ 0x4846, 0x4847, 0x484b, 0x484c, 0x8ed9, 0x4848, 0x4899, 0x9012, 0x900e,
+ 0x9025, 0x489b, 0x9013, 0x90ee, 0x48ce, 0x90ab, 0x90f7, 0x48eb, 0x9159,
+ 0x9154, 0x91f2, 0x91f0, 0x91e5, 0x91f6, 0x491c, 0x498c, 0x9587, 0x49d1,
+ 0x965a, 0x49d6, 0x49d3, 0x966e, 0x49d4, 0x49d0, 0x49d5, 0x9679, 0x4a0b,
+ 0x98e1, 0x98e6, 0x4bc6, 0x9ec4, 0x9ed2, 0x4e80, 0x3424, 0x4e81, 0x508f,
+ 0x5097, 0x5088, 0x5089, 0x3474, 0x347a, 0x5081, 0x5160, 0x0564, 0x34c3,
+ 0x5e42, 0x51d3, 0x34d4, 0x34d5, 0x51d2, 0x51d6, 0x5273, 0x34fb, 0x5270,
+ 0x34f7, 0x3532, 0xf833, 0x53a8, 0x53a6, 0x53c5, 0x5597, 0x55de, 0x35ba,
+ 0x35bf, 0x5596, 0x55b4, 0x35c7, 0x5585, 0x35b7, 0x559b, 0x55a0, 0x35b9,
+ 0x5559, 0x35c3, 0x5586, 0x35bd, 0x35d0, 0x55af, 0x557a, 0x35c1, 0x35be,
+ 0x35cd, 0x559e, 0x35cb, 0x55a9, 0x570f, 0x570e, 0x581a, 0x364f, 0x581f,
+ 0x3653, 0x583c, 0x5818, 0x583e, 0x5826, 0x3655, 0x583a, 0x1364, 0x5822,
+ 0x3651, 0x58fb, 0x5963, 0x5964, 0x369f, 0x5aa8, 0x5aa3, 0x5a82, 0x5a88,
+ 0x5aa1, 0x5a85, 0x5a98, 0x36fe, 0x5a99, 0x36fb, 0x5a89, 0x5a81, 0x5a96,
+ 0x5a80, 0x36f1, 0x36f5, 0x5a91, 0x36ef, 0x3704, 0x3703, 0x36f4, 0x5acf,
+ 0x36f3, 0x3702, 0x36f7, 0x36fa, 0x36fd, 0x36ee, 0x5a87, 0x5aa0, 0x36f0,
+ 0x5a79, 0x36f2, 0x5a86, 0x5aab, 0x5aaa, 0x5aa4, 0x5a8d, 0x5a7e, 0x3744,
+ 0x5bd5, 0x3762, 0x3777, 0x3dc9, 0x5c1e, 0x5c5f, 0x5c5e, 0x5d44, 0x5d3e,
+ 0x37e8, 0x5d48, 0x5d1c, 0x37ef, 0x5d5b, 0x5d4d, 0x37e6, 0x37ed, 0x5d57,
+ 0x37e7, 0x5d53, 0x5d4f, 0x37eb, 0x5d3b, 0x5d46, 0x382d, 0x3855, 0x5e46,
+ 0x5e47, 0x3853, 0x5e48, 0x5ec0, 0x5ebd, 0x5ebf, 0x3890, 0x5f11, 0x38be,
+ 0x5f3e, 0x5f3b, 0x38bd, 0x5f3a, 0x38cf, 0x38d0, 0x38ec, 0x5fa7, 0x394b,
+ 0x60ea, 0x3948, 0x6107, 0x6122, 0x610c, 0x3955, 0x3951, 0x60b3, 0x60d6,
+ 0x60d2, 0x394e, 0x60e3, 0x60e5, 0x60e9, 0x396b, 0x395e, 0x6111, 0x60fd,
+ 0x3960, 0x3967, 0x611e, 0x6120, 0x6121, 0x621e, 0x39b8, 0x63e2, 0x63de,
+ 0x63e6, 0x3a14, 0x3a0f, 0x3a07, 0x3a13, 0x63f8, 0x3a17, 0x63fe, 0x63c1,
+ 0x63bf, 0x63f7, 0x63d1, 0x655f, 0x6560, 0x6561, 0x3a9a, 0x3ab8, 0x65d1,
+ 0x3af7, 0x3af8, 0x667d, 0x666b, 0x667f, 0x3afd, 0x3af5, 0x6673, 0x6681,
+ 0x666d, 0x6669, 0x3afa, 0x3b38, 0x671e, 0x68ed, 0x3b87, 0x3b80, 0x3b88,
+ 0x3b79, 0x6903, 0x3b7c, 0x68fe, 0x68e5, 0x691e, 0x6902, 0x3b83, 0x3b85,
+ 0x6909, 0x68ca, 0x6900, 0xf8e5, 0x6901, 0x6918, 0x68e2, 0x68cf, 0x3b7b,
+ 0x692e, 0x68c5, 0x68ff, 0x3b86, 0x691c, 0x68c3, 0x3c34, 0x6b6f, 0x3c55,
+ 0x6b6e, 0x3c68, 0x6bbe, 0x3c9c, 0x6bf4, 0x6c2d, 0x3cfc, 0x6db6, 0x6e75,
+ 0x6e1e, 0x3d1a, 0x6e18, 0x3d17, 0x6e48, 0x3d1b, 0x6e4f, 0x3d13, 0x6e42,
+ 0x6e6a, 0x6e70, 0x6dfe, 0x3d05, 0x3d07, 0x6e6d, 0x3d1c, 0x6e7b, 0x6e7e,
+ 0x6e59, 0x3d11, 0x6e57, 0x3d16, 0x6e80, 0x6e50, 0x3d15, 0x6e29, 0x6e76,
+ 0x6e2a, 0x6e4c, 0x712a, 0x3dcb, 0x7135, 0x712c, 0x7137, 0x711d, 0x3dc5,
+ 0x3dc2, 0x7138, 0x3dcd, 0x7134, 0x712b, 0x7133, 0x7127, 0x7124, 0x3dca,
+ 0x712d, 0x7232, 0x7283, 0x7282, 0x7287, 0x7306, 0x7324, 0x7338, 0x732a,
+ 0x732c, 0x732b, 0x3e83, 0x732f, 0x7328, 0x7417, 0x3ed6, 0x3ed5, 0x7419,
+ 0x7438, 0x3ed1, 0x741f, 0x7414, 0x743c, 0x73f7, 0x741c, 0x7415, 0x7418,
+ 0x7439, 0x74f9, 0x7524, 0xf934, 0x3f52, 0x3f5f, 0x756e, 0x756d, 0x7571,
+ 0x758e, 0x3f95, 0x75e5, 0x3f9d, 0x3f98, 0x3f9e, 0x3f96, 0x7694, 0x76b3,
+ 0x4003, 0x76d9, 0x402f, 0x7748, 0x7749, 0x7743, 0x4031, 0x4033, 0x7742,
+ 0x77df, 0x40b4, 0x7863, 0x7876, 0x40b0, 0x785f, 0x7866, 0x7966, 0x7971,
+ 0x4108, 0x4107, 0x7976, 0x7984, 0x7975, 0x79ff, 0x7a07, 0x414e, 0x7a0e,
+ 0x7a09, 0x4150, 0x4152, 0x41a1, 0x41a3, 0x41a5, 0x41cc, 0x7ae7, 0x7ae2,
+ 0x7b55, 0x41ef, 0x41ea, 0x7b43, 0x7b57, 0x7b6c, 0x7b42, 0x7b53, 0x41ed,
+ 0x7b41, 0x4285, 0x4284, 0x7ca7, 0x7ca0, 0x7ca6, 0x7ca4, 0x7d74, 0x42db,
+ 0x7d59, 0x42d9, 0x7d60, 0x7d57, 0x7d6c, 0x7d7e, 0x7d64, 0x42d7, 0x7d5a,
+ 0x7d5d, 0x42da, 0x42de, 0x42d8, 0x7d76, 0x7d4d, 0x7d75, 0x42d5, 0x7fd3,
+ 0x7fd6, 0x439c, 0x439d, 0x8060, 0x804e, 0x8145, 0x813b, 0x43fe, 0x8148,
+ 0x8142, 0x8149, 0x8140, 0x8114, 0x8141, 0x4407, 0x81ef, 0x81f6, 0x8203,
+ 0x446a, 0x83ed, 0x44e7, 0x83da, 0x8418, 0x83d2, 0x8408, 0x44e2, 0x8400,
+ 0x44df, 0x44e1, 0x44e5, 0x8417, 0x8346, 0x8414, 0x83d3, 0x8405, 0x841f,
+ 0x8402, 0x8416, 0x83cd, 0x83e6, 0x4591, 0x865d, 0x86d5, 0x86e1, 0x45b4,
+ 0x45b0, 0x45b5, 0x45ae, 0x86ee, 0x8847, 0x8846, 0x462d, 0x462c, 0x88bb,
+ 0x462b, 0x88bf, 0x88b4, 0x4629, 0x88b5, 0x467f, 0x899a, 0x8a43, 0x46c9,
+ 0x46cb, 0x8a5a, 0x46c5, 0x46c6, 0x46ca, 0x8a35, 0x8a38, 0x8a42, 0x8a49,
+ 0x8a5d, 0x8a4b, 0x8a3d, 0x46d2, 0x46d0, 0x472d, 0x4735, 0x8c60, 0x8c5e,
+ 0x8c7f, 0x8c7e, 0x8c83, 0x476c, 0x8cb1, 0x8d87, 0x479d, 0x47a0, 0x8d88,
+ 0x8d83, 0x47a2, 0x479f, 0x8d86, 0x8d8b, 0x8d82, 0x8dca, 0x8dd2, 0x47eb,
+ 0x47e2, 0x8dd4, 0x8dc9, 0x8eb0, 0x4836, 0x4832, 0x4850, 0x8ef2, 0x8ee4,
+ 0x8ef3, 0x8eea, 0x484f, 0x8efd, 0x4852, 0x8f9d, 0x902b, 0x902a, 0x489e,
+ 0x9028, 0x9029, 0x902c, 0x48a0, 0x489c, 0x903a, 0x9030, 0x9037, 0x903b,
+ 0x48d1, 0x910a, 0x48ef, 0x48f0, 0x48f1, 0x91fe, 0x9220, 0x491d, 0x920b,
+ 0x491f, 0x9218, 0x9222, 0x491e, 0x921b, 0x9208, 0x4920, 0x920e, 0x9213,
+ 0x498e, 0x4991, 0x9595, 0x8cdd, 0x4990, 0x49d7, 0x968c, 0x967b, 0x967f,
+ 0x9681, 0x49d9, 0x9682, 0x49f4, 0x49f6, 0x3560, 0x49f5, 0x49f3, 0x96ee,
+ 0x96ed, 0x4a0c, 0x96ec, 0x975f, 0x976f, 0x4a51, 0x976d, 0x4aa6, 0x4aa7,
+ 0x4aa8, 0x4b27, 0x4b24, 0x4b25, 0x98f0, 0x4b2a, 0x4b74, 0x4bc7, 0x9aa9,
+ 0x4be7, 0x4bed, 0x9ae0, 0x4eb7, 0x342e, 0x347b, 0x50cc, 0x50bc, 0x347c,
+ 0x50aa, 0x50b9, 0x347d, 0x50ab, 0x50c3, 0x50cd, 0x517e, 0x527e, 0x5279,
+ 0x34fd, 0xf823, 0x52e1, 0x52e0, 0x52e7, 0x5380, 0x53ab, 0x53aa, 0x53a9,
+ 0x53e0, 0x55ea, 0x35da, 0x55d7, 0x35d6, 0x35db, 0x55c1, 0x5715, 0x365b,
+ 0x586c, 0x365c, 0x585c, 0x5850, 0x5861, 0x586a, 0x5869, 0x5856, 0x5860,
+ 0x5866, 0x585f, 0x5923, 0x5966, 0x5968, 0x3706, 0x370b, 0x5ace, 0x370d,
+ 0x5ac5, 0x5ac3, 0x370a, 0x3713, 0x5ad0, 0x3710, 0x3712, 0x3709, 0x3708,
+ 0x3711, 0x370f, 0x5b74, 0x5b76, 0x5bdc, 0x5bd7, 0x5bda, 0x5bdb, 0x3767,
+ 0x5c20, 0x5d6d, 0x5d66, 0x37f6, 0x5d64, 0x5d6e, 0xf87e, 0x5d60, 0x5f42,
+ 0x5f5a, 0x5f6e, 0x3964, 0x396c, 0x6130, 0x613a, 0x612a, 0x6143, 0x6119,
+ 0x6131, 0x396d, 0x613d, 0x397a, 0x3975, 0x3a0d, 0x6408, 0x6432, 0x6438,
+ 0x3a1e, 0x6431, 0x3a1b, 0x6419, 0x3a2a, 0x6411, 0x3a1f, 0x3a22, 0x6429,
+ 0x641d, 0x3a25, 0x3a27, 0x3a29, 0x643c, 0x3a24, 0x6446, 0x6447, 0x3a28,
+ 0x3a26, 0x643a, 0x6407, 0x3a23, 0x656b, 0x3a9f, 0x6570, 0x656d, 0x3ab1,
+ 0x65e4, 0x6693, 0x3b03, 0x3b07, 0x3b0c, 0x3b06, 0x668f, 0x3b04, 0x3b09,
+ 0x6692, 0x3b05, 0x668e, 0x3b08, 0x6946, 0x3b96, 0x3b9c, 0x3b9f, 0x3b9b,
+ 0x3b98, 0x3b99, 0x3b94, 0x6931, 0x3b8d, 0x3ba3, 0x693e, 0x3b93, 0x697c,
+ 0x6943, 0x3b92, 0x6973, 0xf8e8, 0x6955, 0x3b8e, 0x3b8c, 0x6985, 0x694d,
+ 0x6950, 0x6947, 0x6967, 0x6936, 0x6964, 0x6961, 0x3b9a, 0x697d, 0x6b44,
+ 0x6b40, 0x6b71, 0x6b73, 0x6b9c, 0x3c6a, 0x3c6d, 0x3c84, 0x6bc1, 0x3ca0,
+ 0x6bfa, 0x6c31, 0x6c32, 0x3d1d, 0x3d26, 0x6eb8, 0x6ea8, 0x3d33, 0x6e91,
+ 0x6ebb, 0x3d38, 0x6e9a, 0x3d30, 0x3d28, 0x6ea9, 0x3d27, 0x3d2a, 0x6eb5,
+ 0x6e6c, 0x6ee8, 0x3d31, 0x6edd, 0x6eda, 0x6ee6, 0x6eac, 0x3d34, 0x3d2e,
+ 0x3d3b, 0x6ed9, 0x6ee3, 0x6ee9, 0x6edb, 0x3d29, 0x716f, 0x3dd2, 0x3dd8,
+ 0x7148, 0x3dcf, 0x714a, 0x716b, 0x3dd9, 0x714f, 0x7157, 0x7174, 0x3dce,
+ 0x3dd3, 0x3dd0, 0x7145, 0x7151, 0x716d, 0x3ba1, 0x7251, 0x7250, 0x724e,
+ 0x3e47, 0x7341, 0x3e8b, 0x732e, 0x7346, 0x3ed4, 0x7427, 0x3ede, 0x7448,
+ 0x7453, 0x743d, 0x3edf, 0x745d, 0x7456, 0x3ed7, 0x741e, 0x7447, 0x7443,
+ 0x7458, 0x7449, 0x3ee1, 0x744c, 0x7445, 0x743e, 0x3f2f, 0x7501, 0x751e,
+ 0x3f62, 0x3f63, 0x757a, 0x75ee, 0x7602, 0x7697, 0x7698, 0x3fe2, 0x4004,
+ 0x4043, 0x775d, 0x7764, 0x7753, 0x7758, 0x7882, 0x7890, 0x788a, 0x40be,
+ 0x787a, 0x787d, 0x40ba, 0x788b, 0x7878, 0x40bc, 0xf94e, 0x788d, 0x7888,
+ 0x7892, 0x7881, 0x797e, 0x7983, 0x410d, 0x410e, 0x4111, 0x7980, 0x410f,
+ 0x4112, 0x4155, 0x7a0f, 0x4159, 0x415b, 0x7a1d, 0x4157, 0x7aa1, 0x7aa4,
+ 0x41ce, 0x7ae9, 0x7aea, 0x41fe, 0x7b62, 0x7b6b, 0x41fc, 0x7b5e, 0x41f5,
+ 0x7b79, 0x41f9, 0x41fa, 0x7b6f, 0x7b68, 0x4288, 0x4289, 0x7cae, 0x428a,
+ 0x4287, 0x428b, 0x7cb0, 0x42e6, 0x7d90, 0x42ed, 0x7d8a, 0x42e5, 0x7d8b,
+ 0x7d99, 0x7d95, 0x42e0, 0x7d87, 0x7d78, 0x7d97, 0x7d89, 0x7d98, 0x42e1,
+ 0x435b, 0x435c, 0x7fa3, 0x438f, 0x438b, 0x438d, 0x7fdd, 0x8057, 0x43b9,
+ 0x8163, 0x816a, 0x816c, 0x440f, 0x4419, 0x4413, 0x815d, 0x8175, 0x4418,
+ 0x815f, 0x4416, 0x817d, 0x816d, 0x4453, 0xf98d, 0x8241, 0x844f, 0x8484,
+ 0x44f6, 0x847f, 0x44f5, 0x8448, 0x842a, 0x847b, 0x8472, 0x8464, 0x842e,
+ 0x845c, 0x8453, 0x44f7, 0x8441, 0x84c8, 0x44f0, 0x8462, 0x8480, 0x843e,
+ 0x8483, 0x8471, 0x44f9, 0x844a, 0x8455, 0x8458, 0x4592, 0x4595, 0x4596,
+ 0x86fc, 0x86fd, 0x8715, 0x45b9, 0x8716, 0x86ff, 0x45bd, 0x45b8, 0x4612,
+ 0x8858, 0x88cf, 0x88e0, 0x4680, 0x4681, 0x469a, 0x4698, 0x89e7, 0x8a6a,
+ 0x8a80, 0x46d4, 0x8a6f, 0x8a65, 0x46da, 0x8a78, 0x8a7d, 0x8a88, 0x46d6,
+ 0x46db, 0x8a64, 0x8a7e, 0x46dc, 0x8a67, 0x8c63, 0x8c88, 0x4771, 0x8ccd,
+ 0x4772, 0x8cc9, 0x47a8, 0x8ded, 0x47f0, 0xf9db, 0x47f1, 0x47fd, 0x4838,
+ 0x4837, 0x4839, 0x8eb1, 0x4855, 0x4853, 0x8f04, 0x8f9e, 0x8fa0, 0x9043,
+ 0x9046, 0x9048, 0x9045, 0x9040, 0x904c, 0x48d5, 0x48bd, 0x910c, 0x9113,
+ 0x9115, 0x48f5, 0x916b, 0x9167, 0x925d, 0x9255, 0x9235, 0x4921, 0x9259,
+ 0x922f, 0x923c, 0x928f, 0x925c, 0x926a, 0x9262, 0x925f, 0x926b, 0x926e,
+ 0x923b, 0x9244, 0x9241, 0x959a, 0x4992, 0x9599, 0x49de, 0x49db, 0x49da,
+ 0x968f, 0x49df, 0x9696, 0x49f9, 0x49f8, 0x49fa, 0x96f4, 0x96fc, 0x4a0e,
+ 0x9755, 0x4a43, 0x9779, 0x4a56, 0x4a53, 0x4a9e, 0x97ee, 0x97f5, 0x4aa9,
+ 0x980b, 0x4afa, 0x98f3, 0x4b31, 0x4b30, 0x98f7, 0x98ff, 0x98f5, 0x4b32,
+ 0x98ec, 0x98f1, 0x4b29, 0x4b2e, 0x999a, 0x4b76, 0x9ae2, 0x9b3d, 0x9b5d,
+ 0x9ce8, 0x4ca5, 0x9ceb, 0x9cef, 0x9cee, 0x9e81, 0x9f14, 0x50d0, 0x50d9,
+ 0x50dc, 0x50d8, 0x348c, 0x50e1, 0x50eb, 0x348b, 0x3489, 0x50f4, 0x50e2,
+ 0x50de, 0x348d, 0x3486, 0x34d7, 0x51f4, 0x3504, 0x3507, 0x3503, 0x52ed,
+ 0x52ea, 0x3522, 0x5332, 0x3551, 0x53ae, 0x53b0, 0x3561, 0x55fb, 0x5603,
+ 0x560b, 0x35e9, 0x5607, 0x35e5, 0x55f8, 0x35e4, 0x5628, 0x561e, 0x35e3,
+ 0x5618, 0x5611, 0x5651, 0x5605, 0x5717, 0x5892, 0x3665, 0x588c, 0x3663,
+ 0x5878, 0x5884, 0x5873, 0x58ad, 0x5897, 0x5895, 0x5877, 0x5872, 0x5896,
+ 0x588d, 0x5910, 0x368c, 0x596c, 0x371a, 0x5ae7, 0x3715, 0x5ae4, 0x3720,
+ 0x3721, 0x5aef, 0x5626, 0x371c, 0x371b, 0x5af0, 0x5d7b, 0x37fe, 0x5d83,
+ 0x3804, 0x3801, 0x5d8b, 0x5d8c, 0x3800, 0x5d78, 0x5e52, 0x386d, 0x3893,
+ 0x5ed0, 0x5ecf, 0x38a1, 0x5fb3, 0x5fb4, 0x3976, 0x3979, 0x3972, 0x617b,
+ 0x3983, 0x616f, 0x6181, 0x613c, 0x6142, 0x6138, 0x6133, 0xf8a6, 0x6160,
+ 0x6169, 0x617d, 0x6186, 0x622c, 0x6228, 0x3a38, 0x644c, 0x3a30, 0x6457,
+ 0x647c, 0x3a34, 0x3a3a, 0x6455, 0x6462, 0x6471, 0x646a, 0x6456, 0x643b,
+ 0x6481, 0x3a35, 0x644f, 0x647e, 0x6464, 0x3a3f, 0x3a40, 0x3a32, 0x3a31,
+ 0x3a36, 0x6571, 0x30ba, 0x3b0f, 0x66a5, 0x669a, 0x669c, 0x3b10, 0x66a6,
+ 0x3b0d, 0x66a4, 0x698f, 0x69c5, 0x69c8, 0x6992, 0x69b2, 0x3ba9, 0x3bb4,
+ 0x3bac, 0x69e3, 0x69c0, 0x69d6, 0x69d1, 0x699f, 0x69a2, 0x69d2, 0x3bb8,
+ 0x3bae, 0x35f3, 0x69e1, 0x69d5, 0x699d, 0x3bb3, 0x3bba, 0x6998, 0x3c3f,
+ 0x6b74, 0x6ba1, 0x3d3c, 0x6ef0, 0x6ef3, 0x3d42, 0x3d40, 0x6f1b, 0x6f0c,
+ 0x6f1d, 0x6f34, 0x6f28, 0x6f17, 0x3d3e, 0x6f44, 0x6f42, 0x6f04, 0x6f11,
+ 0x6efa, 0x6f4a, 0x7191, 0x718e, 0x3de1, 0x718b, 0x718d, 0x717f, 0x718c,
+ 0x717e, 0x717c, 0x7183, 0x3de6, 0x7188, 0x3de0, 0x3e15, 0x7294, 0x3e93,
+ 0x7355, 0x7353, 0x734f, 0x7354, 0x746c, 0x7465, 0x7466, 0x7461, 0x746b,
+ 0x7468, 0x7476, 0x3ee7, 0x7460, 0x4a0f, 0x7474, 0x7506, 0x760e, 0x3fad,
+ 0x7607, 0x3fae, 0x3fe3, 0x76b9, 0x3ff5, 0x76b7, 0x76e2, 0x4006, 0x7774,
+ 0x7777, 0x7776, 0x7775, 0x404f, 0x7778, 0x7771, 0x4054, 0x777a, 0x715b,
+ 0x777b, 0x78a6, 0x78ae, 0x78b8, 0x40cb, 0x40e3, 0x40c9, 0x78b1, 0x78af,
+ 0x4113, 0x7989, 0x7987, 0x4115, 0x4161, 0x7a29, 0x4166, 0x7a2a, 0x4164,
+ 0x7a2d, 0x7a2c, 0x4160, 0x7a32, 0x4163, 0x7aec, 0x7af0, 0x7b81, 0x7b9e,
+ 0x7b83, 0x420a, 0x7b92, 0x4204, 0x7ba3, 0x7b9f, 0x7b93, 0x4207, 0x7b86,
+ 0x7cb8, 0x7cb7, 0x428d, 0x428f, 0x4290, 0x4292, 0x42ec, 0x7dc8, 0x7db6,
+ 0xf96c, 0x7dd1, 0x42e7, 0x7da8, 0x7dab, 0x42f2, 0x7db3, 0x7dcd, 0x42ee,
+ 0x7dcf, 0x7da4, 0x42ef, 0x434c, 0x7f41, 0x7f6f, 0x7f71, 0x435e, 0x435f,
+ 0x4376, 0x4374, 0x4372, 0x4390, 0x8023, 0x805b, 0x43be, 0x8061, 0x805f,
+ 0x8181, 0x4426, 0x4425, 0x8184, 0x8213, 0x4474, 0x824a, 0x824c, 0x44fd,
+ 0x4505, 0x4501, 0x84bd, 0x8495, 0x4509, 0x8492, 0x84c3, 0x450c, 0x8496,
+ 0x84a5, 0x84b5, 0x84b3, 0x84a3, 0x84e4, 0x84d8, 0x84d5, 0x450d, 0x84b7,
+ 0x84ad, 0x84da, 0x8493, 0x8736, 0x45c0, 0x45c5, 0x45c9, 0x873d, 0x872b,
+ 0x8747, 0x8739, 0x45d5, 0x8745, 0x871d, 0x4641, 0x88ff, 0x88ea, 0x4633,
+ 0x88f5, 0x463a, 0x8900, 0x88ed, 0x8903, 0x88e9, 0x4640, 0x4642, 0x89ea,
+ 0x46e8, 0x8a9b, 0x8a8e, 0x8aa2, 0x46e4, 0x8a9c, 0x8a94, 0x8a90, 0x8aa9,
+ 0x8aac, 0x46e7, 0x8a9f, 0x46e6, 0x46e1, 0x8a9d, 0x4739, 0x8c67, 0x475c,
+ 0x4775, 0x8cd0, 0x8cd6, 0x8cd4, 0x8d98, 0x8d9a, 0x8d97, 0x47ae, 0x47b0,
+ 0x47fa, 0x8e0b, 0x8e08, 0x8e01, 0x8eb4, 0x8eb3, 0x485b, 0x8fa1, 0x8fa2,
+ 0x48a5, 0x905a, 0x48a2, 0x9061, 0x905f, 0x48db, 0x48da, 0x9125, 0x917b,
+ 0x9176, 0x917c, 0x4924, 0x9289, 0x92f6, 0x92b1, 0x92ad, 0x9292, 0x9281,
+ 0x9284, 0x4926, 0x92ae, 0x9290, 0x929e, 0x4998, 0x4996, 0x499a, 0x95a2,
+ 0x95a7, 0x4997, 0x49e1, 0x49e0, 0x49e3, 0x49e2, 0x96a0, 0x969d, 0x969f,
+ 0x96d0, 0x49fb, 0x96d1, 0x4a12, 0x4a14, 0x9759, 0x4a45, 0x9764, 0x4a5c,
+ 0x4a5d, 0x4ab8, 0x9819, 0x4aba, 0x9814, 0x9815, 0x981a, 0x4b03, 0x4b35,
+ 0x4b36, 0x4b39, 0x9906, 0x4b2d, 0x98f8, 0x9901, 0x4b7a, 0x99be, 0x99bc,
+ 0x99b7, 0x99b6, 0x99c0, 0x4b78, 0x99b8, 0x4b7b, 0x4b7c, 0x4b7e, 0x99c4,
+ 0x4b7d, 0x99bf, 0x4bc9, 0x9ada, 0x9ae4, 0x9ae9, 0x9ae8, 0x9aea, 0x9ae5,
+ 0x4bf3, 0x9b26, 0x4c1a, 0x4c19, 0x9b40, 0x4c1f, 0x4ca6, 0x4ca7, 0x4ca8,
+ 0x4cab, 0x4ca9, 0x4d2e, 0x9ebd, 0x4d5e, 0x3495, 0x3493, 0x3492, 0x510e,
+ 0x3496, 0x50f7, 0x3497, 0x50fc, 0x510d, 0x5101, 0x51da, 0x51d9, 0x51db,
+ 0x5286, 0x528e, 0x52ee, 0x5333, 0x53b1, 0x35f5, 0x5647, 0x562d, 0x5654,
+ 0x35ea, 0x564b, 0x5652, 0x5631, 0x5644, 0x5656, 0x5650, 0x562b, 0x35f3,
+ 0x564d, 0x5637, 0x564f, 0x58a2, 0x58b7, 0x3669, 0x58b2, 0x366b, 0x58aa,
+ 0x58b5, 0x58b0, 0x366c, 0x58b4, 0x58a4, 0x58a7, 0x3668, 0x5926, 0x5afe,
+ 0x3728, 0x5b04, 0x3726, 0x5afc, 0x3725, 0x5b06, 0x5b0a, 0x5afa, 0x5b0d,
+ 0x5b00, 0x5b0e, 0x376b, 0x380f, 0x3808, 0x5d91, 0x380c, 0x5d8f, 0x5d90,
+ 0x5d98, 0x5da4, 0x5d9b, 0x5da3, 0x5d96, 0x5de4, 0x5e5a, 0x3860, 0x3862,
+ 0x5e5e, 0x3898, 0x5fb8, 0x6157, 0x615c, 0x61a6, 0x6195, 0x6188, 0x398a,
+ 0x61a3, 0x618f, 0x3984, 0x6164, 0x397f, 0x6159, 0x6178, 0x3982, 0x6185,
+ 0x6187, 0x619e, 0x3996, 0x3989, 0x6198, 0x619c, 0x398d, 0x39bc, 0x622f,
+ 0x6480, 0x649b, 0x648e, 0x648d, 0x6494, 0x64c6, 0x3a44, 0x64a8, 0x6483,
+ 0x3a3c, 0x64b9, 0x6486, 0x64b4, 0x64af, 0x6491, 0x3a4e, 0x64aa, 0x64a1,
+ 0x64a7, 0x66b6, 0x66b3, 0x3b14, 0x66bc, 0x66ac, 0x3b15, 0x66ad, 0x6a0e,
+ 0x3bce, 0x6a1c, 0x6a1a, 0x3be0, 0x3bc2, 0x6a0b, 0x3bbf, 0x69ef, 0x6a0c,
+ 0x69f0, 0x6a22, 0x3bc4, 0x69d8, 0x3bcf, 0x6a12, 0x69fa, 0x3bc8, 0x6a2a,
+ 0x3bcc, 0x6a10, 0x3bcd, 0x3bc7, 0x6a29, 0x69f9, 0x69ea, 0x6a2c, 0x6a24,
+ 0x4cb7, 0x69e9, 0x6b52, 0x6b4f, 0x6b53, 0x3c43, 0x3cb6, 0x6f10, 0x6f65,
+ 0x6f75, 0x3d51, 0x3d4a, 0x3d4d, 0x3d56, 0x6fd0, 0x3d53, 0x6f5c, 0x6f3d,
+ 0x6f71, 0x3d59, 0x6f91, 0x6f0b, 0x6f79, 0x6f81, 0x6f8f, 0x3d4e, 0x6f59,
+ 0x6f74, 0x3dee, 0x71ae, 0x3dec, 0x71a3, 0x71ad, 0x3deb, 0x3def, 0x71ab,
+ 0x71a6, 0x71a2, 0x3ded, 0x52f2, 0x7257, 0x7255, 0x7299, 0x734b, 0x747a,
+ 0x3ef2, 0x3eef, 0x3ef1, 0x748c, 0x7484, 0x3eed, 0x3ef0, 0x7482, 0x7493,
+ 0x747b, 0x3eee, 0x7509, 0x4c1b, 0x3f50, 0x3f66, 0x3684, 0x3fb8, 0x3ff6,
+ 0x778a, 0x4057, 0x7790, 0x405e, 0x78c6, 0x78d3, 0x78c0, 0x78d2, 0x78c7,
+ 0x78c2, 0x4119, 0x799f, 0x799d, 0x799e, 0x4170, 0x7a41, 0x416e, 0x7a38,
+ 0x7a3a, 0x7a42, 0x4172, 0x4176, 0x7a3e, 0x7ab0, 0x7bae, 0x7bb3, 0x4212,
+ 0x421f, 0x7bbf, 0x4211, 0x4216, 0x7bcd, 0x4219, 0x7bb2, 0x4224, 0x4214,
+ 0x4225, 0x4295, 0x4296, 0x4293, 0x4294, 0x7cc4, 0x7ccd, 0x7cc2, 0x7cc6,
+ 0x7cc3, 0x7cc9, 0x7cc7, 0x42a0, 0x7df8, 0x42fb, 0x7ded, 0x7de2, 0x42fc,
+ 0x4300, 0x42f8, 0x7ddc, 0x7e02, 0x7e01, 0x42f9, 0x7dd6, 0x4304, 0x7de4,
+ 0x7dfe, 0x4303, 0x7e00, 0x7dfc, 0x7dfd, 0x42f3, 0x7df5, 0x7dff, 0x42fa,
+ 0x7deb, 0x7de5, 0x7f78, 0x7fae, 0x7fe7, 0x43bf, 0x8065, 0x806a, 0x8066,
+ 0x8068, 0x806b, 0x8194, 0x81a1, 0x8192, 0x8196, 0x8193, 0x4479, 0x4510,
+ 0x8501, 0x4514, 0x84f8, 0x450e, 0x84f5, 0x451a, 0x8504, 0x4519, 0x4521,
+ 0x4523, 0x451f, 0x851b, 0x8503, 0x8533, 0x8534, 0x84ed, 0x4525, 0x452b,
+ 0x8535, 0x4516, 0x8505, 0x4522, 0x451b, 0x45ce, 0x45cf, 0x877d, 0x45cb,
+ 0x45d1, 0x45cc, 0x8771, 0x4617, 0x885c, 0x88e6, 0x890f, 0x891b, 0x4651,
+ 0x89a9, 0x89a5, 0x89ee, 0x8ab1, 0x46ed, 0x8acc, 0x8ace, 0x46f4, 0x8ab7,
+ 0x46f1, 0x8ab5, 0x8ae9, 0x8ab4, 0x46f8, 0x8ab3, 0x8ac1, 0x8aaf, 0x8aca,
+ 0x8ad0, 0x472f, 0x475e, 0x475d, 0x8c8e, 0x4776, 0x4777, 0x8ce9, 0x8cdb,
+ 0x477e, 0x8ceb, 0x8da4, 0x47b6, 0x8da2, 0x8d9d, 0x47b3, 0x47fc, 0x4803,
+ 0x4800, 0x8e2a, 0x8e28, 0x480a, 0x4802, 0x8eb8, 0x8eb6, 0x8eb9, 0x8eb7,
+ 0x8f22, 0x8f2b, 0x8f27, 0x8f19, 0x8fa4, 0x4887, 0x8fb3, 0x48a6, 0x9071,
+ 0x906a, 0x48a9, 0x48de, 0x9188, 0x918c, 0x92bf, 0x92b8, 0x92be, 0x92dc,
+ 0x92e5, 0x492e, 0x492d, 0x92d4, 0x92d6, 0x4930, 0x92da, 0x92ed, 0x92f3,
+ 0x92db, 0x492b, 0x92b9, 0x92e2, 0x92eb, 0x95af, 0x499e, 0x95b2, 0x95b3,
+ 0x499f, 0x49e5, 0x49e4, 0x96a3, 0x96a5, 0x49fd, 0x49fc, 0x4a17, 0x4a19,
+ 0x970a, 0x4a18, 0x9787, 0x9789, 0x978c, 0x97ef, 0x982a, 0x9822, 0x4abf,
+ 0x981f, 0x4b3c, 0x9919, 0x4b6b, 0x99ca, 0x99da, 0x4b83, 0x4b81, 0x4b80,
+ 0x99de, 0x99c8, 0x99e0, 0x4bca, 0x9ab6, 0x9ab5, 0x4bce, 0x9af4, 0x4bf6,
+ 0x9b6b, 0x9b69, 0x9b72, 0x9b63, 0x4c39, 0x9d0d, 0x4cae, 0x9d01, 0x9d0c,
+ 0x4cb5, 0x9cf8, 0x4cb3, 0x4cb4, 0x9cfe, 0x9d02, 0x9e84, 0x4d22, 0x9eab,
+ 0x9eaa, 0x511d, 0x5116, 0x3499, 0x512b, 0x511e, 0x511b, 0x5290, 0x5294,
+ 0x5314, 0x0b89, 0x3602, 0x5667, 0x3601, 0x567b, 0x36a1, 0x565f, 0x5661,
+ 0x35fd, 0x3673, 0x3674, 0x3670, 0x3676, 0x3675, 0x3672, 0x58c3, 0x58ca,
+ 0x58bb, 0x58c0, 0x58c4, 0x5901, 0x5b1f, 0x5b18, 0x5b11, 0x5b15, 0x3729,
+ 0x5b12, 0x5b1c, 0x372a, 0x5b22, 0x5b79, 0x5da6, 0x3816, 0x5db3, 0x5dab,
+ 0x5eea, 0x3899, 0x5f5b, 0x38d3, 0x38f5, 0x61b7, 0x61ce, 0x61b9, 0x61bd,
+ 0x61cf, 0x61c0, 0x6199, 0x6197, 0x3994, 0x61bb, 0x61d0, 0x61c4, 0x6231,
+ 0x3a56, 0x64d3, 0x64c0, 0x3a59, 0x3a58, 0x3a55, 0x3a52, 0x64dc, 0x64d1,
+ 0x64c8, 0x3a57, 0x64d5, 0x66c3, 0x3b1b, 0x3b1c, 0x66bf, 0x66c5, 0x3b19,
+ 0x66cd, 0x66c1, 0x6706, 0x3b3f, 0x6724, 0x6a63, 0x6a42, 0x6a52, 0x3bdb,
+ 0x6a43, 0x6a33, 0x3be2, 0x6a6c, 0x6a57, 0x3bd7, 0x6a4c, 0x6a6e, 0x3bde,
+ 0x3be5, 0x3be4, 0x3be6, 0x3bd6, 0x6a37, 0x3bdf, 0x6a71, 0x6a4a, 0x6a36,
+ 0x3bdc, 0x6a53, 0x3bda, 0x6a45, 0x6a70, 0x3bd3, 0x3bd0, 0x6a5c, 0x6b58,
+ 0x6b57, 0x3c86, 0x3c87, 0x3cad, 0x3cb7, 0x3d58, 0x3d6a, 0x6fbb, 0x3d62,
+ 0x3d61, 0x6fbe, 0x3d69, 0x3d6c, 0x3d65, 0x6fb5, 0x6fd3, 0x6f9f, 0x3d66,
+ 0x6fb7, 0x6ff5, 0x71b7, 0x3df5, 0x71bb, 0x3df4, 0x71d1, 0x3df7, 0x71ba,
+ 0x3df8, 0x71b6, 0x71cc, 0x3dfb, 0x3dfc, 0x71d3, 0x749b, 0x3ef5, 0x3ef8,
+ 0x7496, 0x74a2, 0x749d, 0x750a, 0x750e, 0x3f3c, 0x7581, 0x762c, 0x7637,
+ 0x7636, 0x763b, 0x3fc5, 0x76a1, 0x4062, 0x4063, 0x7798, 0x4067, 0x7796,
+ 0x4066, 0x40d9, 0x40db, 0x78d6, 0x78eb, 0x40d8, 0x78dc, 0x411b, 0x79a5,
+ 0x79a9, 0x9834, 0x7a53, 0x7a45, 0x4179, 0x7a4f, 0x417d, 0x7abd, 0x7abb,
+ 0x7af1, 0x422c, 0x4237, 0x7bec, 0x7bed, 0x4230, 0x429a, 0x7cd3, 0x4a00,
+ 0x7ce1, 0x4305, 0x7e19, 0x4307, 0x4309, 0x430a, 0x7e27, 0x7e26, 0x4379,
+ 0x43c2, 0x806e, 0x81af, 0x4438, 0x4437, 0x81ad, 0x4421, 0x81aa, 0x8218,
+ 0x445e, 0x453d, 0x4537, 0x4540, 0x856f, 0x854c, 0x451d, 0x8542, 0x4533,
+ 0x855c, 0x8570, 0x855f, 0x4535, 0x855a, 0x854b, 0x853f, 0x878a, 0x45d8,
+ 0x878b, 0x87a1, 0x878e, 0x45dc, 0x45de, 0x8799, 0x885e, 0x885f, 0x8924,
+ 0x89a7, 0x8aea, 0x8afd, 0x8af9, 0x8ae3, 0x8ae5, 0x46fa, 0x46fb, 0x8aec,
+ 0x473d, 0x473b, 0x473f, 0x475f, 0x8cf2, 0x477f, 0x8cef, 0x4784, 0x8da6,
+ 0x47bc, 0x4814, 0x480f, 0x8e3b, 0x8e43, 0x480e, 0x8e32, 0x8f31, 0x8f30,
+ 0x4860, 0x8f2d, 0x8f3c, 0x8fa7, 0x8fa5, 0x48ab, 0x48ac, 0x48aa, 0x9137,
+ 0x9195, 0x918e, 0x4904, 0x9196, 0x4908, 0x9345, 0x930a, 0x4933, 0x4934,
+ 0x92fd, 0x9317, 0x931c, 0x9307, 0x9331, 0x9332, 0x932c, 0x9330, 0x9303,
+ 0x9305, 0x49a2, 0x95c2, 0x49a4, 0x95b8, 0x49a5, 0x95c1, 0x49a7, 0x49a6,
+ 0x49e7, 0x96ab, 0x96b7, 0x49ff, 0x49fe, 0x9715, 0x9714, 0x4a1d, 0x4a1c,
+ 0x970c, 0x9717, 0x4a67, 0x9793, 0x4a94, 0x97d2, 0x4ac5, 0x4ac8, 0x9836,
+ 0x9831, 0x9833, 0x983c, 0x982e, 0x983a, 0x4ac9, 0x983d, 0x4ac7, 0x98b5,
+ 0x9922, 0x9923, 0x9920, 0x991c, 0x991d, 0x4b6c, 0x99a0, 0x4b8a, 0x99ef,
+ 0x99e8, 0x99eb, 0x4b88, 0x4b87, 0x4b86, 0x99e1, 0x99e6, 0x4bcf, 0x4bd0,
+ 0x9af8, 0x9af5, 0x4c1c, 0x4c23, 0x9b83, 0x9b94, 0x9b84, 0x4c49, 0x9b8b,
+ 0x9b8f, 0x4c43, 0x9b8c, 0x4c48, 0x9b89, 0x4c47, 0x9b8e, 0x4c46, 0x4c3f,
+ 0x4c44, 0x9d24, 0x9d0f, 0x4cbe, 0x9d13, 0x9d0a, 0x4cc2, 0x4cba, 0x4cbc,
+ 0x4cc6, 0x9d2a, 0x9d1a, 0x4cc8, 0x9d27, 0x9d16, 0x9d21, 0x4d23, 0x9e85,
+ 0x9eac, 0x9ec6, 0x9ec5, 0x9ed7, 0x9f53, 0x349d, 0x5128, 0x5127, 0x51df,
+ 0x3524, 0x5335, 0x53b3, 0x3607, 0x568a, 0x567d, 0x5689, 0x3679, 0x58cd,
+ 0x58d0, 0x3678, 0x5b2b, 0x5b33, 0x5b29, 0x5b35, 0x5b31, 0x5b37, 0x5c36,
+ 0x5dbe, 0x3819, 0x5db9, 0x381c, 0x5dbb, 0x3818, 0x61e2, 0x61db, 0x61dd,
+ 0x61dc, 0x61da, 0xf8af, 0x61d9, 0x39bd, 0x3a5d, 0x64df, 0x3a5a, 0x3a5e,
+ 0x64e1, 0x3a5c, 0x64ee, 0x3a5b, 0x65b5, 0x66d4, 0x66d5, 0x3b21, 0x66d0,
+ 0x66d1, 0x66ce, 0x66d7, 0x3b20, 0x3b32, 0x6a7d, 0x6a8a, 0x3bf2, 0x6aa7,
+ 0x3bf5, 0x6a99, 0x6a82, 0x6a88, 0x3bee, 0x3bec, 0x6a86, 0x3bea, 0x6a98,
+ 0x6a9d, 0x3bed, 0x3bf3, 0x6a8f, 0x3bf6, 0x6aaa, 0x3c48, 0x6b5d, 0x3c49,
+ 0x6c0a, 0x3d75, 0x6fd7, 0x6fd6, 0x6fe5, 0x3d6f, 0x3d7b, 0x3d73, 0x6fd9,
+ 0x6fda, 0x6fea, 0x3d70, 0x6ff6, 0x4039, 0x3d78, 0x71e3, 0x3dfe, 0x71e9,
+ 0x3e00, 0x71eb, 0x71ef, 0x71f3, 0x71ea, 0x3e01, 0xf921, 0x3e55, 0x3e56,
+ 0x3e9d, 0x7371, 0x3ef9, 0x74ae, 0x3eff, 0x74b3, 0x3efd, 0x74ac, 0x3f43,
+ 0x3f41, 0x7583, 0x7645, 0x764e, 0x7644, 0x76a3, 0x76a5, 0x77a6, 0x77a4,
+ 0x406f, 0x77a9, 0x77af, 0x408a, 0x40e5, 0x40e6, 0x78f0, 0x78f8, 0x78f1,
+ 0x417f, 0x7a49, 0x41b5, 0x41b6, 0x41bb, 0x7ac2, 0x7af2, 0x7af3, 0x7bfa,
+ 0x4240, 0x7bf6, 0x7bfc, 0x7c18, 0x7c08, 0x7c12, 0x429d, 0x429c, 0x7cdb,
+ 0x7cda, 0x430f, 0x4311, 0x430d, 0x7e2c, 0x7e4d, 0x4314, 0x4313, 0x7f46,
+ 0x7ff6, 0x802b, 0x8074, 0x81b8, 0x81c8, 0x4482, 0x4483, 0x454d, 0x8592,
+ 0x8593, 0x454f, 0x857f, 0x85ab, 0x8597, 0x454c, 0x4551, 0x85ac, 0x45ee,
+ 0x45e8, 0x4ccb, 0x87ce, 0x45eb, 0x87cd, 0x45e2, 0x45e6, 0x87c1, 0x87b1,
+ 0x87c7, 0x45ec, 0x8940, 0x4659, 0x893f, 0x8939, 0x465d, 0x8943, 0x4657,
+ 0x465b, 0x4656, 0x89ab, 0x46fe, 0x8b1f, 0x8b09, 0x8b0c, 0x4700, 0x4701,
+ 0x8c40, 0x4742, 0x8c96, 0x4760, 0x8cf6, 0x8cf7, 0x481d, 0x8e46, 0x8e4f,
+ 0x483e, 0x4869, 0x4865, 0x8f3d, 0x8f41, 0x9366, 0x9378, 0x935d, 0x9369,
+ 0x9374, 0x937d, 0x936e, 0x9372, 0x9373, 0x9362, 0x9348, 0x9353, 0x935f,
+ 0x9368, 0x4938, 0x937f, 0x936b, 0x49ae, 0x95c4, 0x49ad, 0x96af, 0x96ad,
+ 0x96b2, 0x4a02, 0x4a1f, 0x971a, 0x971b, 0x4a22, 0x4a20, 0xf9f5, 0x4a6c,
+ 0x979b, 0x979f, 0x4a68, 0x4a6d, 0x4a6e, 0x4aa0, 0x4ace, 0x4ad0, 0x4ad1,
+ 0x4acb, 0x9840, 0x4ad2, 0x9847, 0x4ad3, 0x98b7, 0x4b20, 0x4b4e, 0x4b4b,
+ 0x4b72, 0x4b70, 0x99a2, 0x4b92, 0x4b8f, 0x9a00, 0x99f3, 0x4b90, 0x9937,
+ 0x99f5, 0x4bd9, 0x4bd5, 0x9abd, 0x9b00, 0x9b02, 0x4bfa, 0x9b34, 0x9b49,
+ 0x9b9f, 0x4c4b, 0x9ba3, 0x9bcd, 0x9b99, 0x9b9d, 0x4cd0, 0x4cce, 0x9d39,
+ 0x4ccf, 0x9d44, 0x4cc4, 0x4ccc, 0x9d35, 0x4cd2, 0x4d35, 0x9eaf, 0x3e03,
+ 0x512f, 0x349e, 0x34af, 0x9f8e, 0x360c, 0x569f, 0x569b, 0x569e, 0x5696,
+ 0x5694, 0x56a0, 0x367c, 0x5b3b, 0x3730, 0x3731, 0x5b3a, 0x5dc1, 0x5f4d,
+ 0x5f5d, 0x61f3, 0x39a1, 0x399e, 0x3a68, 0x3a61, 0x64f6, 0x64e5, 0x64ea,
+ 0x64e7, 0x6505, 0x3a65, 0x64f9, 0x3a66, 0x3a6a, 0x3aab, 0x6aab, 0x6aed,
+ 0x6ab2, 0x6ab0, 0x6ab5, 0x6abe, 0x6ac1, 0x6ac8, 0x3bf9, 0x6ac0, 0x6abc,
+ 0x6ab1, 0x6ac4, 0x6abf, 0x3c58, 0x3c8a, 0x7008, 0x7003, 0x6ffd, 0x7010,
+ 0x7002, 0x7013, 0x3e04, 0x71fa, 0x7200, 0x74b9, 0x74bc, 0x3f02, 0x765b,
+ 0x7651, 0x764f, 0x76eb, 0x77b8, 0x4079, 0x77b9, 0x77c1, 0x77c0, 0x77be,
+ 0x790b, 0x40eb, 0x7907, 0x790a, 0x7908, 0x40e9, 0x790d, 0x7906, 0x7915,
+ 0x79af, 0x4120, 0x4121, 0x4181, 0x7af5, 0x424d, 0x4259, 0x7c2e, 0x4258,
+ 0x7c1b, 0x5cd1, 0x7c1a, 0x7c24, 0x42a5, 0x42a9, 0x7ce6, 0x7ce3, 0x431a,
+ 0x4319, 0x7e5d, 0x7e4f, 0x7e66, 0x7e5b, 0x7f47, 0x7fb4, 0x4396, 0x4398,
+ 0x4397, 0x7ffa, 0x802e, 0x65df, 0x43c8, 0x81ce, 0x4443, 0x4445, 0x8219,
+ 0x4552, 0x4557, 0x85cc, 0x85b2, 0x4555, 0x85bb, 0x85c1, 0x4556, 0x4558,
+ 0x45f2, 0x87e9, 0x87ee, 0x87f0, 0x87d6, 0x880e, 0x87da, 0x8948, 0x894a,
+ 0x894e, 0x894d, 0x89b1, 0x89b0, 0x89b3, 0x4707, 0x8b38, 0x8b32, 0x4708,
+ 0x8b2d, 0x470a, 0x8b34, 0x431b, 0x8b29, 0x8c74, 0x4761, 0x4762, 0x8d03,
+ 0x47c2, 0x47c6, 0x8da9, 0x8e58, 0x481e, 0x4825, 0x8ebf, 0x8ec1, 0x8f4a,
+ 0x8fac, 0x48b0, 0x9089, 0x913d, 0x913c, 0x91a9, 0x93a0, 0x493d, 0x9390,
+ 0x493e, 0x9393, 0x938b, 0x93ad, 0x93bb, 0x93b8, 0x4946, 0x4945, 0x939c,
+ 0x95d8, 0x95d7, 0x4a03, 0x4a26, 0x4a27, 0x975d, 0x97a9, 0x97da, 0x4a98,
+ 0x4aad, 0x4ad5, 0x4ada, 0x9854, 0x4ad9, 0x9855, 0x984b, 0x4add, 0x983f,
+ 0x98b9, 0x4b15, 0x4b16, 0x4b17, 0x4b21, 0x9938, 0x9936, 0x9940, 0x4b4c,
+ 0x993b, 0x9939, 0x99a4, 0x4b96, 0x4b98, 0x9a08, 0x9a0c, 0x4b9b, 0x9a10,
+ 0x4bff, 0x9b07, 0x4c25, 0x9bd2, 0x4c4f, 0x9bc2, 0x9bbb, 0x9bcc, 0x9bcb,
+ 0x4c56, 0x4c54, 0x9d4d, 0x9d63, 0x9d4e, 0x4cd8, 0x9d50, 0x9d55, 0x4cd7,
+ 0x9d5e, 0x4d26, 0x9e90, 0x9eb2, 0x9eb1, 0x4d38, 0x9eca, 0x9f02, 0x9f27,
+ 0x9f26, 0x4d8a, 0x56af, 0x58e0, 0x58dc, 0x3734, 0x5b39, 0x3735, 0xf86a,
+ 0x5b7c, 0x5bf3, 0xf870, 0x37a1, 0x5c6b, 0x5dc4, 0x650b, 0x6508, 0x650a,
+ 0x3a6c, 0x3a6d, 0x65dc, 0x3b29, 0x3b2a, 0x66e1, 0x66df, 0x6ace, 0x6ad4,
+ 0x6ae3, 0x6ad7, 0x6ae2, 0x3c00, 0x3c08, 0x3c06, 0x3c05, 0x6ad8, 0x6ad5,
+ 0x6ad2, 0x3cb1, 0x3d88, 0x701e, 0x702c, 0x7025, 0x6ff3, 0x7204, 0x7208,
+ 0x7215, 0x3e09, 0x74c4, 0x74c9, 0x74c7, 0x74c8, 0x76a9, 0x77c6, 0x77c5,
+ 0x7918, 0x791a, 0x7920, 0x4122, 0x7a66, 0x7a64, 0x7a6a, 0x41d5, 0x4261,
+ 0x425d, 0x4262, 0x424f, 0x4260, 0x7c35, 0x7c34, 0x42aa, 0x4322, 0x7e6c,
+ 0x4321, 0x7e6e, 0x7e71, 0x4446, 0x81d4, 0x81d6, 0x821a, 0x8262, 0x8265,
+ 0x8276, 0x85db, 0x85d6, 0x4562, 0x85e7, 0x4560, 0x4564, 0x85f4, 0xf9b6,
+ 0x87fd, 0x87d5, 0x8807, 0x45f6, 0x880f, 0x87f8, 0xf9c1, 0x4619, 0x8987,
+ 0x4691, 0x89b5, 0x89f5, 0x470d, 0x8b3f, 0x8b43, 0x8b4c, 0x4765, 0x8d0b,
+ 0x8e6b, 0x8e68, 0x8e70, 0x8e75, 0x8e77, 0x483f, 0x8ec3, 0x494b, 0x93e9,
+ 0x93ea, 0x93cb, 0x93c5, 0x93c6, 0x4948, 0x93ed, 0x93d3, 0x4952, 0x93e5,
+ 0x494a, 0x4951, 0x93db, 0x93eb, 0x93e0, 0x93c1, 0x4950, 0x494c, 0x95dd,
+ 0x49ee, 0x4a04, 0x4a06, 0x4a2d, 0x4a2e, 0x4a2f, 0x4a7b, 0x4a78, 0x4a77,
+ 0x97b2, 0x97b4, 0x97b1, 0x97b5, 0x97f2, 0x4aa2, 0x4aa1, 0x4ae3, 0x9856,
+ 0x4b1a, 0x4b19, 0x4b57, 0x9944, 0x4b9e, 0x9a26, 0x9a1f, 0x9a18, 0x9a21,
+ 0x9a17, 0x4bdd, 0x9b09, 0x4c05, 0x4c28, 0x9bc5, 0x9bdf, 0x4c60, 0x9be3,
+ 0x4c66, 0x9be9, 0x9bee, 0x4c67, 0x4c68, 0x9d66, 0x9d7a, 0x4cde, 0x9d6e,
+ 0x9d91, 0x9d83, 0x9d76, 0x9d7e, 0x9d6d, 0x4ce1, 0x9e95, 0x9ee3, 0x4d69,
+ 0x4d77, 0x9f03, 0x9f04, 0xfa19, 0x9f17, 0x34a6, 0x5136, 0x34a5, 0x5336,
+ 0x3614, 0x5b42, 0x3736, 0x3738, 0x5b44, 0x5b46, 0x5b7e, 0x5dca, 0x5dc8,
+ 0x5dcc, 0x5ef0, 0x3a70, 0x6585, 0x66e5, 0x66e7, 0x3b2b, 0x3c11, 0x3c0a,
+ 0x6af4, 0x3c0d, 0x6ae9, 0x3c16, 0x3c10, 0x3c09, 0x3c0e, 0x3c7a, 0x703d,
+ 0x3d8c, 0x7036, 0x3d91, 0x7216, 0x3e0a, 0x7212, 0x720f, 0x7217, 0x7211,
+ 0x720b, 0x3e08, 0x3e0b, 0x74cd, 0x74d0, 0x74cc, 0x74ce, 0x74d1, 0x3f07,
+ 0x7589, 0x40f2, 0x7a6f, 0x7c4b, 0x7c44, 0x7c55, 0x42ae, 0x4324, 0x4326,
+ 0x4327, 0x7e7f, 0x8b71, 0x4399, 0x802f, 0x807a, 0x807b, 0x807c, 0x455f,
+ 0x456a, 0x4571, 0x85fc, 0x8610, 0x8602, 0x456c, 0x456f, 0x85ee, 0x8603,
+ 0x4568, 0x860d, 0x8613, 0x8608, 0x860f, 0x8818, 0x8812, 0x4601, 0x4668,
+ 0x8967, 0x8965, 0x89bb, 0x8b69, 0x8b62, 0x4713, 0x8b6e, 0x4716, 0x8b61,
+ 0x4718, 0x8b64, 0x8b4d, 0x8c51, 0x4789, 0x47c8, 0x8e83, 0x8ec6, 0x4884,
+ 0x941f, 0x4954, 0x9404, 0x9417, 0x9408, 0x9405, 0x4956, 0x93f3, 0x941e,
+ 0x9402, 0x941a, 0x941b, 0x9427, 0x941c, 0x495a, 0x96b5, 0x4a05, 0x4a07,
+ 0x9733, 0x4a31, 0x9734, 0x9731, 0x97b8, 0x97ba, 0x4aa3, 0x97fc, 0x4aeb,
+ 0x4b1c, 0x98c3, 0x4b5a, 0x994d, 0x4b5b, 0x9a2f, 0x4ba6, 0x4baa, 0x4ba5,
+ 0x9ac9, 0x4be1, 0x9ac8, 0x9ac4, 0x9b2a, 0x9b38, 0x9b50, 0x4c2a, 0x9c0a,
+ 0x9bfb, 0x9c04, 0x9bfc, 0x9bfe, 0x4c72, 0x4c6f, 0x4c73, 0x9c02, 0x9bf6,
+ 0x9c1b, 0x9bf9, 0x9c15, 0x9c10, 0x9bff, 0x9c00, 0x9c0c, 0x4c6b, 0x4ce6,
+ 0x9d95, 0x9da5, 0x4ce9, 0x4cec, 0x4ce8, 0x4cf0, 0x9e98, 0x9ec1, 0x4d8c,
+ 0x9f5a, 0x5164, 0x56bb, 0x3615, 0x58e6, 0x5b49, 0x5bf7, 0x3771, 0x3826,
+ 0x5dd0, 0x38c6, 0x5fc2, 0x39a8, 0x6511, 0x3a73, 0x6aff, 0x6afe, 0x6afd,
+ 0x3c15, 0x6b01, 0x3d98, 0x3d97, 0x704b, 0x704d, 0x7047, 0x74d3, 0x7668,
+ 0x7667, 0x3fd7, 0x4080, 0x77d1, 0x7930, 0x7932, 0x792e, 0x4188, 0x9f9d,
+ 0x7ac9, 0x7ac8, 0x4269, 0x7c56, 0x7c51, 0x426b, 0x4329, 0x4328, 0x7e85,
+ 0x7e89, 0x7e8e, 0x7e84, 0x445f, 0x826a, 0x862b, 0x862f, 0x8628, 0x4574,
+ 0x8616, 0x8615, 0x861d, 0x881a, 0x4602, 0x466a, 0x4694, 0x89bc, 0x8b75,
+ 0x8b7c, 0x478a, 0x8d11, 0x8d12, 0x8f5c, 0x91bb, 0x4964, 0x93f4, 0x495e,
+ 0x4961, 0x942d, 0x4965, 0x4966, 0x96e4, 0x9737, 0x9736, 0x9767, 0x97be,
+ 0x97bd, 0x97e2, 0x9868, 0x9866, 0x98c8, 0x98ca, 0x98c7, 0x98dc, 0x4b5f,
+ 0x994f, 0x99a9, 0x9a3c, 0x4baf, 0x9a3b, 0x9ace, 0x4c0d, 0x9b14, 0x9b53,
+ 0x4c7c, 0x9c2e, 0x4c7a, 0x9c1f, 0x4c76, 0x4c79, 0x4c7d, 0x4c77, 0x9db0,
+ 0x9dbd, 0x4cf6, 0x4cf1, 0x9dae, 0x9dc4, 0x9e7b, 0x400b, 0x4d29, 0x9e9e,
+ 0x4d6f, 0x9f05, 0x4d9a, 0x9f69, 0x9fa1, 0x56c7, 0x571d, 0x5b4a, 0x5dd3,
+ 0x3869, 0x5f72, 0x6202, 0x39ab, 0x6235, 0x6527, 0x651e, 0x651f, 0x3b2c,
+ 0x3b2d, 0x6b07, 0x6b06, 0x3c17, 0x3d9a, 0x7054, 0x721c, 0x7220, 0x7af8,
+ 0x426e, 0x7c5d, 0x7c58, 0x432c, 0x7e92, 0x7f4e, 0x43ca, 0x4578, 0x4606,
+ 0x8827, 0x4607, 0x8b81, 0x8b83, 0x4720, 0x8c44, 0x4753, 0x47ce, 0x487a,
+ 0x4879, 0x9442, 0x944d, 0x9454, 0x944e, 0x496b, 0x9443, 0x4967, 0x496d,
+ 0x973c, 0x9740, 0x97c0, 0x4a85, 0x4ab0, 0x4af3, 0x4b63, 0x995a, 0x9a51,
+ 0x4bb6, 0x9add, 0x4c82, 0x4c7f, 0x9c38, 0x4c86, 0x9c45, 0x9c3a, 0x4c84,
+ 0x9c35, 0x4cfc, 0x4cfd, 0x4cfa, 0x9ef1, 0x4d87, 0x9f93, 0x529a, 0x361a,
+ 0x3619, 0x8641, 0x5dd7, 0x3a75, 0x6528, 0x3c1a, 0x3c1b, 0x3c19, 0x7053,
+ 0x7059, 0x3d9c, 0x7221, 0x3e10, 0x766f, 0x7937, 0x79b5, 0x7c62, 0x7c5e,
+ 0x7cf5, 0x457b, 0x457c, 0x863d, 0x4608, 0x882d, 0x8989, 0x8b8d, 0x8b87,
+ 0x8b90, 0x8d1a, 0x8e99, 0x4841, 0x48e3, 0x4972, 0x945f, 0x4973, 0x4968,
+ 0x9456, 0x9461, 0x945b, 0x945a, 0x945c, 0x9465, 0x4a35, 0x9741, 0x4a88,
+ 0x4a9d, 0x986e, 0x986c, 0x986d, 0x4275, 0x99aa, 0x9a5c, 0x9a58, 0x9ade,
+ 0x4c8f, 0x9c4f, 0x9c51, 0x4c8e, 0x9c53, 0x4d05, 0x4d04, 0x4cff, 0x9dfc,
+ 0x9f39, 0x4d9e, 0x513e, 0x3554, 0x56d2, 0x3681, 0x5b4f, 0x6b14, 0x40fa,
+ 0x7a72, 0x7a73, 0x4332, 0x4670, 0x466e, 0x8b91, 0xf9d6, 0x487c, 0x91bf,
+ 0x4975, 0x946c, 0x4974, 0x4977, 0x96e6, 0x9745, 0x4a37, 0x97c8, 0x97e4,
+ 0x995d, 0x4bba, 0x9b21, 0x4c11, 0x9b2c, 0x9b57, 0x4c92, 0x4c99, 0x9c5d,
+ 0x9c61, 0x9c65, 0x9e08, 0x4d0a, 0x4d2a, 0x4d2b, 0x4d44, 0x4d79, 0x9f45,
+ 0x34aa, 0x3748, 0x6205, 0x66ef, 0x6b1b, 0x6b1d, 0x7225, 0x7224, 0x7c6d,
+ 0x42b4, 0x8642, 0x8649, 0x460d, 0x8978, 0x898a, 0x8b97, 0x4754, 0x8c9b,
+ 0x8d1c, 0x4830, 0x8ea2, 0x4a09, 0x4a38, 0x4a36, 0x4a8b, 0x4af7, 0x4b66,
+ 0x4bbd, 0x4c1e, 0x9c6c, 0x4c96, 0x9c6f, 0x4d0d, 0x9e0e, 0x4d73, 0x9f08,
+ 0x9f1d, 0x9fa3, 0x373b, 0x373c, 0x5f60, 0x6b1c, 0x3da0, 0x40fb, ERROR,
+ 0x7cf3, 0x4581, 0x8b9b, 0x8ea7, 0x91c4, 0x4978, 0x947a, 0x4a8d, 0x4b73,
+ 0x9a61, 0x9a63, 0x9ad7, 0x9c76, 0x4da6, 0x9fa5, 0x39ad, 0x7067, 0x3e11,
+ 0x72ab, 0x864a, 0x897d, 0x8b9d, 0x8c53, 0x8f65, 0x947b, 0x4a39, 0x98cd,
+ 0x98dd, 0x4bbf, 0x9b30, 0x9e16, 0x4d0f, 0x4da7, 0x4db5, 0x3fdc, 0x4831,
+ 0x96e7, 0x9e18, 0x9ea2, 0x4da8, 0x9f7c, 0x4125, 0x7e9e, 0x9484, 0x4bc1,
+ 0x9e1c, 0x4190, 0x7c71, 0x97ca, 0x4696, 0x487f, 0x4d10, 0x9ea3, 0x4a0a,
+ 0x9c7b, 0x9f97, 0x4d12, 0x4a3a, 0x9750, 0x4a3b, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, 0x0086, 0x4e40, 0x4e41, 0x4e5a, 0x1fe8, 0x4e02,
+ 0x4e29, 0x010e, 0x0627, 0x5202, 0x353e, 0x5ddc, 0x053c, 0x0675, 0xf828,
+ 0x5342, 0x536a, 0x5b52, 0x193c, 0xf875, 0xf878, 0x5fc4, 0x624c, 0x72ad,
+ 0x4e12, 0x4e2f, 0x4e96, 0x4ed0, 0x5142, 0x5183, 0xf819, 0x06a5, 0x06aa,
+ 0x090f, 0x0a0e, 0x5383, 0x53b8, 0x0b9c, 0x0b9b, 0x123c, 0x5928, 0x1bc2,
+ 0x5c23, 0x5e01, 0x5f00, 0x33b4, 0x3cb8, 0x706c, 0x722b, 0x5188, 0x8279,
+ 0x8fb6, 0x4e17, 0x0065, 0x340c, 0x01b2, 0x3430, 0x4ee2, 0x4edb, 0x0477,
+ 0x0542, 0x51ad, 0x0633, 0x51f7, 0x34da, 0x06af, 0x0836, 0x3513, 0x531b,
+ 0x5388, 0x5387, 0x0b22, 0x53cf, 0x53fd, 0x3563, 0x53e7, 0x56dc, 0x11a3,
+ 0x56d9, 0x5725, 0x5727, 0x5933, 0x5c13, 0x1c25, 0x1c24, 0x5c75, 0x2052,
+ 0x2189, 0x24bf, 0x39c4, 0x39c3, 0x66f1, 0x33b5, 0x574c, 0x7f52, 0x8e14,
+ 0x8e12, 0x3401, 0x00a3, 0x00a2, 0x4e51, 0x4e6a, 0x01b6, 0x4f0c, 0x01b5,
+ 0x01b4, 0x4efe, 0x4f1b, 0x01c2, 0x01b8, 0x343a, 0x0479, 0x34ab, 0x5173,
+ 0x0508, 0x518e, 0x057a, 0x05b6, 0x06bd, 0x06b7, 0x06bc, 0x34dd, 0x06c4,
+ 0x06c9, 0x52a5, 0x3515, 0x52a7, 0x52a4, 0x0930, 0x0983, 0x0985, 0x0a12,
+ 0x0a34, 0x53bd, 0x0ae4, 0x0ade, 0x0b2a, 0x5402, 0x0baf, 0x0bb4, 0x0bb3,
+ 0x0bb1, 0x572b, 0x591b, 0x5935, 0x15de, 0x36a7, 0x36a5, 0x16b8, 0x16b0,
+ 0x36a6, 0x19c2, ERROR, 0x5c17, 0x377c, 0x1c2a, 0x5c70, 0x5c7d, 0x37a9,
+ 0x1fe9, 0x5de9, 0x2057, 0x3834, 0x3835, 0x21b6, 0x21d7, 0x21de, 0x38a8,
+ 0x5f19, 0x5f1c, 0x5f75, 0x24c2, 0x25ab, 0x38ff, 0x5fc8, 0x298f, 0x39c7,
+ 0x39c6, 0x39c8, 0x2a6d, 0x2eb5, 0x3ad0, 0x3ad1, 0x33c0, 0x33bf, 0x3c59,
+ 0x39b9, 0x3b1c, 0x6c12, 0x3cbd, 0x3c80, 0x4184, 0x4185, 0x3e28, 0x72b3,
+ 0x4724, 0x3ea9, 0x7390, 0x7536, 0x634c, 0x43cc, 0x6af6, 0x8281, 0x8fb8,
+ 0x8670, 0x48b4, 0x8675, 0x8e17, 0x4e23, 0x3416, 0x342c, 0x01f1, 0x4f2e,
+ 0x01da, 0x514f, 0x05b9, 0x51ba, 0x34df, 0x34e0, 0x5222, 0x06ce, 0x06d2,
+ 0x06d0, 0x3517, 0x0843, 0x52af, 0x52b0, 0x52b1, 0x084d, 0x0934, 0x352f,
+ 0x09d9, 0x5364, 0x0a18, 0x53d3, 0x0b38, 0x356a, 0x0bd7, 0x3570, 0x356d,
+ 0x0bdc, 0x0bcb, 0x0bd6, 0x0bd8, 0x356e, 0x0bd1, 0xf83e, 0xf83c, 0x0bd2,
+ 0x362b, 0x3628, 0x1259, ERROR, 0x593f, 0x15e5, 0x15e6, 0x3692, 0x15e8,
+ 0x598b, 0x16bd, 0x5991, 0x5995, 0x16be, 0x1949, 0x373f, 0x19cd, 0x5b8a,
+ 0x374f, 0x3774, 0x1b5e, 0x1bd0, 0x377d, 0x1d06, 0x37b7, 0x37a3, 0x37b0,
+ 0x37b1, 0x5c87, 0x37ab, 0x1d7c, 0x1d71, 0x1fef, 0x383a, 0x3837, 0x5e0d,
+ 0x3838, 0x3840, 0x218d, 0x21b7, 0x5e8e, 0x389f, 0x2333, 0x237f, 0x5f7a,
+ 0x25f2, 0x3904, 0x3909, 0x3906, 0x38fd, 0x390a, 0x3907, 0x2a2a, 0x2a8b,
+ 0x39ca, 0x2a83, 0x2a8a, 0x6290, 0x39c9, 0x2a8e, 0x629a, 0x2eb6, 0x653c,
+ 0x653a, 0x3a7f, 0x6598, 0x30d8, 0x3ad2, 0x3156, 0x33d2, 0x6765, 0xf8db,
+ 0x3b43, 0x33c2, 0x3887, 0x3881, 0x39c2, 0x39bc, 0x3b23, 0x3cc1, 0x3c93,
+ 0x3cc5, 0x3da3, 0x418d, 0x418e, 0x3e2a, 0x3e5f, 0x473b, 0x474d, 0x3e5d,
+ 0x4734, 0x4731, 0x48f2, 0x48f0, 0x3f17, 0x4c15, 0x4d28, 0x3f71, 0x3f72,
+ 0x4f25, 0x50e7, 0x400f, 0x50e9, 0x5417, 0x79c2, 0x4191, 0x626c, 0x6280,
+ 0x634b, 0x43b2, 0x43cf, 0x43ce, 0x809e, 0x68de, 0x68fb, 0x81eb, 0x6951,
+ 0x8289, 0x4496, 0x6b01, 0x6b02, 0x8296, 0x6b05, 0x8287, 0x6b03, 0x4497,
+ 0x8451, 0x8fc0, 0x488b, 0x8fc3, 0x8453, 0x867a, 0x8678, 0x8676, 0x8679,
+ 0x868f, 0x867c, 0x9578, 0x8e1b, 0x8e1c, 0x9625, 0x3d92, 0x4e75, 0x4e74,
+ 0x012e, 0x012c, 0x342d, 0x020c, 0x4f99, 0x020b, 0x3450, 0x344b, 0x0205,
+ 0x344f, 0x344c, 0xf805, 0x4f71, 0x5153, 0x51bf, 0x05c2, 0x05c3, 0x51c0,
+ 0x0648, 0x51ee, 0x0646, 0x34e4, 0x34e3, 0x06ea, 0x34e1, 0x06eb, 0x34e2,
+ 0x06ee, 0x523d, 0x3519, 0x52bd, 0x530c, 0x08d8, 0x4c1e, 0x09df, 0x09de,
+ 0x3541, 0x7f37, 0x0a4f, 0x53c0, 0x355e, 0x0c0d, 0x0c08, 0x3579, 0x0c09,
+ 0x546e, 0x5483, 0x0c12, 0x0c65, 0x545e, 0x545d, 0x577e, 0x5779, 0x1289,
+ 0x577a, 0x576c, 0x1284, 0x129e, 0x128b, 0x3632, 0x5787, 0x1562, 0x591d,
+ 0x3694, 0x5946, 0x3697, 0x15f9, 0x5943, 0x15f7, 0x3696, 0x3698, 0x1606,
+ 0x16dd, 0x36b2, 0x16d9, 0x16df, 0x16e2, 0x36b9, 0x5b61, 0x5b66, 0x00f1,
+ 0x5b90, 0x3775, 0x377f, 0x377e, 0x5c29, 0x378f, 0x1c3f, 0x1c3e, 0x1d0b,
+ 0x37bd, 0x5cb2, 0x1d83, 0x37bb, 0x37bc, 0x1d86, 0x5cc0, 0x207c, 0x383d,
+ 0x383e, 0x3874, 0x21f7, 0x387a, 0x3876, 0x3878, 0x3875, 0x21fb, 0x233b,
+ 0x38af, 0x38b0, 0x38c7, 0x38cc, 0x25f9, 0x25ca, 0x3916, 0x25ff, 0x3912,
+ 0x391d, 0x2609, 0x2603, 0x3915, 0x390f, 0x3914, 0x601f, 0x5fe2, 0x2610,
+ 0x299a, 0x299f, 0x39b0, 0x39bf, 0x39c0, 0x2a87, 0x39d2, 0x39d9, 0x2eb7,
+ 0x3a7a, 0x2f08, 0x2ef9, 0x3a81, 0x3a82, 0x2ef4, 0x6616, 0x65f9, 0x3ada,
+ 0x6657, 0x6788, 0x33d6, 0x679b, 0xf8de, 0x676e, 0x679e, 0x33d4, 0x3c22,
+ 0x3c1f, 0x3890, 0x388d, 0x3c21, 0x6b24, 0x3960, 0x39ce, 0x39cf, 0x3c5c,
+ 0x6b7d, 0x39d1, 0x3c7d, 0x3c8d, 0x3c8f, 0x6ce6, 0x3cca, 0x6ccb, 0x3cd0,
+ 0x3cb7, 0x3cd8, 0x3cb2, 0x3cbb, 0x3cb9, 0x6cb5, 0x3da7, 0x419e, 0x7097,
+ 0x41b2, 0x709b, 0x3e12, 0x456f, 0x45ac, 0x3e2f, 0x4623, 0x726b, 0x3e2e,
+ 0x3e2c, 0x3e5c, 0x476c, 0x72d5, 0x4732, 0x475e, 0x3e62, 0x3e67, 0x3eb4,
+ 0x48fb, 0x4b29, 0x4bbd, 0x4c1f, 0x7543, 0x2341, 0x4c1d, 0x759c, 0x4d31,
+ 0x4d2f, 0x3fea, 0x5043, 0x3ffb, 0x5041, 0x4014, 0x50f5, 0x4013, 0x4012,
+ 0x4010, 0x4011, 0x50f2, 0x4086, 0x77e4, 0x4098, 0x541e, 0x5754, 0x412a,
+ 0x5756, 0x5929, 0x5927, 0x5928, 0x7ace, 0x42b5, 0x6279, 0x627e, 0x64b6,
+ 0x64b7, 0x8013, 0x43d6, 0x43d8, 0x80b7, 0x43d9, 0x43d4, 0x43d7, 0xf981,
+ 0x80b9, ERROR, 0x664d, 0x81e4, 0x81fd, 0x820f, 0x4460, 0x6a09, 0x6a08,
+ 0x449e, 0x44a1, 0x6b1e, 0x6b1a, 0x6b23, 0x6b15, 0x6b19, 0x6b16, 0x82bf,
+ 0x82ca, 0x6b14, 0x6b18, 0x82c1, 0x44a0, 0x721f, 0x75dd, 0x75df, 0x8469,
+ 0x8fd0, ERROR, 0x846c, 0x48b9, 0x8693, 0x90ae, 0x8695, 0x8694, 0x8691,
+ 0x8697, 0x8e30, 0x49c1, 0x49c2, 0x9638, 0xfa18, 0x341c, 0x0231, 0x345e,
+ 0x4fbc, 0x3459, 0x345c, 0x0236, 0x345f, 0x4fe9, 0x4fbd, 0x4fe2, 0x5158,
+ 0x05c9, 0x05ca, 0x34ce, 0x0718, 0x0712, 0x0719, 0x0710, 0x0716, 0x52c6,
+ 0x085f, 0x52c8, 0x08df, 0x0917, 0x5328, 0x093c, 0x5329, 0x09ea, 0x09e9,
+ 0x0a1c, 0x0a58, 0x0a64, 0x0af3, 0x355f, 0x0c97, 0x3585, 0x0c5a, 0x0c59,
+ 0x3586, 0x0c8e, 0x57b4, 0x12bc, 0x57a9, 0x3687, 0x160d, 0x15fc, 0x160c,
+ 0x1707, 0x170a, 0x36ca, 0x1702, 0x36c3, 0x1726, 0x1708, 0x171d, 0x36c2,
+ 0x5b68, 0x194e, 0x3741, 0x19ed, 0x19ee, 0x19ef, 0x3780, 0x3781, 0x1c50,
+ 0x1c4c, 0x3793, 0x3792, 0x1c4f, 0x37c5, 0x1dd4, ERROR, 0x1db0, 0x3846,
+ 0x3841, 0x3845, 0x3842, 0x383f, 0x20a5, 0x2209, 0x3882, 0x3881, 0x387f,
+ 0x38a5, 0x5f2b, 0x38b3, 0x38b5, 0x23f3, 0x23d7, 0x5f8d, 0x38da, 0x24dc,
+ 0x38db, 0x390d, 0x6018, 0x390e, 0x260b, 0x391e, 0x3925, 0x3926, 0x391c,
+ 0x3921, 0x6057, 0x6048, 0x3927, 0x391a, 0x263a, 0x260d, 0x2611, 0x6038,
+ 0x2620, 0x2601, 0x3924, 0x2637, 0xf8a3, 0x6071, 0x29aa, 0x39c1, 0x39e1,
+ 0x2ae7, 0x2ae8, 0x6312, 0x39eb, 0x2af5, 0x39e2, 0x39d7, 0x39e9, 0x2b35,
+ 0x2ae6, 0x630a, 0x2af8, 0x6323, 0x2af1, 0x3a84, 0x2f14, 0x2f15, 0x2f09,
+ 0x3ab5, 0x3abc, 0x3adc, 0x3ade, 0x3adf, 0x317b, 0x662a, 0x317e, 0x3366,
+ 0x3367, 0x340a, 0x3b54, 0x67e0, 0x67be, 0x3b53, 0x3c24, 0x3c25, 0x6b29,
+ 0x3c28, 0x3c27, 0x389c, 0x3962, 0x39e1, 0x39de, 0x39df, 0x39e9, 0x3c8b,
+ 0x3ce4, 0x3cf7, 0x3cdc, 0x6d43, 0x3cea, 0x3cf6, 0x3d12, 0xf901, 0x70a6,
+ 0x3db2, 0x70c0, 0x41d9, 0x722f, 0x455f, 0x3e1b, 0x4573, 0x3e32, 0x7271,
+ 0x463f, 0x4778, 0x3e6b, 0x477d, 0x3e6c, 0x3e6d, 0x4912, 0x3eb9, 0x3eba,
+ 0x3f09, 0x3f0a, 0x4b2f, 0x74ea, 0x3f1b, 0x4b30, 0x4bdb, 0x7520, 0x3f58,
+ 0x4c29, 0x3f5a, 0xf936, 0x4d40, 0x3f77, 0x4d3d, 0x4d3e, 0x3f79, 0x75a9,
+ 0x4d38, 0x7685, 0x4f48, 0x3feb, 0x4fd0, 0x3ffd, 0x3ffc, 0x7706, 0x4015,
+ 0x4018, 0x76f6, 0x4016, 0x4017, 0x4019, 0x7700, 0x401b, 0x510e, 0x5109,
+ 0x7702, 0x5107, 0x4087, 0x535f, 0x5360, 0x409c, 0x542a, 0x409a, 0x5429,
+ 0x40ff, 0x40fe, 0x564d, 0x4131, 0x412e, 0x4130, 0x4132, 0x576c, ERROR,
+ 0x412f, 0x5767, 0x4195, 0x4196, 0x5939, 0x5934, 0x5a59, 0x41c5, 0x427a,
+ 0x6223, 0x4342, 0x6282, 0x4354, 0x6283, 0x62a8, 0x6355, 0x63f9, 0x63f8,
+ 0x63fc, 0x63fa, 0x8009, 0xf97a, 0x439f, 0x43a0, 0x43a2, 0x43e0, 0x6674,
+ 0x43e1, 0x666b, 0x6671, 0x43df, 0x6676, 0x6a0e, 0x4462, 0x4461, 0x6a10,
+ 0x6a0f, 0x44a7, 0x6b38, 0x6b39, 0x6b3a, 0x82da, 0x6b37, 0x6b3e, 0x830a,
+ 0x4589, 0x719c, 0x722a, 0x723a, 0x722b, 0x7228, 0x75aa, 0x760f, 0x461d,
+ 0x7610, 0x77e6, 0x472a, 0x7d25, 0x7e8e, 0x47d3, 0x4842, 0x4843, 0x848b,
+ 0x4891, 0x848c, 0x849a, 0x4890, 0x48bf, 0x86b3, 0x48bc, 0x86b2, 0x48c0,
+ 0x49c7, 0x49c5, 0x9655, 0x8e44, 0x9652, 0x4e35, 0x0158, 0x02a7, 0x5034,
+ 0x5001, 0x0263, 0x500a, 0x3466, 0x026a, 0x0265, 0x026b, 0x34ad, 0x04ed,
+ 0x05d9, 0x073b, 0x0732, 0x5258, 0x0735, 0x0731, 0x073e, 0x0743, 0x0736,
+ 0x086d, 0x351d, 0x08e4, 0x3531, 0x532b, 0x09f4, 0x354c, 0x0a69, 0x0a6b,
+ 0x3595, 0x3591, 0x3594, 0x0cbf, 0x0cc3, 0x0cae, 0x358f, 0x54ec, 0x0cb1,
+ 0x5515, 0x54fe, 0x0cbb, 0x0caf, 0x0cb0, 0x54e3, 0x5516, 0x3640, 0x12ef,
+ 0x3641, 0x12ed, 0x57d3, 0x12f0, 0x1593, 0x1634, 0x162b, 0x5959, 0x5a27,
+ 0x36d8, 0x36d2, 0x36da, 0x5a28, 0x5a10, 0x36d7, 0x5a0e, 0x3742, 0x3757,
+ 0x1a04, 0x1a03, 0x1a02, 0x5baf, 0x1a05, 0x5bba, 0x5bb1, 0x1a00, 0x1b74,
+ 0x3778, 0x3782, 0x3797, 0x1c65, 0x1c63, 0x37c9, 0x1dd7, 0x37c8, 0x37d6,
+ 0x37cc, 0x1de8, 0x37d0, 0x1ddb, 0x1dd8, 0x37ce, 0x37c7, 0x5cfc, 0x1e09,
+ 0x37cf, 0x37cb, 0x5cf2, 0x5cfe, 0x1de5, 0x1de7, 0x5df8, 0x203f, 0x3847,
+ 0x20c0, 0x3848, 0x20b9, 0x20ba, 0x3883, 0x3885, 0x3884, 0x2220, 0x234f,
+ 0x5f2c, 0x38b8, 0x38bc, 0x2491, 0x2490, 0x24ee, 0x24f3, 0x24ec, 0x24f1,
+ 0x24eb, 0x24f2, 0x24f4, 0x24ed, 0x2641, 0x2648, 0x2645, 0x3931, 0x3934,
+ 0x3936, 0x6082, 0x267f, 0x268b, 0x3923, 0x263b, 0x264e, 0x393a, 0x6091,
+ 0x608f, 0x267c, 0x39b4, 0x39b5, 0x39ed, 0x39ec, 0x39d8, 0x2af0, 0x2b36,
+ 0x2b3f, 0x2b43, 0x2b31, 0x2b34, 0x2b46, 0x39f6, 0x39e7, 0x2b2f, 0x2ec3,
+ 0x3a7c, 0x3a7b, 0x2f36, 0x3a88, 0x6547, 0x654c, 0x2f21, 0xf8c8, 0x658a,
+ 0x3073, 0x3abe, 0x30e6, 0x3ae7, 0x3ae5, 0x3aee, 0x67e1, 0x684a, 0x343f,
+ 0x3b59, 0x3b5e, 0x346b, 0x3b5a, 0x683f, 0x3b61, 0x3b58, 0x3b5b, 0x67bd,
+ 0x3471, 0x3b5f, 0xf8e2, 0x3c2a, 0x3c2d, 0x38b0, 0x3c23, 0x3c2b, 0x3c2c,
+ 0x39f3, 0x3c7e, 0xf8f5, 0x3c93, 0x3c99, 0x3b61, 0x3b5f, 0x3cb3, 0x3ce7,
+ 0x3cea, 0x3d28, 0x3d1e, 0x3d29, 0xf902, 0x3ceb, 0x3d66, 0x3db4, 0x41f6,
+ 0x70c9, 0x3e17, 0x4560, 0x4577, 0x45bb, 0x3e21, 0x45bc, 0x3e38, 0x3e37,
+ 0x3e74, 0x3e73, 0x3e75, 0x47a2, 0x47b2, 0x479e, 0x3e76, 0x3e78, 0x493a,
+ 0x4938, 0x73ba, 0x3f0c, 0x3f20, 0x3f1e, 0x4c4d, 0x3f5b, 0x4c5e, 0x3f5c,
+ 0x4d17, 0x3f83, 0x75c6, 0x3f80, 0x3f81, 0x3f7e, 0x3f88, 0x3f85, 0x3f89,
+ 0x3f7f, 0x3f8e, 0x4d64, 0x4d67, 0x3f84, 0x75b7, 0x768c, 0x4f59, 0x768d,
+ 0x4fda, 0x3fee, 0x3fed, 0x3ffe, 0x5051, 0x3fff, 0x5055, 0x513b, 0x5134,
+ 0x4023, 0x5137, 0x7717, 0x5131, 0x771c, 0x401f, 0x513f, 0x5159, 0x7714,
+ 0x5361, 0x408f, 0x4090, 0x5458, 0x5462, 0x5450, 0x40a0, 0x5451, 0x40a6,
+ 0x409f, 0x5446, 0x40a7, 0x40a1, 0x562d, 0x4102, 0x4136, 0x5948, 0x5951,
+ 0x594a, 0x594f, 0x5950, 0x5949, 0x5a63, 0x41c8, 0x5a66, 0x5a60, 0x41d8,
+ 0x7b0c, 0x41dd, 0x41dc, 0x5af1, 0x41d7, 0x5b07, 0x41da, 0x42ba, 0x5f9b,
+ 0x5fa3, 0x5f9d, 0x42be, 0x42c2, 0x42bb, 0x42c0, 0x5fa9, 0x5fa7, 0x5fa4,
+ 0x7d23, 0x5fba, 0x21c1, 0x6226, 0x4343, 0x4355, 0x6294, 0x6293, 0x4357,
+ 0x4368, 0x7f98, 0x7f90, 0x6407, 0x640d, 0x6402, 0x640c, 0x6409, 0x6408,
+ 0x6413, 0x43a1, 0x64d2, 0x803a, 0x653e, 0x653c, 0x6667, 0x669e, 0x43ea,
+ 0x66ad, 0x43e7, 0x66d9, 0x6642, 0x66a3, 0x66a0, 0x43e8, 0x43e9, 0x667c,
+ 0x6904, 0x4454, 0x6958, 0x6960, 0x69c9, 0x69c8, 0x8226, 0x4465, 0x6a1c,
+ 0x6a1a, 0x448a, 0x6b74, 0x44b0, 0x6b6e, 0x6b6f, 0x6b79, 0x44bc, 0x832e,
+ 0x6b77, 0x8355, 0x831a, 0x44b8, 0x833d, 0x6b7c, 0x44b2, 0x6b70, 0x8330,
+ 0x44bd, 0x6b7a, 0x6b82, 0x458a, 0x8651, 0x45a1, 0x7244, 0x45a2, 0x7243,
+ 0x8688, 0x7245, 0x4615, 0x7625, 0x761f, 0x4620, 0x4673, 0x77e8, 0x898e,
+ 0x898d, 0x7809, 0x78b7, 0x78b9, 0x7964, 0x7963, 0x8a09, 0x8a14, 0x46b1,
+ 0x7962, 0x7965, 0x472b, 0x7bac, 0x4745, 0x7d2a, 0x4797, 0x4798, 0x7e96,
+ 0x47d5, 0x7fc2, 0xf9de, 0x4893, 0x4896, 0x9007, 0x4894, 0x84aa, 0x84b0,
+ 0x48c7, 0x48c5, 0x86d4, 0x86cd, 0x86d6, 0x48c4, 0x87f0, 0x9579, 0x9584,
+ 0x49ce, 0x49ca, 0x49cc, 0x9657, 0x49c9, 0x96ba, ERROR, 0x9d4b, 0x0162,
+ 0x346e, 0x02b7, 0x5067, 0x02ac, 0x02ab, 0x3471, 0x02c1, 0x34bb, 0x34d3,
+ 0x05e8, 0x0769, 0x075d, 0x075f, 0x34f3, 0x34ed, 0x34f5, 0x0764, 0x0762,
+ 0x34f1, 0x34f2, 0x34f6, 0x3520, 0x08f9, 0x3528, 0x08ee, 0x5318, 0x532c,
+ 0x5359, 0x09ab, 0x09ac, 0x09aa, 0x5368, 0x537e, 0x0a86, 0x0a7a, 0x53a1,
+ 0x0d28, 0x35a1, 0x555b, 0x35aa, 0x35a9, 0x0d31, 0x35b5, 0x35a5, 0x35a8,
+ 0x5542, 0x35a7, 0x5547, 0x0d2d, 0xf843, 0x553d, 0x0d2b, 0x0d32, 0x5560,
+ 0x57eb, 0x1329, 0x1326, 0x1353, 0x364d, 0x1333, 0x1334, 0x159d, 0x369c,
+ 0x595f, 0x1641, 0x36ea, 0x36e5, 0x1791, 0x1769, 0x5b6f, 0x1a22, 0x375e,
+ 0x1a34, 0xf86d, 0x1b2e, 0x3786, 0x3784, 0x1bf4, 0x5c5a, 0x1e28, 0x37d9,
+ 0x1e1c, 0x37de, 0x1e11, 0x1e24, 0x1e15, 0x37db, 0x1e16, 0x1e54, 0x1e23,
+ 0x1fff, 0x3831, 0x20cf, 0x20d0, 0x384b, 0x20ce, 0x3849, 0x384a, 0x384c,
+ 0x21c7, 0x225c, 0x388a, 0x2236, 0x3889, 0x388b, 0x2243, 0x38bb, 0x5fa2,
+ 0x5f9d, 0x38e4, 0x252a, 0x2501, 0x5fa3, 0x250b, 0x250f, 0x393b, 0x392e,
+ 0x393e, 0x3946, 0x3953, 0x26df, 0x3944, 0x26d2, 0x393f, 0x3942, 0x394f,
+ 0x26cd, 0x3952, 0x394a, 0x60c2, 0x26db, 0x395a, 0x60a5, 0x3949, 0x26cf,
+ 0x621c, 0x29c0, 0x621d, 0x3a03, 0x2b81, 0x2b82, 0x2b8a, 0x2ba8, 0x2b8c,
+ 0x6395, 0x639a, 0x3a01, 0x3a06, 0x39fb, 0x39f9, 0x2b8e, 0x3a05, 0x39fa,
+ 0x2b8b, 0x63a6, 0x2b96, 0x39fe, 0x2bcc, 0x3a7d, 0x3a8c, 0x2f4f, 0x2f4a,
+ 0x6550, 0x3a8e, 0x2f4b, 0x2f3d, 0x6552, 0x2f44, 0x2f49, 0x309e, 0x30f3,
+ 0x65c8, 0x30f5, 0x3af0, 0x3af2, 0x31b3, 0x6658, 0x3af1, 0x3ae6, 0x31e5,
+ 0x31b6, 0xf8d8, 0x6888, 0x3486, 0x3b6f, 0x3b6d, 0x3b69, 0x34b6, 0x3485,
+ 0x3b6e, 0x34ab, 0x3c2f, 0x3c30, 0x3c63, 0x3a0d, 0x3a8b, 0x3a8c, 0x6bb8,
+ 0x3c80, 0x6bb9, 0x3c9a, 0x3c94, 0x3c96, 0x3c95, 0x3c97, 0x3b72, 0x3cf4,
+ 0x3cfe, 0x3d8f, 0x3d01, 0x3d79, 0x3d02, 0x3d77, 0x3cf9, 0x3d90, 0x3d88,
+ 0x3d80, 0x3d9e, 0x3cf6, 0x3cf7, 0x3d82, 0x3d34, 0x3d89, 0x3cff, 0x3d85,
+ 0x3d7e, 0x3d7a, 0x3da6, 0x6e0b, 0x3db5, 0x41f4, 0x3dbf, 0x3dbc, 0x7105,
+ 0x4229, 0x4226, 0x422a, 0x3dbe, 0x3dc0, 0x457e, 0x3e3b, 0x3e39, 0x465b,
+ 0x4661, 0x4660, 0x3e3c, 0x479b, 0x7314, 0x7304, 0x47c3, 0x3e7d, 0x47cd,
+ 0x3e7f, 0x3e7a, 0x3e7c, 0x7305, 0x3e7e, 0x7315, 0x730d, 0x3e80, 0x3ebf,
+ 0x3ec3, 0x4954, 0x4959, 0x3ecc, 0x3f0e, 0x3f0d, 0x4af5, 0x3f26, 0x3f24,
+ 0x3f25, 0x3f23, 0x3f21, 0x3f29, 0x4c69, 0x4c65, 0x3f8f, 0x3f8d, 0x4d7c,
+ 0x3f8b, 0x3f92, 0x4d80, 0x3f90, 0x4f65, 0x3fef, 0x3ff0, 0x4fdf, 0x5060,
+ 0x4001, 0x505e, 0x402e, 0x402d, 0x772e, 0x4028, 0x4029, 0x402c, 0x518f,
+ 0x5161, 0x515a, 0x7741, 0x4088, 0x5367, 0x4092, 0x4091, 0x77ea, 0x53bb,
+ 0x7844, 0x40a9, 0x40ac, 0x40ae, 0x40aa, 0x4106, 0x4105, 0x414a, 0x413e,
+ 0x413c, 0x413b, 0x579b, 0x4142, 0x4141, 0x4143, 0x57a9, 0x4145, 0x5966,
+ 0x419a, 0x419b, 0x419f, 0x419e, 0x5a72, 0x5a76, 0x5b14, 0x41de, 0x41e2,
+ 0x41e6, 0x5b0f, 0x7b29, 0x41e3, 0x7b27, 0x41df, 0x5e41, 0x5e46, 0x7c9d,
+ 0x5e4b, 0x5e43, 0x427e, 0x42c9, 0x42cc, 0x5fc6, 0x42d1, 0x5fc7, 0x42d0,
+ 0x5fce, 0x42cf, 0x42c8, 0x5fc9, 0x42cd, 0x5fcb, 0x5fc5, 0x4349, 0x4347,
+ 0x4358, 0x436b, 0x436c, 0x436a, 0x6369, 0x4380, 0x4382, 0x4384, 0x7fc8,
+ 0x4383, 0x641e, 0x64ba, 0x43b6, 0x6552, 0x6551, 0x6553, 0x669f, 0x66db,
+ 0x8126, 0x43f1, 0x66e3, 0x43f6, 0x43f3, 0x43f0, 0x811c, 0x66d7, 0x66e9,
+ 0x8128, 0x43f5, 0x43f4, 0x43f7, 0x66de, 0x66dc, 0x693c, 0xf98b, 0x4455,
+ 0x6a22, 0x6a32, 0x6a23, 0x448b, 0x44cb, 0x44c2, 0x6bd4, 0x6bc8, 0x6bbc,
+ 0x44ca, 0x44cc, 0x6bcd, 0x44c7, 0x44c9, 0x8370, 0x6bbe, 0x44c6, 0x6c40,
+ 0x6bd6, 0x44c3, 0x8382, 0x6bbd, 0x83ac, 0x6bba, 0x44c4, 0x6bc0, 0xf99b,
+ 0xf99d, 0x6bc1, 0x71a6, 0x71a5, 0x71a8, 0x45a9, 0x86ad, 0x45a8, 0x45a6,
+ 0x725f, 0x7270, 0x726a, 0x7265, 0x7267, 0x726f, 0x7287, 0x86ca, 0x8851,
+ 0x763d, 0x7643, 0x4622, 0x7640, 0x4626, 0x4624, 0x4625, 0x889d, 0x462a,
+ 0x4674, 0x7818, 0x4679, 0x8990, 0x467a, 0x7819, 0x78c1, 0x89d8, 0x89d7,
+ 0x4697, 0x78bc, 0x78c8, 0x8a2e, 0x7971, 0x46bc, 0x796e, 0x46b3, 0x7978,
+ 0x46bf, 0x46b7, 0xf9cd, 0x797a, 0x7bb1, 0x7baf, 0x7bb0, 0x4734, 0x4746,
+ 0x4748, 0x8c59, 0x7ca8, 0x7ca6, 0x4756, 0x4767, 0x7d48, 0x7d45, 0x4768,
+ 0x4799, 0x479a, 0x7ea0, 0x7ea4, 0x47d8, 0x7fd4, 0x47db, 0x47dc, 0x47dd,
+ 0x47d7, 0x7fd2, 0x8222, 0x4849, 0x484a, 0x8eda, 0x82b7, 0x82cc, 0x9033,
+ 0x84e6, 0x9018, 0x489a, 0x84c8, 0x48cd, 0x48ca, 0x86f4, 0x48cb, 0x86ed,
+ 0x48cf, 0x867e, 0xf9e3, 0x48cc, 0x48ea, 0x48ed, 0x87f9, 0x87fd, 0x48e9,
+ 0x8807, 0x491a, 0x91ef, 0x498d, 0x49d2, 0x8e78, 0x8e7a, 0x8e79, 0x8f8a,
+ 0x49f2, 0x907b, 0x91d5, 0x91e9, 0x4a3d, 0x91eb, 0x4a3e, 0x4af8, 0x4b23,
+ 0x9ad9, 0x4eb4, 0x016c, 0x50a0, 0x5090, 0x3475, 0x5086, 0x5084, 0x02fa,
+ 0x508a, 0x3476, 0x3473, 0x509f, 0x50a1, 0x0318, 0x5093, 0x34bd, 0x05f6,
+ 0x51d5, 0x078a, 0x0789, 0x34f9, 0x077f, 0x0788, 0x34fa, 0x0783, 0x0784,
+ 0x0798, 0x0763, 0x0787, 0x3521, 0xf827, 0x3529, 0x08f5, 0x0950, 0x3538,
+ 0x354e, 0x0a87, 0x0a8a, 0x0b65, 0x0db7, 0x0dc1, 0x0dc7, 0x35c8, 0x35bc,
+ 0x0dc5, 0x0dcb, 0x5590, 0x0dd1, 0x35bb, 0x35c2, 0x35c0, 0x0db8, 0x0dca,
+ 0x35ca, 0x0dde, 0x35c9, 0x0dce, 0x35b8, 0x5710, 0x5817, 0x1368, 0x364e,
+ 0x136b, 0x5844, 0x3650, 0x582b, 0x136a, 0x5845, 0x1366, 0x1377, 0x1396,
+ 0x136e, 0xf856, 0x368a, 0x1657, 0x5965, 0x1656, 0x179c, 0x179e, 0x36fc,
+ 0x36f9, 0x17a1, 0x3763, 0x1a42, 0x5bcf, 0x1a46, 0x1a3e, 0x1b33, 0x3787,
+ 0x3788, 0x1bfa, 0x379a, 0x1c97, 0x1c9b, 0x1caa, 0x5d56, 0x1e73, 0x1e7c,
+ 0x37e9, 0x1e86, 0x37ea, 0x5d54, 0x3850, 0x20f3, 0x20f0, 0x3856, 0x3852,
+ 0x384f, 0x3854, 0x3851, 0x20ec, 0x22af, 0x388e, 0x388f, 0x2264, 0x2268,
+ 0x235a, 0x5f3d, 0x251f, 0x2525, 0x38ed, 0x38eb, 0x5fa4, 0x26c6, 0x26d6,
+ 0x26c3, 0x3962, 0x272c, 0x395d, 0x272e, 0x275e, 0x2733, 0x3961, 0x3965,
+ 0x395c, 0x272d, 0x2746, 0x395f, 0x26c1, 0x273a, 0x29cc, 0x2b9d, 0x2b83,
+ 0x2bf6, 0x63ec, 0x3a16, 0x3a0a, 0x2bf8, 0x3a0e, 0x3a12, 0x2bfe, 0x2bf3,
+ 0x3a11, 0x2beb, 0x2bfa, 0x3a10, 0x2c07, 0x2bfc, 0x3a09, 0x63fa, 0x3a15,
+ 0x63d4, 0x2f72, 0x2f73, 0x2f74, 0x3a91, 0x3a95, 0x3a93, 0x3a92, 0x3a8f,
+ 0x2f5f, 0x2f60, 0x30aa, 0x3134, 0x3af6, 0x31b4, 0x3afb, 0x31f0, 0x6675,
+ 0x3af9, 0x320d, 0x31f3, 0x320f, 0x671c, 0x3b7d, 0x34c9, 0x3b7a, 0x3b7f,
+ 0x34c5, 0x3b78, 0x34d7, 0x34cc, 0x68d9, 0x34e7, 0x3b70, 0x3b82, 0x34c1,
+ 0x3b84, 0x34e8, 0x3c33, 0x38cb, 0x3c32, 0x3c36, 0x38c8, 0x397a, 0x3c56,
+ 0x3979, 0x397e, 0x3c67, 0x3a1b, 0x3c65, 0x3c64, 0x3c66, 0x3a1f, 0x3a19,
+ 0x3c81, 0x3c82, 0x3c83, 0x3c9e, 0x3b89, 0x6bf1, 0x3c9d, 0x3b8b, 0x3d0f,
+ 0x3d12, 0x3e09, 0x3dfe, 0x3e00, 0x3d10, 0x3d18, 0x3e0b, 0x3d14, 0x3d19,
+ 0x6e37, ERROR, 0x3e4a, 0x6e7d, 0x6e86, 0x3dc8, 0x3dc4, 0x3dc6, 0x4279,
+ 0x3dc7, 0x3dc3, 0x426c, 0x4299, 0xf91b, 0x4262, 0x4514, 0x3e19, 0x3e1c,
+ 0x45c8, 0x45d7, 0x460c, 0x3e41, 0x4670, 0x3e42, 0x3e43, 0x4671, 0x47df,
+ 0x47e4, 0x3e82, 0x47e7, 0x3e81, 0x3e94, 0x3e84, 0x4990, 0x3ed2, 0x3f0f,
+ 0x3f22, 0x4b4c, 0x3f27, 0x3f2a, 0x74fa, 0x3f28, 0x4b4f, 0x3f60, 0x4c7d,
+ 0x4c7e, 0x4c7c, 0x7572, 0x4c8d, 0x4d19, 0x3f9b, 0x3f9c, 0x4dc0, 0x3f93,
+ 0x3f94, 0x75dc, 0x3fa0, 0x3f99, 0x4db6, 0x3fa1, 0x4da8, 0x3ff1, 0x4feb,
+ 0x4fe7, 0x506f, 0x51c7, 0x4036, 0x519f, 0x4037, 0x403f, 0x403c, 0x51c4,
+ 0x4034, 0x4039, 0x403b, 0x4035, 0x4030, 0x4032, 0x4038, 0x403e, 0x403a,
+ 0x519b, 0x5197, 0x51c5, 0x536b, 0x53ce, 0x40b6, 0x7867, 0x54b1, 0x54ae,
+ 0x54b0, 0x40b3, 0x4109, 0x7977, 0x573e, 0x57b5, 0x57ba, 0x414c, 0x57b2,
+ 0x57b4, 0x4153, 0x414d, 0x4151, 0x414f, 0x7a9b, 0x5977, 0x41a2, 0x5986,
+ 0x597b, 0x41cd, 0x5a7e, 0x5b2e, 0x41e7, 0x5b2f, 0x41f0, 0x5b37, 0x41e9,
+ 0x41ec, 0x5b32, 0x41e8, 0x41ee, 0x4202, 0x5b36, 0x5b39, 0x5b35, 0x5e5c,
+ 0x4282, 0x4283, 0x4286, 0x5e7b, 0x5e61, 0x5fee, 0x5feb, 0x5fef, 0x6020,
+ 0x7d2a, 0x7d65, 0x434a, 0x6230, 0x435a, 0x7f64, 0x62be, 0x436e, 0x6367,
+ 0x637c, 0x4370, 0x436f, 0x6424, 0x438a, 0x4387, 0x4388, 0x6429, 0x64ef,
+ 0x8020, 0x43b7, 0x43fd, 0x8120, 0x670d, 0x4405, 0x813c, 0x4408, 0x4403,
+ 0x4402, 0x4404, 0x3b39, 0x4409, 0x43ff, 0x6764, 0x813f, 0x6715, 0x43fc,
+ 0x4401, 0x440a, 0x81f0, 0x81f5, 0x446b, 0x446c, 0x6a35, 0x6a36, 0x6a34,
+ 0x6a37, 0x6c47, 0x6c2b, 0x44de, 0x6c41, 0x6c43, 0x44db, 0x6c42, 0x44dd,
+ 0x44e3, 0x6c32, 0x44e0, 0x44d9, 0x44d8, 0x44e4, 0x6c44, 0x6c4a, 0x44da,
+ 0x44ef, 0xf9a0, 0x8415, 0x83be, 0x6c54, 0x6c6e, 0x6c52, 0x44d7, 0x45b3,
+ 0x45bb, 0x86e5, 0x45b2, 0x86d2, 0x45ad, 0x7292, 0x45af, 0xf9b8, 0x86e0,
+ 0x72bf, 0x4616, 0x4628, 0x4623, 0x88b3, 0x7641, 0x7669, 0x7665, 0x4675,
+ 0x467e, 0x467c, 0x7822, 0x781d, 0x78d2, 0x78da, 0x78db, 0x46ce, 0x46cd,
+ 0x46cf, 0x8a53, 0x79a4, 0x799e, 0x8a37, 0x8a47, 0x8a5c, 0x799d, 0x46c4,
+ 0x46cc, 0x46c8, 0x46c7, 0x79ad, 0x79a6, 0x79a7, 0x7bb3, 0x7be0, 0x7c35,
+ 0x7c37, 0x475a, 0x476a, 0x7d4a, 0x476b, 0x476d, 0x476f, 0x7e5e, 0x479e,
+ 0x7ec0, 0x47a4, 0x47a3, 0x47e4, 0x47e8, 0x47e9, 0x47e0, 0x47e3, 0x7ff9,
+ 0x47ea, 0x47e1, 0x47ed, 0x4834, 0x4835, 0x4851, 0x8ef0, 0x84f0, 0x489d,
+ 0x84f3, 0x851b, 0x84f2, 0x84fb, 0x871c, 0x8713, 0x48d0, 0x870f, 0x48ee,
+ 0x8816, 0x8811, 0x8812, 0x48f2, 0x880e, 0x921d, 0x4988, 0x8c67, 0x8cf2,
+ 0x8cda, 0x498f, 0x8cdc, 0x49d8, 0x8f94, 0x8f9b, 0x8f92, 0x8f9a, 0x9088,
+ 0x9086, 0x4a3f, 0x91ef, 0x4a52, 0x976b, 0x925e, 0x4a50, 0x9458, 0x4ab1,
+ 0x9456, 0x9454, 0x4af9, 0x959b, 0x9696, 0x96a4, 0x4b26, 0x4b28, 0x969a,
+ 0x9a12, 0x3480, 0x50c0, 0x3481, 0x036b, 0x347e, 0x347f, 0x0337, 0x033c,
+ 0xf80a, 0x04f7, 0x34be, 0x0566, 0x34d6, 0x07a9, 0x07ae, 0x07ad, 0x07c8,
+ 0x07a5, 0x07b0, 0x0895, 0x52e5, 0x0925, 0x3534, 0x0a99, 0x53af, 0x0b74,
+ 0x0b70, 0x0b6f, 0x0e41, 0x0e54, 0x35d5, 0x35d8, 0x0e40, 0x0e38, 0x35d4,
+ 0x55d8, 0x35d9, 0x0e52, 0x0e3a, 0x0e57, 0xf84a, 0x0e59, 0x5711, 0x5867,
+ 0x13b4, 0x13c0, 0x365d, 0x5843, 0x365e, 0x3659, 0x1375, 0x365a, 0x36a0,
+ 0x1660, 0x1647, 0x3705, 0x17f0, 0x3707, 0x17ef, 0x370e, 0x370c, 0x17ec,
+ 0x1983, 0x3745, 0x1984, 0x198f, 0x3764, 0x1a61, 0x3765, 0x1a69, 0x5bdd,
+ 0x3766, 0x1a62, 0x3789, 0x37ec, 0x37f1, 0x5d70, 0x5d6a, 0x37f0, 0x37f8,
+ 0x5d74, 0x5d5f, 0x1eae, 0x5d61, 0x5d73, 0x1eb2, 0x37f2, 0x37f4, 0x210b,
+ 0x3858, 0x2110, 0x210d, 0x385a, 0x3859, 0x3857, 0x385b, 0x5e50, 0x227f,
+ 0x2281, 0x38a6, 0x38c2, 0x38c1, 0x5f3f, 0x240b, 0x254e, 0x38ef, 0x5fb0,
+ 0x27ea, 0x2745, 0x3968, 0x6135, 0x612d, 0x3973, 0x396e, 0x3974, 0x6102,
+ 0x3966, 0x2728, 0x275d, 0x29dc, 0x39b9, 0x6226, 0x29d4, 0x3a0c, 0x2c64,
+ 0x2c68, 0x3a20, 0x2c62, 0x3a1d, 0x2c61, 0x3a1c, 0x2c66, 0x3a21, 0x3a1a,
+ 0x3a19, 0x2bf2, 0x2c69, 0x2c67, 0x3a7e, 0x2f9a, 0x2f9b, 0x2f85, 0x2f9c,
+ 0x3a9d, 0x2fa4, 0x3a9e, 0x3a9c, 0x656e, 0x2f99, 0x2f86, 0x2f90, 0x3081,
+ 0x30ae, 0x65b1, 0x65d4, 0x3acd, 0x3138, 0x3b0b, 0x3b0a, 0x6685, 0x353b,
+ 0x3b8f, 0x6972, 0x3b95, 0x3b90, 0x3b91, 0x354c, 0x693a, 0x3bb9, 0x3547,
+ 0x3535, 0x3b97, 0x3b9e, 0x3533, 0x3b8b, 0x3582, 0x3540, 0x3c3b, 0x3c3a,
+ 0x3c3c, 0x3c3d, 0x3c39, 0x3c3e, 0x3c6b, 0x3c6c, 0x3a36, 0x3b0e, 0x3ca2,
+ 0x3ca1, 0x3c9f, 0x3bad, 0x3baa, 0x3e17, 0x3d2d, 0x3e67, 0x3d36, 0x3d2b,
+ 0x3e72, 0x3d37, 0xf90a, 0x3e61, 0x3eb0, 0x6ead, 0x3d25, 0x3d2f, 0x3d2c,
+ 0x3e6e, 0x3e64, 0x3d32, 0x3e8c, 0x3e66, 0x6e95, 0x3e6b, 0x3e5f, 0x3e74,
+ 0x3e65, 0x42bb, 0x42be, 0x3dd5, 0x42b9, 0x3dd4, 0x3dd6, 0x42ef, 0x3dd1,
+ 0x7243, 0x45da, 0x3e46, 0x728f, 0x4690, 0x47e9, 0x3e8c, 0x3e8a, 0x3e88,
+ 0x4811, 0x480d, 0x47ed, 0x4821, 0x3edd, 0x4981, 0x49b1, 0x4b01, 0x3f2d,
+ 0x4b5e, 0x4b62, 0x3f2e, 0x3f2c, 0x3f2b, 0x3f30, 0x4b5b, 0x3f4e, 0x4c96,
+ 0x4c93, 0x3f64, 0x3f61, 0x4c92, 0x7575, 0xf939, 0x3f70, 0x3fa6, 0x3fa4,
+ 0x4dc4, 0x4dc7, 0x4dc3, 0x3fa8, 0x3fa2, 0x4dc8, 0x3fa7, 0x75ec, 0x3fa5,
+ 0x4dca, 0x3fa9, 0x4dc5, 0x4dcf, 0x4ddc, 0x4f7c, 0x5001, 0x403d, 0x51d3,
+ 0x51dc, 0x4044, 0x4045, 0x4046, 0x51d4, 0x7757, 0x51cc, 0x4047, 0x4048,
+ 0x4042, 0x51d6, 0x51db, 0x4041, 0x51d5, 0x53d9, 0x4094, 0x53dd, 0x53dc,
+ 0x53e0, 0x54cc, 0x40c0, 0x40b8, 0x40c1, 0x40c2, 0x40bb, 0x40bd, 0x40bf,
+ 0x40b9, 0x40b7, 0x54d2, 0x40c7, 0x54d3, 0x410c, 0x410b, 0x797b, 0x4110,
+ 0x568d, 0x415d, 0x7a21, 0x415a, 0x4158, 0x4156, 0x57d8, 0x4154, 0x7a16,
+ 0x57bc, 0x41a8, 0x41a7, 0x41cf, 0x41d0, 0x5a8a, 0x7ae8, 0x5a8b, 0x5a8d,
+ 0x41d1, 0x41eb, 0x5b53, 0x41fb, 0x7b6a, 0x5b59, 0x41fd, 0x41f8, 0x41f7,
+ 0x4200, 0x5b56, 0x5b57, 0x41f6, 0x7b5f, 0x5e73, 0x601b, 0x42df, 0x6021,
+ 0x6016, 0x6018, 0x42e2, 0x42e4, 0x6044, 0x7d82, 0x6026, 0x42e3, 0x6236,
+ 0x4359, 0x4371, 0x438e, 0x438c, 0x643a, 0x43a4, 0x64f4, 0x8055, 0x4414,
+ 0x6762, 0x675b, 0x676a, 0x4411, 0x6768, 0x441b, 0x4412, 0x440e, 0x4415,
+ 0x8168, 0x4410, 0x6781, 0x4417, 0x8246, 0x8243, 0x4470, 0x44ed, 0x6ce7,
+ 0x44ee, 0x6ce6, 0x6cd1, 0x6d11, 0x8481, 0x6cd0, 0x6cd9, 0x6d0a, 0x44f4,
+ 0x6cda, 0x6cdd, 0x6cc8, 0x6ce2, 0x6ce9, 0x6ccb, 0x847c, 0x6ccc, 0x6cc1,
+ 0x846a, 0x6cde, 0x8488, 0x44f2, 0x44f8, 0x44f3, 0x6d51, 0x6d12, 0x44fa,
+ 0x6ce0, 0x6d2b, 0xf9b4, 0x72d8, 0x72d1, 0x8710, 0x72d2, 0x72cd, 0x871f,
+ 0x45b6, 0x45b7, 0x733d, 0x870f, 0x72ca, 0x45ba, 0x72cb, 0x45bc, 0x72d7,
+ 0x75f4, 0x463b, 0x88d3, 0x462f, 0x7687, 0x768b, 0x7683, 0x4637, 0x4699,
+ 0x79c5, 0x79d2, 0x79c6, 0x79d3, 0x46d9, 0x46d8, 0x46d7, 0x79f0, 0x79cd,
+ 0x79cc, 0x79dc, 0x79d6, 0x4736, 0x7be6, 0x7c41, 0x7c3f, 0x8c87, 0x7cc5,
+ 0x7cc0, 0x7cc6, 0x7cbe, 0x7cbf, 0x8cc6, 0x4770, 0x7d63, 0x7ed3, 0x7eda,
+ 0x7ed5, 0x47a5, 0x47a6, 0x47a9, 0x47ee, 0x4854, 0x82ee, 0x4857, 0x82fc,
+ 0x8414, 0x48a1, 0x8523, 0x8522, 0x8530, 0x86b5, 0x48d3, 0x8738, 0x48d4,
+ 0x873f, 0x48d7, 0x90cc, 0x916d, 0x9170, 0x48f7, 0x48f6, 0x48f9, 0x48f8,
+ 0x9258, 0x9242, 0x9268, 0x9269, 0x8968, 0x8967, 0x9243, 0x8965, 0x9247,
+ 0x498a, 0x8c75, 0x8cf7, 0x8cf3, 0x8cf6, 0x4994, 0x8d00, 0x4993, 0x8cff,
+ 0x8cf5, 0x959d, 0x49dd, 0x49dc, 0x49f7, 0x96cf, 0x9092, 0x9206, 0x4a42,
+ 0x9207, 0x926b, 0x4a54, 0x926c, 0x4a55, 0x9393, 0x4a8f, 0x9394, 0x97f4,
+ 0x4ab4, 0x4ab3, 0x9462, 0x9463, 0x9809, 0x945f, 0x9464, 0x945b, 0x9459,
+ 0x4afb, 0x4afd, 0x95a4, 0x95ac, 0x98ab, 0x4afc, 0x96b5, 0x4b2c, 0x4b2f,
+ 0x96ae, 0x4b2b, 0x96c5, 0x4b33, 0x4b34, 0x98fb, 0x983b, 0x9aac, 0x9aae,
+ 0x9aaa, 0x4be8, 0x9abf, 0x9c2b, 0x9c84, 0x9c80, 0x9d4d, 0x9d4f, 0x9b5c,
+ 0x9d4c, 0x9f92, 0x4d5d, 0x50d2, 0x3485, 0x3488, 0x03ae, 0x0379, 0x348e,
+ 0x3484, 0x0371, 0x50df, 0x03b3, 0x3483, 0x032c, 0x0377, 0x052f, 0x07c3,
+ 0x3502, 0x07cd, 0x3506, 0x3505, 0x07c9, 0x34fe, 0x3501, 0x3500, 0x07ce,
+ 0x08a5, 0x08a0, 0x08fe, 0x0959, 0x0a9a, 0x35e7, 0x5619, 0x0ee4, 0x0ed7,
+ 0x0edc, 0x35e6, 0x0ee7, 0x35ed, 0x35e2, 0x35eb, 0x0ee5, 0x35e8, 0x35ec,
+ 0x560a, 0x3624, 0x589a, 0x1414, 0x3662, 0x13f1, 0x3661, 0x3660, 0x3664,
+ 0x368b, 0x15b6, 0x166e, 0x166c, 0x1681, 0x1842, 0x3719, 0x3716, 0x3718,
+ 0x3722, 0x181a, 0x371d, 0x3717, 0x371e, 0x1827, 0x1825, 0x1817, 0x181c,
+ 0x183d, 0x1820, 0x3769, 0x376a, 0x1a81, 0x376c, 0x377a, 0x378a, 0x1c09,
+ 0x1cc6, 0x1cc4, 0x379c, 0x1cc5, 0x37fd, 0x37f9, 0x1eef, 0x37ff, 0x1edf,
+ 0x1ede, 0x1eee, 0x1ef5, 0x1eec, 0x37fc, 0x1edd, 0x5d85, 0x37fb, 0x3802,
+ 0x385f, 0x5e56, 0x385e, 0x385d, 0x385c, 0x2122, 0x5e51, 0x3892, 0x2297,
+ 0x2295, 0x3894, 0x3895, 0x38d1, 0x24a9, 0x38f1, 0x2553, 0x5fb1, 0x2556,
+ 0x2555, 0x3977, 0x396f, 0x27e3, 0x27e2, 0x3987, 0x397d, 0x397c, 0x397e,
+ 0x3985, 0x398b, 0x3986, 0x3980, ERROR, 0x27a9, 0x3978, 0xf8ab, 0x2833,
+ 0x280a, 0x39ba, 0x2a59, 0x3a33, 0x2cbc, 0x3a2d, 0x2cc4, 0x2cc7, 0x2cc6,
+ 0x3a37, 0x645a, 0x6463, 0x2cb8, 0x2cda, 0x3a2e, 0x2cb7, 0x2cc0, 0x3a3d,
+ 0x2ccd, 0x3aa0, 0x2fbc, 0x2fab, 0x3aa3, 0x3086, 0x669b, 0x325a, 0x66a3,
+ 0x3b0e, 0x669e, 0x3343, 0x3bb6, 0x35ac, 0x3bab, 0x3bad, 0x3ba6, 0x35be,
+ 0x69b8, 0x3baa, 0x69ba, 0x3bb1, 0x35ab, 0x3ba8, 0x3baf, 0x3bb0, 0x3ba7,
+ 0x3bb2, 0x3b9d, 0x3ba5, 0x3bb5, 0x1b3e, 0x69c7, 0x69d7, 0x38f9, 0x3c41,
+ 0x38f3, 0x38f7, 0x6b70, 0x3a45, 0x3a48, 0x3c72, 0x6b9d, 0x3c6f, 0x3c71,
+ 0x3a44, 0x3c85, 0x3aaf, 0x3ab1, 0x3ca4, 0x3ca5, 0x3ca6, 0x3bcf, 0x3ca8,
+ 0x3bcb, 0x3bcd, 0x3ca3, 0x3c50, 0x3eec, 0x3f1a, 0x6f16, 0x6f24, 0x3ed8,
+ 0x3d43, 0x3ed0, 0x3ed1, 0x3d3d, 0x3d45, 0x3e7b, 0x3ed2, 0x3d44, 0x3ed4,
+ 0x3ee7, 0x3edf, 0x3ede, 0x6f45, 0x3ed9, 0x3ecf, 0x430d, 0x3de3, 0x7179,
+ ERROR, 0x3ddf, 0x3de4, 0x717a, 0x3de5, 0x4338, 0x7254, 0x3e22, 0x3e4a,
+ 0x46a9, 0x3e49, 0x3e44, 0x3e4b, 0x3e87, 0x3e89, 0x3e92, 0x3e91, 0x3e90,
+ 0x3e8e, 0x483e, 0x4846, 0x49ed, 0xf930, 0x3f12, 0x3f10, 0x3f11, 0x4b6c,
+ 0x3f32, 0x3f34, 0x3f37, 0x3f33, 0x3f36, 0x3f35, 0x3f65, 0x4cac, 0x757c,
+ 0x757b, 0x4dc9, 0x7612, 0x3fb0, 0x4e12, 0x3faf, 0x3faa, 0x4dfd, 0x4e01,
+ 0x4e11, 0x3fab, 0x4e89, 0x4e05, 0x4dfe, 0x4e0b, 0x4e20, 0x4e04, 0x4f88,
+ 0x3ff3, 0x5002, 0x3ff4, 0x5003, 0x76b6, 0x76e0, 0x4008, 0x404e, 0x4055,
+ 0x404b, 0x5229, 0x523b, 0x404d, 0x7773, 0x5206, 0x4052, 0x7772, 0x404c,
+ 0x7770, 0x4050, 0x4053, 0x5203, 0x4051, 0x5378, 0x5379, 0x537d, 0x4089,
+ 0x537f, 0x4095, 0x40cc, 0x40c8, 0x40ce, 0x5532, 0x40ca, 0x5500, 0x789d,
+ 0x5522, 0x40cd, 0x56a9, 0x415c, 0x4167, 0x4169, 0x4165, 0x4162, 0x5804,
+ 0x7a27, 0x7a35, 0xf959, 0x41aa, 0x59b8, 0x5a9b, 0x41d2, 0x7ba2, 0x4203,
+ 0x420c, 0x5b92, 0x4209, 0x4206, 0x4205, 0x7b89, 0x5b8f, 0x420b, 0x4208,
+ 0x5b98, 0x7ba5, 0x5bae, 0x428e, 0x5e9d, 0x7cb6, 0x42e8, 0x6049, 0x6050,
+ 0x6046, 0x42ea, 0x604e, 0x7da5, 0x7dc3, 0x6055, 0x42e9, 0x42eb, 0x6064,
+ 0x42f0, 0x6238, 0x434b, 0x7fab, 0x4373, 0x4375, 0x4392, 0x4391, 0x4393,
+ 0x8025, 0x43a7, 0x43a6, 0x43a8, 0x43aa, 0x64fe, 0x43a9, 0x8059, 0x43bb,
+ 0x43bc, 0x43ba, 0x43bd, 0x4427, 0x8185, 0x67a6, 0x4424, 0x441e, 0x441f,
+ 0x441d, 0x4420, 0x4423, 0x4429, 0x4422, 0x679c, 0x6799, 0x441c, 0x818e,
+ 0x4428, 0x67b5, 0x67a3, 0x67a0, 0x67a7, 0x679b, 0x69df, 0x69e1, 0x4471,
+ 0x4473, 0x4472, 0x6a4d, 0x4502, 0x6df3, 0x6d6f, 0x6d69, 0x44fe, 0x84be,
+ 0x6d6b, 0x6d78, 0x6d87, 0x4508, 0x6d85, 0x6d82, 0x6d90, 0x4507, 0x4504,
+ 0x6d80, 0x6d67, 0x4500, 0x44fc, 0x6d61, 0x4544, 0x6d93, 0x44f1, 0x6df2,
+ 0x6d86, 0x84a6, 0x4506, 0x71cd, 0x71c4, 0x45c6, 0x45c3, 0x45c1, 0x45c2,
+ 0x730f, 0x45c4, 0x45c7, 0x730d, 0x45bf, 0x45d2, 0x7373, 0x45ca, 0xf9ba,
+ 0x730a, 0x872f, 0x7308, 0x7313, 0x4613, 0x75f8, 0x4630, 0x463e, 0x4639,
+ 0x76ab, 0x76a8, 0x463c, 0x463f, 0x76a5, 0x4634, 0x463d, 0x76c3, 0x76a4,
+ 0x4638, 0x76d4, 0x76ba, 0x77f1, 0x89a0, 0x4682, 0x783f, 0x4683, 0x78ea,
+ 0x469b, 0x79f7, 0x46e0, 0x46dd, 0x79fa, 0x79f5, 0x46de, 0x79fe, 0x46e3,
+ 0x46e5, 0x7a00, 0x8a97, 0x46e2, 0x7a02, 0x79fb, 0x7a07, 0x46df, 0x7a1a,
+ 0x472e, 0x7bb8, 0x4737, 0x4738, 0x7be9, 0x7beb, 0x7c50, 0x7c4f, 0x8c8b,
+ 0x7d86, 0x3562, 0x7d8e, 0x4794, 0x4793, 0x47ab, 0x47ad, 0x7ef0, 0x7efb,
+ 0x47f5, 0x47f7, 0x8042, 0x47f6, 0x47f8, 0x8085, 0x47fb, 0x47f9, 0x4858,
+ 0x485a, 0x8305, 0x4859, 0x8f0f, 0x4885, 0x48a4, 0x48d8, 0x48d9, 0x874b,
+ 0x48dd, 0x48c8, 0x8763, 0x48fa, 0x48fb, 0x9275, 0x4927, 0x929f, 0x492a,
+ 0x4925, 0x8999, 0x4928, 0x8c81, 0x8d17, 0x8d10, 0x8d12, 0x95a6, 0x4995,
+ 0x969a, 0x8efa, 0x8ef3, 0x8ef2, 0x8ef5, 0x8ef6, 0x8fbb, 0x8fc2, 0x90a7,
+ 0x4a0f, 0x4a11, 0x90a8, 0x90a3, 0x4a10, 0x90aa, 0x4a15, 0x4a13, 0x9757,
+ 0x91dc, 0x4a47, 0x4a46, 0x920f, 0x4a59, 0x4a5b, 0x9279, 0x4a5e, 0x927f,
+ 0x9285, 0x4a5a, 0x4a91, 0x4a92, 0x4a90, 0x4a93, 0x941b, 0x97f7, 0x4abe,
+ 0x9477, 0x9476, 0x9498, 0x4abc, 0x4abb, 0x4ab7, 0x4ab9, 0x947a, 0x4b01,
+ 0x4afe, 0x95bc, 0x95ba, 0x4b02, 0x95b6, 0x4aff, 0x98b0, 0x95b4, 0x4b00,
+ 0x96cf, 0x4b37, 0x4b3a, 0x4b6f, 0x4b77, 0x4b79, 0x99c6, 0x987b, 0x4bc8,
+ 0x9a1c, 0x9a21, 0x9a1d, 0x9ac0, 0x4bf2, 0x9aff, 0x4bf1, 0x4bf0, 0x9b62,
+ 0x9d56, 0x4c34, 0x9fa1, 0x9fa2, 0x9fa6, 0xa256, 0xa257, 0x4d2c, 0x4d2d,
+ 0xa301, 0xa3ed, 0xfa1c, 0xa5f2, 0x50fa, 0x03b8, 0x3491, 0x03c0, 0x3494,
+ 0x03b7, 0x03e1, 0x34c4, 0x350a, 0x07e8, 0x5285, 0x08b2, 0x3552, 0x0aae,
+ 0x3559, 0x366f, 0x0f7e, 0x35f2, 0x35f4, 0x5643, 0x0f76, 0x35f1, 0x563c,
+ 0x0f96, 0x366a, 0x1420, 0x1421, 0x1423, 0x1429, 0x1677, 0x1851, 0x3724,
+ 0x1856, 0x3723, 0x1888, 0x1859, 0x1855, 0x3727, 0x1997, 0x1998, 0x376d,
+ 0x5bed, 0x376e, 0x376f, 0x1aa1, 0x1aa3, 0x5c35, 0x379f, 0x380a, 0x3806,
+ 0x380e, 0x1f0a, 0x380d, 0x3805, 0x1f3d, 0x1f0c, 0x380b, 0x3810, 0x382e,
+ 0x213d, 0x2139, 0x22b0, 0x22b2, 0x22ae, 0x3896, 0x3897, 0x38c4, 0x5f47,
+ 0x38c5, 0x2420, 0x38d2, 0x256e, 0x256d, 0x256a, 0x3981, 0x2832, 0x398e,
+ 0x3990, 0x398f, 0x2839, 0x3991, 0x3995, 0x3993, 0x27a3, 0x616d, 0x287f,
+ 0x2835, 0x283d, 0x29f4, 0x29f5, 0x3a3b, 0x3a48, 0x2d48, 0x2d28, 0x3a46,
+ 0x3a47, 0x2d27, 0x2d32, 0x2d2c, 0x3a4c, 0x2d2e, 0x3a4a, 0x3a50, 0x3a43,
+ 0x2d23, 0x2d31, 0xf8c5, 0x3a49, 0x3aa6, 0x3aa5, 0x3aa4, 0x2fc9, 0x3089,
+ 0x3ab9, 0x30bb, 0x3ace, 0x3acf, 0x3b13, 0x3397, 0x3393, 0x3628, 0x3bc6,
+ 0x3bc5, 0x3bca, 0x3bd9, 0x3bc1, 0x3618, 0x363b, 0x69f5, 0x3627, 0x3624,
+ 0x361b, 0x3631, 0x3bcb, 0x3626, 0x36a3, 0x363f, 0x3622, 0x3619, 0x6a03,
+ 0x3641, 0x362b, 0x6a65, 0x3c42, 0x390c, 0x6b75, 0x3c74, 0x3c73, 0x3a4e,
+ 0x3ab9, 0x3afa, 0x3be9, 0x3be8, 0x3be4, 0x6f8a, 0x6f56, 0x3d52, 0x3f5f,
+ 0x3f5d, 0x3f52, 0x3d50, 0x3f74, 0x3d4b, 0x3f46, 0x3d4c, 0x3d6d, 0x3faa,
+ 0x6f98, 0x3f4a, 0x3f59, 0x3f4b, 0x3d4f, 0x6f68, 0x3df0, 0x4350, 0x7234,
+ 0x7245, 0x3e4d, 0x3e4c, 0x46d0, 0x3e4f, 0x3e4e, 0x3e50, 0x46cc, 0x735c,
+ 0x3e96, 0x7356, 0x4864, 0x4865, 0x3e97, 0x3e95, 0x3e98, 0x485c, 0x4a15,
+ 0x3eec, 0x3eeb, 0x3f13, 0x3f14, 0x3f38, 0x3f3a, 0x3f39, 0x4b79, 0x3f68,
+ 0x3f67, 0x4cc5, 0x4cb8, 0x4e2c, 0x3fbe, 0x3fbc, 0x4e37, 0x4e35, 0x4e31,
+ 0x3fbb, 0x4e2f, 0x3fba, 0x4e2b, 0x3fb9, 0x3fb7, 0x4e2d, 0x4e2a, 0x3fc1,
+ 0x4f95, 0x3ff7, 0x523e, 0x4060, 0x5247, 0x5245, 0x4059, 0x405c, 0x405a,
+ 0x4058, 0x5252, 0x405b, 0x5270, 0x5250, 0x5258, 0x5251, 0x523d, 0x405d,
+ 0x5241, 0x520c, 0x523c, 0x5386, 0x5383, 0x5389, 0x53f3, 0x40d4, 0x40d3,
+ 0x78bf, 0x40d2, 0x78bd, 0x552d, 0x40d7, 0x40d1, 0x78e4, 0x40d5, 0x56c5,
+ 0xf955, 0x416d, 0x416f, 0x7a34, 0x4175, 0x416c, 0x4174, 0x5843, 0x4173,
+ 0x5837, 0x5845, 0x7a36, 0x41ac, 0x59e5, 0x5aa6, 0x5bdb, 0x4210, 0x5bda,
+ 0x5be6, 0x7bba, 0x7bbc, 0x420f, 0x7bc8, 0x4223, 0x7bc3, 0x421d, 0x7bb6,
+ 0x420e, 0x5bf8, 0x5be9, 0x4215, 0x7bc2, 0x4213, 0x5be8, 0x5bf6, 0x421b,
+ 0x7bc5, 0x4222, 0x4226, 0x5be7, 0x7bbd, 0x7bb0, 0x4221, 0x421c, 0x4217,
+ 0x5bd5, 0x421a, 0x7bbb, 0x5ed3, 0x5ec7, 0x5ed1, 0x4299, 0x5ec3, 0x4297,
+ 0x6080, 0x6098, 0x42fd, 0x6084, 0x42f6, 0x42fe, 0x42f5, 0x42ff, 0x42f7,
+ 0x6097, 0x6083, 0x6081, 0x4301, 0x7e04, 0x608c, 0x6242, 0x63ab, 0x4377,
+ 0x63a3, 0x63a6, 0x645c, 0x6469, 0x6467, 0x43ab, 0x658b, 0x65a8, 0x43c0,
+ 0x67d8, 0x4431, 0x442e, 0xf989, 0x67dc, 0x442c, 0x67e0, 0x67e5, 0x4432,
+ 0x442f, 0x442b, 0x442d, 0x4433, 0x6918, 0x6919, 0x81f1, 0x4457, 0x445c,
+ 0x447b, 0x6a5f, 0x6a5e, 0x447a, 0x6e02, 0x8522, 0x4513, 0x451e, 0x4517,
+ 0x4520, 0x452a, 0x4511, 0x4515, 0x450f, 0x4518, 0x8538, 0x6e12, 0x6e36,
+ 0x452c, 0x8532, 0xf9a8, 0x8510, 0x6e23, 0x6e03, 0x451c, 0x6e00, 0x4529,
+ 0x6e46, 0x6e61, 0x4512, 0x854f, 0x4597, 0x7384, 0x8772, 0x736b, 0x7362,
+ 0x7356, 0x736a, 0x7352, 0x7355, 0x45d4, 0x45d0, 0x877c, 0x7361, 0xf9bb,
+ 0x7358, 0x7377, 0x45d3, 0x4614, 0x76d7, 0x4646, 0x4645, 0x76de, 0x4643,
+ 0x76df, 0x890d, 0x4644, 0x4648, 0x76d1, 0x4647, 0x76e2, 0x76e1, 0x76dd,
+ 0x8908, 0x4649, 0x4685, 0x784b, 0x4684, 0x784e, 0x469d, 0x78fc, 0x469e,
+ 0x46a0, 0x78fa, 0x469c, 0x78fb, 0x469f, 0x78fe, 0x46f7, 0x46ea, 0x7a31,
+ 0x46ef, 0x46e9, 0x46f3, 0x46f0, 0x46eb, 0x7a38, 0x46ec, 0x46f2, 0x46f5,
+ 0x46ee, 0x7a3a, 0x7bbb, 0x473a, 0x474b, 0x7c59, 0x474a, 0x474c, 0x7cdb,
+ 0x7cdf, 0x7ce2, 0x4779, 0x477b, 0x4778, 0x7d9e, 0x7da1, 0x47b5, 0x7f10,
+ 0x47b4, 0x47b7, 0x8d9e, 0x4809, 0x47fe, 0x4808, 0x4807, 0x8076, 0x807f,
+ 0x807d, 0x4806, 0x4804, 0x4805, 0x47ff, 0x480b, 0x8082, 0x8257, 0x483b,
+ 0x485d, 0x485c, 0x485f, 0x485e, 0x8f28, 0x832e, 0x8f21, 0x4883, 0x858b,
+ 0x858d, 0x48a7, 0x9066, 0x906c, 0x8590, 0x48a8, 0x86ec, 0x876f, 0x876b,
+ 0x8771, 0x8778, 0x90f6, 0x48e0, 0x48df, 0x48fe, 0x48fc, 0x48ff, 0x48fd,
+ 0x89ad, 0x492c, 0x92ec, 0x92ba, 0x92e3, 0x92bd, 0x499d, 0x8d2f, 0x95b4,
+ 0x8f78, 0x4a40, 0x91f8, 0x9219, 0x4a5f, 0x929b, 0x9294, 0x9297, 0x9299,
+ 0x93a6, 0x93a4, 0x93a7, 0x97d1, 0x9495, 0x4ac0, 0x9823, 0x9490, 0x4ac1,
+ 0x4ac6, 0x949b, 0x95c4, 0x4b04, 0x4b05, 0x95c6, 0x990b, 0x4b3e, 0x4b3d,
+ 0x4b40, 0x4b3f, 0x96e3, 0x4b42, 0x96df, 0x96dd, 0x96e7, 0x4b84, 0x4b82,
+ 0x4b7f, 0x4b85, 0x9a2d, 0x9a2c, 0x4bcc, 0x9ab2, 0x4bcb, 0x4bcd, 0x9a34,
+ 0x9a38, 0x9adb, 0x9b1d, 0x4bf5, 0x9b1a, 0x9b1b, 0x9b14, 0x9af0, 0x9b17,
+ 0x9c21, 0x4c20, 0x4c21, 0x9caa, 0x9ca1, 0x4c37, 0x4c3e, 0x9b73, 0x4c3d,
+ 0x9b6e, 0x9d63, 0x9d79, 0x9d60, 0x9b65, 0x9d62, 0x4c3c, 0x9d61, 0x4c38,
+ 0x9b6a, 0x9d70, 0x9b6d, 0x9d6a, 0x4c3b, 0x9fc8, 0x4cb0, 0x9fc5, 0x9fbe,
+ 0x9fc2, 0x4cad, 0x4cb2, 0x4cb8, 0x9d0b, 0x9fc7, 0x4caf, 0x9fb0, 0x9fca,
+ 0x4d1a, 0x9e76, 0x4d20, 0x4d21, 0x4d30, 0x9ea8, 0x4d2f, 0xa30d, 0xa307,
+ 0xa396, 0xa3ef, 0x4d5f, 0x4d60, 0xa41e, 0xa41d, 0x9f11, 0xa590, 0x03eb,
+ 0x348a, 0x5119, 0x349c, 0x03ee, 0x349a, 0x03ef, 0x03ec, 0x07fa, 0x350c,
+ 0x350b, 0x350d, 0x5292, 0x0904, 0x0fd3, 0x35fe, 0x0fd1, 0x0ffa, 0x35ff,
+ 0x35fb, 0x35fc, 0x3609, 0x0fc8, 0x3600, 0x0fd5, 0x5675, 0x0fcd, 0x0fd2,
+ 0x0ffb, 0x122a, 0x1488, 0x1461, 0x3671, 0x1463, 0x1462, 0x596f, 0x0057,
+ 0x18c8, 0x1898, 0x372b, 0x1ac1, 0x1f3f, 0x1f41, 0x3814, 0x3811, 0x3812,
+ 0x2152, 0x3863, 0x215e, 0x386e, 0x389a, 0x22c7, 0x389b, 0x2370, 0x2427,
+ 0x38c8, 0x2471, 0x24b0, 0x38f6, 0x2842, 0x2843, 0x61a5, 0x398c, 0x3997,
+ 0x39a2, 0x61a0, 0x2857, 0x289d, 0x2d89, 0x2d8d, 0x2d8b, 0x2d80, 0x2d92,
+ 0x2d8a, 0x2dc8, 0x3a54, 0x2d8f, 0x2d93, 0x2d91, 0x3aa8, 0x2ff2, 0x2fde,
+ 0x3aa9, 0x30c8, 0x65b4, 0x65d8, 0x66c2, 0x3b18, 0x3b17, 0x3b1d, 0x32a7,
+ 0x32a1, 0x3b31, 0x368c, 0x367f, 0x3bd8, 0x3bd5, 0x367b, 0x3695, 0x3699,
+ 0x3be1, 0x368e, 0x3bd4, 0x36da, 0x368a, 0x369c, 0x3be3, 0x367e, 0x3c44,
+ 0x3c45, 0x391a, 0x3a55, 0x3c76, 0x3c75, 0x3a60, 0x6ba8, 0x3c88, 0x3caa,
+ 0x3bfb, 0x3cab, 0x3cac, 0x3bfd, 0x3d57, 0x6f83, 0x3d60, 0x3d5d, 0x3d6b,
+ 0x3fd0, 0x3d63, 0x3d67, 0x3fc5, 0x3d5e, 0x3fd2, 0x4011, 0x6fc5, 0x71cd,
+ 0x3df9, 0x3df3, 0x43ad, 0x43a4, 0x43a9, 0x43b0, 0x439d, 0x3df6, 0x4598,
+ 0x729c, 0x3e51, 0x3e53, 0x3e52, 0x4892, 0x3e9b, 0x488a, 0x3e9c, 0x488d,
+ 0x4896, 0x3ef7, 0x7499, 0x748f, 0x7491, 0x4a45, 0x4a4b, 0x4b0f, 0x4b16,
+ 0x3f3b, 0x4b8a, 0x3f3e, 0x3f3d, 0x4cc9, 0x3f69, 0x4cc8, 0x4cca, 0x4e64,
+ 0x3fc3, 0x3fc4, 0x3fc7, 0x4e5d, 0x4e63, 0x7639, 0x3fc6, 0x762e, 0x3fc8,
+ 0x4e88, 0x4f3a, 0x4f39, 0x769f, 0x76a0, 0x3fe6, 0x3ff8, 0x5017, 0x5093,
+ 0x4007, 0x5095, 0x4064, 0x4068, 0x5276, 0x7794, 0x4065, 0x77ae, 0x5280,
+ 0x527b, 0x4069, 0x5248, 0x52a8, 0x5288, 0x538b, 0x538a, 0x538c, 0x53fc,
+ 0x40da, 0x40e0, 0x78e6, 0x5558, 0x40de, 0x5551, 0x5555, 0x5553, 0x411c,
+ 0x411d, 0x411a, 0x56dc, 0x417b, 0x417a, 0x417c, 0x585c, 0x4178, 0x4177,
+ 0x5865, 0xf95a, 0x41b1, 0x59ee, 0x41b2, 0x41b0, 0x59f0, 0x7abc, 0x59f2,
+ 0x4236, 0x5c35, 0x422e, 0x5c22, 0x7bd6, 0x5c20, 0x4234, 0x5c2d, 0x5c28,
+ 0x5c26, 0x5c3c, 0x422a, 0x5c38, 0x4233, 0x422d, 0x422f, 0x4231, 0x422b,
+ 0x4232, 0x5c2a, 0x4235, 0x5c1a, 0x5c30, 0x5be3, 0x5c19, 0x5ee9, 0x5ee7,
+ 0x7ccf, 0x60d6, 0x60c4, 0x4308, 0x6087, 0x4306, 0x60c7, 0x60d9, 0x7e18,
+ 0x60df, 0x434d, 0x4361, 0x630a, 0x6301, 0x63b1, 0x4378, 0x63c1, 0x4394,
+ 0x4395, 0x6476, 0x650d, 0x650e, 0x43c1, 0x43c3, 0x806d, 0x6807, 0x4439,
+ 0x6809, 0x6816, 0x443a, 0x443b, 0x4435, 0x4436, 0x680e, 0x443c, 0x8190,
+ 0x6806, 0x691e, 0x694a, 0x4458, 0x447c, 0x447d, 0x448d, 0x448c, 0x6ea6,
+ 0x6e91, 0x453b, 0x453f, 0x6eb8, 0x6e96, 0x4532, 0x452d, 0x6ec5, 0x452f,
+ 0x4539, 0x452e, 0x453a, 0x6f0a, 0x4536, 0x4531, 0x453e, 0x4538, 0x8552,
+ 0x4534, 0x6eb2, 0x4541, 0x6eb7, 0x6eb4, 0x6e89, 0x6e8d, 0x4530, 0x6e87,
+ 0x6ec2, 0x6e9c, 0x6e92, 0x4543, 0x6eca, 0x8550, 0x6e8a, 0x71e0, 0x4598,
+ 0x71e6, 0x71e5, 0x87a0, 0x73a5, 0x73b3, 0x8786, 0x45da, 0x45d7, 0x73b5,
+ 0x73af, 0x8795, 0x73b0, 0x73cc, 0x878c, 0x73a2, 0x73be, 0x73c6, 0x73ac,
+ 0x73ae, 0x4618, 0x8860, 0xf9c3, 0x7708, 0x7705, 0x4652, 0x8928, 0x76fe,
+ 0x464e, 0x8920, 0x7700, 0x464f, 0x4650, 0x7864, 0x7868, 0x89a8, 0x4686,
+ 0x4687, 0x4689, 0x786a, 0x7869, 0x790d, 0x7912, 0x46a2, 0x46a3, 0x790f,
+ 0x46a1, 0x7a67, 0x7a79, 0x7a72, 0x7a66, 0x7a7c, 0x46f9, 0x46fd, 0x7a68,
+ 0x7a85, 0x7a76, 0x7a74, 0x7a71, 0x7a64, 0x473e, 0x473c, 0x7bf8, 0x474d,
+ 0x7c6c, 0x474e, 0x7ceb, 0x4781, 0x4783, 0x4782, 0x7db8, 0x4780, 0x4788,
+ 0x7f2d, 0x7f2e, 0x7f28, 0x7f29, 0x7f31, 0x47b9, 0x7f2f, 0x7f2a, 0x8e3a,
+ 0x80a4, 0x80b7, 0x80bf, 0x4811, 0x480d, 0x4810, 0x4813, 0x8263, 0x483c,
+ 0x4862, 0x4863, 0x8367, 0x85be, 0xf9e0, 0x8795, 0x879c, 0x4903, 0x4906,
+ 0x4902, 0x4901, 0x8871, 0x8872, 0x4905, 0x886f, 0x9194, 0x9311, 0x89f1,
+ 0x9337, 0x4936, 0x89e8, 0x4935, 0x9343, 0xf9ea, 0x49a1, 0x49a3, 0x8d49,
+ 0x8d64, 0x49a0, 0x8d48, 0x49ea, 0x96a6, 0x49e8, 0x8f2c, 0x8fe1, 0x8fef,
+ 0x90c0, 0x4a21, 0x4a1b, 0x90d7, 0x90d4, 0x4a49, 0x4a48, 0x92ad, 0x9795,
+ 0x4a62, 0x4a61, 0x4a64, 0x4a60, 0x4a63, 0x92ae, 0x92ac, 0x9796, 0x4a66,
+ 0x4aac, 0x4aab, 0x9427, 0x94ae, 0x4ac3, 0x94b0, 0x4ac4, 0x9825, 0x94c0,
+ 0x94c4, 0x4b08, 0x4b09, 0x4b0a, 0x4b06, 0x4b07, 0x4b41, 0x9707, 0x4b45,
+ 0x96fd, 0x4b43, 0x4b44, 0x9926, 0x9934, 0x4b47, 0xfa04, 0x981b, 0x981c,
+ 0x4b71, 0x98b2, 0x98b4, 0x98b7, 0x98b1, 0x98b3, 0x98ae, 0x4b8b, 0x4bd4,
+ 0x4bd3, 0x4bd1, 0x9aba, 0x4bd2, 0x9a3f, 0x9b36, 0x4bf7, 0x4bf8, 0x9b31,
+ 0x9b3b, 0x9b35, 0x9b3a, 0x9b37, 0x9c22, 0x9c36, 0x9c32, 0x4c22, 0x9cc0,
+ 0x4c45, 0x4c41, 0x9b81, 0x4c40, 0x9b8a, 0x9d85, 0x9b7f, 0x4c42, 0x9d89,
+ 0x4cc1, 0x4cc5, 0x9fe1, 0x4cbb, 0x4cb9, 0x4cbd, 0x4cc9, 0xa00a, 0x9d11,
+ 0xa009, 0x4cbf, 0x4cc7, 0x9fe8, 0x4cc3, 0x4d24, 0x4d31, 0x4d33, 0xa318,
+ 0x4d32, 0x4d34, 0x4d52, 0x4d61, 0x9ed9, 0x4d7a, 0x4d82, 0x9f3c, 0xa5c5,
+ 0x5123, 0x040d, 0x040c, 0x0421, 0x512c, 0x0616, 0x080e, 0x350f, 0x5295,
+ 0x0817, 0x3523, 0x3525, 0x1048, 0x3606, 0x3608, 0x5688, 0x1055, 0x1049,
+ 0x104c, 0x568b, 0x104f, 0x103d, 0x367a, 0x3677, 0x148a, 0x14a8, 0x168a,
+ 0x372e, 0x18cb, 0x372f, 0x18d5, 0x21d4, 0x381b, 0x3813, 0x1f5c, 0x1f75,
+ 0x3866, 0x2161, 0x3865, 0x1696, 0x38f7, 0x258a, 0x28d0, 0x61e1, 0x61d7,
+ 0x2849, 0x28cf, 0x399c, 0x2dd6, 0x2d7f, 0x3a53, 0x2dd2, 0x2dcf, 0x3006,
+ 0x3009, 0x3aba, 0x65a3, 0x3b22, 0x66d3, 0x3706, 0x36f1, 0x3704, 0x6a8b,
+ 0x36fa, 0x36f4, 0x3beb, 0x3bdd, 0x36f9, 0x3bef, 0x368b, 0x3703, 0x3c47,
+ 0x3c46, 0x39a2, 0x3c78, 0x6bac, 0x3c89, 0x3c0c, 0x3c0b, 0x3d68, 0x3d76,
+ 0x3d74, 0x3d79, 0x4024, 0x3d7a, 0x3d77, 0xf914, 0x3d71, 0x4025, 0x3d72,
+ 0x43f6, 0x3dff, 0x43fb, 0x3e05, 0x4532, 0x45fb, 0x3e54, 0x46f2, 0x46f3,
+ 0x3e9e, 0x3e9f, 0x7374, 0x489c, 0x4a72, 0x3efa, 0x4a74, 0x3f44, 0x3f3f,
+ 0x3f40, 0x4b86, 0x3f42, 0x4b8e, 0x4b90, 0x3f51, 0x4bcd, 0x4bf7, 0x4cd6,
+ 0x4e84, 0x4e95, 0x4e8a, 0x7640, 0x3fca, 0x4e97, 0x7641, 0x3fce, 0x3fc9,
+ 0x4fa0, 0x4fa1, 0x5022, 0x50a6, 0x50a4, 0x4009, 0x76e8, 0x406c, 0x406e,
+ 0x4070, 0x406d, 0x406b, 0x4071, 0x4072, 0x52af, 0x52b0, 0x52bd, 0x408c,
+ 0x40e4, 0x5576, 0x40e1, 0x557b, 0x5579, 0x78f6, 0x40e7, 0x7900, 0x40e2,
+ 0x411f, 0x56ee, 0x56f1, 0x417e, 0x5894, 0x4180, 0x7a59, 0x7a55, 0x5891,
+ 0x41b9, 0x41b7, 0x41b8, 0x5a10, 0x41ba, 0x7af4, 0x5aaf, 0x41d3, 0x423f,
+ 0x7c04, 0x4245, 0x4241, 0x7c15, 0x4242, 0x4243, 0x423b, 0x4238, 0x5c7b,
+ 0x5c77, 0x423a, 0x7bf5, 0x5c80, 0x5cc6, 0x423c, 0x5c7c, 0x5c90, 0x423e,
+ 0x5ca3, 0x5c7d, 0x5cbd, 0x429e, 0x429f, 0x42a1, 0x5f13, 0x429b, 0x4312,
+ 0x6111, 0x6144, 0x610d, 0x4318, 0x430c, 0x6314, 0x4362, 0x63b8, 0x437a,
+ 0x63b7, 0x6483, 0x43ae, 0x43af, 0x6514, 0x43ad, 0x651c, 0x43c4, 0x43c7,
+ 0x43c6, 0x43c5, 0x65d4, 0x65d5, 0x81c1, 0x4440, 0x6843, 0x6842, 0x443f,
+ 0x4441, 0xf98a, 0x6841, 0x694e, 0x447f, 0x6a87, 0x4486, 0x4481, 0x4480,
+ 0x448e, 0x454a, 0x6f39, 0x4547, 0x6f8f, 0x6f2a, 0x454b, 0x4546, 0x454e,
+ 0x857d, 0x6f2b, 0x85a5, 0x6f50, 0x4548, 0x6f6e, 0x4545, 0x6f3b, 0x6f53,
+ 0x6f5f, 0x6f2f, 0x6f30, 0x6f38, 0x6f4c, 0x71f1, 0x45db, 0x45e7, 0x45e4,
+ 0x7407, 0x7416, 0x45e1, 0x7414, 0x45e9, 0x73fb, 0x45e5, 0x45e0, 0x45e3,
+ 0x73f8, 0x7410, 0x741d, 0x73ff, 0x740b, 0x7404, 0x45ea, 0x73fe, 0x75ff,
+ 0x893a, 0x4654, 0x4658, 0x465c, 0x7723, 0x4655, 0x468b, 0x468c, 0x46a6,
+ 0x46a5, 0x792a, 0x7aa0, 0x7a98, 0x7a9c, 0x46ff, 0x7a9e, 0x7aa6, 0x7ab5,
+ 0x7ab0, 0x4730, 0x4740, 0x4741, 0x7cf9, 0x7cf5, 0x4786, 0x7dd2, 0x47bf,
+ 0x47bd, 0x7f50, 0x7f4e, 0x7f4b, 0x7f52, 0x7f4d, 0x47be, 0x4819, 0x80e4,
+ 0x481c, 0x80da, 0x481b, 0x4817, 0x4818, 0x8e51, 0x80df, 0x80e8, 0x483d,
+ 0x486a, 0x4866, 0x8370, 0x8372, 0x4867, 0x8377, 0x4868, 0x48ad, 0x48ae,
+ 0x85e6, 0x87aa, 0x48d6, 0x4909, 0x888c, 0x9198, 0x8889, 0x490c, 0x490a,
+ 0x8a32, 0x493b, 0x493a, 0x9384, 0x9381, 0x8a7a, 0x936f, 0x8c9e, 0x8ca0,
+ 0x8d70, 0x49af, 0x49aa, 0x49ab, 0x8d6e, 0x8d66, 0x49b1, 0x8d65, 0x49ac,
+ 0x49ec, 0x8f7f, 0x8fe0, 0x4a01, 0x8fff, 0x90f6, 0x90f7, 0x90f5, 0x4a23,
+ 0x90fc, 0x4a24, 0x4a1e, 0x90f9, 0x4a4a, 0x4a65, 0x4a6a, 0x92ca, 0x92c3,
+ 0x92c6, 0x4a69, 0x93b8, 0x93bd, 0x4a95, 0x93bc, 0x9405, 0x94e0, 0x94e9,
+ 0x9842, 0x94df, 0x94ec, 0x4acc, 0x94e5, 0x94de, 0xfa00, 0x4acf, 0x94f0,
+ 0x94e3, 0x4b0f, 0x95ec, 0x4b0e, 0x4b0b, 0x4b10, 0x4b0d, 0x4b0c, 0x95f2,
+ 0x95ef, 0x95e9, 0x96fb, 0x4b46, 0x4b48, 0x9937, 0x4b49, 0x9737, 0x98de,
+ 0x4b91, 0x4b8e, 0x98da, 0x4bd8, 0x4bd6, 0x9a4b, 0x4bda, 0x9a49, 0x4bd7,
+ 0x9ad5, 0x9aff, 0x4bf9, 0x9b52, 0x9b47, 0x4bfc, 0x9b48, 0x9ccc, 0x9cd0,
+ 0x9ba9, 0x4c4a, 0x9ba7, 0x4c4e, 0x9bb3, 0x9bac, 0x9bb0, 0x9d86, 0x9da7,
+ 0x9da3, 0x9b9c, 0x9db6, 0x9dad, 0xa013, 0x9d3c, 0x9d1c, 0x9d3a, 0x4cd3,
+ 0x4ccd, 0x4cd1, 0xa017, 0xa022, 0x9d32, 0x9d34, 0xa049, 0xa026, 0xfa0c,
+ 0xa03c, 0xa028, 0xa2a8, 0x9ec7, 0xa3fb, 0x4d62, 0xa432, 0xa4d6, 0xa548,
+ 0x4d83, 0x9f3f, 0xa5c6, 0x4d92, 0x349f, 0x34a0, 0x0425, 0x0426, 0x0424,
+ 0x0433, 0x0570, 0x3527, 0x0b90, 0x360b, 0x1095, 0x10a1, 0x1092, 0x108f,
+ 0x109f, 0x1096, 0x1098, 0x109d, 0x10a0, 0x368d, 0x1697, 0x18eb, 0x3770,
+ 0x1f87, 0x5eeb, 0x2432, 0x399a, 0x399f, 0x399d, 0x28d8, 0x28fb, 0x2906,
+ 0x399b, 0x28d1, 0x61d5, 0xf8b0, 0x3a60, 0x3a64, 0x3a69, 0x3a63, 0x3a67,
+ 0x3a62, 0x2df6, 0x2e04, 0x2dfe, 0x6502, 0x2dff, 0x2df7, 0x3018, 0x3aac,
+ 0x3014, 0x30cd, 0x3120, 0x32de, 0x3b26, 0x3b23, 0x3b25, 0x3745, 0x3753,
+ 0x3bf8, 0x374b, 0x3755, 0x3741, 0x3bf7, 0x3bfb, 0x3bfa, 0x375c, 0x3754,
+ 0x3a71, 0x3ad0, 0x3cb0, 0x3caf, 0x3c53, 0x4029, 0x407e, 0x3d7e, 0x4079,
+ 0x3d7d, 0x3d80, 0x4070, 0x406a, 0x3d7f, 0x3d86, 0x4085, 0x4064, 0x7012,
+ 0x4078, 0x3d81, 0x4432, 0x4427, 0x442f, 0x3e24, 0x3e58, 0x3e57, 0x3ea0,
+ 0x48ba, 0x3efe, 0x4a71, 0x4a8c, 0x3f15, 0x4b1a, 0x3f47, 0x3f46, 0x4b98,
+ 0x4ce4, 0x3f6b, 0x3f6c, 0x7585, 0x7654, 0x4ec2, 0x3fcc, 0x4eba, 0x7655,
+ 0x4ec8, 0x3fcb, 0x76a7, 0x76a8, 0x3ff9, 0x50b9, 0x50b8, 0x50a5, 0x52e2,
+ 0x4078, 0x407a, 0x4075, 0x52d9, 0x4076, 0x4077, 0x52ac, 0x52dd, 0x40ea,
+ 0x40ee, 0x40ed, 0x559d, 0x40ec, 0x790f, 0x5711, 0x5703, 0x4184, 0x4185,
+ 0x4183, 0x58ee, 0x41bc, 0x41bd, 0x41d4, 0x5ca4, 0x5cd8, 0x5cdd, 0x5cde,
+ 0x4255, 0x5ce7, 0x4250, 0x424c, 0x4248, 0x5cd4, 0x4253, 0x5cce, 0x4257,
+ 0x4254, 0x424e, 0x424a, 0x4251, 0x5cf1, 0x5cd3, 0x4249, 0x424b, 0x4263,
+ 0x5cca, 0x5ce9, 0x42a7, 0x42a6, 0x42a4, 0x5f1a, 0x5f41, 0xf968, 0x7ce4,
+ 0x7ce5, 0x613d, 0x6140, 0x7e65, 0x7e4e, 0x4317, 0x6143, 0x4316, 0x613f,
+ 0x613c, 0x4363, 0x6321, 0x6320, 0x7f82, 0x63c6, 0x437b, 0x437c, 0x63d1,
+ 0x63ca, 0x648e, 0x6491, 0x43b0, 0x802d, 0x65e3, 0x6888, 0x4442, 0x6870,
+ 0x4444, 0x699d, 0x6a9d, 0x6a91, 0x6a98, 0x6a99, 0x4488, 0x448f, 0x4553,
+ 0x455b, 0x6fbf, 0x4559, 0x6fae, 0x6fb1, 0x6fcc, 0x7004, 0x85ca, 0x7016,
+ 0x6fcd, 0x4554, 0x85bc, 0x6fe0, 0x6fcb, 0x6fd4, 0x6fc9, 0x71ff, 0x4599,
+ 0x71fd, 0x7457, 0x7452, 0x7450, 0x7445, 0x744d, 0x45f1, 0x7453, 0x45ef,
+ 0x7482, 0x7444, 0x75ce, 0x75cf, 0x75d2, 0x7602, 0x774f, 0x7758, 0x4662,
+ 0x7743, 0x4663, 0x7752, 0x4660, 0x4661, 0x465f, 0x7749, 0x7753, 0x774d,
+ 0x468d, 0x7884, 0x468e, 0x7883, 0x7932, 0x7ae2, 0x4709, 0x7ae4, 0x7ad3,
+ 0x4705, 0x7ad5, 0x7add, 0x4703, 0x4706, 0x7aec, 0x7ae6, 0x7ad2, 0x7afa,
+ 0x7ada, 0x4731, 0x7c06, 0x7c04, 0x474f, 0x7c7b, 0x7d04, 0x7d02, 0x4766,
+ 0x8cff, 0x47c4, 0x7f60, 0x47c3, 0x47c1, 0x47c5, 0x8107, 0x8105, 0x810c,
+ 0x4821, 0x815a, 0x481f, 0x4822, 0x811a, 0x4827, 0x4820, 0x838a, 0x486d,
+ 0x486c, 0x486b, 0x486f, 0x4870, 0x838c, 0x8609, 0x88a6, 0x91a6, 0x88ac,
+ 0x88a9, 0x4942, 0x8a8b, 0x93b6, 0x8a8c, 0x4944, 0x4940, 0x8a88, 0x8a89,
+ 0x493f, 0x8a93, 0x93ab, 0x498b, 0x8d83, 0x8f4f, 0x4a25, 0x4a28, 0x9120,
+ 0x9721, 0x9236, 0x92e2, 0x4a75, 0x4a72, 0x92ee, 0x4a6f, 0x92e7, 0x92e9,
+ 0x4a76, 0x4a71, 0x97a7, 0x92df, 0x4a97, 0x93c7, 0x4ad7, 0x9509, 0x4ad6,
+ 0x9501, 0x4ad8, 0x4adc, 0x4adb, 0x4ad4, 0x983e, 0x4b13, 0x4b11, 0x4b14,
+ 0x9605, 0x960c, 0x9778, 0x975d, 0x4b51, 0x4b50, 0x4b53, 0x4b54, 0x4b52,
+ 0x975e, 0x9760, 0x9767, 0x4b6d, 0xfa05, 0x98f4, 0x4b95, 0x4b99, 0x98f1,
+ 0x4b9a, 0x98fa, 0x4b93, 0x4b97, 0x98f8, 0x98f9, 0x9909, 0x98fd, 0x98f7,
+ 0x4bdc, 0x9a59, 0x4bfd, 0x9b60, 0x9b68, 0x4bfe, 0x4c00, 0x4c02, 0x4c01,
+ 0x4c03, 0x9b6a, 0x9c14, 0x9c3e, 0x9ce4, 0x4c27, 0x4c26, 0x4c24, 0x4c4c,
+ 0x9bbc, 0x4c50, 0x4c55, 0x4c53, 0x9bb7, 0x4c52, 0x9dd2, 0x4c57, 0x9bbe,
+ 0x4c58, 0x4cd6, 0xa058, 0xa050, 0x4cd4, 0xa05c, 0x4cda, 0x4cd9, 0x8119,
+ 0x9d62, 0x4cd5, 0x4ce4, 0xfa0e, 0x4cdc, 0x4d1b, 0x9e8f, 0x4d37, 0x4d36,
+ 0x4d4b, 0x9ecb, 0x4d66, 0x4d76, 0xa4df, 0x4d7e, 0x4d7d, 0x4d7f, 0x4d84,
+ 0x4d8b, 0xa5d9, 0x4d94, 0x34a1, 0x3511, 0x0966, 0x3610, 0x56a9, 0x10e1,
+ 0x10ef, 0x10e8, 0x1233, 0x5913, 0x18fe, 0x3732, 0x5bf4, 0x1aef, 0x1aec,
+ 0x1cec, 0x1f9c, 0x3820, 0x1f99, 0x2170, 0x216e, 0x389d, 0x2441, 0x61ec,
+ 0x61ef, 0x2902, 0x2901, 0x39a5, 0x2a1b, 0x2e23, 0x2e25, 0x2e24, 0x2e26,
+ 0x2e33, 0x2e2f, 0x308f, 0x3356, 0x3c02, 0x3bfe, 0x3c01, 0x6ad6, 0x3c03,
+ 0x3bff, 0x3799, 0x3c04, 0xf8ed, 0x3c4a, 0x3ad9, 0x3d87, 0x40b7, 0x3d84,
+ 0x40b6, 0x3d85, 0x7209, 0x4454, 0x4457, 0x447a, 0x3e59, 0x7379, 0x4a8e,
+ 0x74c6, 0x4a90, 0x4ab9, 0x3f04, 0x3f49, 0x3f48, 0x4cef, 0x3f6d, 0x3fd2,
+ 0x3fd3, 0x4ee2, 0x3fd1, 0x4ed6, 0x4ed8, 0x4eda, 0x4ede, 0x3fe7, 0x400a,
+ 0x77c3, 0x5308, 0x5304, 0x530a, 0x530b, 0x5302, 0x40f0, 0x55aa, 0x55c1,
+ 0x791f, 0x58d7, 0x58d9, 0x7a65, 0x58de, 0x58da, 0x41be, 0x41bf, 0x5a2a,
+ 0x7ac6, 0x7c3a, 0x5d31, 0x7c36, 0x5d2b, 0x5d2c, 0x5d29, 0x5d2e, 0x425e,
+ 0x5d27, 0x5d28, 0x425b, 0x5d5f, 0x5d30, 0x5d24, 0x7ceb, 0x42ab, 0x5f3a,
+ 0x42ac, 0x5f39, 0x5f40, 0x6180, 0x6184, 0x431f, 0x431d, 0x6175, 0x6176,
+ 0x431c, 0x617c, 0x431e, 0x6178, 0x619b, 0x617e, 0x625a, 0x4364, 0x632c,
+ 0x7f84, 0x649c, 0x6847, 0x688a, 0x4448, 0x4447, 0x6927, 0x704a, 0x455e,
+ 0x4561, 0x7027, 0x85e0, 0x85f3, 0x702e, 0x7026, 0x7208, 0x45f7, 0x74bd,
+ 0x7496, 0x45f4, 0x45f8, 0x881e, 0x74be, 0x748e, 0x7774, 0x4664, 0x7780,
+ 0x4692, 0x468f, 0x4690, 0x89b4, 0x4693, 0x46a8, 0x793c, 0x793d, 0x46a9,
+ 0x793a, 0x7942, 0x89f9, 0x7b24, 0x7b06, 0x8b44, 0x470e, 0x7b15, 0x470f,
+ 0x7b02, 0x7b0c, 0x470b, 0x7b08, 0x7b0a, 0x7b05, 0x7b1c, 0x4710, 0x4751,
+ 0x7c82, 0x4750, 0x7c86, 0x4763, 0x7e03, 0x7f7b, 0x47c7, 0x7f7a, 0x8e71,
+ 0x4824, 0x4826, 0x8e6e, 0x8180, 0x8e79, 0x8158, 0x8ec4, 0x4874, 0x4873,
+ 0x4872, 0x83aa, 0x83ab, 0x8436, 0x844a, 0x48b1, 0x908c, 0x87d6, 0x490e,
+ 0x4911, 0x4910, 0x490f, 0x4912, 0x4949, 0x93c9, 0x494f, 0x494d, 0x8b03,
+ 0x8acf, 0x4955, 0x8d9f, 0x8da2, 0x902a, 0x902f, 0x9144, 0x9140, 0x4a2c,
+ 0x4a2b, 0x9311, 0x930f, 0x4a79, 0x930d, 0x9307, 0x9303, 0x4a7a, 0x97b0,
+ 0x4a99, 0x4a9a, 0x9435, 0x4aae, 0x4aaf, 0x9504, 0x4ae4, 0x4ae1, 0x4ade,
+ 0x4ae6, 0x4adf, 0x9526, 0x4ae7, 0x4ae2, 0x4ae0, 0x951e, 0x4ae5, 0x985a,
+ 0x960e, 0x4b18, 0x961d, 0x961e, 0x961f, 0x4b56, 0x9788, 0x9946, 0x978d,
+ 0x9791, 0x9780, 0x4b6e, 0x9854, 0x9855, 0x4b9d, 0x4ba0, 0x4b9c, 0x9925,
+ 0x991a, 0x4ba1, 0x4ba2, 0x4b9f, 0x4bdf, 0x4bde, 0x9ac3, 0x4bea, 0x9b88,
+ 0x4c06, 0x9b7a, 0x4c04, 0x9b0f, 0x9b80, 0x9d1e, 0x9dfc, 0x9e25, 0x4c5f,
+ 0x9bf4, 0x9bfa, 0x4c5c, 0x9e0b, 0x4c5e, 0x9e06, 0x9e04, 0x9bdd, 0x4c59,
+ 0x9df9, 0x9e00, 0x4c64, 0x4c5d, 0x4c62, 0x9e02, 0x4c65, 0x9e07, 0x9bed,
+ 0x4c5b, 0x9bef, 0xa0b5, 0x4cdd, 0xa087, 0x4cdf, 0xa093, 0xfa0f, 0x4ce2,
+ 0xa0be, 0xa266, 0x4d27, 0xa2c7, 0xa2cf, 0x9e96, 0x4d3a, 0x4d3c, 0xa33d,
+ 0x4d39, 0xa33c, 0xa347, 0x4d3d, 0x4d3b, 0x9eb3, 0x4d4c, 0xa3c3, 0x4d68,
+ 0x9ee2, 0xa51b, 0x4d80, 0x4d85, 0xa5c9, 0x4d95, 0xa5dd, 0x4d96, 0xa693,
+ 0x9f8f, 0x043d, 0x34a4, 0x3512, 0x56b1, 0x3625, 0x14e6, 0x5b41, 0x3737,
+ 0x1af7, 0x1fb0, 0x1fae, ERROR, 0x3868, 0x3867, 0x389e, 0x259f, 0x259e,
+ 0x2930, 0x39aa, 0x294f, 0x39a9, 0x39a4, 0x2927, 0x2951, 0x3a71, 0x3a6f,
+ 0x2e51, 0x2e54, 0x2e56, 0x3027, 0x3aad, 0x3024, 0x6af6, 0x3c0c, 0x6af2,
+ 0x3c0b, 0x37ec, 0x37c4, 0x3c0f, 0x3c79, 0x40f8, 0x40f6, 0x40f7, 0x40ed,
+ 0x3d8d, 0x3d8f, 0x40f4, 0x40ef, 0x3d8e, 0x3e0c, 0x447f, 0x44a2, 0x447e,
+ 0x3ea6, 0x48c5, 0x3ea3, 0x3ea4, 0x3ea5, 0x7588, 0x3f6e, 0x4ef1, 0x4ef2,
+ 0x3ffa, 0x502f, 0x407c, 0x407e, 0x407b, 0x407d, 0x5323, 0x5329, 0x408d,
+ 0x40f4, 0x40f3, 0x571b, 0x58eb, 0x4189, 0x58ea, 0x5a33, 0x41c0, 0x5d63,
+ 0x4265, 0x5d92, 0x5d65, 0x42ad, 0x4325, 0x61a0, 0xf970, 0x625e, 0x43c9,
+ 0x68aa, 0x444a, 0x68a9, 0x8267, 0x4489, 0x709c, 0x4566, 0x4570, 0x7092,
+ 0x456d, 0x4569, 0x4567, 0x7086, 0x4572, 0x860e, 0x456e, 0x7083, 0x459c,
+ 0x45fc, 0x45fd, 0x4604, 0x45ff, 0xf9c2, 0x45fe, 0x4600, 0x74ce, 0x4666,
+ 0x4669, 0x7793, 0x46aa, 0x46ab, 0x4717, 0x7b2e, 0x7b27, 0x7b28, 0x4715,
+ 0x8b5e, 0x4712, 0x8d0e, 0x7e18, 0x7e16, 0x7f8d, 0x47ca, 0x7f8e, 0x47c9,
+ 0x47cb, 0x7f90, 0x7f8f, 0x8181, 0x4829, 0x4828, 0x818a, 0x818c, 0x828d,
+ 0x4840, 0x4875, 0x4876, 0x83b2, 0x4888, 0x87d9, 0x91b6, 0x4957, 0x9401,
+ 0x8b0d, 0x495f, 0x8b13, 0x941d, 0x4958, 0x495b, 0x8b1b, 0x942f, 0x8dac,
+ 0x49b3, 0x8db3, 0x49ef, 0x915e, 0x4a30, 0x9160, 0x9168, 0x9163, 0x9169,
+ 0x9167, 0x4a41, 0x4a4b, 0x9328, 0x4a7d, 0x932e, 0x9330, 0x4a7c, 0x9326,
+ 0x9331, 0x9341, 0x97e0, 0x93da, 0x97db, 0xf9fa, 0x940b, 0x9861, 0x9534,
+ 0x9533, 0x4ae8, 0x4aea, 0x4ae9, 0x9539, 0x953b, 0x9540, 0x9630, 0x4b1b,
+ 0x9632, 0x9637, 0x4b55, 0x994a, 0x4b59, 0x4b58, 0x9781, 0x979f, 0x97a7,
+ 0x4ba4, 0x4ba3, 0x9944, 0x9947, 0x9948, 0x993d, 0x9a33, 0x4ba7, 0x9949,
+ 0x4be0, 0x9a80, 0x9ba0, 0x9b9d, 0x4c08, 0x4c0a, 0x4c09, 0x9b9c, 0x9c47,
+ 0x9d07, 0x4c71, 0x9c0f, 0x4c6c, 0x9e49, 0x9c11, 0x9e44, 0x9c03, 0x9c01,
+ 0x4c6e, 0x9edf, 0x9c16, 0x9e4c, ERROR, 0x9e4f, 0x4ce0, 0x4cee, 0xa0c1,
+ 0x4ceb, 0xa0b9, 0xa0cb, 0xa0cf, 0xa0c4, 0x9d93, 0x4cea, 0x4cef, 0x4ce7,
+ 0xa0ca, 0xa0c3, 0xa2d0, 0xa351, 0x4d48, 0x4d49, 0xa3a8, 0xa3c7, 0xa3c6,
+ 0x4d4d, 0xa3ca, 0xa402, 0x4d55, 0xa45d, 0xa45a, 0x4d6a, 0x4d6c, 0xa459,
+ 0x4d6b, 0xa4cc, 0xa51c, 0xa5cc, 0x4d98, 0x4d99, 0x4d97, 0xa5e8, 0xa5ec,
+ 0xa5ea, 0xa6ad, 0xa6b0, 0x045f, 0x0458, 0x0457, 0x535b, 0x0b93, 0x3616,
+ 0x113b, 0x56bf, 0x1134, 0x14f2, 0x3739, 0x1afd, 0x1c1d, 0x3825, 0x5dce,
+ 0x2304, 0x2448, 0x2958, 0x2e4f, 0x3a74, 0x2e6e, 0x2e72, 0x3aae, 0x302e,
+ 0x37fc, 0x37f4, 0x3c36, 0x410e, 0x3d92, 0x3d94, 0x4114, 0x3d95, 0x4119,
+ 0x3e0d, 0x44a6, 0x3e25, 0x4ac9, 0x4ac0, 0x4acc, 0x4b1b, 0x4baa, 0x4ba8,
+ 0x4f03, 0x3fd5, 0x3fd6, 0x76ac, 0x3fe8, 0x5035, 0x407f, 0x77d2, 0x40f5,
+ 0x40f6, 0x40f7, 0x55d9, 0x4124, 0x418d, 0x418a, 0x5a3f, 0x5a3d, 0x426c,
+ 0x4266, 0x426a, 0x5d8b, 0x4267, 0x426d, 0x4268, 0x7c52, 0x5d68, 0x5d8a,
+ 0x5f58, 0x5f57, 0x61ce, 0x61bc, 0x61c0, 0x61c1, 0x61bf, 0x61ab, 0x625f,
+ 0x4365, 0x64a6, 0x439a, 0x6529, 0x43b1, 0x444b, 0x444d, 0x444c, 0x444e,
+ 0x68b8, 0x4573, 0x4575, 0x70dd, 0x70d6, 0xf9b1, 0x70d5, 0x70e7, 0x70d8,
+ 0x74ec, 0x4603, 0x7500, 0x7507, 0x74fd, 0x74f1, 0x74ff, 0x77aa, 0x77b0,
+ 0x7b48, 0x471e, 0x7b53, 0x8b73, 0x7b4d, 0x4719, 0x471c, 0x471a, 0x471d,
+ 0x8b76, 0x7b43, 0x7b50, 0x4743, 0x4752, 0x7c8c, 0x7e27, 0x4795, 0x7f99,
+ 0x47cc, 0x81b1, 0x482b, 0x81b0, 0x81aa, 0x81ac, 0x482a, 0x8ec7, 0x4877,
+ 0x83c8, 0x83ca, 0x8642, 0x87e0, 0x88e7, 0x88e8, 0x88e6, 0x4913, 0x4914,
+ 0x9434, 0x8b5b, 0x8b56, 0x495d, 0x8b5a, 0x4960, 0x943e, 0x4962, 0x8cb8,
+ 0x8dc5, 0x49b2, 0x49f0, 0x9048, 0x917d, 0x917c, 0x9181, 0x9182, 0x9162,
+ 0x4a4c, 0x9345, 0x4a82, 0x97bc, 0x4a81, 0x4a9b, 0x93e3, 0x4aa4, 0x4aee,
+ 0x4aec, 0x9550, 0x4aed, 0x954f, 0x4af0, 0x4aef, 0x9639, 0x4b1d, 0x963a,
+ 0x4b60, 0x4b5e, 0x4b5d, 0x97c1, 0x994e, 0x996e, 0x4bb1, 0x4bab, 0x4bac,
+ 0x4bad, 0x9971, 0x4bae, 0x9a8c, 0x9a89, 0x4be2, 0x9ae5, 0x9bb3, 0x9bb6,
+ 0x9bb4, 0x9c4d, 0x9b39, 0x9d13, 0x9e78, 0x9c2a, 0x4c7b, 0x9c26, 0x4c78,
+ 0x4c75, 0x9c27, 0x9e72, 0x4cf2, 0x4cf4, 0x4cf3, 0x9dc0, 0x9dc9, 0xa275,
+ 0xa2da, 0xa2d7, 0x4d3f, 0x4d3e, 0x4d40, 0x4d4e, 0x4d57, 0x4d59, 0x4d58,
+ 0x4d56, 0xa469, 0xa467, 0x4d6e, 0xa466, 0xa46f, 0xa471, 0x9eec, 0xa4cf,
+ 0xa523, 0x4d81, 0x4d86, 0xa5a5, 0x4d8f, 0xa5fe, 0xa5fb, 0xa5fd, 0x9f68,
+ 0x4d9b, 0x4db1, 0x4db3, 0x116d, 0x373a, 0x1b05, 0x1c20, 0x3827, 0x1fc8,
+ 0x1fc9, 0x386a, 0x39ac, 0x3127, 0x3c18, 0x381e, 0x3936, 0x3c4c, 0x413d,
+ 0x3d96, 0x48d7, 0x3f4a, 0x4bad, 0x4d00, 0x4081, 0x533a, 0x4083, 0x40f9,
+ 0x40f8, 0x5726, 0x418e, 0x418f, 0x41c1, 0x5db7, 0x5db6, 0x5dc0, 0x4270,
+ 0x5d9b, 0x4271, 0x61d8, 0x432a, 0x432d, 0x437d, 0x8032, 0x8031, 0x68c0,
+ 0x444f, 0x68bf, 0x6abf, 0x4490, 0x7120, 0x70d0, 0x710e, 0x4579, 0x711d,
+ 0x711e, 0x7115, 0x7114, 0x751e, 0x752c, 0x4605, 0x77b9, 0x77b8, 0x77b6,
+ 0x789e, 0x789c, 0x794d, 0x89fd, 0x7b6e, 0x7b60, 0x4721, 0x7b64, 0x7b62,
+ 0x61e5, 0x4732, 0x7fa3, 0x47cd, 0x47cf, 0x83d2, 0x83d5, 0x908e, 0x4916,
+ 0x4915, 0x49b5, 0x4a08, 0x9055, 0x4a32, 0x9193, 0x4a33, 0x4a34, 0x4a3c,
+ 0x9356, 0x97c2, 0x93e9, 0x4a9c, 0x9445, 0x4af4, 0x4af2, 0x967c, 0x4b62,
+ 0x97d3, 0x4b61, 0x4b64, 0x4bb5, 0x9a4b, 0x4bb4, 0x998e, 0x9a97, 0x4be3,
+ 0x9a9b, 0x9a99, 0x9b1c, 0x4c0e, 0x9bcf, 0x9b1b, 0x9c59, 0x4c2c, 0x4c2b,
+ 0x9d20, 0x9d23, 0x9d2a, 0x4c85, 0x4c81, 0x4c7e, 0x4c83, 0x4c80, 0x9eb0,
+ 0x9c42, 0xa12f, 0x9dd4, 0x4cfb, 0x4cf7, 0xa132, 0xa143, 0xa13f, 0xa139,
+ 0x4cf8, 0xa130, 0xa2dd, 0xa3da, 0xa3db, 0x4d5a, 0xa484, 0xa47f, 0xa472,
+ 0xa480, 0xa4ee, 0x4d78, 0xa52a, 0xa522, 0xa571, 0xa5cd, 0x4d9d, 0x4d9c,
+ 0xa60f, 0xa618, 0x046a, 0x34a9, 0x34bf, 0x56d0, 0x56cf, 0x1b0c, 0x5dda,
+ 0x25a6, 0x3a77, 0x3a76, 0x3037, 0x3abb, 0x66ea, 0x3ae2, 0x3d9b, 0x44bc,
+ 0x3e0f, 0x3e5b, 0x4ad5, 0x3f4c, 0x3f6f, 0x3fd9, 0x4f12, 0x4082, 0x534b,
+ 0x5341, 0x53a1, 0x55ec, 0x4274, 0x4272, 0x5dd4, 0x5dd8, 0x5dd9, 0x4273,
+ 0x5dda, 0x5f6c, 0x5f6d, 0x42b1, 0x432e, 0x61e7, 0x61eb, 0x61ec, 0x6262,
+ 0x434e, 0x652b, 0x660d, 0x68cd, 0x6ac3, 0x713f, 0x713c, 0x713e, 0x713d,
+ 0x713a, 0x7138, 0x7544, 0x7545, 0x460b, 0x7548, 0x7550, 0x466c, 0x8b89,
+ 0x7b78, 0x7b79, 0x478b, 0x7e3e, 0x47d0, 0x482d, 0x8654, 0x48e4, 0x4971,
+ 0x8bb9, 0x9458, 0x496f, 0x905f, 0x4a87, 0x4aa5, 0x9572, 0x9575, 0x4b1e,
+ 0x4b65, 0x4bb9, 0x4bb7, 0x4bb8, 0x4be4, 0x9aa3, 0x9aa5, 0x9bdc, 0x9bdd,
+ 0x9c5a, 0x4c8c, 0x4c89, 0x4c8a, 0x9edb, 0x9edc, 0x4c8b, 0xa1ab, 0xa184,
+ 0xa176, 0x4d01, 0x4cfe, 0x9de7, 0x4d03, 0x4d06, 0xa183, 0x9dea, 0x9df1,
+ 0xa27f, 0x4d1d, 0x4d43, 0xa373, 0xa3ad, 0xa3b0, 0x4d4f, 0xa40f, 0xa40c,
+ 0x4d5b, 0x4d70, 0xa579, 0x4d88, 0xa577, 0xa57a, 0x4d89, 0x9f44, 0xa632,
+ 0xa627, 0xa62a, 0xa62c, 0x9f6d, 0xa628, 0xa629, 0xa638, 0x082f, 0x117b,
+ 0x1b0d, 0x5dd9, 0x1fd6, 0x1fd5, 0x2ea1, 0x384c, 0x3d9e, 0x3d9f, 0x3ea7,
+ 0x3f4b, 0x3fdb, 0x3fda, 0x4fc0, 0x77d6, 0x408e, 0x4276, 0x5df4, 0x4330,
+ 0x432f, 0x61f0, 0x4366, 0x633f, 0x457e, 0x755d, 0x7572, 0x7562, 0x883a,
+ 0x7566, 0x8975, 0x466f, 0x7b88, 0x47d1, 0x482f, 0x81e8, 0x81e4, 0x48b2,
+ 0x4918, 0x4917, 0x88ff, 0x4976, 0x91af, 0x91ae, 0x4a4f, 0x4a89, 0x93f2,
+ 0x9448, 0x9581, 0x957e, 0x4af5, 0x4b1f, 0x9652, 0x97ef, 0x9a5d, 0x4be5,
+ 0x9aad, 0x9be6, 0x4c10, 0x9bed, 0x4c0f, 0x9be9, 0x9c61, 0x9c60, 0x9d33,
+ 0x4c2f, 0x4c30, 0x9c64, 0x9f0b, 0x9f08, 0x4c93, 0x4c94, 0x9f07, 0x4d07,
+ 0x4d09, 0x4d08, 0xa1ca, 0x4d0b, 0xa1c6, 0x9e0a, 0xa284, 0xa2eb, 0xa37d,
+ 0x4d50, 0x4d71, 0xa49b, 0xa4a2, 0xa4a1, 0xa4a0, 0xa49c, 0x4d7b, 0x4d7c,
+ 0xa580, 0x9f73, 0xa640, 0x4da1, 0xa639, 0xa63c, 0x4da0, 0x4da2, 0x08ca,
+ 0x361b, 0x1189, 0x3682, 0x303c, 0x3940, 0x4163, 0x4169, 0x3fe9, 0x5353,
+ 0x4084, 0x77e1, 0x5917, 0x591a, 0x5e00, 0x42b3, 0x4334, 0x4333, 0x4580,
+ 0x756f, 0x78ab, 0x46ad, 0x7b91, 0x4744, 0x4755, 0x7fb1, 0x47d2, 0x81ef,
+ 0x8df1, 0x8df2, 0x91b7, 0x91b5, 0x4a8a, 0x9586, 0x965a, 0x4b67, 0x99c6,
+ 0x99cb, 0x4be6, 0x9ab2, 0x4c13, 0x9bf3, 0x9b2d, 0x9f27, 0x4c97, 0x9e0c,
+ 0xa1d5, 0xa1d8, 0x4d0c, 0xa1ec, 0xa287, 0xa2f2, 0x4d46, 0x4d5c, 0x4d74,
+ 0x4d72, 0xa4ad, 0xa4b0, 0xa4fd, 0x9f1f, 0xa587, 0xa64a, 0x4da4, 0x4da3,
+ 0xa64e, 0xa649, 0xa651, 0xa64d, 0x4db4, 0x0472, 0x3536, 0x1b16, 0x386d,
+ 0x3941, 0x3cb2, 0x4171, 0x4174, 0x3f16, 0x7c70, 0x4277, 0x5f7c, 0x457f,
+ 0x718a, 0x7956, 0x487d, 0x9479, 0x8bfa, 0x974a, 0x4a8c, 0x965b, 0x4b68,
+ 0x4bbe, 0x4c15, 0xa1f5, 0xa1f0, 0xa2f3, 0xa37f, 0xa413, 0x4d75, 0x4da5,
+ 0x1b19, 0x2985, 0x2eb0, 0x4177, 0x55ff, 0x4278, 0x4335, 0x7e9d, 0x4582,
+ 0x7187, 0x4583, 0x718b, 0x4671, 0x7b9e, 0x487e, 0x4a8e, 0x958f, 0x9960,
+ 0x4b69, 0x9839, 0x99d4, 0x9af1, 0x9c02, 0x9c6b, 0x9d40, 0x4c9a, 0x4c9b,
+ 0xa210, 0xa4be, 0xa4b9, 0x4d90, 0xa664, 0x9f9e, 0x4ae9, 0x7190, 0x4586,
+ 0x4585, 0x721c, 0x460e, 0x7592, 0x4695, 0x7ba3, 0x4919, 0x91c9, 0x4bc0,
+ 0x99d8, 0x9d44, 0xa224, 0x9ef8, 0x9f3a, 0x9f7d, 0xa670, 0xa6d3, 0x400d,
+ 0x4c16, 0xa4c3, 0x4da9, 0x4daa, 0x4085, 0x5e21, 0x6aca, 0x759c, 0x9c73,
+ 0xa386, 0xa5c1, 0x9c09, 0x9f96, 0xa6d5, 0x4bc2, 0x4c31, 0x4d11, 0x4dab,
+ 0x4c9c, 0x91d4, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, 0x00d1, 0x00cb, 0x00c9, 0x010c, 0x0000, 0x0087, 0x010d, 0x010f,
+ 0xf81d, 0x2398, 0x00d2, 0x0111, 0x007e, 0x0ad3, 0x1552, 0x1cfe, 0x25a9,
+ 0x3942, 0x0009, 0x00d6, 0x04dd, 0x04dc, 0x0502, 0x0573, 0x0676, 0x06a7,
+ 0x06a8, 0x0833, 0x08cc, 0x0a0d, 0x0a2c, 0x0b1b, 0x355a, 0x0b1d, 0x0b99,
+ 0x123e, 0x1d2d, 0x1d2f, 0x2399, 0x33b3, 0x39b6, 0x3b1b, 0x44ef, 0x48e9,
+ 0x0014, 0x0094, 0x00e1, 0x0506, 0x054a, 0x0544, 0x0631, 0x067a, 0x06ad,
+ 0x06ae, 0x06b1, 0x0838, 0x0837, 0x097d, 0x097e, 0x0a2d, 0x0a32, 0x0b23,
+ 0x0b26, 0xf83a, 0x0ba0, 0x16a8, 0x193f, 0x19bc, 0x1bc4, 0x1d3b, 0x2019,
+ 0x2018, 0x21b3, 0x23aa, 0x24be, 0x25ac, 0x2a25, 0x2a66, 0x2a6b, 0x3943,
+ 0x39b5, 0x3aec, 0x3c76, 0x3cbc, 0x4614, 0x15dc, 0x471c, 0x471d, 0x64d0,
+ 0x6612, 0x6af3, 0x8669, 0x49b9, 0x8e11, 0x8e15, 0x8e10, 0x8e13, 0x00a4,
+ 0x00a5, 0x01d0, 0x01ba, 0x01cb, 0x057b, 0x0686, 0x06bb, 0x06ba, 0x06c3,
+ 0x06b9, 0x06c0, 0x34de, 0x0839, 0x083b, 0x0841, 0x08d1, 0x08cf, 0x08d2,
+ 0x092e, 0x096e, 0x098c, 0x0988, 0x0a35, 0x3543, 0x0a3a, 0x0a3b, 0x0a38,
+ 0x0a39, 0x0b2e, 0x0b2c, 0x0bc8, 0x0bb5, 0x0bad, 0x0bb0, 0x0bab, 0x11b3,
+ 0x11a9, 0x16bb, 0x16b9, 0x1b5a, 0x1bcd, 0x1c2b, 0x1d05, 0x37ac, 0x37aa,
+ 0x1d51, 0x1d4b, 0x1fea, 0x1fed, 0x2036, 0x2062, 0x2056, 0x2055, 0x2064,
+ 0x2058, 0x5e07, 0x21da, 0x21d8, 0x23ad, 0x23ab, 0x24c0, 0x24c3, 0x25b3,
+ 0x25b7, 0x25ba, 0x5fcb, 0x38fe, 0x25c7, 0x25b5, 0x298e, 0x2a73, 0x2a6c,
+ 0x2a74, 0xf8b4, 0x2a72, 0x2a71, 0x2a82, 0x2a70, 0x313f, 0x33ba, 0x33b8,
+ 0x39b7, 0x4723, 0x4721, 0x472b, 0x4726, 0x4722, 0x4d25, 0x50e4, 0x5415,
+ 0x64e4, 0x6633, 0x662a, 0x6632, 0x6629, 0x6afb, 0x795b, 0x795c, 0x7c28,
+ 0x866f, 0x866d, 0x866b, 0x866e, 0x8e16, 0x0022, 0x0116, 0x0148, 0x01d8,
+ 0x0200, 0x3441, 0x0480, 0x04e4, 0x34b4, 0x04e7, 0x050c, 0x0553, 0x05b7,
+ 0x0ae8, 0x06d1, 0x06e5, 0x06d8, 0x06d6, 0x06da, 0x06d9, 0x06d5, 0x06e6,
+ 0x06d4, 0x06d3, 0x0844, 0x08d6, 0x08d7, 0x0913, ERROR, 0x0970, 0x0992,
+ 0x09db, 0x09da, 0x0a41, 0x0a43, 0x0b33, 0x0bf6, 0x0bd4, 0x0bdd, 0x0bd0,
+ 0x0c04, 0x0bd9, 0x0bdb, 0x0c05, 0x0bd3, 0x0be1, 0x1280, 0x1277, 0x1281,
+ 0x1282, 0x1283, 0xf85c, 0x1561, 0x1560, 0x16d8, 0x16d6, 0x16d7, 0x4605,
+ 0x194d, 0x1948, 0x1bd6, 0x1bcf, 0x1bd9, 0x1bd8, 0x1c3d, 0x37b3, 0x1d54,
+ 0x1d5b, 0x1d5c, 0x37b4, 0x1d59, 0x1d58, 0x1d5a, 0x1d55, 0x1d56, 0x1d82,
+ 0x1ff0, 0x201c, 0x206a, 0x2069, 0x2071, 0x2067, 0x206c, 0x206e, 0x2079,
+ 0x218b, 0x21b8, 0x21e7, 0x21e8, 0x21e4, 0x21e6, 0x21e5, 0x21f0, 0x2383,
+ 0x23b7, 0x23bb, 0x23b9, 0x23c5, 0x2453, 0x24c4, 0x24c6, 0x24cb, 0x25c8,
+ 0xf89f, 0x25c9, 0x25db, 0x2994, 0x2a95, 0x2a88, 0x2a8d, 0x2eec, 0x2eee,
+ 0x2ef1, 0x312e, 0x3149, 0x335f, 0x33d1, 0x33cb, 0x3885, 0x3c1d, 0x394a,
+ 0x3947, 0x394b, 0x39bb, 0x39c4, 0x3c7c, 0x3b02, 0x3c82, 0x3c91, 0x3c8f,
+ 0x3c92, 0x418f, 0x4191, 0x41b4, 0x4192, 0x44f4, 0x45aa, 0x4735, 0x4737,
+ 0x473d, 0x473c, 0x472f, 0x4730, 0x48f8, 0x48ef, 0x4b26, 0x3f55, 0x4d26,
+ 0x4d27, 0x4f41, 0x4fc6, 0x4fc7, 0x50eb, 0x50e8, 0x50ea, 0x541a, 0x5419,
+ 0x4126, 0x5923, 0x5924, 0x5e25, 0x6635, 0x6634, 0x6a07, 0x721d, 0x77e1,
+ 0x7bab, 0x8460, 0x8677, 0x867d, 0x49bc, 0x8e1e, 0x8e1a, 0x8e1d, 0x006b,
+ 0x012d, 0x014c, 0x022a, 0x344a, 0x0215, 0x022c, 0x0206, 0x0208, 0x020a,
+ 0x344e, 0x0556, 0x0584, 0x34c9, 0x05c6, 0x06f5, 0x0709, 0x06f8, 0x06e8,
+ 0x06fb, 0x06e9, 0x06f6, 0x52b7, 0x52b8, 0x0852, 0x52b6, 0x52ba, 0x0854,
+ 0x0851, 0x0939, 0x093a, 0x0998, 0x0a4e, 0x357b, 0x0c36, 0x0c0c, 0x0c10,
+ 0x0c32, 0x0c11, 0x0c18, 0x0c1c, 0x0c1a, 0x0c19, 0x0c0b, 0x0c0f, 0x0c1d,
+ 0x0c21, 0x0c13, 0x0c1b, 0x0c15, 0x3620, 0x11d1, 0x11c8, 0x128d, 0x12b5,
+ 0x3689, 0x3695, 0x15f8, 0x16e0, 0x16e1, 0x36be, 0x16de, 0x16fe, 0x16dc,
+ 0x1701, 0x16fd, 0x1700, 0x19d7, 0x19d6, 0x19d9, 0x1b65, 0x1bd2, 0x1bdc,
+ 0x1be1, 0x1bde, 0x1c42, 0x1c4b, 0x37c3, 0x1d8e, 0x1d91, 0x1d8b, 0x1d90,
+ 0x1d88, 0x1d89, 0x1d84, 0x1daa, 0x208d, 0x208f, 0x207d, 0x207f, 0x207b,
+ 0x2080, 0x207e, 0x2083, 0x2081, 0x2086, 0x208a, 0x21bd, 0x21be, 0x3877,
+ 0x21f4, 0x21f3, 0x2202, 0x21f6, 0x21f5, 0x21f2, 0x2204, 0x233d, 0x23c6,
+ 0x2489, 0x24d4, 0x24d6, 0x24d2, 0x25fa, 0x2606, 0x260c, 0x260a, 0x260f,
+ 0x2a2f, 0x39d4, 0x2ab7, 0x2abe, 0x2abc, 0x2ae2, 0x2f06, 0x2ef7, 0x2f07,
+ 0x2ef6, 0x3b35, 0x315f, 0x3165, 0x3164, 0x3161, 0x315a, 0x315d, 0xf8d7,
+ 0x33d7, 0x33d5, 0x33de, 0x33e1, 0x33e0, 0x33d9, 0x3b4c, 0x33da, 0x33df,
+ 0x33f6, 0x3403, 0x3c20, 0x3893, 0x388b, 0x3891, 0x3892, 0x388a, 0x3889,
+ 0x388f, 0x3956, 0x3959, 0x39ca, 0x39cc, 0x3c5b, 0x39d0, 0x39cd, 0x39d6,
+ 0x39cb, 0x3a83, 0x3a82, 0x3b06, 0x3b2a, 0x3b2c, 0x3b2b, 0x3b29, 0x3cbd,
+ 0x3cb3, 0x3cbe, 0x3cc0, 0x3cb5, 0x3cb6, 0x419d, 0x419f, 0x4620, 0x3e2d,
+ 0x461e, 0x461c, 0x4632, 0x461f, 0x462b, 0x4621, 0x4626, 0x4624, 0x461d,
+ 0x4627, 0x475b, 0x4759, 0x4780, 0x4755, 0x4750, 0x475a, 0x4756, 0x4763,
+ 0x4752, 0x4758, 0x3e63, 0x4739, 0x48f9, 0x4b28, 0x3f18, 0x4bbc, 0x4bd6,
+ 0x4c05, 0x4c20, 0x3f74, 0x4d33, 0x4f46, 0x4f42, 0x4f43, 0x4f47, 0x4fcb,
+ 0x5042, 0x5045, 0x50fd, 0x50f4, 0x50f9, 0x50fa, 0x535e, 0x541d, 0x4128,
+ 0x5758, 0x5755, 0x5a57, 0x5a58, 0x5ad9, 0x5adc, 0x5adb, 0x5e27, 0x5f85,
+ 0x5f87, 0x5f8a, 0x628b, 0x634f, 0x6530, 0x652f, 0x6668, 0x6649, 0x43da,
+ 0x6648, 0x663f, 0x664b, 0x665c, 0x6646, 0x6640, 0x6a0d, 0x6b1b, 0x6b1d,
+ 0x6b17, 0x44a4, 0x6b22, 0x75a7, 0x7608, 0x7806, 0x847d, 0x488e, 0x8463,
+ 0x8464, 0x847f, 0x846b, 0x847c, 0x8468, 0x8465, 0x846a, 0x8698, 0x8699,
+ 0x86ae, 0x8e2b, 0x8e2d, 0x8e31, 0x8e2e, 0x8e2f, 0x006d, 0x0131, 0x022d,
+ 0x0239, 0x0238, 0x345b, 0x023a, 0x0235, 0x0262, 0x04ea, 0x04eb, 0x0515,
+ 0x05cc, 0x05c8, 0x05cd, 0x05db, 0x05cb, 0x0711, 0x0726, 0x0862, 0x085e,
+ 0x0861, 0x0941, 0x093f, 0x0975, 0x3965, 0x0b49, 0x09eb, 0x0a1a, 0x0a57,
+ 0x0c6b, 0x0ca9, 0x0c54, 0x0c62, 0x0caa, 0x0c58, 0x0c72, 0x0c63, 0x0c73,
+ 0x0c8b, 0x0c8c, 0x0c5c, 0x0c51, 0x0c16, 0x0c60, 0x0c61, 0x0c5e, 0x0c5d,
+ 0x0c64, 0x0c53, 0x0c5f, 0x0c5b, 0x0c6e, 0x0c55, 0x0c52, 0x0c68, 0x11d2,
+ 0x11d6, 0x11d3, 0x12b8, 0x12bb, 0x12eb, 0x12e8, 0x12b6, 0x12ea, 0x12e7,
+ 0x12e9, 0x1591, 0x1610, 0x160e, 0x160f, 0x170b, 0x1703, 0x172b, 0x1709,
+ 0x1728, 0x172c, 0x1725, 0x1727, 0x170f, 0x19e9, 0x19ec, 0x3753, 0x1b27,
+ 0x1b73, 0x1be2, 0x1be6, 0xf876, 0x1c61, 0x1c51, 0x1d12, 0x1d0e, 0x1dad,
+ 0x1daf, 0x1db1, 0x1dd3, 0x2094, 0x2092, 0x2090, 0x209d, 0x2093, 0x2095,
+ 0x2098, 0x2097, 0x3880, 0xf88a, 0x2207, 0x220b, 0x2208, 0x23d9, 0x23d5,
+ 0x24d7, 0x24df, 0x38dd, 0x24de, 0x24e3, 0x24e2, 0x38de, 0x2647, 0x3922,
+ 0x263d, 0x2638, 0x2a44, 0x2a3a, 0x2ab8, 0x2b2a, 0x2b00, 0x2af3, 0x2af2,
+ 0x2aeb, 0x2afa, 0x2aed, 0x2aec, 0x2aff, 0x2afb, 0x6306, 0x2b4e, 0x2aef,
+ 0x2af7, 0x2f10, 0x2f11, 0x2f0c, 0x2f0b, 0x30dd, 0x3130, 0x3adb, 0x317a,
+ 0x3177, 0x3328, 0x3327, 0x3365, 0x340e, 0x340b, 0x3441, 0x3413, 0x340f,
+ 0x3412, 0x3430, 0x38a0, 0x38a3, 0x389e, 0x3897, 0x38a1, 0x389d, 0x389b,
+ 0x3963, 0x39e3, 0x39e4, 0x39e6, 0x39e7, 0x39dd, 0x6b85, 0x39ec, 0x39e5,
+ 0x39f1, 0x3b3b, 0x3b39, 0x3b3a, 0x3b3c, 0x3b3d, 0x3b47, 0x3b3f, 0x3b44,
+ 0x3c48, 0x3c49, 0x3c60, 0x3ce3, 0x3ce9, 0x3cf0, 0x3cda, 0x3cdb, 0x3cf2,
+ 0x3ced, 0x3cec, 0x3ce6, 0x3d16, 0x3cd7, 0x41bc, 0x41be, 0x41c0, 0x41e0,
+ 0x4500, 0x4502, 0x44fe, 0x455e, 0x45b3, 0x45b7, 0x463a, 0x4639, 0x463e,
+ 0x4638, 0x463d, 0x464f, 0x476e, 0x475f, 0x4781, 0x4782, 0x4771, 0x477b,
+ 0x4779, 0x4777, 0x4773, 0x476f, 0x4797, 0x477e, 0x48fc, 0x4911, 0x4932,
+ 0x4931, 0x4910, 0x4aec, 0x4aeb, 0x4b2c, 0x4b2d, 0x4bda, 0x4c2e, 0x4c2c,
+ 0x4c2a, 0x4c33, 0x4c4b, 0x4d18, 0x4d42, 0x4d3b, 0x4d3f, 0x4d41, 0x4d43,
+ 0x4d3c, 0x4f4c, 0x4f4a, 0x4f49, 0x4f56, 0x4fcf, 0x5047, 0x5048, 0x5046,
+ 0x511b, 0x5111, 0x5114, 0x511d, 0x5117, 0x511e, 0x510b, 0x511c, 0x5112,
+ 0x5116, 0x510d, 0x5115, 0x5113, 0x5118, 0x401a, 0x53ac, 0x5444, 0x542c,
+ 0x5445, 0x5766, 0x576e, 0x5765, 0x5768, 0x5784, 0x5938, 0x593b, 0x593a,
+ 0x593f, 0x5adf, 0x5add, 0x5ade, 0x5ae2, 0x41d6, 0x5e2c, 0x5e2f, 0x5f8f,
+ 0x5f90, 0x5f8c, 0x5f93, 0x6225, 0x6288, 0x62a7, 0x63f7, 0x64bb, 0x6538,
+ 0x6539, 0x6537, 0x6614, 0x666e, 0x667b, 0x43de, 0x666c, 0x667f, 0x6678,
+ 0x667a, 0x666f, 0x43e5, 0x68fe, 0x6b48, 0x6b4b, 0x6b41, 0x6b49, 0x6b3b,
+ 0x722d, 0x75e3, 0x761a, 0x760d, 0x7613, 0x7611, 0x761c, 0x4672, 0x78b5,
+ 0x46af, 0x7c29, 0x7ca1, 0x7d24, 0x7fbb, 0x82a1, 0x8483, 0x848d, 0x8487,
+ 0x8485, 0x848a, 0x84a3, 0x8489, 0x8484, 0x84a2, 0x86b1, 0x86b0, 0x86af,
+ 0x86b6, 0x86c9, 0x86ca, 0x86c8, 0x86b4, 0x8c59, 0x8cc9, 0x8e41, 0x8e4c,
+ 0x49c4, 0x8e45, 0x8e5a, 0x00b9, 0x0294, 0x026e, 0x02a2, 0x0267, 0x3463,
+ 0x02a3, 0x0276, 0x026c, 0x0264, 0x02a5, 0x0230, 0x02a6, 0x0269, 0x02a4,
+ 0x0490, 0x055f, 0x0560, 0x05da, 0x05d8, 0x05dd, 0x34ec, 0x0759, 0x075b,
+ 0x075a, 0x0739, 0x0734, 0x0744, 0x0733, 0x073c, 0x0758, 0x076a, 0x086f,
+ 0x0872, 0x0870, 0x0871, 0x086e, 0x08f0, 0x08eb, 0x0949, 0x094c, 0x09f5,
+ 0x0a20, 0x0a6a, 0x0a72, 0x0b4b, 0x0b5d, 0x0c50, 0x0cf9, 0x0cfa, 0x0cfb,
+ 0x0d23, 0x0cb7, 0x0d22, 0x0cb5, 0x0cc4, 0x0cb4, 0x0cef, 0x3598, 0x0ccd,
+ 0x0cf0, 0x0cb8, 0x0ccb, 0x0cf1, 0x0cba, 0x0d03, 0x0cf8, 0x0cb6, 0x0cbc,
+ 0x0cb3, 0x0d21, 0x0cf7, 0x0cc2, 0x0cbe, 0x0cc9, 0x0cbd, 0x0cce, 0x0cb9,
+ 0x0cc7, 0x0cca, 0x0ccc, 0x0d26, 0x11e4, 0x11e0, 0x11f0, 0x12ec, 0x1324,
+ 0x1318, 0x132f, 0x1325, 0x1528, 0x1522, 0x156a, 0x0157, 0x1594, 0x1592,
+ 0x159c, 0x1622, 0x1630, 0x161d, 0x1623, 0x1735, 0x1733, 0x172f, 0x174d,
+ 0x1731, 0x175b, 0x175a, 0x1732, 0x175c, 0x1759, 0x175d, 0x1969, 0x196d,
+ 0x2232, 0x3758, 0x1a0a, 0x1a20, 0x1a1f, 0x1a0d, 0x1be8, 0x1bec, 0x1c77,
+ 0x1c70, 0x1c71, 0x1df8, 0x1dd6, 0x1dd9, 0x1dde, 0x1dd5, 0x1de1, 0x37d3,
+ 0x1de2, 0x1ddd, 0x1de0, 0x1e0e, 0x1e08, 0x1ddc, 0x1e0a, 0x1e0c, 0x20b4,
+ 0x20b1, 0x20b6, 0x20bc, 0x221d, 0x2224, 0x2219, 0x221b, 0x2222, 0x221a,
+ 0x221c, 0x2221, 0x23e6, 0x23e4, 0x23e7, 0x23ea, 0x38e2, 0xf89b, 0x24f0,
+ 0x24f5, 0x24ef, 0x2642, 0x266e, 0x263c, 0x2697, 0x268c, 0x2681, 0x2671,
+ 0x26ce, 0x26ba, 0x267a, 0x267e, 0x3954, 0x2672, 0x26bb, 0x392f, 0x2673,
+ 0x2682, 0x39b6, 0x29ba, 0x29b8, 0x2a4b, 0x2a48, 0x2b2b, 0x2af4, 0x2b2c,
+ 0x2b42, 0x2b48, 0x2b44, 0x2b45, 0x2b3c, 0x2b37, 0x2b33, 0x2b41, 0x2b32,
+ 0x2b87, 0x2f27, 0x2f23, 0x2f2d, 0x2f1f, 0x2f2c, 0x2f28, 0x3075, 0x3074,
+ 0x30e7, 0x3132, 0x3131, 0x3199, 0x3196, 0x3198, 0x319d, 0x3192, 0x3194,
+ 0x3195, 0x3197, 0x66b9, 0x3b35, 0x3411, 0x343b, 0x3479, 0x3442, 0x3443,
+ 0x3b5d, 0x3478, 0x38ac, 0x3c29, 0x38b1, 0x38b4, 0x38b3, 0x38af, 0x38aa,
+ 0x38b2, 0x3968, 0x39f2, 0x39fe, 0x39f8, 0x39f9, 0x39ff, 0x39f5, 0x39f7,
+ 0x39fd, 0x3a00, 0x3a88, 0x3b6e, 0x3b5d, 0x3b63, 0x3b60, 0x3c61, 0x3d37,
+ 0x3d71, 0x3d23, 0x3d22, 0x3d1f, 0x3d25, 0x41fd, 0x4211, 0x4223, 0x41f0,
+ 0x41ef, 0x450e, 0x450c, 0x45ba, 0x3e1f, 0x4652, 0x4655, 0x4653, 0x4654,
+ 0x4651, 0x4658, 0x47b0, 0x479f, 0x3e72, 0x47a1, 0x479a, 0x47be, 0x47a0,
+ 0x4937, 0x3f0b, 0x4af1, 0x4af2, 0x4b34, 0x4b37, 0x4b35, 0x238c, 0x4bdf,
+ 0x4c4c, 0x4c4e, 0x4c64, 0x4c63, 0x4c36, 0x4d58, 0x4d68, 0x4d5b, 0x4d5f,
+ 0x4d59, 0x4d65, 0x4d60, 0x4d5e, 0x4fd5, 0x4fd6, 0x504e, 0x5052, 0x5135,
+ 0x5139, 0x5158, 0x5141, 0x5157, 0x5138, 0x513d, 0x5132, 0x5144, 0xf944,
+ 0x5363, 0x5362, 0x53b8, 0x53b0, 0x53b1, 0x544d, 0x5463, 0x5470, 0x544b,
+ 0x544f, 0x544e, 0x5453, 0x5447, 0x40a2, 0x5454, 0x5452, 0x5459, 0x547e,
+ 0x562b, 0x562e, 0x577f, 0x577e, 0x5781, 0x5783, 0x5947, 0x5954, 0x594d,
+ 0x594c, 0x594b, 0x5957, 0x5a65, 0x5a64, 0x5a61, 0x5a62, 0x5af0, 0x5af3,
+ 0x5af9, 0x5af4, 0x5af5, 0x5aef, 0x5af8, 0x5afc, 0x5af7, 0x5afd, 0x5b17,
+ 0x5e34, 0x5e36, 0x5e38, 0x5faf, 0x5fae, 0x5fac, 0x5fa2, 0x6228, 0x2ec2,
+ 0x629c, 0x62b3, 0x6290, 0x6406, 0x6404, 0x640b, 0x6405, 0x6540, 0x654f,
+ 0x66ab, 0x669d, 0x66b8, 0x66b2, 0x66d2, 0x66cf, 0x66a2, 0x43ec, 0x66a5,
+ 0x66a9, 0x66a7, 0x66d0, 0x6902, 0x69cf, 0x69d0, 0x6a16, 0x6a19, 0x6b75,
+ 0x6b71, 0x6b91, 0x6b72, 0x6b8e, 0x6b6d, 0x6b88, 0x6b73, 0x44bb, 0x6b81,
+ 0x6b76, 0x6b7b, 0x6b7f, 0x6b90, 0x6b78, 0x724b, 0x7248, 0x725b, 0x7251,
+ 0x723d, 0x7240, 0x7246, 0x724d, 0x723b, 0x724a, 0x7241, 0x723e, 0x724e,
+ 0x75ac, 0x75e6, 0x75e9, 0x7629, 0x4621, 0x7633, 0x762e, 0x761e, 0x461f,
+ 0xf9c5, 0x7622, 0x7627, 0x77e7, 0x780b, 0x7966, 0x7bad, 0x7bae, 0x8c38,
+ 0x7c2b, 0x7c2a, 0x7d2c, 0x7d2d, 0x4791, 0x4796, 0x7e8f, 0x7e93, 0x7fc6,
+ 0x7fc5, 0x8215, 0x8213, 0x82b1, 0x82a9, 0x8ece, 0x84a8, 0x84ab, 0x84be,
+ 0x84ac, 0x84a9, 0x84a6, 0x84c1, 0x86cc, 0x86d1, 0x86d3, 0x86e4, 0x86cb,
+ 0x86e1, 0x86d2, 0x86e3, 0x86cf, 0x86d0, 0x86e5, 0x870e, 0x8ccc, 0x8cca,
+ 0x8ccb, 0x8e5c, 0x8e61, 0x8e5d, 0x8e59, 0x9077, 0x9684, 0x0041, 0x00fd,
+ 0x011a, 0x0163, 0x02b6, 0x02b2, 0x02e9, 0x02e7, 0x02d6, 0x0330, 0x02ec,
+ 0x02dd, 0x02e8, 0x02b0, 0x02b5, 0x02e1, 0x0498, 0x0499, 0x34bc, 0x0593,
+ 0x05e5, 0x34d8, 0x0760, 0x075e, 0x34f4, 0x087b, 0x08f1, 0x08f3, 0x0a7f,
+ 0xf838, 0x0b57, 0x0b58, 0x0d39, 0x0da7, 0x0d35, 0x0d60, 0x0d51, 0x0d62,
+ 0x0d42, 0x0d3c, 0x0d43, 0x0dab, 0x0da9, 0x0db4, 0x0d79, 0x0d6a, 0x0d3b,
+ 0x0daa, 0x0d33, 0x0d37, 0x0d27, 0x0da8, 0x0d70, 0x0d2f, 0x0d36, 0x0db5,
+ 0x0d30, 0x0d3a, 0x0d38, 0x0db1, 0x0dac, 0x0d2e, 0x0d75, 0x0db0, 0x11f7,
+ 0x1200, 0x11f1, 0x11f3, 0x1360, 0x1361, 0x1332, 0x132d, 0x134a, 0x132a,
+ 0x1567, 0x15a2, 0x15a3, 0x159e, 0x15a4, 0x1644, 0x1632, 0x179b, 0x1798,
+ 0x1799, 0x179a, 0x1766, 0x1762, 0x176b, 0x4562, 0x1767, 0x1a3b, 0x1a23,
+ 0x1a29, 0x1b7e, 0x1bf3, 0x3785, 0x1bf5, 0x3783, 0x1c80, 0x1c7e, 0x1c7c,
+ 0x1c7f, 0x1c7d, 0x1c81, 0x1e25, 0x1e29, 0x1e17, 0x1e63, 0x1e67, 0x1e65,
+ 0x1e2a, 0x1e68, 0x1e26, 0x1e64, 0x1e1b, 0x1e62, 0x1e69, 0x1ffe, 0x2044,
+ 0x2042, 0x20b7, 0x20d2, 0x20d4, 0x20d7, 0x20dc, 0x20d1, 0x20d5, 0x20cd,
+ 0x20d8, 0x219a, 0x2242, 0x2235, 0x2258, 0x2234, 0x223c, 0x223b, 0x223e,
+ 0x223d, 0x225a, 0x2241, 0x2238, 0x2245, 0x2233, 0x2326, 0x38ba, 0x23f7,
+ 0x23ef, 0x23f0, 0x23ee, 0x249d, 0x2506, 0x2511, 0x2508, 0x2502, 0x250a,
+ 0x2507, 0x2691, 0x268e, 0x2685, 0x26e8, 0x2717, 0x26d4, 0x3969, 0x26c4,
+ 0x26d5, 0x3945, 0x26d8, 0x2680, 0x26de, 0x2742, 0x29c7, 0x29bf, 0x2b8d,
+ 0x2b89, 0x2b90, 0x2b9a, 0x2bc8, 0x2b92, 0x2ba1, 0x2b84, 0x2f57, 0x2f47,
+ 0x2f77, 0x2f3a, 0x2f50, 0x2f42, 0x2f43, 0x2fa3, 0x3077, 0x31b2, 0x31e2,
+ 0x31bd, 0x3374, 0x3482, 0x34b8, 0x3b6c, 0x34ba, 0x34b9, 0x34bb, 0x3487,
+ 0xf8e4, 0x3483, 0x34b7, 0x0043, 0x38ce, 0x38ba, 0x3973, 0x3a09, 0x3a0a,
+ 0x3a0b, 0x3a07, 0x3a05, 0x3a0e, 0x3a97, 0x3b77, 0x3b7b, 0x3b7a, 0x3b74,
+ 0x3b79, 0x3d86, 0x3df5, 0x3da5, 0x3d9d, 0x3dbe, 0x3d96, 0x3de1, 0x3da4,
+ 0x3da1, 0x3df6, 0x3d04, 0x3d8d, 0x3d8b, 0x3d78, 0x3d98, 0x3e0a, 0x425d,
+ 0x4227, 0x425f, 0x45c0, 0x45c1, 0x466d, 0x465e, 0x468a, 0x4662, 0x4664,
+ 0x3e3a, 0x47c0, 0x47ca, 0x47d1, 0x3e79, 0x47c7, 0x47ce, 0x7309, 0x47c5,
+ 0x4936, 0x4957, 0x4977, 0x4af6, 0x4af7, 0x4b55, 0x4b44, 0x4b3e, 0x4b42,
+ 0x4b52, 0x4be1, 0x4c08, 0x4c68, 0x4c67, 0x3f5d, 0xf937, 0x4d7e, 0x4d93,
+ 0x4d79, 0x4d81, 0x4d7d, 0x4d7b, 0x4d94, 0x3f8a, 0x4f66, 0x4fd9, 0x4fe0,
+ 0xf93e, 0x505f, 0x515f, 0x515e, 0x5168, 0x4027, 0x5188, 0x516a, 0x516c,
+ 0x5166, 0x5167, 0x5189, 0x5160, 0x5185, 0x032a, 0x5368, 0x53b9, 0x53ba,
+ 0x53be, 0x546f, 0x5480, 0x5474, 0x5481, 0x547a, 0x549c, 0x5473, 0x5482,
+ 0x547f, 0x54a7, 0x5479, 0x5478, 0x547d, 0x54a8, 0x547c, 0x5668, 0x564e,
+ 0x579e, 0x4146, 0x4140, 0x5798, 0x413f, 0x5785, 0x579c, 0x57c5, 0x579a,
+ 0x5968, 0x5965, 0x5967, 0x5961, 0x5960, 0x419d, 0x41cb, 0x5a7b, 0x41e1,
+ 0x5b19, 0x5b0e, 0x5b31, 0x5b12, 0x5b10, 0x5b15, 0x5b3f, 0x5b1d, 0x5b1e,
+ 0x5e4d, 0x5e48, 0x5e45, 0x5e42, 0x5e49, 0x5e4a, 0x5e47, 0x427f, 0x5e4c,
+ 0x5fcd, 0x5fd5, 0x5fc4, 0x5fca, 0x5fc3, 0x4346, 0x6229, 0x62b4, 0x636d,
+ 0x6366, 0x636a, 0x6415, 0x64d3, 0x64ec, 0x6555, 0x441a, 0x66d6, 0x66d8,
+ 0x6751, 0x66e0, 0x6703, 0x6704, 0x66da, 0x66ea, 0x6702, 0x66d3, 0x66e4,
+ 0x66e5, 0x693b, 0x6966, 0x6a2c, 0x6a21, 0x6a26, 0x6ad4, 0x6ad5, 0x6ad9,
+ 0x6bd5, 0x6beb, 0x6bc5, 0x44d3, 0x6c27, 0x6bf0, 0x6bb9, 0x6c18, 0x6bee,
+ 0x44d0, 0x6bb7, 0x6bbb, 0x6bef, 0x6bb8, 0x6bdf, 0x6bda, 0x6be3, 0x6bc9,
+ 0x6bec, 0x71a4, 0x458e, 0x71a3, 0x725e, 0x7261, 0x7262, 0x7263, 0x728e,
+ 0x7269, 0x726b, 0x7285, 0x728d, 0x7264, 0x726d, 0x764c, 0x7649, 0x7647,
+ 0x7648, 0x7642, 0x7645, 0x765b, 0x765d, 0x7646, 0x7813, 0x781a, 0x780e,
+ 0x780f, 0x781b, 0x7812, 0x78c3, 0x78be, 0x78bd, 0x7979, 0x797c, 0x46c3,
+ 0x46b6, 0x7980, 0x7975, 0x799b, 0x8a2f, 0x7974, 0x46c0, 0x46b8, 0x2041,
+ 0x2494, 0x7c30, 0x7ca7, 0x7ca5, 0x7ca4, 0x7d3a, 0x7e5b, 0x7e9f, 0x7ea8,
+ 0x7eb3, 0x7ea1, 0x7ea7, 0x7eb2, 0x7e9d, 0x7ea3, 0x7ea2, 0x7fef, 0x7fd9,
+ 0x47d9, 0x7fd5, 0x7fdd, 0x7fda, 0x7fee, 0x7fd7, 0x821a, 0x8219, 0x8218,
+ 0x82b3, 0x82bf, 0x82bb, 0x82c0, 0x82b9, 0x82b8, 0x82d5, 0x8411, 0x8410,
+ 0x84c3, 0x84c2, 0x84e9, 0x84cd, 0x84e5, 0x84ca, 0x84c7, 0x84e8, 0x86f1,
+ 0x870c, 0x86ef, 0x86ee, 0x86f3, 0x870d, 0x86f6, 0x86f0, 0x48ec, 0x87f5,
+ 0x87f4, 0x87f8, 0x87fe, 0x8911, 0x8922, 0x8942, 0x8c5c, 0x8c5a, 0x8c5d,
+ 0x8cd1, 0x8cd0, 0x8e75, 0x8e7b, 0x8f89, 0x944d, 0x9689, 0x9692, 0x968c,
+ 0x9688, 0x9867, 0x9868, 0x0321, 0x02f2, 0x0309, 0x02f8, 0x02f0, 0x02f3,
+ 0x02f5, 0x02fb, 0x02f7, 0x02ef, 0x030b, 0x04a2, 0x05f5, 0x05f3, 0x05f4,
+ 0x05f2, 0x0698, 0x0768, 0x0780, 0x0785, 0x078e, 0x078f, 0x02f4, 0x0786,
+ 0x07a4, 0x0886, 0x0889, 0x0887, 0x0885, 0x52dc, 0x0888, 0x0aff, 0x0b66,
+ 0x35cc, 0x0dc3, 0x35a2, 0x0dc4, 0x0e3b, 0x0de7, 0x0df8, 0x0dfb, 0x35b6,
+ 0x0dbe, 0x0dc6, 0x35c5, 0x35c6, 0x0dfc, 0x0dc0, 0x0e33, 0x0dc9, 0x0dfe,
+ 0x0dda, 0x0dcc, 0x0dbb, 0x0dfd, 0x0ddf, 0x0dcd, 0x0dc2, 0x0dc8, 0x0e32,
+ 0x0e2d, 0x0dd2, 0x0e31, 0x0dd3, 0x0e2e, 0x0dcf, 0x11ff, 0x1209, 0x11fc,
+ 0x1372, 0x13aa, 0x13ab, 0x13a7, 0x137b, 0x1376, 0x13a8, 0x13ac, 0x3683,
+ 0x5921, 0x15aa, 0x0a03, 0x15ac, 0x15ad, 0x15ab, 0x1650, 0x1658, 0x17dd,
+ 0x36f8, 0x17ae, 0x17a2, 0x17ab, 0x17e3, 0x17af, 0x17e0, 0x17e4, 0x36f6,
+ 0x17a7, 0x17aa, 0x17e2, 0x17e1, 0x17df, 0x17ad, 0x17e5, 0x17d1, 0x17ac,
+ 0x17d5, 0x17a3, 0x179f, 0x1979, 0x1976, 0x1a43, 0x1a3d, 0x1a47, 0x1a44,
+ 0x1a3f, 0x1a5b, 0x1b7f, 0x1c9a, 0x1c9c, 0x379b, 0x1d1e, 0x1e88, 0x1e6a,
+ 0x1e76, 0x1e72, 0x1e70, 0x1e7e, 0x1e6c, 0x1e6f, 0x1e75, 0x1e77, 0x1e78,
+ 0x1e8a, 0x1e79, 0x1e94, 0x2001, 0x2105, 0x20f1, 0x20ee, 0x20ef, 0x2104,
+ 0x5e3f, 0x20fa, 0x2107, 0x20f4, 0x20f5, 0x219c, 0x226d, 0x2269, 0x2266,
+ 0x2262, 0x2246, 0x388d, 0x2265, 0x225d, 0x225e, 0x225f, 0x238e, 0x2402,
+ 0x2406, 0x2404, 0x2403, 0x2462, 0x2527, 0x2521, 0x2520, 0x2524, 0x2529,
+ 0x2531, 0x2523, 0x2522, 0x26dc, 0x274d, 0x26e5, 0x26d3, 0x26ee, 0x26e6,
+ 0x3956, 0x2736, 0x2740, 0x283f, 0x273d, 0x2744, 0x395b, 0x275f, 0x2729,
+ 0x2749, 0x278a, 0x272a, 0x2787, 0x274c, 0x2731, 0x2748, 0x272b, 0x273b,
+ 0x2741, 0x26c9, 0x2734, 0x2753, 0x2735, 0x2747, 0x2738, 0x29d1, 0x29d2,
+ 0x2a51, 0x2a55, 0x2a52, 0x2a53, 0x2b8f, 0x2bf4, 0x2c47, 0x2c0d, 0x2c1c,
+ 0x2bfb, 0x2c19, 0x2bf7, 0x2bf9, 0x2bf5, 0x2be9, 0x2c0a, 0x2bee, 0x2c0b,
+ 0x2bfd, 0x2c06, 0x2c02, 0x2c16, 0x2c18, 0x2bf0, 0x2ed4, 0x2f66, 0x2f6a,
+ 0x2f75, 0x2f76, 0x2f80, 0x2f6d, 0x3a96, 0x2f69, 0x2f67, 0x2f68, 0x2f5d,
+ 0x30a4, 0x30fe, 0x30fd, 0x31ec, 0x31e9, 0x3221, 0x31eb, 0x31e7, 0x31f2,
+ 0x3220, 0x337a, 0x352d, 0x352e, 0x34ca, 0x352f, 0x34c8, 0x3b7e, 0x34cb,
+ 0x34c3, 0x3484, 0x34d2, 0x34c6, 0x3b81, 0x34cf, 0x34d5, 0x34d4, 0x34dd,
+ 0x352b, 0x35a3, 0x34db, 0x352c, 0x3513, 0x3c35, 0x38d1, 0x38cc, 0x38d5,
+ 0x38c9, 0x38cf, 0x38d2, 0x397b, 0x397c, 0x3a23, 0x3a1d, 0x3a1c, 0x3a1e,
+ 0x3a22, 0x3a24, 0x3a20, 0x3a18, 0x3a21, 0x3b88, 0x3b8a, 0x3b94, 0x3b8f,
+ 0x3b8e, 0x3b90, 0x3c9b, 0x3ba7, 0x3c64, 0x3d00, 0x3e18, 0x3e14, 0x3e1d,
+ 0x3e05, 0x3dff, 0x3e1b, 0x3e1a, 0x3e19, 0x3e03, 0x3e0e, 0x3e47, 0x3e04,
+ 0x3e5a, 0x3e07, 0x3e20, 0x426a, 0x4266, 0x427a, 0x4265, 0x42af, 0x45cd,
+ 0x45cf, 0x45d1, 0x45ce, 0x465f, 0x4677, 0x4674, 0x4688, 0x4675, 0x4689,
+ 0x4672, 0x47c6, 0x47ea, 0x47e0, 0x4807, 0x47e6, 0x47e5, 0x47dd, 0x47e3,
+ 0x47da, 0x49ae, 0x497e, 0x497d, 0x497f, 0x3ed3, 0x49d9, 0x4afa, 0x4afb,
+ 0x4b4d, 0x4b54, 0x4b51, 0x4b50, 0x4d98, 0x4d95, 0x4d9d, 0x4dc1, 0x4d9a,
+ 0x4d9b, 0x3f9f, 0x4d9c, 0x4dd7, 0x4da4, 0x4d96, 0x4da0, 0x4f31, 0x4fe9,
+ 0x506e, 0x519a, 0x51a5, 0x5194, 0x51a6, 0x5199, 0x518b, 0x5198, 0x5191,
+ 0x518c, 0x51a1, 0x51a3, 0x51c6, 0x536f, 0x536d, 0x536a, 0x536c, 0x5371,
+ 0x536e, 0x53df, 0x54ac, 0x54aa, 0x40b1, 0x54b5, 0x54ad, 0x54b2, 0x54b3,
+ 0x54ab, 0x54b6, 0x54c7, 0x54c6, 0x566c, 0x5670, 0x57b3, 0x414b, 0x598c,
+ 0x5981, 0x5983, 0x597d, 0x5985, 0x5990, 0x59a2, 0x598d, 0x598f, 0x597e,
+ 0x598a, 0x597f, 0x5976, 0x5987, 0x5978, 0x5a80, 0x5a82, 0x5a81, 0x5a83,
+ 0x5b5a, 0x5b34, 0x5b2c, 0x5b2a, 0x5b40, 0x5b2d, 0x5b33, 0x5b2b, 0x5b4b,
+ 0x7b3f, 0x5b3c, 0x5e5a, 0x5e77, 0x5e60, 0x5ffa, 0x5ff9, 0x5ffc, 0x42d6,
+ 0x5ff5, 0x5fe8, 0x6009, 0x5fe7, 0x5fe6, 0x5fe9, 0x6232, 0x622c, 0x62bd,
+ 0x62bc, 0x637a, 0x637e, 0x6379, 0x4389, 0x6423, 0x6430, 0x6428, 0x64d4,
+ 0x6ace, 0x64f1, 0x64f0, 0x6560, 0x6565, 0x66a8, 0x670a, 0x671b, 0x6712,
+ 0x6707, 0x674f, 0x670e, 0x6752, 0x6716, 0x4400, 0x6753, 0x6754, 0xf984,
+ 0x6756, 0x696d, 0x6972, 0x6a2f, 0x6c2a, 0x44dc, 0x6c63, 0x6c84, 0x6caf,
+ 0x6c45, 0x6c70, 0x6c56, 0x6c16, 0x6c3d, 0x6c38, 0x6c6f, 0x6c77, 0x6c2e,
+ 0x6c31, 0x6c4c, 0x6c5f, 0x6c75, 0x6c39, 0x6c3a, 0x6c2c, 0x6c2d, 0x6c3f,
+ 0x6c2f, 0x6c30, 0x6c3e, 0x83d0, 0x4590, 0x71b2, 0x72b7, 0x728f, 0x45b1,
+ 0x7296, 0x729e, 0x7297, 0x7295, 0x72a5, 0x7298, 0x86e7, 0x72a3, 0x729a,
+ 0x72ad, 0x72a6, 0x72b6, 0x7299, 0x72af, 0x72ac, 0x45aa, 0x729f, 0x7294,
+ 0x75eb, 0x766f, 0x766d, 0x767e, 0x766c, 0x7661, 0x7663, 0x766b, 0x765e,
+ 0x763e, 0x7664, 0x76ad, 0x467d, 0x7820, 0x78d1, 0x78d5, 0x79ae, 0x79af,
+ 0x799f, 0x79a8, 0x79ca, 0x7be1, 0x7c39, 0x7c38, 0x7c3b, 0x7cad, 0x7cb5,
+ 0x7caf, 0x7cb1, 0x7cae, 0x7cb4, 0x7cb0, 0x7d4b, 0x7d51, 0x7d4c, 0x4769,
+ 0x7d60, 0x7ebe, 0x7eb9, 0x7eb7, 0x7eb6, 0x47a1, 0x7ebd, 0x7eb8, 0x7ec1,
+ 0x7ff7, 0x7ff3, 0x7ff4, 0x7ffb, 0x7ffd, 0x7ff5, 0x47e7, 0x7ffa, 0x8014,
+ 0x47ec, 0x7ff2, 0x7ffc, 0x8000, 0x47df, 0x822b, 0x8229, 0x822e, 0x4833,
+ 0x82d7, 0x82db, 0x82d9, 0x82d8, 0x82e6, 0x82d6, 0x82d1, 0x82e7, 0x82d0,
+ 0x82dc, 0x84ed, 0x851a, 0x8519, 0x8516, 0x84ec, 0x84ef, 0x84ee, 0x84f4,
+ 0x852f, 0x8730, 0x8719, 0x8718, 0x8711, 0x8716, 0x8712, 0x8710, 0x8714,
+ 0x880c, 0x880d, 0x8910, 0x8929, 0x8928, 0x8c65, 0x8c66, 0x8cde, 0x8cdf,
+ 0x8ce0, 0x8cd9, 0x8cdb, 0x8cd8, 0x8ce3, 0x8cd7, 0x8ea6, 0x8ea7, 0x8ebf,
+ 0x8ea8, 0x8e9f, 0x8ea1, 0x8ea2, 0x8ead, 0x8ea3, 0x8ea0, 0x9083, 0x9085,
+ 0x9082, 0x9084, 0x91ee, 0x925d, 0x9392, 0x9455, 0x9453, 0xf9fc, 0x9451,
+ 0x9452, 0x9450, 0x959d, 0x9687, 0x9697, 0x969b, 0x969d, 0x9869, 0x9a11,
+ 0x4bee, 0x9c7a, 0x4c32, 0x3244, 0x00c6, 0x0340, 0x032e, 0x0368, 0x032d,
+ 0x0334, 0x0332, 0x0369, 0x0331, 0x036a, 0x033e, 0x036f, 0x0375, 0x04f6,
+ 0x0520, 0x0528, 0x0567, 0x05fb, 0x05fe, 0x05fc, 0x05fd, 0x05ff, 0x05fa,
+ 0x07ac, 0x07af, 0x07b1, 0x34fc, 0x07bf, 0x07be, 0x07a7, 0x07aa, 0x0894,
+ 0x0893, 0x0899, 0x352a, 0x08fa, 0x0956, 0x0a22, 0x0a91, 0x0a92, 0x0b08,
+ 0x0b06, 0x0dd6, 0x0e37, 0x0e4b, 0x0ece, 0x0ed0, 0x0e39, 0x0e64, 0x0ecf,
+ 0x0e46, 0x0e66, 0x0e56, 0x0e43, 0x0e4a, 0x0e58, 0x0e65, 0x0e5a, 0x0e5b,
+ 0x0e55, 0x0e50, 0x0e4c, 0x0ecd, 0x0e51, 0x0e47, 0x35d3, 0x0e53, 0x0e62,
+ 0x0ecc, 0x35d7, 0x0e7f, 0x0e4d, 0x120a, 0x120c, 0x120f, 0x13bb, 0x13b9,
+ 0x13eb, 0x13ae, 0x13c1, 0x13ea, 0x13be, 0x13bf, 0x13ba, 0x13b7, 0x13b3,
+ 0x13e9, 0x156e, 0x15af, 0x15b3, 0x15b2, 0x1668, 0x1669, 0x166a, 0x17de,
+ 0x17eb, 0x1811, 0x17ed, 0x17e9, 0x17f7, 0x17f4, 0x17ea, 0x1812, 0x17e8,
+ 0x1813, 0x198e, 0x1986, 0x1a63, 0x1a65, 0x1b99, 0x1cc2, 0x1cae, 0x1cb0,
+ 0x1cad, 0x1eb4, 0x1ed1, 0x1ead, 0x37f3, 0x1ebd, 0x1eb7, 0x1eab, 0x1eaf,
+ 0x1ec1, 0x1eb5, 0x210f, 0x210e, 0x211c, 0x2113, 0x210a, 0x211e, 0x2114,
+ 0x211a, 0x21cb, 0x2287, 0x2293, 0x3891, 0x2284, 0x2285, 0x2292, 0x2280,
+ 0x232b, 0x2363, 0x240a, 0x38c0, 0x2466, 0x2534, 0x2533, 0x254d, 0x2789,
+ 0x2757, 0x6117, 0x274a, 0x3963, 0x2739, 0x273f, 0x2790, 0x278f, 0x27b2,
+ 0x279f, 0x2795, 0x27a1, 0x279c, 0x278e, 0x27a0, 0x27ae, 0x2796, 0x27ca,
+ 0x27ac, 0x3970, 0x27a6, 0x2797, 0x2793, 0x03b6, 0x29d6, 0x29e0, 0x29d8,
+ 0x2a56, 0x2c6e, 0x2c7e, 0x2c74, 0x2c77, 0x2c80, 0x2c7a, 0x2c6b, 0x2c5f,
+ 0x2c76, 0x2cb0, 0x2c63, 0x2f92, 0x2f82, 0x2f9d, 0x2f94, 0x2f83, 0x2f8b,
+ 0x2f84, 0x3057, 0x3084, 0x30b5, 0x3109, 0x31e6, 0x3b02, 0x3225, 0x3251,
+ 0x333e, 0xf8da, 0x3385, 0x353f, 0x3542, 0x3538, 0x353a, 0x354e, 0x3545,
+ 0x3539, 0x3537, 0x3544, 0xf8e7, 0x35a4, 0x353d, 0x3541, 0x38df, 0x38de,
+ 0x38ca, 0x38e9, 0x38e2, 0x38e0, 0x3989, 0x3987, 0x3a32, 0x3a33, 0x3aac,
+ 0x3af9, 0x3b0d, 0x3bb9, 0x3e5e, 0x3e6a, 0x3d35, 0x3e81, 0x3e69, 0x3eac,
+ 0x3e80, 0x3e75, 0x3e71, 0x3e76, 0x3e6f, 0x42b6, 0x4303, 0x42bf, 0x4301,
+ 0x42b2, 0x42c4, 0x45db, 0x45dc, 0x45d8, 0x9672, 0x46b5, 0x46a8, 0x468f,
+ 0x469e, 0x468e, 0x47de, 0x47e2, 0x4820, 0x481d, 0x481a, 0x4819, 0x482b,
+ 0x4818, 0x4810, 0x480e, 0x4824, 0x481f, 0x4813, 0x4835, 0x4983, 0x3ee0,
+ 0x49d7, 0x4b02, 0x4b03, 0x4b5c, 0x4b5f, 0x4bc7, 0x4c9a, 0x4c97, 0x4ca3,
+ 0x4df7, 0x4dc6, 0x4dcc, 0x4dd6, 0x4dcd, 0x4df9, 0x4dd9, 0x4dd8, 0x3f9a,
+ 0x4dd1, 0x4dce, 0x4dd5, 0x3fa3, 0x4dd4, 0x4df8, 0x4f7a, 0x4f79, 0x4f7f,
+ 0x4ff3, 0x4ff5, 0x4ff6, 0x4ff4, 0x4ff7, 0x4005, 0x5079, 0x519c, 0x51df,
+ 0x51f5, 0x51ff, 0x51d1, 0x51da, 0x51cf, 0x51cd, 0x51de, 0x51d8, 0x3aad,
+ 0x51e0, 0x51fe, 0x519e, 0x5375, 0x5373, 0x5372, 0x53d8, 0x54d0, 0x54d6,
+ 0x54d7, 0x54ca, 0x54cd, 0x568a, 0x5689, 0x568b, 0x57d3, 0x57da, 0x57ce,
+ 0x57d2, 0x415e, 0x57d4, 0x57d7, 0x57d5, 0x57fb, 0x57cd, 0x57fa, 0x57d6,
+ 0x41a6, 0x599b, 0x599e, 0x599d, 0x59a4, 0x599f, 0x59a5, 0x59a8, 0x5a8f,
+ 0x5a8c, 0x5a95, 0x5b60, 0x5b55, 0x5b5c, 0x5b6f, 0x5b51, 0x5b61, 0x5ba7,
+ 0x5b5e, 0x5b62, 0x5b54, 0x5b6e, 0x5b52, 0x5b58, 0x5b6d, 0x5b5f, 0x5b6c,
+ 0x5b50, 0x5b5d, 0x5b8e, 0x5e72, 0x5e78, 0x5e75, 0x5e76, 0x5e7c, 0x5e7e,
+ 0x5e7d, 0x6015, 0x6014, 0x601d, 0x601c, 0x6023, 0x6057, 0x62c8, 0x435d,
+ 0x62c9, 0x62c5, 0x6387, 0x638a, 0x6394, 0x6439, 0x6440, 0x643e, 0x6438,
+ 0x64d6, 0x43b8, 0x6577, 0x6578, 0x657d, 0x66dd, 0x675e, 0x6777, 0x67d4,
+ 0x6766, 0x675f, 0x6773, 0x6772, 0x6797, 0x675a, 0x6796, 0x675d, 0x6765,
+ 0x6770, 0x6775, 0x6774, 0x675c, 0x6760, 0x4434, 0x676d, 0x6941, 0x6a3c,
+ 0x6a3e, 0x446f, 0x6a49, 0x6be4, 0x6d0c, 0x6d15, 0x6d0e, 0x6cd4, 0x6cc7,
+ 0x6d14, 0x6cdb, 0x6d5f, 0x6ced, 0x6d09, 0x6ccf, 0x6cff, 0x6d1a, 0x6cf5,
+ 0x6cee, 0x6ce5, 0x6d0d, 0x6cdf, 0x6cec, 0x6cd7, 0x6d2c, 0x6ccd, 0x6ce3,
+ 0x6d00, 0x6ceb, 0x6cfd, 0x6d0f, 0x6d2d, 0x6d50, 0x6cfe, 0x6cc4, 0x6ce1,
+ 0x6cf9, 0x71bb, 0x71bc, 0x4594, 0x4593, 0x71ba, 0x72d0, 0x72d6, 0x72ce,
+ 0x72e1, 0x72d5, 0x72cf, 0x72d3, 0x8714, 0x72d4, 0x75b5, 0x7690, 0x76a1,
+ 0x7681, 0x7685, 0x766e, 0x7688, 0x7682, 0x7686, 0x768f, 0x7689, 0x7680,
+ 0x7684, 0x88d1, 0x7829, 0x782b, 0x782a, 0x7830, 0x78e2, 0x78e3, 0x78e1,
+ 0x79d5, 0x79c4, 0x79c9, 0x79e0, 0x79df, 0x79cb, 0x79dd, 0x79e8, 0x79d4,
+ 0x7a1c, 0x7bb5, 0x7bb6, 0x7be5, 0x7c45, 0x7c49, 0x7c40, 0x7c46, 0x7c44,
+ 0x7c4a, 0x7cc9, 0x7cc4, 0x7cc2, 0x7d68, 0x8ccb, 0x7d82, 0x7d6b, 0x7d67,
+ 0x7d6c, 0x7d6d, 0x7d71, 0x4792, 0x7ed7, 0x7ed2, 0x7ed9, 0x47aa, 0x7ebc,
+ 0x7edd, 0x7ed6, 0x47a7, 0x7ed8, 0x8020, 0x8016, 0x8018, 0x8015, 0x8019,
+ 0x8027, 0x8050, 0x801d, 0x802c, 0x801c, 0x8029, 0x802b, 0x8024, 0x47ef,
+ 0x8028, 0x8239, 0x82f2, 0x82f0, 0x8eed, 0x82ed, 0x82ef, 0x82ea, 0x8301,
+ 0x84bc, 0x855c, 0x855b, 0x855a, 0x8526, 0x8743, 0x8733, 0x873a, 0x8737,
+ 0x8736, 0x873c, 0x8734, 0x874a, 0x873b, 0x8735, 0x873d, 0x8740, 0x873e,
+ 0x8717, 0x8826, 0x8824, 0x8810, 0x8836, 0x8825, 0x4922, 0x8966, 0x8c7f,
+ 0x8c7a, 0x8cfb, 0x8cfd, 0x8cfc, 0x8cfa, 0x8ed6, 0x8ed2, 0x8ec8, 0x8ec2,
+ 0x8ec7, 0x8ecd, 0x8ec1, 0x8ec6, 0x8ecc, 0x8fa1, 0x9095, 0x9094, 0x9097,
+ 0x9096, 0x9093, 0x90a1, 0x9209, 0x9208, 0x9267, 0x9265, 0x9262, 0x9261,
+ 0x9397, 0x9401, 0x9419, 0x9418, 0x945c, 0x9467, 0x946c, 0x4ab5, 0xf9fd,
+ 0x9466, 0x9461, 0x946e, 0x945d, 0x945a, 0x95a2, 0x95a9, 0x95a5, 0x95a6,
+ 0x95b2, 0x95a3, 0x96ac, 0x96aa, 0x96af, 0x96ab, 0x96b1, 0x96c6, 0x96ad,
+ 0x96b9, 0x9870, 0x4b75, 0x9c0c, 0x9c81, 0x9c83, 0x9c7e, 0x9d51, 0x9f99,
+ 0x9f94, 0x9f95, 0xa2fe, 0xa418, 0x0105, 0x0372, 0x3482, 0x0399, 0x04ad,
+ 0x0606, 0x07c2, 0x07cb, 0x07d5, 0x07d2, 0x07cc, 0x07d7, 0x07c5, 0x07ca,
+ 0x52ec, 0x08a2, 0x08a3, 0x08a1, 0x52e8, 0x08a6, 0x08a4, 0x08ff, 0x0900,
+ 0x3535, 0x0a06, 0x0a25, 0x0a9f, 0x0b7f, 0x0eea, 0x0eeb, 0x0ede, 0x0f18,
+ 0x0ee0, 0x0ee8, 0x0edf, 0x0ef1, 0x0eec, 0x0f1a, 0x0ee6, 0x0ee1, 0x0f5d,
+ 0x0077, 0x0f1e, 0x35f0, 0x0f80, 0x1217, 0x141d, 0x13f7, 0x13ef, 0x13ee,
+ 0x13ed, 0x13f5, 0x141e, 0x15bd, 0x57ff, 0x15be, 0x166d, 0x1676, 0x184c,
+ 0x1819, 0x1848, 0x181e, 0x184a, 0x1849, 0x1826, 0x1995, 0x1a85, 0x1a7e,
+ 0x1a97, 0x1a7d, 0x1b42, 0x1b9e, 0x1c0c, 0x1c0b, 0x1c0e, 0x1ccf, 0x1ed8,
+ 0x1ee0, 0x1ee8, 0x1ee9, 0x1ee2, 0x1ee1, 0x1eda, 0x1ee3, 0x1ed9, 0x1ef0,
+ 0x1ee7, 0x1ee4, 0x2123, 0x2131, 0x2133, 0x210c, 0x69e0, 0x2126, 0x2124,
+ 0x2132, 0x2127, 0x2121, 0x2130, 0x21a2, 0x21cc, 0x2296, 0xf88f, 0x2298,
+ 0x229c, 0x229b, 0x236b, 0x2412, 0x2414, 0x255a, 0x2554, 0x2551, 0x255e,
+ 0x2558, 0x38f0, 0x2559, 0x279a, 0x27f2, 0x27ad, 0x2820, 0x27f1, 0x27f0,
+ 0x27f3, 0x27f4, 0x27e9, 0x27fe, 0x282e, 0x27e8, 0x27e7, 0x27ff, 0x27f5,
+ 0x29e5, 0x29e7, 0x29e6, 0x29e9, 0x2a58, 0x2c6c, 0x2cd9, 0x3a3e, 0x2ccb,
+ 0x3a39, 0x2cbe, 0x2cb5, 0x2cd1, 0x2cc2, 0x2cb6, 0x2cd3, 0xf8c2, 0x2eda,
+ 0x3aa2, 0x2fae, 0x3aa1, 0x2fac, 0x2fa9, 0x2fba, 0x2fa7, 0x2fb3, 0x2fbd,
+ 0x2fb1, 0x310e, 0x3111, 0x310f, 0x3252, 0x326a, 0x3254, 0x3255, 0x3253,
+ 0x3257, 0xf8d0, 0x325b, 0x3258, 0x3259, 0x3b3b, 0x35b8, 0x35b5, 0x35bf,
+ 0x35c1, 0x35bb, 0x3bb7, 0x35c3, 0x35ad, 0x35a8, 0x35ae, 0x35aa, 0x35d0,
+ 0x35b1, 0x35bc, 0x35b7, 0x35b0, 0x35fa, 0x35fb, 0x35b9, 0x3907, 0x38fc,
+ 0x38ff, 0x38f2, 0x38f8, 0x38f4, 0x3c57, 0x3c70, 0x3aae, 0x3b0f, 0x3b10,
+ 0x9ac1, 0x3bc7, 0x3bc6, 0x3bce, 0x3ca7, 0x3bdc, 0x3ed5, 0x3ed3, 0x3f20,
+ 0x3ee2, 0x3ef1, 0x3edb, 0x3eea, 0x3eeb, 0x3ee1, 0x3eff, 0x3ed6, 0x3ee0,
+ 0x3ed7, 0x3ee5, 0x3d54, 0x431b, 0x4310, 0x430f, 0x430e, 0x4339, 0x430a,
+ 0x4314, 0x430c, 0x4523, 0x455a, 0x45e2, 0x4693, 0x46b0, 0x46ab, 0x46bd,
+ 0x46b1, 0x468d, 0x46ad, 0x46aa, 0x46ac, 0x46bc, 0x46c9, 0x4847, 0x4862,
+ 0x4840, 0x4844, 0x483f, 0x4843, 0x483d, 0x4860, 0x485f, 0x483a, 0x4842,
+ 0x485e, 0x485d, 0x49bc, 0x49e0, 0x49ee, 0x49eb, 0x4a0d, 0x4b09, 0x4b0c,
+ 0x4b69, 0x4b74, 0x4b67, 0x3f31, 0x7527, 0x4cad, 0x4dff, 0x4e16, 0x4e08,
+ 0x4e09, 0x4e00, 0x4dfc, 0x4e13, 0x4e14, 0x4e0a, 0x983e, 0x4e29, 0x4e17,
+ 0x4e3b, 0x4dfb, 0x3fbf, 0x4e0e, 0x3fe4, 0x5008, 0x521b, 0x521a, 0x5219,
+ 0x5202, 0x404a, 0x5217, 0x5207, 0x5213, 0x5209, 0x520a, 0x5212, 0x52aa,
+ 0x5238, 0x537b, 0x537c, 0x537a, 0x53ea, 0x53eb, 0x53ef, 0x53f0, 0x5509,
+ 0x5502, 0x5501, 0x552b, 0x5507, 0x40cf, 0x5528, 0x54fb, 0x552a, 0x54fe,
+ 0x5504, 0x5529, 0x550a, 0x798c, 0x56c2, 0x7991, 0x56a6, 0x4114, 0x2fc6,
+ 0x1c07, 0x580a, 0x57fd, 0x5806, 0x580d, 0x5809, 0x580b, 0x5800, 0x5805,
+ 0x583d, 0x59d5, 0x59bf, 0x59ba, 0x59c7, 0x5a98, 0x5a9a, 0x420d, 0x5ba4,
+ 0x5b9c, 0x5b9d, 0x5ba2, 0x5b96, 0x5b95, 0x5ba5, 0x5baa, 0x5bad, 0x5b9a,
+ 0x5ba3, 0x5b97, 0x5b90, 0x5baf, 0x5b8d, 0x4201, 0x5ba8, 0x5bee, 0x5ea3,
+ 0x5e99, 0x5ea1, 0x5e9c, 0x5ea4, 0x5ecb, 0x6056, 0x6048, 0x6059, 0x604a,
+ 0x605c, 0x42f1, 0x604f, 0x604d, 0x605d, 0x623a, 0x62e3, 0x62e1, 0x62de,
+ 0x6397, 0x639a, 0x6448, 0x644a, 0x644c, 0x644e, 0x644f, 0x644b, 0x644d,
+ 0x6447, 0x6451, 0x64da, 0x64f9, 0x64fc, 0x64fb, 0x64fd, 0x64f8, 0x64fa,
+ 0x658a, 0x658e, 0x6588, 0x6589, 0x658d, 0x6590, 0xf97e, 0x671c, 0x67ab,
+ 0x67a4, 0x67a8, 0x67ad, 0x679f, 0x679a, 0x67b0, 0x67a5, 0x67d5, 0x67a2,
+ 0x67b2, 0x679d, 0x67a1, 0x6915, 0x6942, 0x6973, 0x6984, 0x69dd, 0x6a5c,
+ 0x6a4c, 0x4476, 0x6a4b, 0x6c67, 0x6da8, 0x6d7f, 0x6d8d, 0x6d8b, 0x6df7,
+ 0x6da9, 0x6df4, 0x6d9a, 0x6d8c, 0x6d95, 0x6d7e, 0x6d77, 0x450a, 0x4503,
+ 0x6d71, 0x6dfd, 0x6d88, 0x6d99, 0x6d6d, 0x6dd4, 0x6d91, 0x6d7d, 0x6d63,
+ 0x6d75, 0x6df9, 0x6d8e, 0x6d74, 0x6dd9, 0x6d66, 0x6dfa, 0x6df5, 0x8660,
+ 0x71c1, 0x71c9, 0x7303, 0x732c, 0x7334, 0x7317, 0x7309, 0x7304, 0x7306,
+ 0x731a, 0x730e, 0x7327, 0x7305, 0x7307, 0x7319, 0x7314, 0x730c, 0x731d,
+ 0x7322, 0x7323, 0x75bb, 0x75bc, 0x75ba, 0x76a9, 0x76b5, 0x76ac, 0x76aa,
+ 0x76af, 0x76b7, 0x4635, 0x4636, 0x783d, 0x7845, 0x7848, 0x783c, 0x783e,
+ 0x78ec, 0x78ed, 0x78e9, 0x7a0a, 0x7a0b, 0x79f8, 0x7a04, 0x79f6, 0x79f9,
+ 0x7c53, 0x7c52, 0x7c60, 0x7c63, 0x7cce, 0x7ccd, 0x7cd0, 0x7ccc, 0x7d87,
+ 0x7d8d, 0x7d9d, 0x4773, 0x7e63, 0x7ef4, 0x7ef1, 0x7eff, 0x7ef5, 0x7efc,
+ 0x7ef2, 0x7ef6, 0x47b1, 0x7efa, 0x47af, 0x802e, 0x8045, 0x8043, 0x8051,
+ 0x804c, 0x8073, 0x8047, 0x804b, 0x804f, 0x47f4, 0x8044, 0x804d, 0x804e,
+ 0x804a, 0x8041, 0x8052, 0x809f, 0x8054, 0x8059, 0x80a2, 0x824b, 0x8248,
+ 0x830d, 0x831f, 0x8308, 0x830e, 0x831d, 0x8304, 0x8418, 0x841b, 0x8566,
+ 0x8562, 0x8583, 0x8567, 0x8762, 0x874f, 0x874e, 0x8767, 0x8753, 0x874d,
+ 0x874c, 0x8768, 0x8751, 0x48dc, 0x8758, 0x875b, 0x8750, 0x876a, 0x8839,
+ 0x8838, 0x8982, 0x8984, 0x8986, 0x8c80, 0x8c86, 0x8d25, 0x8d11, 0x4999,
+ 0x8d0e, 0x8d15, 0x8d0f, 0x8d18, 0x8d0d, 0x8d13, 0x8d16, 0x8d19, 0x8f08,
+ 0x8ef7, 0x8efb, 0x8efc, 0x8fb4, 0x8fbe, 0x8fc1, 0x90a6, 0x90a5, 0x90a2,
+ 0x90a4, 0x9212, 0x920e, 0x927a, 0x9278, 0x927d, 0x927e, 0x9281, 0x9283,
+ 0x9280, 0x9282, 0x939b, 0x9399, 0x939c, 0x939a, 0x93a1, 0x941a, 0x941c,
+ 0x948a, 0x9479, 0x9473, 0x9475, 0x947c, 0x9478, 0x9460, 0x9483, 0x9470,
+ 0x4ab6, 0x4abd, 0x9487, 0x9484, 0x947b, 0x947e, 0x9474, 0x95b9, 0x95b8,
+ 0x95b7, 0x95b5, 0x96cc, 0x96ce, 0x96d1, 0x9904, 0x96cb, 0x999b, 0x987e,
+ 0x987a, 0x9877, 0x988c, 0x98e1, 0x9a20, 0x9a1e, 0x9ac2, 0x9b0f, 0x9b00,
+ 0x4bf4, 0x9b10, 0x9c0d, 0x9c0e, 0x9c8e, 0x9c8d, 0x9c8a, 0x9c8b, 0x9c8c,
+ 0x9c8f, 0x9d57, 0x4c35, 0x9d55, 0x9d5b, 0x9fac, 0x9fa7, 0x9fa0, 0x9f9e,
+ 0x4caa, 0xa28d, 0x4d1f, 0xa393, 0xa394, 0xa392, 0x0181, 0x03d6, 0x03c3,
+ 0x03e4, 0x03e2, 0x0409, 0x03bf, 0x03c8, 0x03c7, 0x04b5, 0x04b2, 0x060c,
+ 0x060b, 0x060a, 0x0605, 0x07d3, 0x07e6, 0x07e9, 0x07f0, 0x07ea, 0x07e7,
+ 0x08b1, 0x08b3, 0x08b4, 0x08b0, 0x095c, 0x095d, 0x095e, 0x09c0, 0x0aaf,
+ 0x3550, 0x0b86, 0x0b83, 0x0b84, 0x0f5c, 0x0f70, 0x0f8c, 0x0f7b, 0x0f66,
+ 0x0f79, 0x0f63, 0x0fc5, 0x0f6b, 0x0f6d, 0x0f72, 0x0f69, 0x0f75, 0x0f89,
+ 0x0fc6, 0x0fa5, 0x03e7, 0x0f6a, 0x0f97, 0x145a, 0x145c, 0x1459, 0x1424,
+ 0x1425, 0x1430, 0x1458, 0x1431, 0x1576, 0x15c1, 0x1685, 0x167d, 0x1865,
+ 0x1887, 0x1852, 0x1854, 0x188a, 0x1850, 0x1886, 0x184f, 0x1868, 0x199d,
+ 0x1aa0, 0x1aba, 0x1abd, 0x1ab8, 0x1ba6, 0x377b, 0x1cde, 0x1cd8, 0x1cd1,
+ 0x1f13, 0x3809, 0x1f0e, 0x1f1b, 0x1f3a, 0x3807, 0x1f1c, 0x1f12, 0x1f16,
+ 0x1f1a, 0x1448, 0x214b, 0x2137, 0x2136, 0x2138, 0x213a, 0x2149, 0x213c,
+ 0x214a, 0x22b1, 0x22c2, 0x22b5, 0x22c4, 0x22b6, 0x241e, 0x241f, 0x24af,
+ 0x256b, 0x256f, 0x2792, 0x27e4, 0x282c, 0x27ef, 0x6184, 0x284f, 0x2852,
+ 0x2850, 0x283a, 0x2837, 0x2847, 0x2864, 0x2840, 0x283c, 0x2845, 0x2841,
+ 0x29f3, 0x39bb, 0x2cc1, 0x2cb4, 0x3a4b, 0x2d2a, 0x2d22, 0x2d29, 0x3a4d,
+ 0x2d3e, 0x2d3c, 0x2d30, 0x2fc7, 0x2fd5, 0x2fd6, 0x2fd3, 0x2fce, 0x2fc8,
+ 0x305c, 0x305f, 0x3062, 0x3ac2, 0x30bd, 0x30bf, 0x325c, 0x32b6, 0x3b1a,
+ 0x329d, 0x327f, 0x3b12, 0x3294, 0x3281, 0x3347, 0x3346, 0x3b3c, 0x3394,
+ 0x3675, 0x361a, 0x362a, 0x3632, 0x3617, 0x3623, 0x3674, 0x3bc3, 0x3676,
+ 0x362e, 0x3625, 0x3620, 0x3671, 0x3616, 0x3670, 0x362c, 0x362f, 0x361f,
+ 0x3664, 0x3bc0, 0x3908, 0x3914, 0x390a, 0x390b, 0x3a4f, 0x3a59, 0x3a54,
+ 0x3a51, 0x3ab6, 0x3bec, 0x3bed, 0x3bea, 0x3eee, 0x3f5a, 0x3f73, 0x3f65,
+ 0x3f61, 0x3f55, 0x3f6b, 0x3f64, 0x3f5b, 0x3f4c, 0x3f6f, 0x3f84, 0x3f70,
+ 0x435d, 0x4357, 0x4366, 0x4353, 0x4398, 0x4397, 0x4528, 0x45eb, 0x45ea,
+ 0x45e8, 0x45ec, 0x45ef, 0x46d1, 0x46ca, 0x729f, 0x46cf, 0x46cd, 0x46ce,
+ 0x4870, 0x4867, 0x4873, 0x486d, 0x4876, 0x4879, 0x486a, 0x488b, 0x4872,
+ 0x4871, 0x486e, 0x487a, 0x4a16, 0x4a39, 0x4a3b, 0x4b10, 0x4b96, 0x4b7b,
+ 0x4b7c, 0x4b7d, 0x4cbe, 0x4e5c, 0x4e38, 0x4e39, 0x4e2e, 0x4e34, 0x4e32,
+ 0x4e5b, 0x4e33, 0x4e3c, 0x3fe5, 0x500e, 0x500f, 0x5010, 0x5087, 0x525b,
+ 0x5253, 0x405f, 0x525c, 0x523f, 0x5259, 0x524a, 0x5244, 0x524c, 0x5240,
+ 0x525f, 0x525e, 0x524e, 0x5254, 0x5243, 0x5287, 0x5382, 0x5385, 0x5531,
+ 0x5547, 0x552e, 0x552f, 0x5548, 0x5534, 0x4118, 0x059f, 0x5832, 0x5836,
+ 0x5833, 0x5831, 0x5840, 0x5841, 0x59dd, 0x59d2, 0x59d9, 0x41ad, 0x59df,
+ 0x59db, 0x59d8, 0x59d3, 0x59de, 0x59e0, 0x59d4, 0x59d7, 0x59da, 0x5aa7,
+ 0x5bfe, 0x5bdd, 0x5c40, 0x5be2, 0x421e, 0x5bd6, 0x5bde, 0x5bef, 0x4227,
+ 0x5beb, 0x5bea, 0x5be4, 0x5bd1, 0x4218, 0x5bec, 0x5bfa, 0x5bd9, 0x5bf3,
+ 0x5be1, 0x5bdc, 0x5be5, 0x5bdf, 0x5bd4, 0x4220, 0x5c05, 0x5ed6, 0x5ed5,
+ 0x5ed0, 0x5ec8, 0x5ec4, 0x5ec9, 0x5ecd, 0x5ed2, 0x5ecc, 0x5eca, 0x60a0,
+ 0x6092, 0x42f4, 0x4302, 0x608b, 0x60a1, 0x6095, 0x6088, 0x6086, 0x608d,
+ 0x6085, 0x6091, 0x6089, 0x60a2, 0x62f0, 0x62f3, 0x62f4, 0x62ef, 0x6306,
+ 0x63a2, 0x645e, 0x6463, 0x6460, 0x645b, 0x647b, 0x6458, 0x6459, 0x645d,
+ 0x6505, 0x6506, 0x6502, 0x6503, 0x6504, 0x65a2, 0x65a7, 0x65a6, 0x65a4,
+ 0x65ac, 0x65a9, 0x67e7, 0x6801, 0x67df, 0x67d9, 0x67e3, 0x680f, 0x691a,
+ 0x6945, 0x6948, 0x697b, 0x6985, 0x6986, 0x69fe, 0x69ff, 0x6a64, 0x6a71,
+ 0x6a72, 0x6a61, 0x6a62, 0x6a6c, 0x6a60, 0x6a5d, 0x6a63, 0x6a67, 0x6e01,
+ 0x6e2a, 0x6e30, 0x6e06, 0x6e7d, 0x6e22, 0x6eb9, 0x6e0a, 0x6e10, 0x6d8f,
+ 0x6e80, 0x6e13, 0x6e2e, 0x6e18, 0x6e17, 0x6e1a, 0x6e14, 0x6e47, 0x6e63,
+ 0x6e38, 0x4524, 0x6e7f, 0x6e21, 0x6e37, 0x6e31, 0x6e1b, 0x6ea5, 0x6f6c,
+ 0x71d3, 0x7388, 0x736e, 0x735c, 0x7374, 0x7354, 0x7383, 0x8770, 0x7365,
+ 0x7360, 0x7370, 0x736f, 0x736d, 0x7372, 0x736c, 0x7376, 0x7375, 0x7359,
+ 0x73c7, 0x75c1, 0x75f9, 0x76e3, 0x76e7, 0x76d6, 0x76cf, 0x76da, 0x76e9,
+ 0x76d2, 0x7855, 0x784f, 0x784d, 0x7851, 0x7856, 0x78f9, 0x78f8, 0x7906,
+ 0x7903, 0x7909, 0x78f7, 0x78f5, 0x7a47, 0x7a45, 0x7a3e, 0x7a46, 0x7a29,
+ 0x7a34, 0x7a3f, 0x7a44, 0x7a35, 0x7a5a, 0x7a2a, 0x7a33, 0x7a37, 0x7a43,
+ 0x7a39, 0x7a30, 0x7a5d, 0x7a32, 0x7a27, 0x7bbd, 0x7bba, 0x7bbc, 0x7bf1,
+ 0x7bf0, 0x7c61, 0x7c5c, 0x7c58, 0x7c5d, 0x7cda, 0x7cd9, 0x7cdd, 0x7cdc,
+ 0x7cde, 0x477d, 0x7da0, 0x7da2, 0x7f0f, 0x7f13, 0x7f12, 0x7f11, 0x7f14,
+ 0x7f19, 0x7f0e, 0x7f17, 0x7f21, 0x7f20, 0x7f16, 0x8078, 0x8e37, 0x8087,
+ 0x8079, 0x8080, 0x8077, 0x8081, 0x8046, 0x807a, 0x809c, 0x8083, 0x8084,
+ 0x80ad, 0x809d, 0x809e, 0x8255, 0x8336, 0x832b, 0x8327, 0x8346, 0x832c,
+ 0x8345, 0x8333, 0x832d, 0x8334, 0x8322, 0x4864, 0x841f, 0x85b3, 0x858c,
+ 0x858f, 0x85af, 0x85ad, 0x858e, 0x85ac, 0x85b0, 0x85b1, 0x85ae, 0x8599,
+ 0x86eb, 0x8774, 0x8775, 0x878e, 0x876d, 0x8770, 0x878c, 0x884f, 0x8851,
+ 0x8858, 0x884c, 0x884e, 0x8915, 0x89be, 0x89db, 0x89b3, 0x89ae, 0x8c87,
+ 0x8c8a, 0x8c88, 0x8c8b, 0x8c8c, 0x8d44, 0x8d2d, 0x8d2a, 0x8d31, 0x8d2c,
+ 0x8d45, 0x8d30, 0x8d29, 0x8d46, 0x8ef4, 0x8f14, 0x8f10, 0x8f0f, 0x8f12,
+ 0x8f0b, 0x8f0c, 0x8f0a, 0x8f13, 0x8f0e, 0x8fd9, 0x8fd0, 0x9703, 0x90c1,
+ 0x90bf, 0x90bd, 0x90bc, 0x90ba, 0x90bb, 0x90d1, 0x90be, 0x90d0, 0x90b9,
+ 0x921a, 0x921c, 0x921b, 0x9291, 0x9296, 0x929f, 0x929c, 0x929a, 0x929d,
+ 0x93ad, 0x93a5, 0x93ae, 0x9403, 0x9426, 0x9420, 0x9423, 0x9424, 0x9421,
+ 0x9428, 0x9425, 0x941e, 0x9494, 0x9493, 0x948f, 0x949a, 0x94ad, 0x4ac2,
+ 0x95ca, 0x95c5, 0x96bb, 0x96e1, 0x96ea, 0x96e4, 0x96ed, 0x96e6, 0x96e0,
+ 0x96e8, 0x96e5, 0x981a, 0x9894, 0x9896, 0x989e, 0x9895, 0x98a1, 0x988e,
+ 0x989b, 0x9892, 0x9897, 0x9899, 0x9893, 0x9a32, 0x9a2f, 0x9a2e, 0x9a33,
+ 0x9b1c, 0x9b1e, 0x9b11, 0x9b20, 0x9b1f, 0x9b19, 0x9b16, 0x9cac, 0x9cb9,
+ 0x9cb3, 0x9ca6, 0x9ca2, 0x9ca9, 0x9ca7, 0x9d6c, 0x9d6d, 0x9d69, 0x9d80,
+ 0x9d66, 0x9d65, 0x9d71, 0x9d6b, 0x9fbd, 0x9fc1, 0x9fd3, 0x9fb6, 0x4cac,
+ 0x9fb9, 0x9fd4, 0x9fb7, 0x9fdb, 0x9fb8, 0x9fc0, 0x9fbc, 0x9fd5, 0x9fbf,
+ 0x9fc3, 0x9fc9, 0xa258, 0xa290, 0xa295, 0xa297, 0xa309, 0xa308, 0xa306,
+ 0xa305, 0xa310, 0xa397, 0xa395, 0xa3ee, 0xa41f, 0xfa1a, 0x1b4b, 0x018e,
+ 0x03e8, 0x03f0, 0x03f4, 0x0406, 0x03ed, 0x349b, 0x03e9, 0x0400, 0x04b8,
+ 0x056d, 0x0804, 0x0801, 0x0803, 0x0802, 0x52f6, 0x3526, 0x0962, 0x0aba,
+ 0x0b13, 0x0fde, 0x0fd7, 0x0fe4, 0x0fce, 0x0fe3, 0x0fdd, 0x103a, 0x0fdb,
+ 0x0fd6, 0x0fe0, 0x0fd4, 0x0fcb, 0x0fe1, 0x0fc9, 0x0fdf, 0x103c, 0x0ffc,
+ 0x0fcf, 0x1479, 0x1476, 0x1478, 0x1687, 0x189c, 0x18b1, 0x18c1, 0x189a,
+ 0x1892, 0x41af, 0x18c2, 0x1896, 0x18c0, 0x1891, 0x1895, 0x19a2, 0x1ac3,
+ 0x1ac0, 0x1ac2, 0x0b8a, 0x1bb0, 0x1c16, 0x1f46, 0x1f4a, 0x1f3e, 0x1f45,
+ 0x1f42, 0x3815, 0x1f5b, 0x1f44, 0x2004, 0x4022, 0x2155, 0x2157, 0x2151,
+ 0x214e, 0x215a, 0x22c6, 0x22c3, 0x389c, 0x22c5, 0x22cc, 0x2371, 0x2426,
+ 0x24b2, 0x257a, 0x2584, 0x257b, 0x2874, 0x288c, 0x2851, 0x2848, 0x288d,
+ 0x2892, 0x2898, 0x2893, 0x28b0, 0x284e, 0x2896, 0x2897, 0x289c, 0x28ca,
+ 0x2d33, 0x2d83, 0x2d84, 0x2d9a, 0x2d8c, 0x64cc, 0x2d99, 0x2ee0, 0x2fe4,
+ 0x2ff8, 0x2fed, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ffd, 0x3119, 0x329e, 0x32c4,
+ 0x329f, 0x339b, 0x339f, 0x339a, 0x36aa, 0x369d, 0x3692, 0x36a2, 0x36af,
+ 0x36eb, 0x36a0, 0x36a1, 0x3694, 0x3698, 0x368f, 0x3687, 0x3684, 0x36a9,
+ 0x367c, 0x3918, 0x3a5f, 0x3a62, 0x3a61, 0x3ac0, 0x3b15, 0x3bfc, 0x3bf9,
+ 0x3fc8, 0x3fc9, 0x3fde, 0x3fca, 0x3fe2, 0x3d64, 0x3d6e, 0x4004, 0x3fcc,
+ 0x3fdd, 0x3fe4, 0x3fd3, 0x3fc7, 0x3fc6, 0x3d5f, 0x4037, 0x43d8, 0x43ee,
+ 0x43b2, 0x43a3, 0x43b3, 0x43ed, 0x43f8, 0x4531, 0x455b, 0x4566, 0x4569,
+ 0x4596, 0x459b, 0x45f7, 0x45f3, 0x45f4, 0x45f5, 0x46e2, 0x46e7, 0x46e5,
+ 0x46e9, 0x46e6, 0x46e3, 0x4874, 0x487f, 0x488f, 0x4890, 0x4897, 0x48a3,
+ 0x488e, 0x4898, 0x488c, 0x4a42, 0x4a44, 0x4a69, 0x4a43, 0x4a68, 0x3ef6,
+ 0x4b8d, 0x4b88, 0x4b8b, 0x4b89, 0x4ccc, 0x4d1f, 0x4e80, 0x4e5e, 0x4e67,
+ 0x4e68, 0x4e65, 0x764a, 0x4e74, 0x4e69, 0x4e61, 0x4e62, 0x4e6c, 0x4e93,
+ 0x4e86, 0x4f9d, 0x4f9b, 0x501b, 0x5016, 0x5019, 0x5014, 0x5018, 0x5015,
+ 0x5099, 0x5098, 0x525d, 0x5289, 0x527a, 0x527d, 0x524b, 0x4073, 0x5278,
+ 0x527f, 0x5277, 0x527e, 0x5279, 0x52ab, 0x527c, 0x5274, 0x5275, 0x52a7,
+ 0x538d, 0x554e, 0x5566, 0x5561, 0x554d, 0x554f, 0x40dd, 0x5554, 0x557c,
+ 0x56da, 0x56de, 0x56d8, 0x56dd, 0x56df, 0x5866, 0x5862, 0x585f, 0x5864,
+ 0x5863, 0x5860, 0x5888, 0x586a, 0x5867, 0x5887, 0x583f, 0x586c, 0x586e,
+ 0x58ad, 0x59f1, 0x59f4, 0x59f6, 0x59f5, 0x59f8, 0x59fb, 0x59ec, 0x59ef,
+ 0x59ed, 0x7ab9, 0x59f7, 0x59f9, 0x59fd, 0x5ab1, 0x5c36, 0x5c1b, 0x5c32,
+ 0x5c42, 0x5c4d, 0x5c1f, 0x5c21, 0x5c1c, 0x5c31, 0x5c2e, 0x5c47, 0x5c3b,
+ 0x5c41, 0x5c18, 0x5c39, 0x5c1d, 0x5c27, 0x5c23, 0x7bd7, 0x5eee, 0x5ee8,
+ 0x5ee5, 0x5eef, 0x5ee4, 0x5eec, 0x5ef0, 0x60d7, 0x60d8, 0x60d4, 0x60ca,
+ 0x60d2, 0x60cb, 0x60d3, 0x60e6, 0x60e2, 0x6249, 0x6248, 0x62ff, 0x6309,
+ 0x63b0, 0x63af, 0x647c, 0x6478, 0x647a, 0x6472, 0x6479, 0x647e, 0x650c,
+ 0x650b, 0x65cd, 0x65be, 0x65bc, 0x65bf, 0x65c0, 0x65bd, 0x6838, 0x6808,
+ 0x6805, 0x683b, 0x6810, 0x680c, 0x680d, 0x6804, 0x683a, 0x6813, 0x6837,
+ 0x6839, 0x691f, 0x694b, 0x69ee, 0x6a75, 0x6a78, 0x6a7c, 0x6a74, 0x6a76,
+ 0x6aea, 0x6aeb, 0x6dfb, 0x6e19, 0x6ea7, 0x6e8c, 0x6edc, 0x6e98, 0x6ebe,
+ 0x6e9e, 0x6f0f, 0x6e9f, 0x6edd, 0x6e93, 0x6ebb, 0x6eb6, 0x6e90, 0x6ea1,
+ 0x6ebd, 0x6ede, 0x6e3a, 0x6f22, 0x6e97, 0x6e94, 0x6ec3, 0x6e8e, 0x6ea8,
+ 0x6e99, 0x6ead, 0x6e9b, 0x6ea2, 0x6f21, 0x6eac, 0x6f0e, 0x6f31, 0x71e1,
+ 0x71de, 0x71df, 0x71dc, 0x71dd, 0x71ec, 0x71e7, 0x7369, 0x73b8, 0x73a1,
+ 0x73a8, 0x73ba, 0x73c2, 0x73a6, 0x73a4, 0x73a3, 0x73ab, 0x73bc, 0x73b7,
+ 0x73bf, 0x73ad, 0x73b1, 0x73ca, 0x73c4, 0x73b9, 0x75c8, 0x75c6, 0x75c7,
+ 0x770a, 0x770d, 0x76fb, 0x7703, 0x7702, 0x76fc, 0x76f9, 0x76f8, 0x786e,
+ 0x7863, 0x7862, 0x7861, 0x786b, 0x4688, 0x786f, 0x7866, 0x786c, 0x790e,
+ 0x7915, 0x7916, 0x7910, 0x7917, 0x7911, 0x7a6e, 0x7a6c, 0x7a87, 0x7a83,
+ 0x7a63, 0x7adc, 0x7bc0, 0x7bf7, 0x7bfa, 0x7c70, 0x7c6a, 0x7c68, 0x7c69,
+ 0x7c84, 0x7cec, 0x7ce7, 0x7cee, 0x7dba, 0x7db2, 0x7db5, 0x7dcb, 0x080b,
+ 0x7dd0, 0x7e6d, 0x7e6c, 0x47bb, 0x7f45, 0x7f46, 0x7f34, 0x7f2c, 0x7f35,
+ 0x7f44, 0x47ba, 0x7f76, 0x80b1, 0x80aa, 0x80a1, 0x80b2, 0x4812, 0x80a6,
+ 0x80b5, 0x80b4, 0x80b8, 0x80af, 0x80b0, 0x80a3, 0x8262, 0x8264, 0x8356,
+ 0x8351, 0x834f, 0x8368, 0x834c, 0x8350, 0x4861, 0x8348, 0x834a, 0x8421,
+ 0x85e3, 0x85b9, 0x85de, 0x85b7, 0x85e1, 0x85b6, 0x85b5, 0x85df, 0x48e1,
+ 0x8797, 0x879a, 0x879b, 0x8798, 0x8792, 0x8793, 0x87d7, 0x8773, 0x886b,
+ 0x8874, 0x8878, 0x886d, 0x8918, 0x89e9, 0x89f5, 0x89ea, 0x8a2e, 0x89e7,
+ 0x89fe, 0x89e5, 0x8a36, 0x89f0, 0x89e6, 0x8a2c, 0x8c89, 0x8c95, 0x8c93,
+ 0x8d4d, 0x8d4a, 0x8d4f, 0x8d50, 0x8d4b, 0x8f2a, 0x8f2b, 0x8f2f, 0x8f2e,
+ 0x8f7c, 0x8fed, 0x8fe2, 0x90e0, 0x90dc, 0x90da, 0x90d6, 0x90f4, 0x90d9,
+ 0x90d5, 0x9222, 0x9221, 0x9224, 0x9225, 0x9226, 0x9223, 0x92aa, 0x92af,
+ 0x92b0, 0x92ab, 0x93af, 0x93b7, 0x93b5, 0x93b2, 0x93b3, 0x942b, 0x94d8,
+ 0x94c2, 0x94af, 0x94bc, 0x94b8, 0x94be, 0x94b7, 0x94b4, 0x94bf, 0x94b3,
+ 0x94b1, 0x94bb, 0x94bd, 0x94d6, 0x94dd, 0x95d8, 0x95d3, 0x95d5, 0x95e3,
+ 0x95e2, 0x95d9, 0x95de, 0x95df, 0x95da, 0x95d4, 0x96f3, 0x96e2, 0x970d,
+ 0x9701, 0x9705, 0x971a, 0x9703, 0x971f, 0x9716, 0x96fa, 0x96fc, 0x970a,
+ 0x999f, 0x98bc, 0x98ca, 0x98b6, 0x98c7, 0x98bf, 0x4b89, 0x98b9, 0x4b8c,
+ 0x98b0, 0x98b8, 0x98bd, 0x9891, 0x98bb, 0x98be, 0x9a3e, 0x9a3d, 0x9b38,
+ 0x9b3d, 0x9b39, 0x9b33, 0x9c33, 0x9cbb, 0x9cc6, 0x9cc5, 0x9cc7, 0x9ccb,
+ 0x9ca8, 0x9cc8, 0x9cbe, 0x9cc1, 0x9cbd, 0x9d82, 0x9d9e, 0x9d81, 0x9d84,
+ 0x9b8d, 0x9d96, 0x9d8e, 0x9d88, 0x9d87, 0x9fe0, 0xa00d, 0x9fdf, 0x9fe4,
+ 0x9fe2, 0x9fdd, 0x9fec, 0x9fde, 0x9fe7, 0x9fea, 0x9fe3, 0xa25c, 0x9e77,
+ 0xa25d, 0xa29c, 0xa31d, 0xa39d, 0xa39e, 0xa39b, 0xa3b5, 0xa3b9, 0xa3b6,
+ 0xa3f3, 0xa3f2, 0xa3f4, 0xa426, 0xa427, 0xa425, 0xa506, 0xa50b, 0xa53a,
+ 0xa53c, 0x040a, 0x040b, 0x04bf, 0x04fd, 0x0618, 0x91df, 0x5390, 0x069e,
+ 0x07fc, 0x0810, 0x080f, 0x080d, 0x08b9, 0x08b7, 0x08ba, 0x090a, 0x1041,
+ 0x108b, 0x1046, 0x1053, 0x10e2, 0x103f, 0x0f7c, 0x104b, 0x104e, 0x108a,
+ 0x1047, 0x1493, 0x7dce, 0x148c, 0x14af, 0x14c9, 0x15c6, 0x15c8, 0x1691,
+ 0x18cf, 0x18d4, 0x18ce, 0x1add, 0x1ad4, 0x1f49, 0x1f63, 0x1f5d, 0x381a,
+ 0x1f67, 0x1fbb, 0x1f60, 0x1f80, 0x215f, 0x2160, 0x22da, 0x22d2, 0x22dd,
+ 0x258e, 0x2588, 0x256c, 0x289e, 0x28c9, 0x28a4, 0x3998, 0x28d9, 0x28d2,
+ 0x28da, 0x28dd, 0x28ce, 0x28fc, 0x2a14, 0x2a60, 0x2dd7, 0x2dcb, 0x2dcd,
+ 0x2dd5, 0x2ee7, 0x3000, 0x300a, 0x300f, 0x3002, 0x3001, 0x311d, 0x32ca,
+ 0x32cb, 0x32cd, 0x334f, 0x339c, 0x3680, 0x370d, 0x3702, 0x3bf1, 0x3707,
+ 0x36f7, 0x36f8, 0x36fd, 0x3724, 0x36fb, 0x3739, 0x373a, 0x3922, 0x6ba9,
+ 0x3a6a, 0x3a6d, 0x3a74, 0x3c0e, 0x3fdf, 0x402b, 0x3fe3, 0x4026, 0x402a,
+ 0x4023, 0x4035, 0x404a, 0x43fd, 0x4400, 0x441e, 0x43ff, 0x459e, 0x45fa,
+ 0x46f1, 0x4895, 0x48a8, 0x48a6, 0x4a6e, 0x4a83, 0x4a6d, 0x4b8f, 0x3f6a,
+ 0x4cdf, 0x4cd5, 0x4ce0, 0x4cd3, 0x4cd8, 0x4e8c, 0x764b, 0x4e94, 0x4e96,
+ 0x4e85, 0x4e8f, 0x4ea9, 0x4e8e, 0x4e90, 0x4eb8, 0x4ec3, 0x4ebb, 0x4fa5,
+ 0x4fa2, 0x76a2, 0x4fa3, 0x50b5, 0x50ac, 0x50a8, 0x52ad, 0x52b8, 0x52b4,
+ 0x52ae, 0x52b6, 0x4485, 0x52c1, 0x52bf, 0x5392, 0x5400, 0x5401, 0x5575,
+ 0x5572, 0x5578, 0x5570, 0x557e, 0x557d, 0x557f, 0x56ef, 0x586d, 0x588e,
+ 0x588f, 0x588a, 0x588d, 0x5895, 0x588b, 0x588c, 0x58b0, 0x5893, 0x59fc,
+ 0x5a15, 0x5a0e, 0x5a18, 0x5a11, 0x5a0d, 0x5abb, 0x5ab3, 0x4239, 0x5ca1,
+ 0x5c9a, 0x5c84, 0x5ca0, 0x5c86, 0x5c9d, 0x5caa, 0x5c78, 0x5c8d, 0x5c8a,
+ 0x5ca6, 0x5c7a, 0x5c97, 0x5c88, 0x5c8e, 0x423d, 0x4244, 0x5c76, 0x5c81,
+ 0x5c85, 0x5c75, 0x5ca8, 0x5c8f, 0x5c91, 0x5ca2, 0x5c9c, 0x5c89, 0x5c7f,
+ 0x5c96, 0x5c79, 0x5c9f, 0x5ca7, 0x4246, 0x5c87, 0x5c9b, 0x5ca5, 0x5c8b,
+ 0x5cc9, 0x5eff, 0x5f03, 0x5f00, 0x5f02, 0x5f04, 0x5f05, 0x5ee6, 0x5f1f,
+ 0x6114, 0x430e, 0x610c, 0x610f, 0x6119, 0x610b, 0x6113, 0x60d5, 0x4310,
+ 0x611c, 0x6250, 0x624e, 0x6312, 0x63b9, 0x6485, 0x6488, 0x6490, 0x6513,
+ 0x65d0, 0x65d1, 0x65d2, 0x65d7, 0x65d6, 0x65e5, 0x6846, 0x686b, 0x6845,
+ 0x683f, 0x683e, 0x443e, 0x686a, 0x6868, 0x684c, 0x6923, 0x6922, 0x6997,
+ 0x6991, 0x5ab5, 0x6998, 0x699c, 0x6a89, 0x4484, 0x6a8b, 0x6a8a, 0x6a8d,
+ 0x6a8e, 0x6a88, 0x6f4e, 0x6f44, 0x6f37, 0x6f75, 0x6f54, 0x6f76, 0x6f34,
+ 0x6f6b, 0x6f32, 0x6f57, 0x6f52, 0x6f45, 0x4549, 0x6eb1, 0x6f4b, 0x6f47,
+ 0x6f33, 0x6f40, 0x6f3c, 0x6f43, 0x6f4f, 0x6f55, 0x6f41, 0x6fb2, 0x6fc0,
+ 0x7434, 0x73f9, 0x7419, 0x740d, 0x73fa, 0x741e, 0x741f, 0x740e, 0x7440,
+ 0x7408, 0x45df, 0x7413, 0x744c, 0x45f0, 0x75cc, 0x75cb, 0x7724, 0x7725,
+ 0x773d, 0x7720, 0x7727, 0x7726, 0x771d, 0x771e, 0x7732, 0x776c, 0x7759,
+ 0x468a, 0x787a, 0x7879, 0x791b, 0x792e, 0x7923, 0x7920, 0x791f, 0x7ab6,
+ 0x7ab9, 0x7aa1, 0x7aa3, 0x7aa8, 0x7aaf, 0x7a9a, 0x7a99, 0x7aa2, 0x7a9d,
+ 0x4702, 0x7aab, 0x7bc9, 0x7bfe, 0x7c00, 0x7bfc, 0x7c07, 0x7c75, 0x7c72,
+ 0x7c73, 0x7c74, 0x7cfa, 0x7cfc, 0x7cf8, 0x7cf6, 0x7cfb, 0x7dcd, 0x7dd1,
+ 0x7dcf, 0x7e74, 0x7e72, 0x7e73, 0x7f54, 0x7f51, 0x47c0, 0x7f53, 0x7f49,
+ 0x7f4c, 0x7f4a, 0x7f4f, 0x7f56, 0x8100, 0x80d5, 0x80d7, 0x80ff, 0x80d9,
+ 0x80e3, 0x80d3, 0x4815, 0x80d8, 0x80d4, 0x80de, 0x8271, 0x8374, 0x8388,
+ 0x837f, 0x836b, 0x8387, 0x8379, 0x8378, 0x8389, 0x8380, 0x8376, 0x8429,
+ 0x8428, 0x842f, 0x85e5, 0x8604, 0x8603, 0x85f0, 0x85e8, 0x85ea, 0x85f1,
+ 0x8601, 0x8602, 0x87a9, 0x87ab, 0x87b7, 0x87b6, 0x48e2, 0x88a0, 0x888e,
+ 0x8886, 0x8887, 0x8885, 0x888b, 0x8888, 0x8890, 0x891a, 0x8934, 0x8a37,
+ 0x8a2f, 0x8a30, 0x8a39, 0x8a34, 0x8a33, 0x8a85, 0x8a84, 0x8a3a, 0x8c9f,
+ 0x8d69, 0x8d6c, 0x8d6a, 0x8d67, 0x8d6b, 0x8f3f, 0x8f40, 0x900b, 0x90d2,
+ 0x90f8, 0x9101, 0x90fa, 0x9116, 0xf9f6, 0x922c, 0x922d, 0x922f, 0x922e,
+ 0x92c1, 0x92f5, 0x92c4, 0x92de, 0x92cc, 0x92d2, 0x92c2, 0x92cd, 0x92cf,
+ 0x92dd, 0x92c8, 0x93ba, 0x93be, 0x93bf, 0x942e, 0x9430, 0x94e7, 0x94ee,
+ 0x94e8, 0x94e6, 0x94e2, 0x94e4, 0x94fb, 0x94fc, 0x94ea, 0x95ed, 0x95f6,
+ 0x95f3, 0x95f4, 0x95f1, 0x95f7, 0x95f5, 0x95ea, 0x95eb, 0x9700, 0x972c,
+ 0x9712, 0x973d, 0x9733, 0x4b4d, 0x9730, 0x9740, 0x9731, 0x9757, 0x4b4a,
+ 0x9735, 0x9732, 0x972d, 0x9736, 0x9738, 0x9762, 0x975f, 0x978a, 0x98d6,
+ 0x98d8, 0x98dd, 0x98e4, 0x98e3, 0x9a4d, 0x9ad7, 0x9b4a, 0x9b4c, 0x9b50,
+ 0x9b4b, 0x9b4e, 0x9b4f, 0x9c39, 0x9cd2, 0x9ccd, 0x9cd3, 0x9ce1, 0x9cce,
+ 0x9cd5, 0x9cdd, 0x9cd4, 0x9ccf, 0x9dcb, 0x9da6, 0x9dc2, 0x9da5, 0x9da9,
+ 0x9da2, 0x9da4, 0x9db0, 0x9dcc, 0x9daf, 0x9dbf, 0xa024, 0xa01a, 0xa014,
+ 0xa03a, 0xa020, 0xa01b, 0xa021, 0xa025, 0xa01e, 0xa03f, 0xa040, 0xa018,
+ 0xa02c, 0xa015, 0xa02d, 0xa01f, 0xa029, 0xa04b, 0xa2b3, 0xa2a5, 0xa2a7,
+ 0xa2ab, 0xa2a6, 0xa2aa, 0xa322, 0xa323, 0xa3a1, 0xa3a3, 0xa3a0, 0xa3bd,
+ 0xa3ba, 0xa3fa, 0xa3f8, 0xa3fc, 0xa3f6, 0xa434, 0xa443, 0x4d63, 0xa4d4,
+ 0xa50d, 0xa543, 0xa541, 0xa53d, 0xa540, 0xa53e, 0xa53f, 0xa546, 0x4d93,
+ 0xa5d4, 0x0435, 0x0436, 0x0432, 0x043a, 0x04c8, 0x0536, 0x061e, 0x061d,
+ 0x061f, 0x081c, 0x081d, 0x0820, 0x350e, 0x08c0, 0x109a, 0x1093, 0x10dd,
+ 0x360a, 0x10a3, 0x10a9, 0x109c, 0x109b, 0x360d, 0x1097, 0x14b1, 0x14ca,
+ 0x14b3, 0x14cd, 0x18ea, 0x18ee, 0x18ef, 0x1adf, 0x1b50, 0x1bbb, 0x1f88,
+ 0x1f89, 0x1f8c, 0x1f85, 0x1f5e, 0x1f94, 0x1f95, 0x216b, 0x216a, 0x2169,
+ 0x22e3, 0x22f1, 0x2437, 0x2433, 0x2591, 0x258f, 0x2597, 0x28d4, 0x28de,
+ 0x28d3, 0x28e0, 0x2943, 0x290b, 0x28ff, 0x2904, 0x2907, 0x2df9, 0x2dfa,
+ 0x2dfb, 0x2df8, 0x3012, 0x3010, 0x311f, 0x32df, 0x32e3, 0x3352, 0x33a9,
+ 0x3765, 0x3787, 0x3742, 0x3752, 0x374c, 0x369f, 0x3701, 0x3748, 0x374f,
+ 0x377e, 0x374d, 0x3758, 0x3747, 0x375e, 0x3749, 0x374e, 0x375d, 0x375a,
+ 0x3786, 0x3751, 0x3929, 0x39a6, 0x39a7, 0x3a70, 0x3a6f, 0x3ad3, 0x3ad2,
+ 0x3c28, 0x3c1b, 0x3c1a, 0x3c1c, 0x3c21, 0x4032, 0x4066, 0x407d, 0x4073,
+ 0x407f, 0x4065, 0x4080, 0x4061, 0x4075, 0x406e, 0x4067, 0x4071, 0x406c,
+ 0x4063, 0x4062, 0x4083, 0x40b2, 0x4081, 0x406f, 0x406b, 0x4082, 0x408a,
+ 0x4429, 0x4430, 0x4431, 0x4597, 0x4600, 0x45ff, 0x48b6, 0x48b5, 0x48c3,
+ 0x4a8d, 0x4b18, 0x4b9c, 0x4b9a, 0x4b99, 0x4eb7, 0x4ec4, 0x4ec6, 0x4ec7,
+ 0x4ebc, 0x4ec0, 0x4ec5, 0x4ecd, 0x4ec1, 0x4ebe, 0x4fa7, 0x4fb8, 0x5023,
+ 0x4074, 0x52e8, 0x52de, 0x52e3, 0x52ef, 0x52dc, 0x52e4, 0x52e1, 0x52e5,
+ 0x5395, 0x5394, 0x5393, 0x538e, 0x5598, 0x559c, 0x5599, 0x55a0, 0x559e,
+ 0x5704, 0x58d3, 0x58b4, 0x58bb, 0x58b7, 0x58b8, 0x58bd, 0x58b6, 0x58b9,
+ 0x58b5, 0x5a22, 0x5a21, 0x5ac3, 0x5abc, 0x5cff, 0x5ce5, 0x5cf7, 0x5cd2,
+ 0x5d00, 0x5cdb, 0x5cf0, 0x5ce2, 0x5ccd, 0x4256, 0x5ce1, 0x5cf2, 0x5cdc,
+ 0x5ccc, 0x5cd6, 0x5cf3, 0x5cfa, 0x5cf6, 0x5cec, 0x5cea, 0x5ce3, 0x5cd0,
+ 0x425a, 0x5c95, 0x5cd5, 0x5cf4, 0x5ccb, 0x5cda, 0x5cc8, 0x5cdf, 0x5cf5,
+ 0x5ccf, 0x5cc7, 0x5cd7, 0x5f24, 0x42a3, 0x5f1c, 0x5f21, 0x5f1e, 0x5f18,
+ 0x5f1b, 0x42a8, 0x6146, 0x614b, 0x6148, 0x6147, 0x6167, 0x6154, 0x6315,
+ 0x6322, 0x63c5, 0x6329, 0x63c7, 0x648d, 0x651b, 0x6520, 0x65e2, 0x65e7,
+ 0x65e8, 0x65e1, 0x6872, 0x687b, 0x6874, 0x6871, 0x6879, 0x6875, 0x6890,
+ 0x6877, 0x687d, 0x694f, 0x6950, 0x69a3, 0x69a2, 0x69f4, 0x6a94, 0x6a9a,
+ 0x6a9b, 0x6aa7, 0x6a97, 0x6a95, 0x6a92, 0x6a9c, 0x6a96, 0x6fb6, 0x6fb8,
+ 0x6fb0, 0x7018, 0x6fc5, 0x6fb5, 0x6fc2, 0x7006, 0x7019, 0x6fb9, 0x7015,
+ 0x6fd6, 0x6fac, 0x453c, 0x6fc6, 0x6fb3, 0x6fc3, 0x6fca, 0x6fcf, 0x6fbd,
+ 0x6fce, 0x7014, 0x6fba, 0x701a, 0x6fc1, 0x6fbb, 0x459b, 0x459a, 0x7201,
+ 0x71fc, 0x745a, 0x7454, 0x7461, 0x745c, 0x7455, 0x744a, 0x744b, 0x7451,
+ 0x7469, 0x746b, 0x87f1, 0x7466, 0x7458, 0x745d, 0x7467, 0x7456, 0x7488,
+ 0x7464, 0x744e, 0x7757, 0x775a, 0x7751, 0x774a, 0x774b, 0x465e, 0x7747,
+ 0x776f, 0x776a, 0x776b, 0x7746, 0x776d, 0x7754, 0x776e, 0x774c, 0x7878,
+ 0x7886, 0x7882, 0x46a7, 0x7ae1, 0x7ae5, 0x7adb, 0x7ade, 0x7ad7, 0x7c03,
+ 0x7c7c, 0x7c7e, 0x7d05, 0x7d07, 0x7de6, 0x7de1, 0x7dfb, 0x7de5, 0x7de7,
+ 0x7ddf, 0x7dff, 0x7e76, 0x7f63, 0x7f66, 0x7f65, 0x7f5e, 0x7f64, 0x7f6b,
+ 0x7f5f, 0x7f67, 0x7f68, 0x8108, 0x8109, 0x8117, 0x8115, 0x811b, 0x810b,
+ 0x8128, 0x810e, 0x8118, 0x8153, 0x8145, 0x810d, 0x810a, 0x8113, 0x814a,
+ 0x8279, 0x83a1, 0x838d, 0x83a2, 0x8390, 0x486e, 0x8431, 0x8430, 0x861f,
+ 0x8619, 0x860c, 0x861e, 0x861d, 0x8607, 0x8766, 0x87c5, 0x87ba, 0x87bd,
+ 0x87c2, 0x87c3, 0x87bf, 0x490d, 0x88a1, 0x88a2, 0x88a8, 0x88a3, 0x88aa,
+ 0x88af, 0x88b9, 0x8937, 0x8a8f, 0x4943, 0x8a8e, 0x8a87, 0x8a8a, 0x8a92,
+ 0x8a97, 0x8a9f, 0x8b05, 0x8ca9, 0x8ca7, 0x8d8a, 0x8d82, 0x8d85, 0x8d8b,
+ 0x8d89, 0x8d81, 0x8d80, 0x8d87, 0x8d86, 0x8f4d, 0x901c, 0x901f, 0x9121,
+ 0x911d, 0x9122, 0x90fe, 0x911b, 0x913a, 0x9137, 0x9117, 0x9138, 0x9126,
+ 0x9118, 0x9234, 0x9235, 0x9232, 0x4a73, 0x92e1, 0x92fd, 0x92e3, 0x92e8,
+ 0x92f9, 0x92ff, 0x92fe, 0x4a74, 0x92e0, 0x9300, 0x4a70, 0x92ec, 0x92e4,
+ 0x92ef, 0x92fa, 0x93ca, 0x9431, 0x9432, 0x9434, 0x9441, 0x9500, 0x9506,
+ 0x9508, 0x9505, 0x9503, 0x950b, 0x9502, 0x950a, 0x95f0, 0x9613, 0x960a,
+ 0x960f, 0x9611, 0x9608, 0x960b, 0x9612, 0x960d, 0x975b, 0x9763, 0x9761,
+ 0x9768, 0x975a, 0x984e, 0x984d, 0x9850, 0x98fc, 0x9912, 0x98f5, 0x991e,
+ 0x98f0, 0x98f3, 0x98f2, 0x9901, 0x98ef, 0x98ee, 0x9916, 0x98f6, 0x98fb,
+ 0x991c, 0x4bdb, 0x9a5d, 0x9a60, 0x9a66, 0x9a5f, 0x9a61, 0x9a5b, 0x9a62,
+ 0x9a57, 0x9b69, 0x9b6b, 0x9b61, 0x9b77, 0x9b5f, 0x9b63, 0x9b62, 0x9b65,
+ 0x9cef, 0x9ce2, 0x9d00, 0x9ce8, 0x9cf2, 0x9ce7, 0x4c29, 0x9ce5, 0x9dd5,
+ 0x9dd0, 0x9dda, 0x9dd3, 0x4c51, 0x9dd9, 0x9dcf, 0x9dd6, 0x9dd8, 0x9df5,
+ 0x9dce, 0x9dd7, 0x9df4, 0x9dcd, 0x9e01, 0x9bba, 0xa052, 0xa055, 0xa05a,
+ 0xa04d, 0xa054, 0xa053, 0xa05e, 0xa067, 0xa065, 0xa04e, 0x4cdb, 0xa04f,
+ 0xa061, 0xa06e, 0xa051, 0xa05b, 0xa263, 0xa2b7, 0xa2b6, 0xa2c3, 0xa2bb,
+ 0xa2b5, 0xa32e, 0xa330, 0xa333, 0xa331, 0xa3a4, 0xa3c1, 0xa3bb, 0xa3be,
+ 0xa400, 0xa3ff, 0xa440, 0x4d65, 0xa43f, 0xa444, 0x4d64, 0x4d67, 0xa4db,
+ 0xa50f, 0xa511, 0xa54e, 0xa54d, 0xa54b, 0xa54c, 0xa595, 0x043b, 0x0445,
+ 0x0444, 0x043e, 0x043c, 0x043f, 0x04cc, 0x04ce, 0x0622, 0x0623, 0x069f,
+ 0x08c5, 0x08c4, 0x10e9, 0x1099, 0x3611, 0x10e6, 0x10e7, 0x10f7, 0x14d2,
+ 0x3733, 0x18fd, 0x190c, 0x190b, 0x1ced, 0x3821, 0x3822, 0x1f9b, 0x200a,
+ 0x216f, 0x2175, 0x22f2, 0x22f8, 0x243e, 0x2924, 0x290e, 0x2916, 0x2918,
+ 0x2910, 0x2931, 0x2944, 0x39a6, 0x2929, 0x292f, 0x294b, 0x2936, 0x39a3,
+ 0x2e34, 0x2e00, 0x2e2b, 0x3020, 0x3021, 0x301e, 0x301d, 0x32f5, 0x32f2,
+ 0x32f6, 0x3790, 0x379d, 0x379c, 0x3792, 0x3794, 0x37d1, 0x3793, 0x37b7,
+ 0x3797, 0x37b0, 0x379f, 0x37c9, 0x392d, 0x392c, 0x3a77, 0x3c2c, 0x40c0,
+ 0x40b9, 0x4453, 0x4540, 0x4702, 0x46fb, 0x3ea1, 0x4a8b, 0x4aae, 0x4aab,
+ 0x4ba1, 0xa2cd, 0x4cea, 0x4edd, 0x4edc, 0x4ed9, 0x4fab, 0x4fac, 0x4fad,
+ 0x4fb2, 0x502c, 0x502b, 0x50c2, 0x5300, 0x530d, 0x5306, 0x52ff, 0x5303,
+ 0x5301, 0x5310, 0x530f, 0x5305, 0x5398, 0x5397, 0x5396, 0x5399, 0x55ac,
+ 0x55ab, 0x5712, 0x58d8, 0x58df, 0x58d6, 0x5a2d, 0x5a32, 0x5d3f, 0x5d2f,
+ 0x5d26, 0x5d3a, 0x5d39, 0x425f, 0x5d3b, 0x5d35, 0x5d2a, 0x5d21, 0x5d38,
+ 0x5d37, 0x5d34, 0x425c, 0x5d22, 0x5d36, 0x5d44, 0x5f45, 0x5f3b, 0x5f36,
+ 0x5f42, 0x617a, 0x6186, 0x618b, 0x617f, 0x6181, 0x632a, 0x63d5, 0x649f,
+ 0x649d, 0x6526, 0x65f4, 0x65f5, 0x6815, 0x688e, 0x688f, 0x6926, 0x69a7,
+ 0x69af, 0x6aad, 0x6aac, 0x6aab, 0x6aaa, 0x702f, 0x7021, 0x7023, 0x70a3,
+ 0x7049, 0x703a, 0x7048, 0x702d, 0x7025, 0x7029, 0x7032, 0x7034, 0x7024,
+ 0x702c, 0x704b, 0x703b, 0x7020, 0x7028, 0x7498, 0x45f5, 0x7497, 0x8804,
+ 0x749d, 0x74a8, 0x75d5, 0x7777, 0x7778, 0x7772, 0x7773, 0x7802, 0x793b,
+ 0x7afe, 0x7b0b, 0x7aff, 0x7b07, 0x4711, 0x470c, 0x7b30, 0x7bcd, 0x7bcf,
+ 0x7c10, 0x7c0a, 0x7c83, 0x7d15, 0x7d0e, 0x7d0c, 0x7e02, 0x7dfe, 0x7e05,
+ 0x7e15, 0x7e08, 0x7f7f, 0x7f77, 0x7f7c, 0x7f82, 0x7f7e, 0x7f78, 0x7f7d,
+ 0x7f79, 0x7f81, 0x814b, 0x8163, 0x8164, 0x8156, 0x8154, 0x814e, 0x8110,
+ 0x814f, 0x8157, 0x815e, 0x8151, 0x816a, 0x8169, 0x83ad, 0x83a4, 0x83ac,
+ 0x83a9, 0x83ae, 0x044c, 0x8650, 0x8635, 0x8632, 0x87d8, 0x87d1, 0x87cf,
+ 0x87be, 0x88d5, 0x88c1, 0x88c6, 0x88c3, 0x88c2, 0x88c0, 0x88c5, 0x88c7,
+ 0x88bf, 0x88c4, 0x88d4, 0x8a90, 0x8ad2, 0x494e, 0x8ad4, 0x8caf, 0x8cae,
+ 0x8cb2, 0x8cad, 0x8d9c, 0x8da0, 0x8db6, 0x8f3d, 0x8f56, 0x8f82, 0x9028,
+ 0x902b, 0x913c, 0x913e, 0x913f, 0x9142, 0x913d, 0x9141, 0x913b, 0x9149,
+ 0x9143, 0x9239, 0x9238, 0x9322, 0x9308, 0x930c, 0x9306, 0x9313, 0x9304,
+ 0x9320, 0x931d, 0x9305, 0x930a, 0x93d6, 0x93d7, 0x9436, 0x9437, 0x9523,
+ 0x9522, 0x9520, 0x951a, 0x951d, 0x961c, 0x9620, 0x9677, 0x977f, 0x978b,
+ 0x977d, 0x9799, 0x9784, 0x9789, 0x9785, 0x9783, 0x9786, 0x979e, 0x9853,
+ 0x9917, 0x4b94, 0x9919, 0x9920, 0x991f, 0x9923, 0x9918, 0x9921, 0x9929,
+ 0x9924, 0x9926, 0x9a5e, 0x9a6f, 0x9a6e, 0x9a74, 0x9a72, 0x9a73, 0x9b7d,
+ 0x9b7e, 0x9b85, 0x9b7f, 0x9b84, 0x9c44, 0x9cf5, 0x9cf8, 0x9d03, 0x9cf6,
+ 0x9e28, 0x4c63, 0x9e39, 0x9dfb, 0x9e0e, 0x9dfd, 0x9e1f, 0x4c61, 0x9e03,
+ 0x9bd8, 0x9e10, 0x4c5a, 0x9e0d, 0x9e27, 0x9e41, 0xa072, 0xa078, 0xa080,
+ 0x4ce3, 0xa085, 0xa07b, 0x9d7c, 0xa07d, 0xa091, 0xa088, 0xa0aa, 0xa08d,
+ 0xa089, 0xa095, 0xa09b, 0xa08c, 0xa09e, 0xa07c, 0xa086, 0xa084, 0xa268,
+ 0xa2c5, 0xa2c4, 0xa2c9, 0xa2c6, 0xa342, 0xa345, 0xa341, 0xa344, 0xa3a6,
+ 0xa3c2, 0xa442, 0xa449, 0xa448, 0xa44a, 0xa44c, 0xa44b, 0xa517, 0xa518,
+ 0xa515, 0xa552, 0xa554, 0xa553, 0xa59a, 0xa59b, 0xa5dc, 0xa5e4, 0xa691,
+ 0x4daf, 0xa6ba, 0x0451, 0x045b, 0x04cf, 0x3305, 0x1113, 0x1115, 0x1114,
+ 0x1123, 0x3613, 0x1111, 0x1112, 0x3680, 0x14f0, 0x169b, 0x1912, 0x1916,
+ 0x1917, 0x19b5, 0x1cf4, 0x1fb1, 0x2179, 0x22ff, 0x22fc, 0x22fb, 0x243f,
+ 0x2444, 0x259d, 0x2932, 0x294c, 0x292b, 0x295a, 0x2a1f, 0x2e01, 0x2e2d,
+ 0x2e27, 0x2e59, 0x2e5a, 0x2e4d, 0x2e58, 0x3023, 0x3025, 0x302b, 0x32ff,
+ 0x33ae, 0x37cb, 0x37ca, 0x37d0, 0x37ce, 0x37cc, 0x37d8, 0x37c6, 0x37d2,
+ 0x37cf, 0x37c8, 0x3b17, 0x4db0, 0x40c4, 0x9240, 0x40e9, 0x40f2, 0x40fc,
+ 0x40ea, 0x40eb, 0x40fd, 0x4478, 0x4477, 0x4473, 0x449e, 0x4479, 0x45a2,
+ 0x4603, 0x4704, 0x4705, 0x48ce, 0x4abf, 0x4ef6, 0x4ef7, 0x5031, 0x5030,
+ 0x50c9, 0x50c7, 0x531c, 0x5328, 0x531a, 0x531e, 0x531b, 0x531f, 0x55bf,
+ 0x55bb, 0x55bc, 0x55c0, 0x571a, 0x58ef, 0x58ec, 0x58e9, 0x58f0, 0x58fe,
+ 0x5a34, 0x5d6a, 0x5d95, 0x5d6c, 0x5d72, 0x5d67, 0x5d60, 0x5d6b, 0x5d5e,
+ 0x5d6f, 0x5d66, 0x7c46, 0x5d62, 0x5d5d, 0x5d5c, 0xf965, 0x5f50, 0x619f,
+ 0x4323, 0x619e, 0x61a6, 0x6335, 0x6338, 0x6336, 0x633a, 0x63dc, 0x687c,
+ 0x68ab, 0x4449, 0x68a8, 0x68a7, 0x692b, 0x692c, 0x6928, 0x092b, 0x69a9,
+ 0x69aa, 0x69ab, 0x69f8, 0x6ab1, 0x6af0, 0x6aef, 0x70a8, 0x708b, 0x7094,
+ 0x709e, 0x708f, 0x7088, 0x707e, 0x7081, 0x7030, 0x709b, 0x7082, 0x7090,
+ 0x7085, 0x707f, 0x70a9, 0x70de, 0x720d, 0x45fa, 0x74cf, 0x74cb, 0x74d8,
+ 0x74dd, 0x74d3, 0x74d0, 0x74d5, 0x74d6, 0x75d6, 0x7792, 0x7795, 0xa5cb,
+ 0x778d, 0x779b, 0x779d, 0x778f, 0x779e, 0x77a6, 0x7896, 0x7892, 0x7b16,
+ 0x7b2a, 0x7b29, 0x7b2c, 0x7c15, 0x7c12, 0x7c11, 0x7c13, 0x7c88, 0x7c8b,
+ 0x7c8a, 0x7c87, 0x7d17, 0x7d16, 0x7d1a, 0x7e19, 0x7e17, 0x7f91, 0x7f94,
+ 0x818b, 0x8190, 0x818f, 0x8186, 0x8183, 0x818e, 0x8187, 0x81a8, 0x8185,
+ 0x81a6, 0x8182, 0x81a7, 0x83b9, 0x83b7, 0x83b4, 0x83b6, 0x83b3, 0x83c6,
+ 0x863c, 0x8640, 0x8638, 0x8791, 0x87a6, 0x87da, 0x88da, 0x88d8, 0x88d9,
+ 0x88db, 0x88d7, 0x8b16, 0x8b12, 0x8b1f, 0x4959, 0x8b14, 0x8b1a, 0x8b10,
+ 0x8cb3, 0x8dae, 0x8dc1, 0x8db0, 0x8daf, 0x8db1, 0x8dad, 0x8db2, 0x8dc4,
+ 0x903c, 0x903f, 0x9161, 0x9166, 0x923c, 0x923b, 0x932c, 0x4a7e, 0x932a,
+ 0x933e, 0x932f, 0x9332, 0x9327, 0x9329, 0x9340, 0x93df, 0x93de, 0x943c,
+ 0x943b, 0x943e, 0x9521, 0x9546, 0x953c, 0x9536, 0x9538, 0x9535, 0x9631,
+ 0x9636, 0x962d, 0x9633, 0x962f, 0x962e, 0x9635, 0x97ac, 0x97a9, 0x97a6,
+ 0x4ba8, 0x994c, 0x9943, 0x9941, 0x994f, 0x9942, 0x9951, 0x4ba9, 0x9940,
+ 0x9950, 0x9945, 0x994a, 0x994b, 0x9a83, 0x9a82, 0x9a81, 0x9ae0, 0x9b98,
+ 0x9b9f, 0x9b9b, 0x9b9a, 0x9b99, 0x9b96, 0x9bae, 0x9b9e, 0x9d09, 0x9d0d,
+ 0x9e4e, 0x9e4a, 0x9e4d, 0x9e40, 0x9e3e, 0x9e48, 0x9e42, 0x9e62, 0x9e45,
+ 0x9e51, 0xa0c6, 0xa0d0, 0xa0c0, 0xa0b7, 0xa0c2, 0xa0bc, 0xa0c5, 0xa0dc,
+ 0xa0db, 0xa0d2, 0xa0c7, 0xa0b6, 0xa0c9, 0xa0cc, 0xa0d1, 0xa0cd, 0xa0da,
+ 0xa0ba, 0xa0d3, 0xa0ce, 0xa0f6, 0xa0bd, 0xa0dd, 0xa0c8, 0xa10d, 0xa135,
+ 0xa271, 0xa26e, 0xa26f, 0xa2d6, 0xa34c, 0xa34f, 0xa354, 0xa353, 0xa3c9,
+ 0xa3c8, 0xa403, 0x4d54, 0xa404, 0xfa16, 0xa457, 0xa452, 0xa453, 0x4d6d,
+ 0xa456, 0xa45c, 0xa455, 0xa564, 0xa55d, 0xa55e, 0xa5a2, 0xa5a3, 0x4d8e,
+ 0xa5e7, 0xa5e6, 0xa698, 0xa6ac, 0xa6af, 0xa6ae, 0x0459, 0x05a9, 0x082a,
+ 0x08c7, 0x1141, 0x1137, 0x1135, 0x1133, 0x1139, 0x1132, 0x14ff, 0x1501,
+ 0x14f8, 0x191b, 0x1919, 0x1bbf, 0x1fbc, 0x1fbe, 0x1fbd, 0x217d, 0x2446,
+ 0x2447, 0x25a4, 0x2a21, 0x2a62, 0x2e86, 0x3a72, 0x302f, 0x3031, 0x3c14,
+ 0x37f8, 0x37f5, 0x37f9, 0x37f2, 0x37fa, 0x37f3, 0x3814, 0x37fd, 0x380f,
+ 0x380e, 0x3801, 0x3937, 0x3935, 0x3934, 0x3931, 0x3a7a, 0x3a7b, 0x3c37,
+ 0x412b, 0x40fb, 0x4116, 0x4113, 0x3d93, 0x4111, 0x410f, 0x411b, 0x4138,
+ 0x44a4, 0x4709, 0x4707, 0x470b, 0x48d3, 0x48d1, 0x48d8, 0x4b1d, 0x4ba9,
+ 0x4bd0, 0x7215, 0x4f02, 0x4f05, 0x4f01, 0x4f00, 0x532e, 0x5330, 0x532f,
+ 0x5331, 0x55d2, 0x55d3, 0x5902, 0x5a40, 0x5a42, 0x5a3b, 0x5ace, 0x5d98,
+ 0x5d8f, 0x5d94, 0x5d91, 0x426f, 0x5dba, 0x5d90, 0x5d86, 0x5d9a, 0x5d8c,
+ 0x5d93, 0x5d87, 0x5d88, 0x5d97, 0x5d8d, 0x5d9c, 0x5dbd, 0x5f3c, 0x5f59,
+ 0x42b0, 0x61d1, 0x61bb, 0x61be, 0x625d, 0x63e2, 0x6605, 0x68ba, 0x352e,
+ 0x68f4, 0x69b2, 0x69f9, 0x6ab7, 0x6ab6, 0x7089, 0x70f9, 0x70d9, 0x70e8,
+ 0x70d4, 0x70db, 0x70e2, 0x70df, 0x70d1, 0x70e9, 0x70ea, 0x7213, 0x7211,
+ 0x74fa, 0x74f8, 0x74f4, 0x74fb, 0x750e, 0x7502, 0x750f, 0x7790, 0x77ad,
+ 0x77a9, 0x7948, 0x7b5a, 0x7b4f, 0x7b4e, 0x7b55, 0x7b54, 0x7b4a, 0x7bd5,
+ 0x7c18, 0x7c8d, 0x7d1d, 0x7d19, 0x7e26, 0x7e28, 0x7e2b, 0x7e7d, 0x7fa0,
+ 0x7f9a, 0x7f9b, 0x81b5, 0x81ad, 0x81b2, 0x8294, 0x83c9, 0x864e, 0x864f,
+ 0x8644, 0x8652, 0x88e9, 0x8939, 0x4969, 0x957e, 0x8dc7, 0x8dd3, 0x8dc6,
+ 0x8dc3, 0x49b4, 0x8dd2, 0x8f66, 0x917f, 0x9180, 0x9184, 0x9185, 0x91e3,
+ 0x4a4d, 0x9241, 0x9244, 0x9243, 0x934e, 0x934f, 0x4a83, 0x9349, 0x934a,
+ 0x934b, 0x9343, 0x93e0, 0x93e5, 0x93e1, 0x93e6, 0x93e2, 0x940c, 0x9440,
+ 0x9549, 0x954a, 0x9554, 0x954c, 0x9555, 0x9556, 0x963b, 0x963d, 0x97a4,
+ 0x97a8, 0x97c3, 0x97bf, 0x97c8, 0x97c2, 0x97ca, 0x97cc, 0x97c9, 0x97be,
+ 0x97cd, 0x97c7, 0x97c5, 0x985d, 0x4bb0, 0x996c, 0x996b, 0x9970, 0x996d,
+ 0x996f, 0x9989, 0x9984, 0x9a8d, 0x9a8a, 0x9a8e, 0x9a91, 0x9bb5, 0x9bb1,
+ 0x9baf, 0x9bb9, 0x9bb7, 0x9bb0, 0x4c0c, 0x9c17, 0x4c18, 0x9c4f, 0x9d19,
+ 0x9d10, 0x9d18, 0x9d11, 0x9d1c, 0x9d12, 0x9e76, 0x9e71, 0x9c20, 0x9e7a,
+ 0x9e7f, 0x9c22, 0x9e73, 0x9eab, 0x9c1e, 0x9e77, 0x9e74, 0x9e7e, 0x9e9b,
+ 0x9e84, 0x9e7c, 0xa129, 0xa12b, 0xa10e, 0xa100, 0xa10b, 0xa0fe, 0xa0fa,
+ 0xa117, 0xa0ff, 0xa10c, 0xa10f, 0x4cf5, 0xa102, 0xa101, 0xa0fc, 0xa149,
+ 0xa106, 0xa112, 0xa113, 0xa278, 0xa35b, 0xa362, 0xa35f, 0xa35d, 0xa3ab,
+ 0xa3d5, 0xa3d4, 0xa3d3, 0xa407, 0xa46c, 0xa470, 0xa46e, 0xa468, 0xa46d,
+ 0xa477, 0xa46a, 0xa4ce, 0xa4ec, 0xa569, 0xa568, 0xa5a6, 0xa5a9, 0xa5aa,
+ 0xa600, 0xa60d, 0xa5f8, 0xa5fc, 0xa60a, 0xa5f7, 0xa601, 0xa6b6, 0xa6bb,
+ 0xa6b7, 0xa6b9, 0xa6ca, 0x0469, 0x0625, 0x1159, 0x1507, 0x1509, 0x1922,
+ 0x1b07, 0x1b04, 0x330f, 0x1cf8, 0x1fc7, 0x1fd1, 0x217e, 0x2308, 0x244a,
+ 0xf898, 0x24b9, 0x2e88, 0x2e91, 0x2e84, 0x2e73, 0x2e89, 0x2e85, 0x3033,
+ 0x3313, 0x381d, 0x381f, 0x381c, 0x3820, 0x381a, 0x381b, 0x3939, 0x39af,
+ 0x3ae5, 0x3c3c, 0x4137, 0x413a, 0x44bb, 0x3e0e, 0x4710, 0x470d, 0x4baf,
+ 0x4c11, 0x3fd8, 0x4f0d, 0x4f0c, 0x4f0b, 0x50d4, 0x533d, 0x533e, 0x533b,
+ 0x5343, 0x5340, 0x5346, 0x5411, 0x55dd, 0x55df, 0x55ea, 0x574a, 0x5906,
+ 0x5dc1, 0x5db9, 0x5dc6, 0x5db8, 0x5dbb, 0x5dc8, 0x5dc5, 0x5dbf, 0x5dc7,
+ 0x5dc4, 0x5f65, 0x5f67, 0x61d7, 0x61db, 0x61d4, 0x61d6, 0x63e8, 0x660a,
+ 0x6abd, 0x6abe, 0x711a, 0x710d, 0x710f, 0x711b, 0x7110, 0x7111, 0x7113,
+ 0x7218, 0x7520, 0x751f, 0x7523, 0x751d, 0x7537, 0x7525, 0x7524, 0x752a,
+ 0x7527, 0x7533, 0x7528, 0x7534, 0x77ba, 0x8970, 0x789d, 0x794c, 0x7b5c,
+ 0x7b6a, 0x7b5d, 0x7b65, 0x7b63, 0x7b5e, 0x7c19, 0x7c97, 0x7e3f, 0x7e33,
+ 0x7e32, 0x7fa1, 0x7fa5, 0x7fa4, 0x7fa2, 0x81c1, 0x482c, 0x81c7, 0x81c4,
+ 0x81c6, 0x81c5, 0x81d4, 0x81ca, 0x8653, 0x88f1, 0x8921, 0x496e, 0x8bb7,
+ 0x8b92, 0x8dd4, 0x8f44, 0x9198, 0x919b, 0x9191, 0x9195, 0x919a, 0x9192,
+ 0x9353, 0x9357, 0x4a86, 0x935c, 0x935d, 0x9364, 0x93ea, 0x93ed, 0x9442,
+ 0x9443, 0x9564, 0x9561, 0x9560, 0x967d, 0x97d4, 0x97d5, 0x97d9, 0x9987,
+ 0x9999, 0x998c, 0x998a, 0x998f, 0x4bb3, 0x998b, 0x9982, 0x999b, 0x4beb,
+ 0x9bc8, 0x9bc4, 0x9bcc, 0x9bc7, 0x9bc3, 0x9bc6, 0x9bcb, 0x9bca, 0x9bc9,
+ 0x9bcd, 0x9c53, 0x9d21, 0x9d29, 0x9d1d, 0x9d24, 0x9d28, 0x9c43, 0x9eb1,
+ 0x9eb2, 0x9eb5, 0x9ed6, 0x9eaf, 0x9eca, 0x9eb8, 0xfa12, 0xfa11, 0xa145,
+ 0xa147, 0xa134, 0xa16e, 0xa142, 0xa131, 0xa12e, 0xa156, 0xa138, 0xa137,
+ 0xa14b, 0xa12d, 0xa133, 0xa136, 0x9de0, 0xa148, 0xa2dc, 0x4d42, 0xa366,
+ 0xa36d, 0xa363, 0xa364, 0x4d41, 0xa367, 0xa3d9, 0xa40b, 0xa47e, 0xa48b,
+ 0xa526, 0xa52c, 0xa529, 0xa56f, 0xa56b, 0xa56d, 0xa56e, 0xa61c, 0xa611,
+ 0xa610, 0xa624, 0xa612, 0xa615, 0xa617, 0x4dac, 0x046f, 0x05ab, 0x082e,
+ 0x08c9, 0x0b96, 0x1185, 0x16a0, 0x192b, 0x230d, 0x3036, ERROR, 0x3b2f,
+ 0x3b2e, 0x33b1, 0x384a, 0x3837, 0x383c, 0x3838, 0x383a, 0x383e, 0x3849,
+ 0x3c4d, 0x3c7b, 0x3a80, 0x3a7f, 0x3ae3, 0x3c3f, 0x4152, 0x414e, 0x414a,
+ 0x414b, 0x44d5, 0x4ad8, 0x4b20, 0x4bb3, 0x4bb1, 0x4bb0, 0x4f17, 0x50d9,
+ 0x5349, 0x5413, 0x55ed, 0x55eb, 0x55ee, 0x590a, 0x590b, 0x5a4a, 0x5dd5,
+ 0x5dd7, 0x5dde, 0x5ddc, 0x5dee, 0x5f70, 0x42b2, 0x61d9, 0x63d7, 0x68cb,
+ 0x68c7, 0x69fc, 0x713b, 0x7139, 0x714b, 0x7143, 0x7140, 0x7146, 0x754d,
+ 0x7543, 0x7547, 0x754b, 0x7555, 0x7552, 0x7b5f, 0x4722, 0x7b7c, 0x7b7b,
+ 0x7fa8, 0x7fa9, 0x81de, 0x81d7, 0x81dd, 0x81d6, 0x81d8, 0x829b, 0x83e0,
+ 0x83e8, 0x83e6, 0x88f8, 0x88fb, 0x8bbb, 0x9459, 0x8bb8, 0x4970, 0x8cc1,
+ 0x8cc0, 0x91a4, 0x91ab, 0x924d, 0x9365, 0x9367, 0x936a, 0x9366, 0x9369,
+ 0x9573, 0x9580, 0x956f, 0x9571, 0x97e4, 0x97e6, 0x97e7, 0x99a0, 0x99a4,
+ 0x9aa2, 0x9aa7, 0x9aa4, 0x9bde, 0x9bdb, 0x9c58, 0x9c5c, 0x9d2f, 0x9d2e,
+ 0x9edd, 0x9ee4, 0x9ed8, 0x9ee7, 0x9eda, 0x9e75, 0x4c95, 0xa179, 0xa180,
+ 0xa17f, 0xa17c, 0xa175, 0xa17b, 0xa182, 0x4d00, 0xa189, 0xa174, 0xa17d,
+ 0xa17a, 0xa186, 0xa1a8, 0xa172, 0x4d02, 0xa18b, 0xa191, 0xa1b3, 0xa181,
+ 0xa282, 0xa2e1, 0xa2e3, 0xa2e2, 0xa376, 0xa374, 0xa372, 0xa375, 0xa40e,
+ 0xa40d, 0xa494, 0xa492, 0xa493, 0xa491, 0xa48f, 0xa495, 0xa4d0, 0xa4f7,
+ 0xa576, 0xa5af, 0x4d9f, 0xa626, 0xa625, 0xa62d, 0xa6a0, 0xa6c3, 0x04d7,
+ 0x0acc, 0x1179, 0x117a, 0x1515, 0x1fdb, 0x2185, 0x2970, 0x297b, 0x2ea5,
+ 0x2e9f, 0x3317, 0x33b2, 0x3839, 0x3840, 0x384e, 0x393e, 0x3ae8, 0x3ae7,
+ 0x4166, 0x4161, 0x44da, 0x4714, 0x48df, 0x4f18, 0x5039, 0x503a, 0x5730,
+ 0x5732, 0x590e, 0x5a4c, 0x5de8, 0x5df1, 0x5deb, 0x5dec, 0x5f74, 0x5f73,
+ 0x61f1, 0x6342, 0x633e, 0x6341, 0x652c, 0x68d2, 0x69bb, 0x7158, 0x7157,
+ 0x7156, 0x715a, 0x457d, 0x7561, 0x7568, 0x7565, 0x755f, 0x7564, 0x755e,
+ 0x755b, 0x7567, 0x77c3, 0x78a2, 0x7953, 0x7b7d, 0x7c20, 0x7fae, 0x7faf,
+ 0x7fb0, 0x81e7, 0x81e6, 0x81e9, 0x83f1, 0x83eb, 0x83ea, 0x83e9, 0x8663,
+ 0x8902, 0x88fe, 0x8bde, 0x8cc2, 0x8de6, 0x8f5d, 0x91ad, 0x9375, 0x9372,
+ 0x9377, 0x4af6, 0x9651, 0x97e8, 0x97ed, 0x97ee, 0x99b9, 0x99a1, 0x99b6,
+ 0x9aae, 0x9be8, 0x4c12, 0x9c1e, 0x9d31, 0x9d32, 0x4c91, 0x9f0e, 0x9f12,
+ 0x9f09, 0x9f05, 0x4c90, 0x9f03, 0x9f1f, 0x9f0d, 0x9f0c, 0x9f04, 0x9f0a,
+ 0xa1c2, 0xa1bf, 0xa1c9, 0xa1b2, 0xa1c1, 0xa1af, 0xa1b4, 0xa1b0, 0xa1b6,
+ 0xa1b7, 0xa1bb, 0xa1b1, 0xa2f0, 0xa378, 0xa37a, 0xa379, 0xa3e4, 0xa3e6,
+ 0xa49f, 0xa49d, 0xa498, 0xa499, 0xa4f9, 0xa530, 0xa582, 0xa581, 0xa5b3,
+ 0xa57f, 0xa63a, 0xa63e, 0xa648, 0x1186, 0x1936, 0x1b13, 0x1c22, 0x1fdd,
+ 0x25a7, 0x297d, 0x3a79, 0x331c, 0x3865, 0x3860, 0x3867, 0x3c4e, 0x3b1a,
+ 0x4ae3, 0x5734, 0x5918, 0x5a52, 0x5dfc, 0x5f79, 0x5f78, 0x5f76, 0x61fa,
+ 0x61f8, 0x652d, 0x68d6, 0x69bd, 0x69bf, 0x69be, 0x7144, 0x7170, 0x7162,
+ 0x716e, 0x756e, 0x757c, 0x7574, 0x7578, 0x7570, 0x7579, 0x7571, 0x77cc,
+ 0x78a7, 0x78a6, 0x7b93, 0x7c21, 0x7c9c, 0x829d, 0x83f4, 0x83f3, 0x8df0,
+ 0x91b8, 0x91b6, 0x91bd, 0x9373, 0x9382, 0x9587, 0x9656, 0x9659, 0x97f6,
+ 0x99c9, 0x99c5, 0x99c7, 0x99ca, 0x99c2, 0x99c4, 0x9bf2, 0x9bf0, 0x9d3b,
+ 0x9d3a, 0x9f26, 0x9f28, 0x9f34, 0x9f2d, 0xa1d7, 0xa1d2, 0xa1d6, 0xa1dc,
+ 0xa1d3, 0xa1d1, 0xa286, 0x4d1e, 0xa2ef, 0xa2ee, 0xa3e8, 0xa4ac, 0xa4a9,
+ 0xa4aa, 0xa4ab, 0xa4fb, 0xa533, 0xa588, 0xa5b6, 0xa5b7, 0xa5d0, 0xa5cf,
+ 0xa64f, 0xa659, 0xa64c, 0x1b18, 0x1fe0, 0x3869, 0x4173, 0x4172, 0x4ae8,
+ 0x55fb, 0x591c, 0x5e09, 0x5e0a, 0x5e08, 0x5f7d, 0x5f7f, 0x6267, 0x717a,
+ 0x717b, 0x77d1, 0xf9cb, 0x7b9d, 0x7c9d, 0x81fc, 0x81fb, 0x81fd, 0x83f5,
+ 0x83f6, 0x8c0f, 0x8c1d, 0x91c7, 0x91c1, 0x91bf, 0x9254, 0x937f, 0x93f5,
+ 0x958a, 0x958c, 0x965c, 0x9865, 0x99cf, 0x99d0, 0x9ab8, 0x9bfa, 0x9c66,
+ 0x9f40, 0x9f41, 0x9c72, 0xa1f7, 0xa1f3, 0xa1ef, 0xa1f4, 0xa1ed, 0xa1f2,
+ 0xa1f1, 0xa1f9, 0xa4b4, 0xa4fc, 0xa5bc, 0xa65e, 0xa65b, 0xa65f, 0xa65d,
+ 0xa6cf, 0xa6ce, 0x193a, 0x1fe1, 0x2315, 0x2314, 0x4178, 0x4179, 0x44e6,
+ 0x4bb8, 0x4f22, 0x55fe, 0x68db, 0x6a06, 0x6ac8, 0x7189, 0x7586, 0x78ad,
+ 0x7b99, 0x7bd8, 0x7c23, 0x7d23, 0x7fb5, 0x83f9, 0x8907, 0x8c1e, 0x8dfb,
+ 0x8f72, 0x8f73, 0x9387, 0x9449, 0x965d, 0x97f8, 0x9c03, 0x9f4e, 0x9f4d,
+ 0x9f50, 0x9f55, 0xa209, 0xa207, 0xa20c, 0xa203, 0xa206, 0xa20b, 0xa20a,
+ 0xa289, 0xa4bb, 0xa4ff, 0xa536, 0xa58b, 0xa666, 0xa669, 0xa667, 0xa6c2,
+ 0xa6d2, 0x1fe2, 0x3828, 0x2988, 0x335b, 0x3876, 0x417d, 0x45a6, 0x535a,
+ 0x5e17, 0x68dc, 0x718f, 0x7594, 0x7595, 0x7fb6, 0x8204, 0x87ee, 0x938a,
+ 0x93f9, 0x9c07, 0x9c1f, 0x9c2a, 0x9d45, 0x9f5c, 0x9f5b, 0x9f61, 0x9f5d,
+ 0xa218, 0xa21f, 0xa383, 0xa416, 0xa414, 0xa4bf, 0xa4c0, 0xa673, 0xa6c0,
+ 0x1517, 0x2989, 0x591e, 0x591f, 0x5a54, 0x5e18, 0x6205, 0x7195, 0x7598,
+ 0x759b, 0x7959, 0x8208, 0x8401, 0x91ce, 0x93fa, 0x9abe, 0x9d47, 0x9f6a,
+ 0x9f69, 0x9f68, 0x9f67, 0xa225, 0xa228, 0xa4c4, 0xa537, 0xa58d, 0xa58c,
+ 0x4d91, 0xf920, 0x5e22, 0x5f82, 0x77d9, 0x8c38, 0x93fb, 0x99e1, 0x9c72,
+ 0x9d48, 0x9f6c, 0x9f70, 0xa231, 0xa230, 0xa679, 0x5e23, 0x68f8, 0x9c74,
+ 0x9f73, 0xa234, 0xa387, 0xa3b2, 0xa5c2, 0xa67d, 0x1fe5, 0x938c, 0x9f77,
+ 0x9f75, 0xa238, 0xa23a, 0xa683, 0xa681, 0x4180, 0x7199, 0x4587, 0x944a,
+ 0x9d4a, 0xa23c, 0xa6c8, 0x5604, 0x78af, 0xa689, 0xa2fa, 0x9661, 0xa23f,
+ 0x7193, 0xa4c9, 0x77de, 0x9391, 0xa68e, 0xa68d, 0x7198, 0x69c5, 0xa6a5,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xf802,
+ 0x0062, 0x3405, 0x0088, 0x00d0, 0x00cf, 0x011e, 0x011f, 0x0120, 0x090e,
+ 0x092c, 0x0061, 0x0004, 0x0005, 0x0003, 0x3404, 0xf801, 0x007d, 0x008d,
+ 0x01a3, 0x01a4, 0x04db, 0x0500, 0xf81e, 0x06a3, 0x0832, 0x353f, 0x0ad4,
+ 0x0ad5, 0x1c23, 0x232c, 0x237a, 0x0503, 0x0007, 0x0008, 0x008f, 0x009c,
+ 0x00d5, 0x0112, 0x0113, 0x0114, 0x0121, 0x01a8, 0x01a6, 0x0476, 0x0501,
+ 0x053d, 0xf814, 0x053e, 0x0629, 0x0677, 0x0678, 0x06a6, 0x06a9, 0x06ac,
+ 0x0834, 0x0504, 0x097b, 0x0a10, 0x062f, 0x0ad7, 0x0b1c, 0x0b1f, 0x0b1a,
+ 0xf836, 0x0b1e, 0x0b9e, 0x0b9a, 0x11a0, 0x11a1, 0x15d2, 0x15d3, 0x19b9,
+ 0x1b1d, 0x1b55, 0x1cff, 0x1fe7, 0x382a, 0x2011, 0x2013, 0x2012, 0x21af,
+ 0x21b1, 0xf890, 0x232d, 0x237b, 0x239d, 0x239a, 0x38a7, 0x239f, 0x23a0,
+ 0x239c, 0x24bd, 0x38fa, 0x25aa, 0x306c, 0x3091, 0x3c74, 0x456a, 0xf929,
+ 0x5605, 0x626b, 0x626a, 0x00e0, 0x0012, 0x3400, 0x007f, 0x00a0, 0x0099,
+ 0x0095, 0x009e, 0x00df, 0x00de, 0x01af, 0x01ad, 0x01b0, 0x04df, 0x0543,
+ 0x0541, 0x0548, 0x0575, 0xf81a, 0x0632, 0x067b, 0x0679, 0x06b3, 0x34db,
+ 0x0ba7, 0x06b2, 0x06b0, 0x06b4, 0xf829, 0x08cd, 0x08ce, 0xf82b, 0x0910,
+ 0x0980, 0x09d3, 0x0a30, 0x0098, 0x0a2f, 0x0a31, 0x0ada, 0x0ad9, 0x0b27,
+ 0x0b28, 0x0b21, 0x0b25, 0x0ba6, 0x0ba2, 0x0ba1, 0x0ba4, 0xf839, 0x0baa,
+ 0x0ba5, 0x0ba3, 0x0064, 0x123f, 0x1244, 0x151b, 0x1553, 0x1584, 0x1586,
+ 0x15d5, 0xf860, 0x193e, 0x1940, 0x1bca, 0x1bc9, 0x1c26, 0x1d00, 0x1d31,
+ 0x1d3c, 0x1d30, 0x1d33, 0x1d32, 0x1d38, 0x2034, 0x2053, 0x2054, 0x21b4,
+ 0x21b2, 0x232f, 0x23a5, 0x23a7, 0x23a4, 0x23a8, 0x23a9, 0x23a2, 0x23a3,
+ 0x23a6, 0x2481, 0x2480, 0x25ad, 0x2a24, 0x2a65, 0x2a68, 0x2a69, 0x313c,
+ 0x313b, 0x335d, 0x3944, 0x4182, 0x44f1, 0x456b, 0x471b, 0x48eb, 0x4bba,
+ 0x4bd3, 0x4d13, 0x5922, 0x6af4, 0x820f, 0x8210, 0x0507, 0x9c0b, 0x9c0a,
+ 0x0019, 0x001a, 0x0018, 0x0066, 0x0082, 0x00a8, 0x00e5, 0x00e7, 0x00e4,
+ 0x0115, 0x0123, 0x0124, 0x0143, 0x01c3, 0x01bc, 0x01bb, 0x3438, 0x01b7,
+ 0x01b9, 0x01cf, 0xf80d, 0x047a, 0x047b, 0x04e1, 0x04e0, 0x0509, 0x054d,
+ 0xf816, 0x054b, 0x0579, 0x05b1, 0x0636, 0x0635, 0x0637, 0x0638, 0x067f,
+ 0x0680, 0x0681, 0x6953, 0x067e, 0x06cd, 0x06bf, 0x06be, 0x06c2, 0x06b8,
+ 0x06c1, 0x6530, 0x0931, 0x092f, 0x096f, 0x0982, 0x353a, 0x0987, 0x0986,
+ 0x098d, 0x0994, 0x09d7, 0x09d4, 0x09d8, 0x0a16, 0x0a14, 0x0a2e, 0x0a36,
+ 0x0a37, 0x1fee, 0x0ae0, 0x0ae5, 0x0adf, 0x0b2b, 0x0b29, 0x0b2d, 0x0b2f,
+ 0x0bb7, 0x0bc9, 0x0bc1, 0x0bca, 0x0bb2, 0x0bac, 0x0bae, 0x11b2, 0x11a8,
+ 0x11b0, 0x11a7, 0xf851, 0x1252, 0x124a, 0x1556, 0x1555, 0x155f, 0x155e,
+ 0x1588, 0xf85d, 0x15dd, 0x15e2, 0x15e1, 0x15df, 0x15e0, 0x16af, 0x16b1,
+ 0x16ba, 0x1945, 0x1943, 0x19bd, 0x19c8, 0xf86c, 0x19be, 0x19bf, 0xf874,
+ 0x1b59, 0x1c29, 0x1c2c, 0x1c2f, 0x1c2d, 0x1c2e, 0x1d04, 0x1d02, 0x1d01,
+ 0x1d40, 0x1d4a, 0x1d3f, 0x1d4f, 0x1d41, 0x1d4e, 0x1feb, 0x1fec, 0x00ac,
+ 0x205b, 0x2063, 0x205a, 0x2059, 0x21dc, 0x21db, 0x21d9, 0x21e0, 0x21dd,
+ 0x0020, 0x23b0, 0x23b1, 0x23b2, 0x23b6, 0x2451, 0x2452, 0x2450, 0x2484,
+ 0x38c9, 0x2483, 0x25c3, 0x25b8, 0x25b9, 0x25b2, 0x2990, 0x2a26, 0x2a29,
+ 0x2a6e, 0x3140, 0x313e, 0x3141, 0x335e, 0x33bb, 0x33bc, 0x33b9, 0xf8ef,
+ 0x3880, 0x3c4f, 0x3945, 0x39ba, 0x39bd, 0x3c56, 0x3c55, 0x3c75, 0x3c77,
+ 0x3c81, 0xf8fa, 0x3c83, 0x3c8b, 0x3c84, 0x4186, 0x4183, 0x418b, 0x456d,
+ 0x4616, 0x4728, 0x48ea, 0x4bd4, 0x4c03, 0x4d15, 0x4f3d, 0x4f3e, 0x5416,
+ 0xf94c, 0x5606, 0x574d, 0x6222, 0x6273, 0x626d, 0x626e, 0x64b1, 0x054e,
+ 0x662d, 0x43cd, 0x68f9, 0x6952, 0x6b00, 0x6afc, 0x6afa, 0x4492, 0x6af7,
+ 0x6af8, 0xf990, 0xf9c4, 0x7c27, 0x8211, 0x00ae, 0x8450, 0x844f, 0x844d,
+ 0x8671, 0xf9e2, 0x8672, 0x8e18, 0x0a44, 0x0021, 0x0067, 0x00af, 0x00b0,
+ 0x0029, 0x0117, 0x0122, 0xf803, 0x0025, 0x0128, 0x01ff, 0x01d9, 0x01db,
+ 0x01de, 0x01f2, 0x01fe, 0x01f4, 0x01dd, 0x3445, 0xf804, 0x0201, 0x01dc,
+ 0x047d, 0x0481, 0x047e, 0x047f, 0x04e5, 0x050f, 0x34b5, 0x050a, 0x34b6,
+ 0x050b, 0x0551, 0x0552, 0x0550, 0x05b8, 0x063d, 0x063e, 0x063c, 0x0687,
+ 0x06d7, 0x06db, 0x06cf, 0x06e0, 0x084c, 0x0842, 0x08d4, 0x0911, 0x0914,
+ 0x0915, 0x0912, 0x0933, 0x0935, 0x3537, 0x0971, 0x3530, 0x0991, 0x0993,
+ 0x0995, 0x09dc, 0x0a42, 0x0a40, 0x53a6, 0x0ae6, 0x128f, 0x0b32, 0xf837,
+ 0x0b31, 0x0bf5, 0x0bcd, 0x0bde, 0x0bd5, 0x0bda, 0x0bee, 0x0bec, 0x0bcf,
+ 0x0bce, 0xf83d, 0x0bcc, 0x0bf3, 0x11c1, 0x11c4, 0x11c6, 0x11b4, 0x11c3,
+ 0x11b8, 0x11bb, 0x11b7, 0x11bc, 0x11bf, 0x11c7, 0x11be, 0x1260, 0x125d,
+ 0x1276, 0x126c, 0x1275, 0x125b, 0x1271, 0x1273, 0x1261, 0x125a, 0x1262,
+ 0x1272, 0x125f, 0x1258, 0x151e, 0x1558, 0x158b, 0x158a, 0x15f4, 0x15f0,
+ 0x16d2, 0x16cd, 0x16ce, 0x16bc, 0x16d0, 0x1946, 0x1947, 0x373e, 0x374d,
+ 0x3751, 0x19ce, 0x19cf, 0x19cc, 0x19cb, 0xf872, 0x1b60, 0x1b5f, 0x1b5d,
+ 0x1bd4, 0x1c3a, 0x1c38, 0x1c3c, 0x1c36, 0x1d08, 0x1d7e, 0x1d5e, 0x1d6e,
+ 0x1d53, 0x1d70, 0x1d57, 0x1d5d, 0x1d63, 0x1d7a, 0x1d79, 0x1d93, 0xf881,
+ 0x201d, 0x2068, 0x2073, 0x2074, 0x2066, 0x206f, 0x2075, 0x207a, 0x2070,
+ 0x206d, 0x2065, 0x218a, 0x21ed, 0x21e9, 0x21e3, 0x21ef, 0x3873, 0x21ea,
+ 0x2331, 0xf891, 0x2338, 0x6b20, 0x2335, 0x233a, 0x2381, 0x2380, 0x23b8,
+ 0x23c1, 0x23ba, 0x2488, 0x24cf, 0x24ca, 0x24c7, 0x24c5, 0x24c8, 0x24d0,
+ 0x24c9, 0x25bb, 0x25b6, 0x25bd, 0xf89d, 0x25b4, 0x25c1, 0x25d1, 0x25d2,
+ 0x25cc, 0x25d4, 0x25cb, 0x25ce, 0x25d5, 0x25d8, 0x2995, 0x2993, 0x2999,
+ 0x2996, 0x39be, 0x2a89, 0x2a94, 0x2a91, 0x2a8f, 0x2a84, 0x2a97, 0x2a86,
+ 0x2a85, 0x2a8c, 0x2ef2, 0x2eed, 0x2eef, 0x30d9, 0x3146, 0x3147, 0x314b,
+ 0x3150, 0x314a, 0x314e, 0x314c, 0x3148, 0x3363, 0x3361, 0x3362, 0x3360,
+ 0x33c3, 0x33c5, 0x33c1, 0x33d0, 0xf8dc, 0x3882, 0x3c1e, 0x3886, 0x3884,
+ 0x394c, 0x3948, 0x39b8, 0x39bf, 0x39c1, 0x39c6, 0x39c5, 0x39c7, 0x39c0,
+ 0x39c3, 0x3aed, 0x3b03, 0x3b22, 0x3b21, 0x3c9f, 0x3c90, 0x3c9e, 0x3cc8,
+ 0x3ca0, 0x3c94, 0x3c95, 0x3ca1, 0x3cc3, 0x3cc7, 0x419a, 0x4190, 0x44f2,
+ 0x44f3, 0x456e, 0x45ab, 0x45a9, 0x461a, 0x4618, 0x461b, 0x4760, 0x474c,
+ 0x4742, 0x4733, 0x473f, 0x473e, 0x4738, 0x4743, 0x4746, 0x4736, 0x48ee,
+ 0x48f5, 0x48f4, 0x3f56, 0x4c1b, 0x3540, 0x4d2b, 0x4d29, 0x4d2a, 0x4d2e,
+ 0x503f, 0x50e6, 0x53a7, 0x53a8, 0x5418, 0x5608, 0x5750, 0x5753, 0x5a56,
+ 0x5a55, 0x626f, 0x627f, 0x64b3, 0x663a, 0x6638, 0x6637, 0x6636, 0x0554,
+ 0xf980, 0x68dd, 0x68fc, 0x68fa, 0x6933, 0x6b04, 0x6b07, 0x6b08, 0x6b06,
+ 0x6b09, 0xf991, 0xf993, 0x721e, 0xf9d2, 0x840b, 0x8443, 0x8452, 0x8458,
+ 0x845e, 0x8668, 0x868d, 0x8682, 0x867b, 0x8c58, 0x49bd, 0xf800, 0x002c,
+ 0x002e, 0x160b, 0x002d, 0x0069, 0x00b2, 0x00b6, 0x00a9, 0x00ed, 0x0119,
+ 0x014f, 0x0216, 0x0203, 0x020e, 0x0204, 0x0207, 0x0210, 0x0227, 0x0228,
+ 0x020d, 0x0229, 0x020f, 0x0222, 0x0211, 0x0485, 0x0484, 0x0483, 0x048a,
+ 0x0486, 0x0510, 0x0558, 0x055a, 0x070c, 0x05c4, 0x05c5, 0x0647, 0x0649,
+ 0x064a, 0x064b, 0x21bb, 0x068d, 0x068b, 0x0707, 0x0706, 0xf820, 0x06ef,
+ 0x06f0, 0x06ed, 0x06f9, 0x0702, 0x06e7, 0x06f4, 0x06f7, 0x06f1, 0x0853,
+ 0x0855, 0x351a, 0x08da, 0x08d9, 0x352c, 0x0938, 0x0999, 0x09a2, 0x099c,
+ 0x099a, 0x099b, 0x09e5, 0x09e3, 0x09e1, 0x09e0, 0x09e2, 0x09e4, ERROR,
+ 0x09e8, 0xf82f, 0x0a13, 0x0a56, 0x0a4b, 0x0a4a, 0x0a4d, 0x0a4c, 0x3549,
+ 0x0aea, 0x0ae9, 0x0aeb, 0x0aec, 0x0b3a, 0x0b3c, 0x0b39, 0x0b3b, 0x0c14,
+ 0x0c0e, 0x0c35, 0x0c0a, 0x0c3f, 0x0c38, 0x357c, 0x0c4e, 0x0c17, 0xf83f,
+ 0x0c1e, 0x11b6, 0x11ce, 0x11ca, 0x11cb, 0x11cc, 0x11c9, 0x12b4, 0x12ac,
+ 0x1288, 0x1286, 0x128c, 0x1293, 0x128a, 0x12a4, 0x1287, 0x12a5, 0x12a6,
+ 0x1285, 0x12a3, 0x128e, 0x151f, 0x1563, 0x158d, 0x15fa, 0x15fb, 0x1609,
+ 0x15fe, 0x15ff, 0x1602, 0x1604, 0x15fd, 0x1605, 0x16f9, 0x16f7, 0x16db,
+ 0x16da, 0x1951, 0x1950, 0x1957, 0x19e2, 0x19d8, 0x19da, 0x19dc, 0x1b20,
+ 0x1b1f, 0x1b69, 0x1bdd, 0x1c40, 0x1c41, 0x1c43, 0x1d0d, 0x1d0c, 0x1d87,
+ 0x1da9, 0x1d92, 0x1d85, 0x37bf, 0x1d8c, 0x1da2, 0x1d8f, 0x1d8a, 0x37ba,
+ 0x1d8d, 0x1ff1, 0x2037, 0x208b, 0x2087, 0x2082, 0x218e, 0x21bc, 0x21f8,
+ 0x21fa, 0x21eb, 0x21f9, 0x21fc, 0x2205, 0x231b, 0x231d, 0x231e, 0xf892,
+ 0x233c, 0x233e, 0x2384, 0x23c8, 0x23c9, 0x23d3, 0x23c7, 0x23d2, 0x2455,
+ 0xf896, 0x248c, 0x248a, 0x24d5, 0x24d3, 0x38d8, 0x24d8, 0x25d0, 0x25ee,
+ 0x25f1, 0x25fb, 0x25d3, 0x25ec, 0x25cd, 0x2615, 0x2626, 0x260e, 0x2627,
+ 0x262a, 0x2600, 0x2604, 0x2628, 0x2608, 0x2614, 0x299b, 0x39b2, 0x29a1,
+ 0x299d, 0x29a0, 0x299e, 0x29a2, 0x299c, 0x2a32, 0x2a34, 0x2a93, 0x2a96,
+ 0x2a90, 0x2ab4, 0x2ab5, 0xf8b6, 0x2ab6, 0x2ac2, 0xf8b5, 0x2aba, 0x2a92,
+ 0x2efb, 0x2f05, 0x2ef3, 0x2efe, 0x2efd, 0x455d, 0x2efa, 0x3043, 0x3095,
+ 0x3094, 0x3ac4, 0x316f, 0x3173, 0x315c, 0x315b, 0x3166, 0x3174, 0x3163,
+ 0x3167, 0x3160, 0x3162, 0x3171, 0x3172, 0x315e, 0x3323, 0x3326, 0x3364,
+ 0xf8d6, 0x33f2, 0x3401, 0x33dd, 0x33dc, 0x33db, 0x33f3, 0x33fd, 0x33d8,
+ 0x33f8, 0x33fb, 0x3883, 0x388c, 0x388e, 0x3949, 0x3954, 0x3952, 0x394e,
+ 0x3958, 0x3951, 0x3955, 0x3953, 0x3957, 0x3950, 0x394f, 0x394d, 0x39d2,
+ 0x39d3, 0x39c9, 0x39d4, 0x3aef, 0xf8f8, 0x00b1, 0x3b05, 0x3b04, 0x3b2e,
+ 0x3b2d, 0x3c45, 0x3c5b, 0x3c5a, 0x3c59, 0x3c9d, 0x3c8e, 0x3cbc, 0x3cdd,
+ 0x3cba, 0xf8fd, 0x3cd8, 0x3ccb, 0x3cd9, 0x3cda, 0x3cc4, 0x3cb8, 0x3cbf,
+ 0x3cdb, 0x3cc1, 0xf8fc, 0x3cc5, 0xf919, 0x41b1, 0x41af, 0xf918, 0x44f7,
+ 0x44f6, 0x44f8, 0x4550, 0x4551, 0x4571, 0x4570, 0x45b0, 0x45af, 0x45ae,
+ 0x45ad, 0x4625, 0x462c, 0x4622, 0x4633, 0x4634, 0x3e2b, 0x473a, 0x4740,
+ 0x4768, 0x3e61, 0x4764, 0x475c, 0x4757, 0x4753, 0x474f, 0x4751, 0x4754,
+ 0x4766, 0x72dd, 0x3eb2, 0x490d, 0x4908, 0xf92b, 0x48fa, 0x4aea, 0x4b2a,
+ 0x4bbb, 0x4bd5, 0x4bd7, 0x1da4, 0x00f0, 0x00b5, 0x4c06, 0x4c28, 0x4c22,
+ 0x4c21, 0x2456, 0x4c23, 0x11cd, 0x4d30, 0x4d34, 0x4fc9, 0x4fca, 0x4fc8,
+ 0xf93d, 0x5044, 0x50f3, 0xf941, 0x50f8, 0x50fc, 0x50f6, 0x50fb, 0x50f7,
+ 0x5100, 0x5102, 0xf940, 0xf94d, 0x5424, 0x560d, 0x4129, 0x5762, 0x5930,
+ 0x592b, 0x592a, 0x4192, 0x592d, 0x5ada, 0x5e28, 0x5f86, 0x6277, 0x627c,
+ 0x6350, 0x634e, 0x63f2, 0x64b2, 0x64ce, 0x64cf, 0x64e5, 0x3407, 0x6535,
+ 0x6531, 0x6613, 0x662b, 0x662c, 0x6645, 0x6660, 0x6641, 0x6658, 0x6647,
+ 0x665b, 0x6650, 0xf982, 0x665f, 0x664a, 0x6656, 0x6643, 0x6644, 0x6651,
+ 0x68fd, 0x6934, 0x6935, 0x6954, 0x6955, 0x6a0c, 0x6a0b, 0x6a0a, 0x6af9,
+ 0x6b35, 0x6b24, 0x6b13, 0x6b1c, 0x6b69, 0x6b25, 0x6b21, 0xf995, 0xf996,
+ 0xf998, 0x7220, 0x75a9, 0x75a8, 0x75de, 0x7609, 0x760a, 0x760b, 0x77e3,
+ 0x7807, 0x78b2, 0x78b3, 0x795d, 0x7e58, 0x7e86, 0x7e87, 0x7fb9, 0x7fb8,
+ 0x840c, 0x8444, 0x8466, 0x8480, 0x8475, 0x846d, 0x847e, 0x8467, 0x8481,
+ 0x8477, 0x86a8, 0x86a2, 0x86a5, 0x869b, 0x8c57, 0x8e0f, 0x8e32, 0x8e2c,
+ 0x8e33, 0x91e7, 0x006e, 0x00b7, 0x00f6, 0x00f2, 0x00f3, 0x0517, 0x0130,
+ 0x0154, 0x0153, 0x0252, 0x023d, 0x023c, 0x0234, 0x0233, 0x0254, 0x022f,
+ 0x3458, 0x0255, 0x023f, 0x0237, 0x0256, 0x0261, 0x0258, 0xf806, 0x023b,
+ 0x0232, 0x022e, 0x023e, 0x003b, 0x048c, 0x048d, 0x0513, 0x0516, 0x0512,
+ 0x055b, 0x058a, 0x05d7, 0x05ce, 0x0650, 0x0651, 0x064f, 0x068e, 0x068f,
+ 0x06f2, 0xf821, 0x0728, 0x071a, 0x0725, 0x071d, 0x0714, 0x0720, 0x071f,
+ 0x071b, 0x0717, 0x0715, 0x071c, 0x0713, 0xf825, 0x0860, 0x351c, 0x0866,
+ 0x08e3, 0x08de, 0x08e0, 0x08e1, 0x091a, 0x091b, 0x0918, 0x091c, 0x0919,
+ 0x0942, 0x0940, 0x093e, 0x0944, 0x0974, 0x0943, 0xf82d, 0x09f2, 0x0a1b,
+ 0x0a19, 0x0a1e, 0xf830, 0x0a5e, 0x0a66, 0x0a5d, 0x0a5a, 0x0a5f, 0x0a60,
+ 0x0a5b, 0x0a5c, 0x0a59, 0x0af0, 0x0af1, 0x0b43, 0x0b40, 0x0b42, 0x0b41,
+ 0x0b3f, 0x0c57, 0x0c69, 0x0c6f, 0x0cab, 0x0c71, 0x0c93, 0x0c56, 0x0c90,
+ 0x0c6d, 0x0c6c, 0x0c70, 0x0c66, 0x0c67, 0x11d7, 0x11b5, 0x11db, 0x11d8,
+ 0x11d5, 0x11d4, 0x12ba, 0x12b7, 0x12be, 0x12b9, 0x3637, 0x12e0, 0x12dd,
+ 0x12de, 0x4918, 0x12d8, 0x12bd, 0x12db, 0x151d, 0x1525, 0x1721, 0x170c,
+ 0x1729, 0x172d, 0x171b, 0x170e, 0x171f, 0x1704, 0x171c, 0x1705, 0x1706,
+ 0x1720, 0x170d, 0x172a, 0x1723, 0x1711, 0x195c, 0x1966, 0x195b, 0x194f,
+ 0x195e, 0x195d, 0x19f1, 0x19ea, 0x19f4, 0x19eb, 0x19f0, 0x19fa, 0x19fb,
+ 0x1b28, 0x1b2c, 0x1b6b, 0x1b2a, 0x1b6a, 0x1b6f, 0x1bdb, 0x1be0, 0x4fd1,
+ 0x1be3, 0x1be5, 0x1be7, 0x1c4d, 0x1c55, 0x1c54, 0x1c53, 0x1c52, 0x1c4e,
+ 0x1c60, 0x21c0, 0x1d0f, 0x1d11, 0x1d13, 0x1dc6, 0x1db3, 0x1dc7, 0x1dd2,
+ 0x1db8, 0x1dac, 0x1dae, 0x1dcf, 0x1dc5, 0xf87b, 0x1dcc, 0x1dab, 0x1dc9,
+ 0x1db9, 0x1ffb, 0x1ff8, 0x1ff7, 0x1ff9, 0x2020, 0x203b, 0x2039, 0x209e,
+ 0x209a, 0x20aa, 0x20ab, 0x20af, 0x2096, 0x20a9, 0x20a6, 0x2091, 0x3843,
+ 0x20ae, 0x209f, 0x20ac, 0x20a0, 0x2192, 0x2191, 0x21bf, 0x2217, 0x220a,
+ 0x220c, 0x234a, 0x2346, 0x2334, 0x2345, 0x2343, 0x2344, 0xf893, 0x2387,
+ 0x2386, 0x238a, 0x23da, 0x23d8, 0x38b4, 0x0518, 0x0134, 0x23d6, 0x23d4,
+ 0x2454, 0x2459, 0x245a, 0x2457, 0x38e0, 0x24dd, 0x24e9, 0x24e0, 0x2605,
+ 0x2612, 0x2613, 0x2607, 0x2616, 0x2623, 0x2602, 0xf8a1, 0x264a, 0x2636,
+ 0x2640, 0x2656, 0x2643, 0xf8a0, 0x264b, 0x2646, 0x263e, 0x2649, 0x29a7,
+ 0x29b6, 0x29a6, 0x29a8, 0x29ac, 0x29a9, 0x29ab, 0x2a38, 0x2a37, 0x2a39,
+ 0x2a41, 0x2a3e, 0x2ac0, 0x2abb, 0x2abf, 0x2abd, 0x2afe, 0x2b1e, 0x2aee,
+ 0x2afc, 0xf8b7, 0x2af9, 0x2b06, 0x2ae4, 0x2ae9, 0x2ae5, 0x2b03, 0x2afd,
+ 0x2b49, 0x2ebe, 0x2f0a, 0x5626, 0x2f18, 0x2f0d, 0x2f0f, 0x2f0e, 0x2f20,
+ 0x3071, 0x3099, 0x30e2, 0x30df, 0x30de, 0x3178, 0x3179, 0x3ae4, 0x317c,
+ 0x317d, 0x3184, 0x318b, 0x318a, 0xf8d2, 0x3189, 0x332c, 0x3329, 0x336c,
+ 0x6804, 0x3409, 0x3408, 0x340c, 0x340d, 0x3410, 0x3c26, 0x389f, 0x3898,
+ 0x38a2, 0x389a, 0x39d5, 0x39e2, 0x39f0, 0x39ea, 0x39eb, 0x39ed, 0x39e8,
+ 0x39e0, 0x3a85, 0x3a86, 0x3af0, 0x1e46, 0x3b45, 0x3b38, 0x3b3e, 0x3b42,
+ 0x3b40, 0x3c47, 0x3c5c, 0x3c5e, 0x3cb4, 0x3cc2, 0x3d14, 0x3ce5, 0x3d15,
+ 0x3d11, 0xf8ff, 0x3cee, 0x3ce7, 0x3cf5, 0x3cf4, 0x3ce8, 0x3d01, 0x3cef,
+ 0x3cf1, 0xf900, 0x41db, 0x41bf, 0x41da, 0x41c7, 0x41dd, 0xf91a, 0x41eb,
+ 0x41e1, 0x41c1, 0x41bd, 0x4507, 0x44fd, 0x4501, 0x450a, 0x4503, 0x4572,
+ 0x4574, 0x4575, 0x45b2, 0x45b1, 0x45b4, 0x464c, 0x4642, 0x4640, 0x4649,
+ 0x463c, 0x464d, 0x464a, 0x463b, 0x4761, 0x4774, 0xf926, 0x477f, 0x477a,
+ 0x4788, 0x477c, 0x3e6f, 0x4770, 0x490f, 0x4928, 0x4913, 0x492a, 0x4aed,
+ 0x4aef, 0x4b2e, 0x4bc1, 0x4bdd, 0x0b47, 0x4c2d, 0x4c2b, 0x4c35, 0x4c2f,
+ 0x4c31, 0x4c34, 0xf935, 0x4c30, 0x4d3a, 0x4d39, 0x4d37, 0x4d4b, 0x4d54,
+ 0x4d4d, 0x4d51, 0x4d47, 0x4f27, 0x4f50, 0x4f4d, 0x4f4e, 0x4f54, 0x4fd2,
+ 0x4fce, 0x504b, 0x5049, 0x5105, 0x510f, 0x5119, 0xf943, 0x5106, 0x510c,
+ 0x5129, 0x5104, 0x5108, 0x5125, 0x401c, 0x5103, 0x5127, 0x5110, 0x510a,
+ 0xf942, 0x6b5d, 0x53aa, 0x53ab, 0x53a9, 0x5441, 0x543a, 0x543c, 0x542b,
+ 0x5449, 0x5615, 0x4100, 0x5616, 0xf953, 0x5631, 0x3c4a, 0x573c, 0x577c,
+ 0x576d, 0x576a, 0x5763, 0x576b, 0x577b, 0x5764, 0x577a, 0x5769, 0x576f,
+ 0x5937, 0x5935, 0x593c, 0x5936, 0x593d, 0x593e, 0x5ae1, 0x5ae0, 0x5e2d,
+ 0x5e2b, 0x5f8d, 0x5f92, 0x42b6, 0x5f8e, 0xf96b, 0x5f91, 0x5f96, 0x627b,
+ 0x6278, 0x6281, 0x6296, 0x62a3, 0x6295, 0x6297, 0x6354, 0x6352, 0x63f5,
+ 0x6400, 0x63fb, 0x63f4, 0x63f6, 0x64e8, 0x64ea, 0x663e, 0x663d, 0x663b,
+ 0x6680, 0x43e4, 0x6688, 0x6681, 0x6682, 0x66ce, 0x6683, 0x6677, 0x6679,
+ 0x6673, 0x666d, 0x6670, 0x668d, 0x6675, 0x668c, 0x666a, 0x6691, 0x6689,
+ 0x668e, 0x12dc, 0x68ff, 0x6959, 0x69c7, 0x6a12, 0x6a14, 0x6a13, 0x6acb,
+ 0x6b42, 0x44ad, 0x6b3d, 0x82ff, 0x6b40, 0x6b44, 0x6b62, 0x6b43, 0x6b3f,
+ 0x6b45, 0x6b3c, 0xf997, 0x6b46, 0x6b47, 0xf9b3, 0x719e, 0x719d, 0x722c,
+ 0x7229, 0x722f, 0x722e, 0x7230, 0x75e1, 0x75e2, 0x760e, 0x7619, 0x7612,
+ 0x78b4, 0x7bda, 0x7d26, 0x7e59, 0x7e5a, 0x7e88, 0x7fc0, 0x7fba, 0x82a0,
+ 0xf9dd, 0x82a2, 0x8486, 0x8fec, 0x849d, 0x8488, 0x848f, 0x848e, 0x849b,
+ 0x86c1, 0x86c3, 0x86c4, 0x8696, 0x86c7, 0x86c6, 0x86bf, 0x48c3, 0x890f,
+ 0x8e55, 0x8e42, 0x8e46, 0x8e4b, 0x8e43, 0x8e53, 0x8e48, 0x8e49, 0x8e4a,
+ 0x8e4e, 0x4bde, 0x0691, 0x944b, 0x9680, 0x9681, 0x9683, 0x028a, 0x9682,
+ 0x2342, 0x0922, 0x0070, 0x0071, 0x00bc, 0x1d18, 0x00be, 0x00ba, 0x00f8,
+ 0x0137, 0x0135, 0x0afc, 0x0156, 0x0159, 0x015e, 0x026d, 0x0291, 0x0292,
+ 0x0268, 0x0266, 0x0273, 0x3467, 0x0296, 0x028b, 0x028c, 0x0496, 0x04ee,
+ 0x051c, 0x051a, 0x0519, 0x051b, 0x055d, 0x055e, 0xf818, 0x05dc, 0x05e2,
+ 0x0652, 0x0692, 0x0730, 0x0752, 0x0742, 0x0741, 0x0745, 0x0737, 0x0740,
+ 0x073f, 0x073d, 0x0738, 0x073a, 0x0749, 0x086b, 0x0878, 0x0879, 0xf826,
+ 0x086c, 0x08e9, 0x08e6, 0x08e5, 0x08ea, 0x08e7, 0x08e8, 0x091f, 0x094b,
+ 0x094a, 0x0953, 0x0976, 0x09a3, 0x09a4, 0x09f6, 0x09f3, 0x09f9, 0x09f7,
+ 0x09fc, 0x0a1d, 0x0a6d, 0x0a71, 0x0a6c, 0x0a6e, 0x0a70, 0x0a6f, 0x0a67,
+ 0x0a68, 0x0afa, 0x0af9, 0x0b4e, 0x53de, 0x0b4d, 0x0b4f, 0x0b4a, 0x0b4c,
+ 0x3596, 0xf842, 0x0cee, 0x0cb2, 0x0cc0, 0x0cc1, 0x0cf4, 0x0cc8, 0x0cc5,
+ 0x0cc6, 0x0cad, 0x11e2, 0x11ea, 0x11e3, 0x11e1, 0x12f7, 0x1301, 0x1312,
+ 0x12f6, 0x12f1, 0x131f, 0x12ee, 0xf852, 0x12f3, 0x1315, 0x1316, 0x1317,
+ 0x12f8, 0x1319, 0x12f2, 0x12f4, 0x12f5, 0x1313, 0x1306, 0x1526, 0x1524,
+ 0x155a, 0x2ec8, 0x1597, 0x1595, 0x159a, 0x161f, 0x0afb, 0x1629, 0x1620,
+ 0xf862, 0xf863, 0x174c, 0x1730, 0x1738, 0x173d, 0x1751, 0x174f, 0x174a,
+ 0x1734, 0x1736, 0x5a30, 0x196a, 0x1968, 0x1a1c, 0x1a0e, 0x1a1e, 0x3759,
+ 0x1a09, 0x1a08, 0x1a13, 0x1a01, 0x1a0f, 0x1a14, 0x1a06, 0x1a07, 0x5bb2,
+ 0xf873, 0x3776, 0x1b79, 0x1bea, 0x1bed, 0x1be9, 0x1bee, 0x1c68, 0x1c64,
+ 0x1c67, 0x1c72, 0x1c62, 0x1c74, 0x1c79, 0x1d19, 0x1d17, 0x1d15, 0x1d16,
+ 0x1de6, 0x62a4, 0x1dee, 0x37d2, 0x1ddf, 0x1de4, 0x1dda, 0x1dea, 0x1ded,
+ 0x1de3, 0x1de9, 0x1ffd, 0x0657, 0x2021, 0x20c6, 0x20b8, 0x20cb, 0xf885,
+ 0x20bd, 0x20b5, 0x20bb, 0x20bf, 0x20be, 0x20b2, 0x20c1, 0x20c2, 0x2199,
+ 0x21c6, 0x222c, 0x222d, 0x2225, 0x221e, 0x221f, 0x2223, 0x2350, 0x234e,
+ 0x234d, 0x2352, 0x23e9, 0x23ec, 0x23e8, 0x2458, 0x245c, 0x245b, 0x248f,
+ 0x3972, 0x24f6, 0x2500, 0x24fc, 0x24f8, 0x24ea, 0x24fe, 0x24f7, 0x24fd,
+ 0x2670, 0x2662, 0x2644, 0x3920, 0x264d, 0x264c, 0x263f, 0x2666, 0x2635,
+ 0x3929, 0x2634, 0x268d, 0x2684, 0x3938, 0x2686, 0x2689, 0x2687, 0x2683,
+ 0x2675, 0x2679, 0x26af, 0x26b0, 0x29b7, 0x29bb, 0x29b9, 0x2a46, 0x2a47,
+ 0x2a45, 0x2aea, 0x2af6, 0x2b68, 0x2b39, 0xf8b9, 0x2b3d, 0x2b3b, 0x2b4d,
+ 0x2b30, 0x2b4a, 0x2b3e, 0x2b40, 0x2b4c, 0x2b47, 0x2b38, 0x2b52, 0x2b3a,
+ 0x2b53, 0x2ec4, 0x2ec1, 0x2f1c, 0x2f1d, 0x2f2a, 0x2f1e, 0x2f2f, 0x2f22,
+ 0x2f2e, 0x2f25, 0x3a89, 0x3ab0, 0x304a, 0x304b, 0x3076, 0x3abf, 0x30e8,
+ 0x30ef, 0x30e9, 0x3ac5, 0x30ea, 0xf8cc, 0x3aea, 0x319b, 0x319e, 0x3193,
+ 0x31a7, 0x319c, 0x31a0, 0x319a, 0x31ab, 0x31be, 0x31a9, 0x332d, 0x336e,
+ 0x3444, 0x343d, 0x343a, 0x3468, 0x343c, 0x346a, 0xf8e0, 0x3438, 0x3465,
+ 0x3439, 0x346d, 0x3436, 0xf8e3, 0x343e, 0x347e, 0x3437, 0x3899, 0x38a9,
+ 0x38ad, 0x38a7, 0x38a8, 0x3966, 0x3969, 0x396d, 0x3967, 0x396b, 0x396a,
+ 0x39ee, 0x3a01, 0x3a03, 0x39f4, 0x39fb, 0x3c37, 0x39f6, 0x39fc, 0x3af4,
+ 0x3b08, 0x3b0a, 0x3b09, 0x3b6d, 0x3b62, 0x3b41, 0x3b5e, 0x3b5c, 0x3cf3,
+ 0x3d26, 0x3ce4, 0x3d39, 0xf904, 0x3d6c, 0x3d2b, 0x3d2e, 0x3d3b, 0x3d5e,
+ 0x3dfb, 0x3d27, 0x3d24, 0x3d69, 0x3d30, 0xf905, 0x3d62, 0x3d38, 0x3d35,
+ 0x3d2a, 0x3d2c, 0x3d68, 0x3d31, 0x3d2f, 0x3d2d, 0x3d3a, 0x3d36, 0xf903,
+ 0x3d21, 0x3d3c, 0x3d20, 0x3d64, 0x3d3e, 0x3ce8, 0x41f7, 0x4212, 0x41f1,
+ 0x41f5, 0x4222, 0x41f2, 0x41df, 0x4215, 0x4216, 0x457a, 0x4576, 0x45be,
+ 0x3e20, 0x45bd, 0x4609, 0x4608, 0x4657, 0x47a3, 0x47bf, 0x47b8, 0x47af,
+ 0x479c, 0x47a5, 0x4772, 0x4775, 0x479d, 0x4799, 0x47b9, 0x494e, 0x4939,
+ 0x493b, 0x4935, 0x493c, 0x4955, 0x4af0, 0x4af3, 0x4af4, 0x4b3b, 0x4b3c,
+ 0x4b3a, 0x4b36, 0x4c07, 0x0ceb, 0x4c55, 0x4c50, 0x4c4f, 0x4c52, 0x4c56,
+ 0x00bd, 0x4c32, 0x4d63, 0x4d6b, 0x4d66, 0x4d57, 0x4d5d, 0x3f86, 0x4d6d,
+ 0x4d61, 0x4d69, 0x4d5a, 0x4d5c, 0x4d62, 0x4f2a, 0x4f29, 0x4f58, 0x4f5a,
+ 0x4fd7, 0x4fdb, 0x4fdc, 0x4fdd, 0x4fd8, 0x5054, 0x505b, 0x505c, 0x5053,
+ 0x504f, 0x5056, 0x5050, 0x505a, 0x506b, 0x5136, 0x5153, 0x513a, 0x513c,
+ 0x513e, 0x5149, 0x5140, 0xf946, 0xf947, 0x5364, 0x5365, 0x53b5, 0x53b6,
+ 0x53b2, 0x5448, 0x544a, 0x5472, 0x5469, 0x545a, 0x544c, 0x562c, 0x5630,
+ 0x564b, 0x5649, 0x5642, 0x5644, 0x564a, 0x564f, 0x5792, 0xf957, 0x5797,
+ 0x5780, 0x5782, 0x5786, 0x5953, 0x595e, 0x5952, 0x595b, 0x594e, 0x5a6d,
+ 0x5a6e, 0x5afa, 0x5af6, 0x5afb, 0x5e33, 0x5e3d, 0x5e37, 0x5e3e, 0x5e35,
+ 0x5f9a, 0x5fab, 0x5fa6, 0x5fb0, 0x5f99, 0x5fa0, 0x5f9e, 0x5fa8, 0x5fa1,
+ 0x5faa, 0x5fad, 0x5fbb, 0x5f9c, 0x5fa5, 0x00b3, 0x6227, 0x628d, 0x628e,
+ 0x628f, 0x6292, 0x4356, 0x6291, 0x62ad, 0x6357, 0x6358, 0x635e, 0x635d,
+ 0x635c, 0x635b, 0x4367, 0x640a, 0x6403, 0x640e, 0x64b8, 0x654d, 0x653f,
+ 0x6547, 0x654b, 0x654a, 0x653d, 0x8038, 0x6541, 0x654c, 0x8081, 0x6662,
+ 0x6669, 0x6661, 0x43d1, 0x66aa, 0x66a6, 0x66ac, 0x66bd, 0x66bb, 0x66a4,
+ 0x66ba, 0x669a, 0x43eb, 0x66a1, 0x66c1, 0x68e0, 0x690a, 0x6903, 0x6906,
+ 0x6939, 0x693a, 0x6936, 0x695b, 0x695f, 0x695e, 0x6967, 0x6961, 0x6962,
+ 0x695d, 0x69ca, 0x69cc, 0x69ce, 0x6a18, 0x6a1d, 0x6a1f, 0x6a20, 0x6a17,
+ 0x6a15, 0x6b1f, 0x6b27, 0x6b26, 0x1e10, 0x6b8b, 0x6bae, 0x6b8a, 0xf999,
+ 0x6b92, 0x6b89, 0x6b87, 0x44b6, 0x6b8f, 0x6b84, 0x6b83, 0x6b8c, 0x6b93,
+ 0x6b8d, 0x6b98, 0x6b7d, 0x6b7e, 0x6bd2, 0x6b80, 0x6b99, 0x71ac, 0x7250,
+ 0x7255, 0x7242, 0x723f, 0x723c, 0x45a3, 0x724c, 0x7249, 0x7257, 0x7258,
+ 0x724f, 0x725c, 0x7247, 0xf9b7, 0x75ab, 0x4610, 0x75af, 0x75ad, 0x75e8,
+ 0x75e7, 0x7630, 0x7626, 0x762f, 0x7628, 0x762b, 0x761d, 0x762d, 0x7620,
+ 0x762a, 0x762c, 0x7635, 0x7621, 0x7623, 0x7624, 0x7636, 0x7637, 0x77e9,
+ 0x78ba, 0x78b8, 0xf9cc, 0x796d, 0x796a, 0x7968, 0x7969, 0x796b, 0x7961,
+ 0x7bdc, 0x7bdb, 0x7c2d, 0x7c2c, 0x7ca2, 0x7d2b, 0x7d32, 0xf9d7, 0x7e94,
+ 0x7e92, 0x7e90, 0x7fc9, 0x7fc4, 0x7fc1, 0x7fc3, 0x7fcd, 0x8214, 0x82a7,
+ 0x82af, 0x82aa, 0x840d, 0x8454, 0x845b, 0x8461, 0x84ae, 0x84b3, 0x84c0,
+ 0x84c4, 0x84bf, 0x84cb, 0x84ad, 0x84a7, 0x84a4, 0x84bd, 0x84af, 0x84b2,
+ 0x84a5, 0x86e7, 0x86e0, 0x86ce, 0x86de, 0x86d5, 0x86df, 0x86d9, 0x87f2,
+ 0x8923, 0x8940, 0x491b, 0x893e, 0x4987, 0x8ccf, 0x0b54, 0x8e5b, 0x8e58,
+ 0x8e62, 0x8e5f, 0x8e67, 0x8e63, 0x8e5e, 0x8e60, 0x8f85, 0x8f86, 0x8f87,
+ 0x91e8, 0x91e6, 0x9671, 0x9685, 0xfa02, 0x9686, 0x9810, 0x09f8, 0x00bf,
+ 0x0b61, 0x00fe, 0x00fc, 0x0139, 0x0161, 0x0160, 0x02e2, 0x02ea, 0x02e3,
+ 0x02b4, 0x02ae, 0x02be, 0x02b8, 0x02a8, 0x02aa, 0x02a9, 0x02b3, 0x02d5,
+ 0x02ad, 0x02b9, 0x02bb, 0x02b1, 0x02c2, 0xf808, 0x02eb, 0x02ba, 0x02d2,
+ 0x02d4, 0x04f1, 0x051d, 0xf812, 0x0562, 0x058c, 0x05e6, 0x05e7, 0x065a,
+ 0x0658, 0x0659, 0x0696, 0x0697, 0x0761, 0x0767, 0x0771, 0x0765, 0x077d,
+ 0x077e, 0x087d, 0x0884, 0x087c, 0x087e, 0x087f, 0x0880, 0x08ef, 0x08f4,
+ 0x091e, 0x094e, 0x09fb, 0x09fa, 0x09fd, 0xf831, 0xf832, 0x0a79, 0x0a7c,
+ 0x0a7d, 0x0a84, 0x0a7b, 0x0a78, 0x3557, 0x0b5e, 0x0b5a, 0x0b5c, 0x0b59,
+ 0x0b55, 0x0b63, 0x0b56, 0x0b5f, 0x0b60, 0x0b5b, 0x0d4a, 0x0d65, 0x0db3,
+ 0x0d2c, 0x0d77, 0x0d3d, 0x0d52, 0x0d61, 0x0d2a, 0x0d3e, 0x0d34, 0x0d29,
+ 0x0db2, 0x0dad, 0x0d40, 0x0d53, 0xf844, 0x0d3f, 0x0d41, 0x0d72, 0x11f6,
+ 0x11f5, 0x11f4, 0x11f2, 0x11f9, 0x1327, 0x1354, 0x1355, 0x132e, 0xf854,
+ 0xf853, 0x132c, 0x1338, 0x1339, 0x1331, 0x134f, 0x1373, 0x1330, 0x132b,
+ 0x1351, 0x152c, 0x155b, 0x155c, 0x1568, 0x156c, 0x156b, 0x1569, 0x159f,
+ 0x1638, 0x163c, 0x163a, 0x1635, 0x369d, 0x1639, 0x1636, 0x163b, 0x1760,
+ 0x1761, 0x1763, 0x1764, 0x1794, 0x1793, 0x175e, 0x1768, 0x176a, 0x1765,
+ 0xf866, 0x1790, 0x175f, 0x1772, 0xf865, 0x1a3c, 0x1a27, 0x1a24, 0x1a26,
+ 0x1a25, 0x375f, 0x1a28, 0x1a36, 0x1b31, 0x1b30, 0x1b34, 0x1b81, 0x1b7d,
+ 0x1b82, 0x1b80, 0x3779, 0x02d3, 0x1bf2, 0x1c66, 0x1c8c, 0x1c7b, 0x1c83,
+ 0x3798, 0x1c8e, 0x1c7a, 0x1c92, 0x1c91, 0x1c82, 0x1d1b, 0x1d1c, 0x1e27,
+ 0x1e21, 0x37dc, 0x5d2b, 0x1e43, 0x37df, 0x1e18, 0x1e7b, 0x1e1a, 0x1e4b,
+ 0x1e4a, 0x1e4d, 0x1e4f, 0x1e19, 0x1e35, 0x1e13, 0x1e52, 0x1e14, 0x1e1e,
+ 0x1e2c, 0x1e20, 0x1e22, 0x1e12, 0x1e1f, 0x2000, 0x2023, 0x2040, 0x2043,
+ 0x20e4, 0x20db, 0x20ea, 0x20dd, 0x20cc, 0x20d9, 0x20e8, 0x20f6, 0x20e3,
+ 0x20d3, 0x20da, 0x20d6, 0x20e7, 0x223a, 0x223f, 0x2240, 0x2248, 0x2259,
+ 0x2237, 0x2244, 0xf88c, 0xf88b, 0x2255, 0x2239, 0x2354, 0x2355, 0x2356,
+ 0x2357, 0x2358, 0x2359, 0x238d, 0x23f2, 0x23f8, 0x23f5, 0x23f6, 0x23fc,
+ 0x23fe, 0x23f1, 0x23fd, 0x245e, 0x2496, 0x2497, 0x249c, 0x249b, 0x2495,
+ 0xf89a, 0x251a, 0x2509, 0x2504, 0x250e, 0x251c, 0x2518, 0x250d, 0x2510,
+ 0x250c, 0x2503, 0x267b, 0x26a6, 0x2677, 0x2688, 0x2674, 0x26da, 0x2676,
+ 0x2678, 0x268a, 0x268f, 0x267d, 0x2690, 0x26ed, 0x26d9, 0x26d0, 0x271a,
+ 0x26d7, 0x26e2, 0x26e1, 0x26c5, 0x26e0, 0x26ca, 0x2725, 0x26cc, 0xf8b3,
+ 0x29c6, 0x29c1, 0x2a4d, 0x2b4b, 0x2b64, 0x2b95, 0x2b99, 0xf8bc, 0x2b94,
+ 0x2ba2, 0x2bae, 0x2b9e, 0x2ba7, 0x2b86, 0x39fd, 0x2ba4, 0x2b91, 0x2b93,
+ 0xf8bb, 0x2b88, 0x2ecd, 0x2eca, 0x2f3f, 0x2f40, 0x2f46, 0x2f41, 0x2f45,
+ 0x2f58, 0x2f3b, 0x2f48, 0x304e, 0x3052, 0x304f, 0x307b, 0x307a, 0x30a0,
+ 0x309f, 0x30fb, 0x30f7, 0x31b8, 0x31b9, 0x31bb, 0x31b7, 0x3af4, 0x31ba,
+ 0x3aef, 0x31da, 0x31b5, 0x31bf, 0x31bc, 0x31c0, 0xf8d3, 0xf8d9, 0x3375,
+ 0x3379, 0x3376, 0x3435, 0x3440, 0x34c0, 0x3481, 0x34ad, 0x34af, 0x34ac,
+ 0x348f, 0x34a8, 0x34aa, 0x34a9, 0x3488, 0x347f, 0x3480, 0x34bc, 0x38ae,
+ 0x38bb, 0x38bd, 0x3c31, 0x3978, 0x3974, 0x3a0c, 0x3a11, 0x3a08, 0x3a06,
+ 0x3a10, 0x3a8f, 0x3a90, 0x3a8d, 0x3a8e, 0x3a96, 0x3a95, 0x3b0b, 0x3b0c,
+ 0x3b7c, 0x3b73, 0x3b75, 0x3b76, 0x3b7d, 0x3b78, 0x3b71, 0x3c4b, 0x3c4e,
+ 0x3d33, 0x3d32, 0x3d03, 0x3d91, 0x3de7, 0x3de9, 0x3da2, 0x3d94, 0x3d87,
+ 0x3da3, 0x3ddd, 0x3d7b, 0x3d83, 0x3d81, 0x3ddf, 0x3d7c, 0x3de4, 0x3de2,
+ 0x3d93, 0x3d7d, 0x3dbf, 0x3d9b, 0x3d8e, 0x3d9f, 0x3d09, 0x3d8c, 0x3d7f,
+ 0x3d9c, 0x3d84, 0x3d42, 0x3de6, 0x4251, 0x424a, 0x4264, 0x4225, 0x422f,
+ 0x422e, 0x422b, 0x4228, 0x4232, 0x422d, 0x4231, 0x4239, 0x422c, 0x4261,
+ 0x4511, 0x4510, 0x4512, 0x4553, 0x4555, 0x457b, 0x4581, 0x457d, 0x457c,
+ 0x45c2, 0x45c5, 0xf922, 0x45c4, 0xf923, 0x466b, 0x4668, 0x3e3e, 0x465c,
+ 0x465d, 0x466a, 0xf924, 0x4c76, 0x4776, 0x3e77, 0x47c4, 0x47cb, 0x47c8,
+ 0x47d4, 0x47d5, 0x47c9, 0x47d7, 0x3e7b, 0x4978, 0x495a, 0x495b, 0x495c,
+ 0x4956, 0x4958, 0x4971, 0x69d4, 0x4b40, 0xf933, 0x4b3f, 0x4b43, 0x4b41,
+ 0x4be2, 0x4be0, 0x4be3, 0x4c66, 0x4c73, 0x4c6c, 0x4c71, 0x4c6a, 0x4c6d,
+ 0x4c6e, 0x4c6b, 0x4d8c, 0x4d77, 0xf93a, 0x4d7f, 0x4d89, 0x4d7a, 0x4d85,
+ 0x4d78, 0x4d8a, 0x4d86, 0x4f2c, 0x4f67, 0x4f5b, 0x4fe5, 0x4fe1, 0x5061,
+ 0x5069, 0x506a, 0x5165, 0x516d, 0x5163, 0x5186, 0x515c, 0x5162, 0xf948,
+ 0x5179, 0x5169, 0x5170, 0x5176, 0x515d, 0x5187, 0x516e, 0x5171, 0x517c,
+ 0x5173, 0x515b, 0x516b, 0x53bf, 0x53c1, 0x53bd, 0x53c9, 0x53bc, 0x53c2,
+ 0x53c0, 0x5492, 0x54a9, 0x548f, 0x5476, 0x547b, 0x5475, 0x54a4, 0x5664,
+ 0x573d, 0x57af, 0x413a, 0xf958, 0x579d, 0x5799, 0x57b1, 0x5963, 0x5962,
+ 0x5964, 0x5969, 0x41a0, 0x5a75, 0x5a73, 0x5a71, 0x5a74, 0x5b0c, 0x5b16,
+ 0x41e5, 0x5b11, 0x5b1f, 0x5b1a, 0x5b0d, 0x5b1b, 0x5b13, 0x5e4e, 0x5e55,
+ 0x5e50, 0x427d, 0x5fd2, 0x5fd3, 0x5fd1, 0x5ff1, 0x5fdc, 0x5fc8, 0x5fcc,
+ 0x5fd0, 0x5fcf, 0x5fdf, 0x622b, 0x622e, 0x622d, 0x629d, 0x629e, 0x629f,
+ 0x62a9, 0x62a0, 0x6298, 0x62a1, 0x62ab, 0x62af, 0x636e, 0x635f, 0x635a,
+ 0x436d, 0x6365, 0x6368, 0x6372, 0x6417, 0x6416, 0x6418, 0x6419, 0x641a,
+ 0x6422, 0x641b, 0x641c, 0x64be, 0x64ee, 0x655a, 0x6550, 0x6558, 0x6554,
+ 0x6557, 0x6556, 0x6615, 0x669b, 0x6693, 0x6692, 0x6672, 0x6698, 0x6699,
+ 0x66df, 0x43f8, 0x66d5, 0x8158, 0x66d4, 0x66f3, 0x66f4, 0x66e7, 0x66e1,
+ 0x66e6, 0x66eb, 0x66ec, 0x02db, 0x4450, 0x690d, 0x690c, 0x1b2f, 0x6968,
+ 0x6965, 0x696b, 0x6969, 0x69d1, 0x69d3, 0x6a27, 0x6a28, 0x4468, 0x4467,
+ 0x6a24, 0x6ad7, 0x6bca, 0x6bc7, 0xf99e, 0x6bd8, 0x6be1, 0x6bc6, 0x6bf8,
+ 0x6bc3, 0x6bf4, 0x6c17, 0x6bea, 0x6bcb, 0x6b86, 0x6bc4, 0x6bd9, 0x6c19,
+ 0x6bc2, 0x6be2, 0x44cf, 0x6bde, 0x6bed, 0xf99c, 0x44cd, 0x6c1d, 0x6bdd,
+ 0x6bdb, 0x6be8, 0x6be9, 0x6bbf, 0x6be0, 0x6bd1, 0x6bdc, 0x6bce, 0x6c1e,
+ 0x6bcc, 0x6bf2, 0x6bf3, 0xf99f, 0xf9a2, 0xf9a3, 0xf9a1, 0x71ab, 0x71aa,
+ 0x71a7, 0x71a9, 0x7288, 0x7275, 0x7260, 0x726c, 0x7273, 0x45ab, 0x726e,
+ 0x7274, 0x7276, 0x7268, 0x7277, 0x7286, 0x75ea, 0x7651, 0x7650, 0x7658,
+ 0x764d, 0x764f, 0x764e, 0x765c, 0x7652, 0x7644, 0x764a, 0x764b, 0x77ea,
+ 0x7810, 0x7811, 0x78cd, 0x78bf, 0x78c4, 0x78d0, 0x78ce, 0x78c0, 0x78c2,
+ 0x78cf, 0x78c9, 0x78bb, 0x7997, 0x7992, 0x796f, 0x797e, 0x799a, 0x46c1,
+ 0x7986, 0x7973, 0x8a24, 0x7977, 0x798f, 0x7970, 0x7981, 0x7982, 0x7999,
+ 0x797d, 0x797f, 0x797b, 0x7987, 0x7bb2, 0x7c2f, 0x7c34, 0x7c2e, 0x7c32,
+ 0x4747, 0x7caa, 0x4757, 0x7ca9, 0x7d38, 0x7d36, 0x7d37, 0x7d47, 0x7d33,
+ 0x7d39, 0x7d35, 0x7d44, 0x7ea5, 0x7ea6, 0x7e9e, 0x7fe3, 0x7fdf, 0x7fd3,
+ 0x7ff1, 0x7fe4, 0x7fe0, 0x7fd6, 0x8dc3, 0x7fe6, 0x7fd8, 0x7fde, 0x7fdb,
+ 0x7fdc, 0x821b, 0x821f, 0x821d, 0x821c, 0x821e, 0x8220, 0x8221, 0x484e,
+ 0x82b6, 0x82bc, 0x82c6, 0x82c7, 0x82ba, 0x82be, 0x82bd, 0x82b5, 0x82b4,
+ 0x840f, 0x8462, 0x84eb, 0x84d9, 0x84e4, 0x84d7, 0x84d8, 0x84d6, 0x84ce,
+ 0x84dd, 0x84e7, 0x84d2, 0x84c5, 0x84c9, 0x84db, 0x8692, 0x868a, 0x868b,
+ 0x8689, 0x8708, 0x8703, 0x8706, 0x8705, 0x86f5, 0x870b, 0x86fb, 0x87fc,
+ 0x8801, 0x8802, 0x87fa, 0x8808, 0x87f7, 0x8800, 0x87ff, 0x8806, 0x87f6,
+ 0x87fb, 0x880a, 0x8925, 0x8943, 0x8944, 0x8c64, 0x8c62, 0x8c5e, 0x8c5b,
+ 0x8cd6, 0x0072, 0x00c2, 0x8e77, 0x8e82, 0x8e7c, 0x8e7d, 0x8e86, 0x8e81,
+ 0x8e84, 0x8e76, 0x8e83, 0x8e7f, 0x8e7e, 0x8f88, 0x8f8d, 0x8f8b, 0x8f91,
+ 0x8f8f, 0x907c, 0x9079, 0x907a, 0x91ea, 0x944c, 0x9599, 0x02d1, 0x968b,
+ 0x968d, 0x968a, 0x968e, 0x9811, 0x2256, 0xfa15, 0x0074, 0x00c3, 0x00c4,
+ 0x011b, 0x015f, 0x016a, 0x0169, 0x016b, 0x030c, 0x02f6, 0x02ed, 0x0329,
+ 0x02fe, 0x02f1, 0x0317, 0x02ff, 0x02ee, 0x02fd, 0x031c, 0x02fc, 0x0300,
+ 0x0320, 0x3477, 0x02f9, 0x0367, 0x0308, 0x049e, 0x04f3, 0x0525, 0x0527,
+ 0x051f, 0x0565, 0x0563, 0x0594, 0x0597, 0x05f1, 0x065f, 0x0662, 0x51f2,
+ 0x0660, 0xf822, 0x078c, 0x0782, 0x0790, 0x078b, 0x078d, 0x0781, 0x079d,
+ 0x088e, 0x088f, 0x0892, 0x0923, 0x0952, 0xf82e, 0x0a00, 0x0a01, 0x0a02,
+ 0x0a1f, 0x0a8c, 0x0a89, 0x0a8b, 0x0a88, 0x0a8d, 0x0a8f, 0x6385, 0x0b00,
+ 0x0b05, 0x0b01, 0x0b68, 0x0b6e, 0x0b67, 0x0b75, 0x55b6, 0xf845, 0x0dd7,
+ 0xf846, 0x0048, 0x0dd4, 0x0dd8, 0xf847, 0xf848, 0x0dba, 0xf849, 0x0ddb,
+ 0x0dbf, 0x0e35, 0x0dbc, 0x0dd9, 0x35c4, 0x0ddd, 0x0e00, 0x0dd5, 0x0e30,
+ 0x0dbd, 0x0ddc, 0x11fd, 0x11fe, 0x1207, 0x4517, 0x136f, 0x1369, 0x1370,
+ 0x1367, 0x13a9, 0x1395, 0x1390, 0x136c, 0x1397, 0x1371, 0x3652, 0x1374,
+ 0x136d, 0x138e, 0x152f, 0xa31b, 0x15a9, 0x164e, 0xf85f, 0x165a, 0x1648,
+ 0x1655, 0x164c, 0x1649, 0x164f, 0x164a, 0x17d6, 0x17a0, 0x17a9, 0xf867,
+ 0x179d, 0x17d4, 0x17a4, 0x17a8, 0x17a6, 0x17e6, 0x197d, 0x1977, 0x197a,
+ 0x1a41, 0x1a49, 0x1a59, 0x1a45, 0x1a48, 0x1a40, 0x1b8e, 0x1b95, 0x1b90,
+ 0x1bf7, 0x1bf8, 0x1bf6, 0x1bfb, 0x1c9e, 0x1c9d, 0x1c99, 0xf877, 0x1ca3,
+ 0x1ca9, 0x1c98, 0x1ca0, 0x1c96, 0x1c94, 0x1c95, 0x1c9f, 0x1ca1, 0x1d21,
+ 0x1d1d, 0x1d1f, 0x1e6d, 0xf87c, 0x1e9a, 0x1e92, 0x1e7a, 0x1e7d, 0x1ea1,
+ 0x1e9d, 0x1e99, 0x1e6b, 0x1e6e, 0xf87d, 0x2045, 0xf884, 0x20fb, 0x20eb,
+ 0x20f2, 0x20f9, 0xf886, 0x20f8, 0x20ed, 0x2101, 0x20f7, 0x2106, 0x219b,
+ 0x21ca, 0x386b, 0x5ec3, 0x226b, 0x226c, 0x2274, 0x2267, 0x225b, 0x2260,
+ 0x2276, 0x2263, 0x2261, 0x2328, 0x235b, 0x235e, 0x2360, 0x235d, 0x235c,
+ 0x23f4, 0x2400, 0x2408, 0x2407, 0x2401, 0x2405, 0x2464, 0x2463, 0x249e,
+ 0x24a0, 0x24a1, 0x249f, 0x2526, 0x252d, 0x2528, 0x251d, 0x26ec, 0x26e3,
+ 0x26eb, 0x2716, 0x26c8, 0x661b, 0x26e9, 0x26e4, 0x2724, 0x26d1, 0x3941,
+ 0x26dd, 0x26c2, 0x26cb, 0x26c7, 0x26e7, 0x3950, 0x26ea, 0x274b, 0xf8a5,
+ 0x2760, 0x277d, 0x273e, 0xf8a4, 0x2752, 0x274e, 0x273c, 0x2732, 0x2730,
+ 0x2723, 0x29ca, 0x29cb, 0x29c9, 0x29c8, 0x29cd, 0x2b98, 0x2ba0, 0x2b9f,
+ 0x2b9c, 0x2ba3, 0x2b97, 0xf8be, 0x2bf1, 0x2c09, 0x2c03, 0x2bea, 0x2c45,
+ 0x2bed, 0x2c05, 0x2c1a, 0x2c15, 0x2c01, 0x2bec, 0x2c0e, 0x2c17, 0x2c42,
+ 0x2c12, 0x2c10, 0x2bef, 0x2bff, 0x2c00, 0x2c0c, 0x2c0f, 0x2c04, 0x2c08,
+ 0x2c14, 0x2c43, 0xf8bd, 0x2c1b, 0x2c11, 0x2c13, 0x2ecf, 0x2ece, 0x2f6f,
+ 0x2f6e, 0x2f7a, 0x2f70, 0x2f64, 0x2f5e, 0x2f6c, 0xf8c9, 0x2f5b, 0x2f61,
+ 0x2f65, 0x307f, 0x3080, 0x307c, 0x30a7, 0x30a6, 0x30a1, 0x3ac0, 0x30a8,
+ 0x30a3, 0x30a2, 0x30ad, 0x30a5, 0x3101, 0x30ff, 0x30fc, 0x3100, 0x3135,
+ 0x31ee, 0x31ef, 0x31f6, 0x31e8, 0x31ea, 0x31e3, 0x321f, 0x3afc, 0x31e4,
+ 0x31fa, 0x31f1, 0x31fb, 0xf8d4, 0x333d, 0x333c, 0x3479, 0x3378, 0x3377,
+ 0x440b, 0x34d1, 0x34c7, 0x34df, 0x34d0, 0x34e0, 0x34d6, 0x34d8, 0x3516,
+ 0x350e, 0x34d9, 0x350f, 0x3511, 0x34cd, 0x3489, 0x34ce, 0x3514, 0x34da,
+ 0x3512, 0x34d3, 0x34c2, 0x34e1, 0x34e9, 0x34ea, 0x34de, 0x3515, 0x38d9,
+ 0x38d6, 0x38cd, 0x38d0, 0x38d3, 0xf8f0, 0x3982, 0x3985, 0x397f, 0x397d,
+ 0x3981, 0x3983, 0x3984, 0x84a0, 0x3a28, 0x3a0f, 0x3a17, 0x3a1a, 0x3a25,
+ 0xf8f7, 0x3a9b, 0x3a99, 0x3b92, 0x3b8c, 0x3b95, 0x3b8d, 0x3ba3, 0x3b93,
+ 0x3b91, 0x3ddb, 0x3d99, 0x3d9a, 0x3e08, 0x3e4c, 0x3e0d, 0x3e01, 0x3e4e,
+ 0x3e02, 0x3e4d, 0x3e21, 0x3dfc, 0xf909, 0x3d8a, 0xf908, 0x3d95, 0x3e11,
+ 0x3e12, 0x3e46, 0x3e1c, 0x3e49, 0x3e0c, 0x3d1e, 0x3e13, 0x3e16, 0x3dfd,
+ 0x3e0f, 0x3e1f, 0x4230, 0x426e, 0x426b, 0x429b, 0x427b, 0x4263, 0x4297,
+ 0x426d, 0x429c, 0x4298, 0x426f, 0x4267, 0x4269, 0x4515, 0x4563, 0x4586,
+ 0x458a, 0x4587, 0x4588, 0x4585, 0x4589, 0x45ca, 0x45c7, 0x45cb, 0x45cc,
+ 0x45c9, 0x460d, 0x4683, 0x4684, 0x4678, 0x4682, 0x4673, 0x4679, 0x468c,
+ 0x47d0, 0x47cf, 0x47d2, 0x47d9, 0x47cc, 0x47eb, 0x47fd, 0x47ec, 0x47e8,
+ 0x47f8, 0x47fa, 0xf927, 0x3e85, 0x47e1, 0x47fb, 0x48e7, 0xf92e, 0x49a5,
+ 0x4991, 0x49a6, 0x497c, 0x4992, 0x49a2, 0x49a0, 0x4afc, 0x4afe, 0x4b57,
+ 0x4b53, 0x4b58, 0x4be7, 0x4c8e, 0xf938, 0x4c83, 0x4c8b, 0x4c84, 0x3f97,
+ 0x4da2, 0x4db7, 0x4da9, 0x4da5, 0x4d9f, 0x4daa, 0x4d97, 0x4da1, 0x4d9e,
+ 0x4dab, 0x4d99, 0x4da3, 0x4f30, 0x4f32, 0x4f2f, 0x4f70, 0x4f6c, 0x4f6f,
+ 0x4fe8, 0x4fee, 0x4fea, 0x506d, 0x5076, 0x5070, 0x5071, 0x506c, 0x51eb,
+ 0x51b5, 0x5196, 0x5190, 0x518d, 0xf949, 0x51a2, 0x51b0, 0x5192, 0x51a0,
+ 0x5193, 0x51c3, 0x518e, 0x51b6, 0x519d, 0x5195, 0x51b3, 0x51a4, 0x5370,
+ 0x53d4, 0x4093, 0x53cf, 0x0170, 0x5494, 0x7861, 0x54c0, 0x54b4, 0x54c1,
+ 0x40b2, 0x54bd, 0x54af, 0x5677, 0x5678, 0x566b, 0x566d, 0x566e, 0x5672,
+ 0x566f, 0x5671, 0x30ab, 0x568c, 0x573f, 0x57b6, 0x57b7, 0x7a06, 0x57bb,
+ 0x57b8, 0x079c, 0x57b9, 0x7a01, 0x598b, 0x597a, 0x5984, 0x5988, 0x5991,
+ 0x5979, 0x598e, 0x5980, 0x5982, 0x597c, 0x41a4, 0x5a84, 0x5a7f, 0x41f2,
+ 0x5b3b, 0x5b71, 0x5b3d, 0x5b30, 0x41f1, 0x5b3e, 0x5b38, 0x5e5e, 0x5e64,
+ 0x4281, 0x5e5d, 0x5e6d, 0x5e4f, 0x5e62, 0x5e5f, 0x5fec, 0x5ff2, 0x5ff4,
+ 0x5ff7, 0x5ff6, 0x6007, 0x5fed, 0x5fea, 0x5ff0, 0x5ff8, 0x5ff3, 0x42dc,
+ 0xf972, 0x6231, 0x622f, 0x62b6, 0x62ae, 0x62aa, 0x62bf, 0x62cc, 0x62c7,
+ 0x6c83, 0x6380, 0x637b, 0x637f, 0x637d, 0x6383, 0xf978, 0x6446, 0x642d,
+ 0x6425, 0x6426, 0x642c, 0x6437, 0x6431, 0x6433, 0x6432, 0x6427, 0x642a,
+ 0x642e, 0x642f, 0x64c0, 0x6571, 0x6561, 0x6562, 0x6566, 0x6618, 0x66c5,
+ 0x66c3, 0x66c4, 0x66c2, 0x66ae, 0x6710, 0x6708, 0x671f, 0x673a, 0x673b,
+ 0x6736, 0x670c, 0x6706, 0x672a, 0x6757, 0x6750, 0x6720, 0xf985, 0x672c,
+ 0x6721, 0x670b, 0x6719, 0x6735, 0x6718, 0x670f, 0x6713, 0x6755, 0x6739,
+ 0x671a, 0x440c, 0x6717, 0x68e4, 0x68e9, 0x458b, 0x6910, 0x6912, 0x693f,
+ 0x696e, 0x4518, 0xf98c, 0x69d6, 0x69d5, 0x69d7, 0x0b02, 0x446d, 0x6a31,
+ 0x6a30, 0x6a3a, 0x6b85, 0x6b6b, 0x6c48, 0x6c4b, 0x6c37, 0x6c7b, 0x6c6c,
+ 0x6c85, 0x6c65, 0x6c36, 0x6c86, 0x6c34, 0x6c68, 0x6c5a, 0x6c58, 0x6c72,
+ 0x6c6a, 0x6bd3, 0x6c3c, 0x6c33, 0x6c3b, 0x6c4d, 0x6c4f, 0x6c7c, 0x6cb0,
+ 0x6c5b, 0x6c55, 0x6c64, 0x6c6b, 0x6c53, 0x44e6, 0x6c57, 0x6c5e, 0x6c6d,
+ 0x6c35, 0x6c69, 0x6c59, 0x6c66, 0x6c50, 0x6c51, 0x6c5c, 0x6d5d, 0x6c87,
+ 0x6c78, 0x6c49, 0x6c4e, 0x6bf1, 0x6c73, 0x6c88, 0x6bcf, 0xf9a4, 0x71b1,
+ 0x71b3, 0x729c, 0x72a4, 0x7290, 0x72b8, 0x72a0, 0x729d, 0x72a8, 0x72a9,
+ 0xf9b9, 0x72b1, 0x7293, 0x729b, 0x72a2, 0x72a1, 0x72b0, 0x72a7, 0x75b3,
+ 0x8849, 0x75b4, 0x75f1, 0x75ed, 0x75ec, 0x7668, 0x7675, 0x766a, 0x7662,
+ 0x7667, 0x7660, 0x7677, 0x765f, 0x7679, 0x7823, 0x7821, 0x781c, 0x8999,
+ 0x781f, 0x781e, 0x78d6, 0x78d3, 0x78d9, 0x78d7, 0x78d4, 0x78dc, 0x78d8,
+ 0x79a3, 0x46d1, 0x79be, 0x79a9, 0x79a1, 0x79a0, 0x79ab, 0x79a2, 0x79ba,
+ 0x79c2, 0x799c, 0x79bb, 0x79aa, 0x79ac, 0x79a5, 0x79c1, 0x472c, 0x7be2,
+ 0x7c36, 0x7c3d, 0x7c3a, 0x2461, 0x7c48, 0x7c3c, 0x7cb7, 0x7cac, 0x7cb3,
+ 0x7cb6, 0x7cb2, 0x476e, 0x7d5d, 0x7d49, 0x7d4e, 0x7d4f, 0x7d4d, 0x7d5c,
+ 0x7e5d, 0x7ebb, 0x7ece, 0x7ebf, 0x7eba, 0x7ec3, 0x47e5, 0x8006, 0x7ff8,
+ 0x7ffe, 0x8013, 0x7ff6, 0x47e6, 0x8234, 0x822d, 0x822a, 0x8235, 0x822c,
+ 0x82d4, 0x82da, 0x82d3, 0x82d2, 0x82ce, 0x82cf, 0x489f, 0x84fd, 0x850b,
+ 0x84fe, 0x84f8, 0x84f7, 0x8517, 0x84fa, 0x84f9, 0x8500, 0x84f5, 0x84f1,
+ 0x8503, 0x8505, 0x851c, 0x86ac, 0x869a, 0x86ad, 0x86a0, 0x871b, 0x8725,
+ 0x8724, 0x8726, 0x8727, 0x8728, 0x872a, 0x871a, 0x872e, 0x8715, 0x8815,
+ 0x8814, 0x8817, 0x8818, 0x880f, 0x8813, 0x880b, 0x8822, 0x137a, 0x8926,
+ 0x921f, 0x8951, 0x894d, 0x894e, 0x894a, 0x894b, 0x894c, 0x8950, 0x8962,
+ 0x894f, 0x8952, 0x8c68, 0x8c69, 0x8ce5, 0x8cf0, 0x8ce1, 0x8ce2, 0xf9f2,
+ 0x8ea5, 0x8ea9, 0x8ea4, 0x8eaf, 0x8eac, 0x8eae, 0x8eaa, 0x8f95, 0x8f99,
+ 0x8f93, 0x8f9d, 0x8f98, 0x8f9c, 0x8f97, 0x4a0d, 0x9089, 0x9087, 0x91d7,
+ 0x91ed, 0x91f1, 0x91f0, 0x9205, 0x9203, 0x9204, 0x925f, 0x9457, 0x959c,
+ 0x95a1, 0x959a, 0x968f, 0x9693, 0x969e, 0x96a3, 0x9698, 0x9699, 0x9695,
+ 0x986e, 0x986a, 0x9af4, 0x9af7, 0x9c79, 0x9f8f, 0x9f91, 0xa00b, 0xa502,
+ 0x0084, 0x0104, 0x0180, 0x032f, 0x033f, 0x033b, 0x0362, 0x0344, 0x0333,
+ 0x035f, 0x032b, 0xf809, 0x0339, 0x0336, 0x0348, 0x0335, 0x036c, 0x0358,
+ 0x033a, 0x04a8, 0x04f4, 0x0529, 0x059a, 0x0600, 0x07bb, 0x07bd, 0x07b7,
+ 0x07b2, 0x34f8, 0x07a8, 0x07ab, 0x07a6, 0x07bc, 0x0897, 0x0896, 0x08f8,
+ 0x5313, 0x0951, 0x3533, 0x09b5, 0x09b4, 0x09b6, 0x353c, 0x09b7, 0x0a05,
+ 0x0a23, 0x0a95, 0x0a98, 0x354f, 0x0a94, 0x0a93, 0x0b07, 0x0b73, 0x0b71,
+ 0x0b72, 0x0b78, 0x0e5f, 0x0e6a, 0x0e67, 0x0e6b, 0x0e69, 0x0e8e, 0x0e49,
+ 0x0e80, 0x35dc, 0x0e44, 0x0e8f, 0x0e45, 0xf84c, 0x0e4f, 0x0e63, 0x0e36,
+ 0x0e48, 0x0e5c, 0x0e93, 0x0e61, 0x0e60, 0x0e4e, 0x0e5e, 0x0e3f, 0x0ea4,
+ 0x55e0, 0x0e68, 0x120b, 0x1211, 0x120d, 0x120e, 0x13c2, 0xf857, 0x13b0,
+ 0x13c3, 0x13c8, 0x1365, 0x13d7, 0x13bd, 0x13b8, 0x13b6, 0x13c7, 0x13bc,
+ 0x13b1, 0x13af, 0xf85b, 0x1535, 0x1530, 0x155d, 0x0b76, 0x156f, 0x15b0,
+ 0xf85e, 0x15b4, 0x165c, 0x165d, 0x1808, 0x17ee, 0x180b, 0x17f2, 0x17fd,
+ 0x17f1, 0x1810, 0xf868, 0x1814, 0x198b, 0x198c, 0x1985, 0x1a7a, 0x1a6c,
+ 0x1a60, 0x1a67, 0x1a66, 0x1a6a, 0x1a5f, 0x1a6d, 0x1a68, 0x1a64, 0x1b3a,
+ 0x1b3b, 0x1b39, 0x1c02, 0x1c04, 0x1c03, 0x1cb4, 0x1cb3, 0x1cbb, 0x1cac,
+ 0x1cb6, 0x1cb1, 0x1caf, 0x1cb5, 0x1cbe, 0x1cb2, 0x1d24, 0x1eb6, 0x1eb9,
+ 0x1eac, 0x1eb0, 0x1ed7, 0x1ebb, 0x1efe, 0x1ecb, 0xf87f, 0x37f5, 0x1eb3,
+ 0x1ebe, 0x1ecd, 0x1ebc, 0x1eba, 0x1ec7, 0x2116, 0x211b, 0x2117, 0x2115,
+ 0x219f, 0xf88e, 0x2282, 0x2283, 0x228e, 0x226a, 0x2289, 0x2294, 0x2286,
+ 0x2290, 0x2362, 0x2390, 0x240c, 0x240f, 0x38c3, 0x24a5, 0x24a7, 0x24a6,
+ 0x24a4, 0x2535, 0x2538, 0x2536, 0x2543, 0x2547, 0x2537, 0x2743, 0x27a2,
+ 0x2751, 0x2772, 0x276d, 0x272f, 0x2754, 0x276e, 0x2755, 0x2737, 0x274f,
+ 0x2750, 0x6139, 0x279e, 0xf8a8, 0x27b3, 0x27a7, 0x3971, 0x27f9, 0x2791,
+ 0xf8a7, 0x27b6, 0x27dd, 0x2799, 0x29df, 0x29d5, 0x47f5, 0x2c28, 0x2c40,
+ 0x2c71, 0x2c98, 0x2c95, 0x2c65, 0x2c78, 0x2c7f, 0x2c60, 0x2c7c, 0x2c96,
+ 0x2c6a, 0x2c79, 0x2c73, 0x2c72, 0x2c7b, 0x2c70, 0x2ed5, 0x2ed7, 0x2f8f,
+ 0x2f89, 0x2f9e, 0x2f87, 0x2fa0, 0x2f8d, 0x2f88, 0x2f7f, 0x2f8c, 0x2f93,
+ 0x3059, 0x95b0, 0x30b1, 0x51f4, 0x30af, 0x30b2, 0x3108, 0x310a, 0x3136,
+ 0x3137, 0xf8cf, 0x3b01, 0x3236, 0x3229, 0x324a, 0x3226, 0x3228, 0x3224,
+ 0x322a, 0x3248, 0x3344, 0x3384, 0x338c, 0x34c4, 0x34dc, 0x3587, 0x3553,
+ 0x357f, 0x3531, 0x3551, 0x354b, 0x3552, 0x3580, 0x35a5, 0x3581, 0x3543,
+ 0x3534, 0x3536, 0x3532, 0x3548, 0x3549, 0x353c, 0x354d, 0x354a, 0xf8e6,
+ 0x358a, 0x3546, 0x353e, 0x3583, 0x3550, 0x35b4, 0x38f0, 0x38e4, 0x38e3,
+ 0x38e5, 0x38e6, 0x38e7, 0x38e1, 0x38ef, 0x38e8, 0x38dd, 0x3903, 0x3988,
+ 0x3a26, 0x3a16, 0x3a3b, 0x3a2f, 0x3a39, 0x3a34, 0xf8f4, 0x3a35, 0x3a31,
+ 0x3a38, 0x0b81, 0x3aaa, 0x3aa3, 0x3aa4, 0x3aa0, 0x3aa1, 0x3aa9, 0x3aa5,
+ 0x3baf, 0x3bb1, 0x3bab, 0x3bae, 0x3bb0, 0x3bb3, 0x3bac, 0x3ba9, 0x3bb2,
+ 0x3ba8, 0x3bb4, 0x3bc2, 0x3c4f, 0x3c66, 0x3e1e, 0x3e15, 0x3e10, 0x3e7f,
+ 0x3e7e, 0x3e60, 0x3ecc, 0x3eb2, 0x3e62, 0x3e8d, 0x3e8e, 0x3e77, 0x3e7c,
+ 0x3e8f, 0x3e5d, 0x3e6d, 0x3e63, 0x3eaf, 0x3e90, 0x3e7d, 0x3e7a, 0x3e06,
+ 0xf90b, 0x3e68, 0x3eb4, 0x3e78, 0x3eb1, 0x6ed7, 0xf90c, 0x3d41, 0x42e8,
+ 0x42e9, 0x42c0, 0x3dd7, 0x42ea, 0x42b7, 0x42ba, 0x42b5, 0xf91d, 0x42b4,
+ 0x42bc, 0x42c6, 0x42b8, 0x42bd, 0x42c2, 0x434d, 0x42f0, 0x42c7, 0x42c1,
+ 0x42c3, 0x42f1, 0x42ec, 0x3de2, 0x451c, 0x4520, 0x4558, 0x4565, 0x4564,
+ 0x458c, 0x458d, 0x45d9, 0x45e0, 0x4610, 0x4694, 0x4692, 0x4696, 0x4695,
+ 0x46bf, 0x46a0, 0x3e45, 0x47f4, 0x47f6, 0x47dc, 0x733d, 0x4816, 0x4815,
+ 0x481c, 0x480f, 0x482c, 0x4814, 0x4825, 0x4817, 0x4812, 0x481e, 0x4980,
+ 0x49a8, 0x49af, 0x49d6, 0x49e2, 0x49b4, 0x49b3, 0x49b0, 0x49b2, 0x49a1,
+ 0x4b60, 0x4b66, 0x4b61, 0x4b4e, 0x4b5d, 0x4b63, 0x4be6, 0x4bef, 0x4bec,
+ 0x4c98, 0x4ca7, 0x4c94, 0x4c95, 0x4c91, 0x4c9d, 0x4c99, 0x4c9b, 0x4c9c,
+ 0x4d1d, 0x4d1c, 0x4dd0, 0x4de0, 0x4dcb, 0x4ddb, 0x4dda, 0x4dc2, 0x4dd3,
+ 0x4de5, 0x4f7d, 0x4f7b, 0x4fff, 0x3ff2, 0x4ff9, 0x5077, 0x507c, 0x5078,
+ 0x507b, 0x507a, 0x51d2, 0x51cb, 0x51c9, 0x51ce, 0x51e4, 0x51ca, 0x51d0,
+ 0x2fa5, 0x4049, 0x51d9, 0x51ee, 0x51dd, 0x5200, 0x51e1, 0x53de, 0x53e2,
+ 0x53da, 0x54ce, 0xf94f, 0x54cf, 0x54da, 0x54d1, 0x54d4, 0x54ed, 0x54cb,
+ 0x54d5, 0x54f1, 0x569c, 0x5688, 0x5741, 0x57d0, 0x57f7, 0x57cf, 0x57d1,
+ 0x57db, 0x57de, 0x57f8, 0x57dc, 0x57d9, 0x59a0, 0x59b2, 0x59a1, 0x59aa,
+ 0x59a9, 0x41a9, 0x59a6, 0x599c, 0x59b5, 0x59a7, 0x5a8e, 0x5a90, 0x5a91,
+ 0x5b85, 0x5b5b, 0x5b70, 0x5b64, 0x5b67, 0x5b63, 0x5b77, 0x5b68, 0x5b65,
+ 0x5b6a, 0x5b78, 0x5b66, 0x5e88, 0x5e9e, 0x5e74, 0x5e7a, 0x5e79, 0x5e8b,
+ 0x5e7f, 0x6013, 0x601e, 0x6017, 0x601a, 0x6022, 0x6043, 0x6019, 0x601f,
+ 0x6027, 0x6012, 0x6024, 0x6025, 0x035e, 0x6235, 0x6234, 0x62d1, 0x62c4,
+ 0x62ca, 0x62c6, 0x62cb, 0x62cd, 0x62e2, 0x6389, 0x638b, 0x6386, 0x6388,
+ 0x638d, 0x643b, 0x643c, 0x643d, 0x64f5, 0x6579, 0x6575, 0x6582, 0x657f,
+ 0x6585, 0x6576, 0x657c, 0x657e, 0x657b, 0x6580, 0x657a, 0x2548, 0x43cb,
+ 0x661d, 0x66f6, 0x66f7, 0x66f9, 0x6763, 0x676c, 0x676e, 0x6714, 0x440d,
+ 0x6767, 0x676f, 0x6769, 0x6776, 0x6795, 0x6771, 0x6761, 0x6778, 0x676b,
+ 0x6785, 0x6784, 0x6914, 0x6976, 0x59b6, 0x6975, 0x6974, 0x69e2, 0x6a3f,
+ 0x6a44, 0x6a3d, 0x6a47, 0x6a48, 0x6adb, 0x6adc, 0x6add, 0x6be5, 0x6be6,
+ 0x6cc2, 0x6d2e, 0x6d1d, 0x6cf8, 0x6cf0, 0x6cf6, 0x6cc5, 0x6cc6, 0x6cfc,
+ 0x6d52, 0x6d2f, 0x6d10, 0x6cf3, 0x6cd2, 0x6cea, 0x6cdc, 0x6d1b, 0x6cfb,
+ 0x6cc3, 0x6d16, 0x6d07, 0x6cc9, 0x6cd8, 0x6d30, 0x6d13, 0x6d31, 0x6cfa,
+ 0x6cf2, 0x6de3, 0x6cd5, 0x6d01, 0x6cf1, 0x6d1c, 0x6cd6, 0x6d08, 0x6d0b,
+ 0x6d17, 0x6d20, 0x6cca, 0x6d32, 0x6d05, 0x6ce4, 0x6cce, 0x6d33, 0x6d02,
+ 0x6d19, 0x6d1e, 0x6cd3, 0x6cf7, 0x6ce8, 0x6d1f, 0x6cf4, 0x6dd8, 0x71bf,
+ 0x71be, 0x71bd, 0x72dc, 0x72dd, 0x72ab, 0x72c9, 0x72c8, 0x72df, 0x72d9,
+ 0x72db, 0x72cc, 0x72e0, 0x72ef, 0x72f3, 0x72ae, 0x7301, 0x75b7, 0x75b9,
+ 0x75b6, 0x75b8, 0x75f6, 0x75f3, 0x75f5, 0x75f2, 0x7691, 0x769d, 0x769b,
+ 0x7692, 0x768d, 0x769e, 0x768c, 0x4631, 0xf9c7, 0x7695, 0xf9c6, 0x768a,
+ 0x768e, 0x769c, 0x77ef, 0x782d, 0x7852, 0x7835, 0x7828, 0x782e, 0x78e5,
+ 0x79ea, 0x79f1, 0x79eb, 0x79d8, 0x79d0, 0x79f3, 0x79db, 0x79ce, 0x46d5,
+ 0x79da, 0x79d7, 0x79e1, 0x79f2, 0x79c8, 0x79d9, 0x79de, 0x79d1, 0x79e7,
+ 0x79cf, 0x7bb7, 0x7c47, 0x7c42, 0x7c43, 0xf9d3, 0x7cc3, 0x7cc1, 0x7cc7,
+ 0x7d64, 0x7d6a, 0x7d66, 0x7d50, 0x7d6e, 0x7d65, 0x38ec, 0x7d7f, 0xf9d5,
+ 0x7d9a, 0x7d69, 0x7d72, 0x7d6f, 0x7d7d, 0x7d70, 0x7e60, 0x7ec2, 0x7ee7,
+ 0x7ed1, 0x7eeb, 0x7ed4, 0x7edc, 0x7edb, 0x8037, 0x8025, 0x801f, 0x801e,
+ 0x8021, 0x801b, 0x8017, 0x8022, 0x802a, 0x801a, 0x802d, 0x8023, 0x8026,
+ 0x8036, 0x7fff, 0x823a, 0x8240, 0x8242, 0x8238, 0x823b, 0x823c, 0x8243,
+ 0x82e8, 0x4856, 0x82f9, 0x82eb, 0x82f1, 0x82e9, 0x82ec, 0x8415, 0x8447,
+ 0x8446, 0x8445, 0x8524, 0x8556, 0x8521, 0x8527, 0x854d, 0x8531, 0x851e,
+ 0x852c, 0x854f, 0x852b, 0x8553, 0x8551, 0x8554, 0x8529, 0x8550, 0x851f,
+ 0x8532, 0x852a, 0x851d, 0x8528, 0x852e, 0x852d, 0x86bc, 0x86bb, 0x86bd,
+ 0xf9e4, 0x8747, 0x8741, 0xf9e5, 0x8749, 0x48f4, 0x882e, 0x8827, 0x896a,
+ 0x897b, 0x8973, 0x8975, 0x8969, 0x8979, 0x8972, 0x8c76, 0x8c77, 0x8c74,
+ 0x8c73, 0x8d02, 0x8cfe, 0x8d01, 0x8cf9, 0x8cf4, 0x8ed3, 0x8ed5, 0x8ed8,
+ 0x8ec3, 0x8eca, 0x8ed0, 0x8ecb, 0x8ece, 0x8ec5, 0x8ee6, 0x8ec4, 0x8ec0,
+ 0x8ed4, 0x8ee8, 0x8f76, 0x8fa2, 0x8fae, 0x8fa8, 0x8fa3, 0x8fa7, 0x8f96,
+ 0x8fa9, 0x8fa5, 0x8faf, 0x8fa4, 0x8fab, 0x8faa, 0x8fa6, 0x8fa0, 0x9098,
+ 0x91db, 0x91f6, 0x91f5, 0x920c, 0x920a, 0x9775, 0x9268, 0x9263, 0x9266,
+ 0x4a58, 0x9264, 0x926a, 0x9269, 0x9395, 0x9402, 0x946a, 0x945e, 0x9468,
+ 0x9469, 0x9465, 0xf9fe, 0x95a7, 0x95ae, 0x95a8, 0x95b3, 0x969c, 0x96a9,
+ 0x96b6, 0x96b3, 0x96b2, 0xfa03, 0x96b8, 0x96c0, 0x96bf, 0x96ba, 0x96a8,
+ 0x983c, 0x9872, 0x9871, 0x9875, 0x9873, 0x9a17, 0x9a15, 0x9a16, 0x9a1b,
+ 0x9afa, 0x9af9, 0x9c2c, 0x9c85, 0x9c82, 0x9c7f, 0x9c7d, 0x9c88, 0x42f3,
+ 0x9d4e, 0x9d50, 0x9f93, 0x9f97, 0x9f98, 0x9f9b, 0x9f9c, 0x9f96, 0xa28b,
+ 0xa2fd, 0xa2fc, 0xfa17, 0x398b, 0x0108, 0x0107, 0x0373, 0x03a2, 0x03af,
+ 0x0382, 0x037b, 0x0374, 0x03b0, 0x0376, 0x03b9, 0x039e, 0x03b1, 0x03a1,
+ 0x03b2, 0x036e, 0xf80b, 0x3487, 0x0378, 0x037a, 0x0383, 0x039a, 0x04f8,
+ 0x0531, 0x0569, 0x0568, 0x059c, 0x0604, 0x0699, 0x07c7, 0x07c6, 0x07dc,
+ 0x07c4, 0x07d8, 0x07d4, 0x07df, 0x07d1, 0x07d0, 0x07d6, 0x07cf, 0x08ad,
+ 0x08af, 0x08a7, 0x08fd, 0x095b, 0x095a, 0x0a07, 0x0a9d, 0x0a9b, 0x0aab,
+ 0x0aa4, 0x0a9c, 0x0a9e, 0x0aa5, 0x0aaa, 0x0aa6, 0x0b0e, 0x0b7e, 0x0b7c,
+ 0x0eee, 0x0ed5, 0x0ee9, 0x0e42, 0x0ee2, 0x0f23, 0x0ed9, 0x0ed4, 0x0ee3,
+ 0x0f15, 0x0eef, 0x0ef0, 0x0ed6, 0x0edd, 0x0ef6, 0x0f1c, 0x0ed8, 0x0edb,
+ 0x0eda, 0x0eed, 0x1411, 0x1215, 0x1218, 0x121a, 0x121f, 0x1216, 0xf84d,
+ 0x1219, 0xf84b, 0x13f0, 0x1409, 0x141b, 0x7be7, 0x13f6, 0x13f4, 0x13b5,
+ 0x1410, 0x13f2, 0x1415, 0x13f3, 0x13f8, 0x1539, 0x153b, 0x1536, 0x140e,
+ 0x1572, 0x1574, 0x15b9, 0x15b7, 0x15b8, 0x1672, 0x166b, 0x181d, 0x1837,
+ 0x1822, 0x1843, 0x184d, 0x1838, 0x185b, 0x1879, 0x181b, 0x17f3, 0x1991,
+ 0x1a7b, 0x1a94, 0xf86f, 0x1a96, 0x1a7f, 0x1a8f, 0x1a84, 0x1a7c, 0x1a8e,
+ 0x1a90, 0x1a98, 0x1a83, 0x1a80, 0x1a93, 0x1a82, ERROR, 0x1b3d, 0x1b41,
+ 0x1ba1, 0x1b9f, 0x1c0a, 0x1c0d, 0x1cc8, 0x1cc9, 0x1cc7, 0x1ccd, 0x1d25,
+ 0x1eb1, 0x1edc, 0xf880, 0x1ee5, 0x1ef4, 0x1ebf, 0x1edb, 0x1eea, 0x1ef2,
+ 0x37fa, 0x1ef1, 0x1eed, 0x1ee6, 0x2002, 0xf882, 0x2125, 0x2118, 0x211f,
+ 0x2120, 0x21cf, 0x229d, 0x2299, 0x22a8, 0x2368, 0x2366, 0x2367, 0x2391,
+ 0x2413, 0x2415, 0x241d, 0x2416, 0x2419, 0x246b, 0x2468, 0x246a, 0x246d,
+ 0x2469, 0x24aa, 0x2557, 0x2552, 0x2550, 0x255f, 0x2567, 0x254f, 0x38f2,
+ 0x255b, 0x255c, 0x255d, 0x281f, 0x279d, 0x27b1, 0x27b0, 0x2794, 0x27c3,
+ 0x27af, 0x27a8, 0x27dc, 0x2798, 0x27c4, 0x27a4, 0x27ab, 0x27aa, 0x27a5,
+ 0x2821, 0x27eb, 0x27e6, 0x27f7, 0x27f8, 0x27fc, 0x27fa, 0x27e0, 0xf8aa,
+ 0x27f6, 0xf8a9, 0x27e1, 0x29ec, 0x29e2, 0x29e4, 0x29f9, 0x2c6f, 0x3a4c,
+ 0x2cbb, 0x2ce1, 0x2d00, 0x2cd8, 0x3a2f, 0x2cd6, 0x2ce2, 0x2cc3, 0x2cb3,
+ 0x2cd2, 0xf8c1, 0x2cce, 0x2cd0, 0x2cd5, 0x2cb9, 0x2cba, 0x2ccf, 0x2cbd,
+ 0x2edb, 0x2faa, 0x2fad, 0x2fb8, 0x2fb6, 0x2fb5, 0x2faf, 0x2fb4, 0x2fb7,
+ 0x2fa8, 0x2fb9, 0x2fbe, 0x3082, 0x30bc, 0x30b8, 0x30b6, 0x30b9, 0x3ac1,
+ 0x3110, 0x3227, 0x3269, 0x3270, 0x3256, 0x326b, 0x327a, 0x326c, 0x326d,
+ 0xf8d5, 0x67c1, 0x338d, 0x3390, 0x35b6, 0x3610, 0x3612, 0x35ba, 0x35bd,
+ 0x3605, 0x35c2, 0x3607, 0x35f5, 0xf8e9, 0x35af, 0x35f4, 0x35f7, 0x35f8,
+ 0x3611, 0x38f6, 0x38f5, 0x38fb, 0x3901, 0x3900, 0x3902, 0x38fe, 0x38fa,
+ 0x38fd, 0x3c40, 0x3a37, 0x3a49, 0x3a4b, 0x3a46, 0x3a47, 0x3ab3, 0x3ab2,
+ 0x3ab0, 0x3ab7, 0x3b11, 0x3bcc, 0x3bdf, 0x3bd3, 0x3bd5, 0x3bdb, 0x3bc5,
+ 0x3bc8, 0x3bc9, 0x3be2, 0x3bca, 0x3bd1, 0x3bd2, 0x3bdd, 0x3e6c, 0x3e73,
+ 0x3f21, 0x3ef0, 0x3f1f, 0x3f3b, 0x3f22, 0x3f23, 0x3ee8, 0x3edd, 0x3d3f,
+ 0x3f1b, 0x3eed, 0xf90e, 0x3ef2, 0x3d46, 0x3edc, 0x3ee9, 0x3f1d, 0x3eda,
+ 0x3ee6, 0x4313, 0x4315, 0x4316, 0x433c, 0x430b, 0x431c, 0x433a, 0x433d,
+ 0x439a, 0x431d, 0x4309, 0x4308, 0x433b, 0x4522, 0x4526, 0x4525, 0x4524,
+ 0x039b, 0x458f, 0x4590, 0x45e6, 0x45e3, 0x45e5, 0x4611, 0xf925, 0x46ae,
+ 0x46be, 0x46b4, 0x46b3, 0x46af, 0x4691, 0x46c2, 0x46b6, 0x46b2, 0x4857,
+ 0x483b, 0x4858, 0x4851, 0x4841, 0x4839, 0x3e8f, 0x4859, 0x4845, 0x4861,
+ 0x48e8, 0x49fa, 0x49ea, 0x49ef, 0x49f2, 0x49f0, 0x4b08, 0x4b70, 0x4b6a,
+ 0x4b73, 0x4b68, 0x4bc8, 0x4bf2, 0x0b7b, 0x4cae, 0x4cab, 0x4cb5, 0x4caf,
+ 0x4cb2, 0x4cb6, 0x4cb0, 0x4d1e, 0x4e03, 0x4e06, 0x4e1f, 0x3fac, 0x4e0f,
+ 0x4e02, 0x4e19, 0x4e18, 0x4e22, 0x4e15, 0x4e07, 0x4e0d, 0x4e24, 0x4e0c,
+ 0x4e1e, 0x4f89, 0x4f8a, 0x500a, 0x500b, 0x5007, 0x5004, 0x5009, 0x5084,
+ 0x5083, 0x5218, 0x5214, 0x5205, 0x5216, 0x520e, 0x5211, 0x5208, 0x520b,
+ 0x5215, 0x5085, 0x5237, 0x522a, 0x520d, 0x520f, 0x537e, 0x5376, 0x5377,
+ 0x53ec, 0x54fc, 0x5508, 0x54ff, 0x5503, 0x5510, 0x5505, 0x5506, 0x54fa,
+ 0x56c7, 0x56c0, 0x56c3, 0x56a7, 0x56a8, 0x56ab, 0x56c1, 0x56aa, 0x56c8,
+ 0x5743, 0x5802, 0x580e, 0x5801, 0x57fe, 0x5803, 0x4168, 0x5822, 0x5821,
+ 0x5807, 0x5808, 0x580c, 0x59ca, 0x59bc, 0x59be, 0x59bd, 0xf95c, 0x59bb,
+ 0x59b9, 0x41ab, 0x59c5, 0x5a99, 0x5b6b, 0x5b93, 0x5b94, 0x5ba9, 0x5ba0,
+ 0x5ba6, 0xf961, 0x5bab, 0x5b9e, 0x5b9b, 0x5b91, 0x5b99, 0x5eb6, 0x5eb8,
+ 0x5e9a, 0x4291, 0x5e98, 0x5e9b, 0x5eb3, 0x5ea2, 0x22aa, 0x5ea0, 0x5e9f,
+ 0x605b, 0x6070, 0x6054, 0x6071, 0x6065, 0x6051, 0x609d, 0x6061, 0x605a,
+ 0x6074, 0x604c, 0x604b, 0x605e, 0x6058, 0x6053, 0x6052, 0x623b, 0x6239,
+ 0x62d6, 0x62e7, 0x62d7, 0x62d8, 0x62d9, 0x62da, 0x62db, 0x62dc, 0x62e0,
+ 0x62e4, 0x62dd, 0x62f5, 0x62f1, 0x6398, 0x639d, 0x6399, 0x6450, 0x6449,
+ 0x7fe4, 0x6462, 0x64d7, 0x6501, 0x64f7, 0xf97d, 0x658c, 0x659c, 0x8088,
+ 0x661f, 0x661e, 0x673d, 0x673f, 0x6711, 0x6759, 0x673e, 0x6758, 0x6800,
+ 0x679e, 0x67b6, 0x67aa, 0x67af, 0x67ac, 0x4430, 0x67c0, 0x67a9, 0x0b10,
+ 0x68ee, 0x6977, 0x6979, 0x697a, 0x697d, 0x697f, 0x6983, 0x6978, 0x697e,
+ 0x69e4, 0x69e6, 0x69e5, 0x445d, 0x6a4e, 0x6a59, 0x4475, 0xf98e, 0x6a4f,
+ 0x6a4a, 0x6ae3, 0x6ade, 0x6ae2, 0x6c74, 0x6cac, 0x6c61, 0x6c62, 0x6c76,
+ 0x6c7a, 0x6c79, 0x6c60, 0x6d64, 0x6e81, 0x6ddf, 0x6d84, 0x6d8a, 0x6d92,
+ 0x6d79, 0x6dde, 0x6d98, 0x6d6c, 0x6de1, 0xf9a5, 0x6d7c, 0x6d72, 0x6d81,
+ 0x6de0, 0x6d65, 0x44ff, 0x6d6a, 0x6d97, 0x6daa, 0x6dd3, 0x6dab, 0x6d6e,
+ 0x6dac, 0x6d76, 0x6d7b, 0x6dad, 0xf9a6, 0x6d94, 0x6dd7, 0x6d70, 0x6dd5,
+ 0x6df1, 0x6d7a, 0x6d68, 0x6d96, 0x450b, 0x6d73, 0x6dae, 0x6ddd, 0x6dda,
+ 0x6daf, 0x6db0, 0x6ddb, 0x6d62, 0x6df8, 0x71c2, 0x71c7, 0x71c8, 0x71c5,
+ 0x71c3, 0x71c6, 0x72de, 0x45c8, 0x7311, 0x7315, 0x7328, 0x7321, 0x732d,
+ 0x7351, 0x732b, 0x7316, 0x7324, 0x7335, 0x731f, 0x7312, 0x7310, 0x7380,
+ 0x733b, 0x7329, 0x732a, 0x731b, 0x7318, 0x7320, 0x733f, 0x731c, 0x7326,
+ 0x730b, 0x75be, 0x75c4, 0x75bd, 0x75fa, 0x75fb, 0x76b1, 0x76b2, 0x76b0,
+ 0x76b9, 0x76a6, 0x76bd, 0x76b6, 0x76b8, 0x76b4, 0x76b3, 0x76a7, 0x76ae,
+ 0x76bc, 0x77f2, 0x77f3, 0x77f4, 0x783b, 0x7840, 0x7846, 0x78f0, 0x78ee,
+ 0x78e8, 0x78f1, 0x78eb, 0x78ef, 0x79fc, 0x7a20, 0x7a09, 0x7a06, 0x7a03,
+ 0xf9cf, 0x7a19, 0x7a24, 0x7a1b, 0x7a1d, 0x79fd, 0x7a1e, 0x79f4, 0x7a01,
+ 0x7a08, 0x7a05, 0x7a23, 0x79ff, 0x7bea, 0x7c4d, 0x7c4e, 0x7c56, 0x7c57,
+ 0x7c51, 0x7c55, 0x7c54, 0x7ccb, 0x7cd4, 0x7cd1, 0x7ccf, 0x7cd2, 0x7cca,
+ 0x7cd6, 0x7d8b, 0x7d88, 0x7d85, 0x7d89, 0x1a9b, 0x7dbb, 0x7d8c, 0x4774,
+ 0x7d99, 0x7d8a, 0x7eec, 0x7eef, 0x7ef9, 0x7f09, 0x7ef8, 0x7ef3, 0x7f00,
+ 0x7f1d, 0x47ac, 0x7efd, 0x8048, 0x805c, 0x8055, 0x805e, 0x8049, 0x8063,
+ 0x8060, 0x8053, 0x8062, 0x8040, 0x8249, 0x824a, 0x824c, 0x824d, 0x830a,
+ 0x8306, 0x832f, 0x8321, 0x8307, 0x8309, 0x8302, 0x8316, 0x8303, 0x830b,
+ 0x830f, 0x8560, 0x8568, 0x855e, 0x855d, 0x8563, 0x855f, 0x8564, 0x8578,
+ 0x8561, 0x8569, 0x8565, 0x86da, 0x86e6, 0x86db, 0x86dc, 0x8739, 0x8757,
+ 0x8755, 0x8765, 0x8761, 0x8754, 0x8845, 0x8841, 0x883e, 0x8837, 0x8912,
+ 0x8913, 0x892c, 0x8996, 0xf9e9, 0x899c, 0x899d, 0x8985, 0xf9e8, 0x899f,
+ 0x89a3, 0x8c82, 0x8c83, 0xf9ee, 0x8d1d, 0x8d14, 0x8d1f, 0x8d20, 0x8e47,
+ 0x8e80, 0x8ec9, 0x8ef9, 0x8f06, 0x8ef0, 0x8ef8, 0x8eef, 0x8efd, 0x8ef1,
+ 0x8efe, 0x8fb8, 0x8fc0, 0x8fc3, 0x8fb5, 0x8fb6, 0x8fc9, 0xf9f3, 0x8fbd,
+ 0x8fba, 0x8fbf, 0x8fb3, 0x8fc6, 0x8fb2, 0x8fbc, 0x8fb7, 0x8fb9, 0x8fc8,
+ 0x90b5, 0x90b3, 0x4a16, 0x90ac, 0x90a9, 0x90ad, 0x9211, 0x920d, 0x9216,
+ 0x9289, 0x927c, 0x928b, 0x927b, 0x9288, 0x9284, 0x939d, 0x9398, 0x9488,
+ 0x9486, 0x9482, 0x948b, 0xf9ff, 0x9471, 0x9472, 0x9481, 0x948c, 0x9480,
+ 0x9489, 0x95bb, 0x95c1, 0x95be, 0xfa01, 0x95bd, 0x96c1, 0x96b4, 0x96b7,
+ 0x96c8, 0x4b3b, 0x96d3, 0x96d0, 0x96b0, 0x96ca, 0x96cd, 0x9815, 0x9819,
+ 0x9817, 0x983f, 0x9840, 0x9844, 0x987c, 0x9878, 0x9879, 0x9888, 0xfa06,
+ 0x9889, 0x987d, 0x9a23, 0x9a24, 0x9a26, 0x9a22, 0x9a27, 0x9a1f, 0x9ac9,
+ 0x9ac3, 0x9b0a, 0x9b0b, 0x9b04, 0x4bef, 0x9b03, 0x9b01, 0x9b09, 0x9c0f,
+ 0x9c2e, 0x9c2d, 0x9c91, 0x9c99, 0x9c9e, 0x9c90, 0x9c94, 0x9c9d, 0x9c98,
+ 0x9c9b, 0x9c9c, 0x9c9a, 0x9d54, 0x9f9d, 0x9f9f, 0x9fa3, 0x9fa4, 0x9fa5,
+ 0xa302, 0xa417, 0xa41b, 0xa419, 0xa4d1, 0x1537, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x0055, 0x0182, 0x0189,
+ 0x0187, 0x03be, 0x03bd, 0x03ca, 0x03d4, 0x03bc, 0x03c4, 0x03c1, 0x03c2,
+ 0x03d7, 0x0370, 0x03ba, 0x03e3, 0x03bb, 0x04b1, 0x04b6, 0x04b0, 0x056c,
+ 0x060d, 0x0607, 0x07f1, 0x07f5, 0x07ed, 0x07ef, 0x07eb, 0x07ec, 0x07ee,
+ 0x0807, 0x09c4, 0x0a08, 0x0ab3, 0x0aad, 0x0ab0, 0x0b11, 0x018a, 0x0f83,
+ 0x0f7a, 0x0f82, 0x0f68, 0x0f71, 0x0fb0, 0x0faf, 0x35f6, 0x0f6c, 0x0f6f,
+ 0x0f62, 0x0f65, 0x0f81, 0x0f7f, 0x0f64, 0x0f73, 0x0f6e, 0x0f67, 0x0f74,
+ 0x0f7d, 0x0f78, 0x0f85, 0x0faa, 0x0f88, 0x0fa6, 0xf84e, 0x0f8a, 0x0f84,
+ 0x5655, 0x1224, 0x1222, 0x1223, 0x1432, 0x145b, 0x144f, 0x3667, 0x1426,
+ 0x143e, 0x1442, 0x1447, 0x1422, 0x069b, 0x144a, 0x141f, 0x1449, 0x142b,
+ 0x1433, 0xf858, 0x142a, 0x1428, 0x153d, 0x153c, 0x15bf, 0x1679, 0x1680,
+ 0x167c, 0x167a, 0x1678, 0x1882, 0x185c, 0x185a, 0x184b, 0x187c, 0x187f,
+ 0x181f, 0x1889, 0x188b, 0x1857, 0x187e, 0x187d, 0x1853, 0x1a9f, 0x1abc,
+ 0x1aa5, 0x1a86, 0x1adc, 0x1aa4, 0x1ab6, 0x1aa2, 0x1ab4, 0x1b48, 0x1b46,
+ 0x1ba7, 0x1c14, 0x1c12, 0x1c11, 0x1ce1, 0x1cd0, 0x1d26, 0x1d28, 0x1d29,
+ 0x1f2f, 0x1f0d, 0x1f25, 0x1f14, 0x1f3c, 0x1f0b, 0x1f11, 0x1f30, 0x1f18,
+ 0x1f19, 0x1f36, 0x1f17, 0x1f10, 0x1f15, 0x2003, 0x2029, 0x204c, 0x213f,
+ 0x213e, 0x2134, 0x2142, 0x2135, 0x07f3, 0x21cd, 0x21d1, 0x21d2, 0x22ad,
+ 0x22ba, 0x22c1, 0x22bb, 0x22b4, 0x22bc, 0x236c, 0x2392, 0x2421, 0x2424,
+ 0x3f19, 0x24ad, 0x24ae, 0x24ab, 0x24ac, 0x2570, 0x2576, 0x2571, 0x2577,
+ 0x617f, 0x27ec, 0x281c, 0x27fb, 0x27ee, 0x28e2, 0x27fd, 0x281e, 0x283b,
+ 0x284a, 0xf8ae, 0x3992, 0x287d, 0x2856, 0x2844, 0x284b, 0x29fa, 0x29e8,
+ 0x29f8, 0x29ff, 0x29f7, 0x29f6, 0x29fe, 0x2a07, 0x2a5d, 0x2cd4, 0xf8c3,
+ 0x2cc8, 0x2cc5, 0xf8c0, 0x2cc9, 0x2d4d, 0x2d20, 0x2d36, 0x2d35, 0x2d88,
+ 0x2d25, 0x2d21, 0x2d26, 0x3a45, 0x2d3f, 0x2d3b, 0x2d24, 0x2d43, 0x2d4e,
+ 0x2d4f, 0x2d44, 0x2d40, 0x2d41, 0x2d39, 0x2d2b, 0x2edd, 0x2ede, 0x2fcd,
+ 0x2fcb, 0x2fdb, 0x2fd8, 0x2fd9, 0x2fd2, 0x2fca, 0x2fd1, 0x2fd4, 0x2ff9,
+ 0x2fd0, 0x305e, 0x305d, 0x308a, 0x3114, 0x3283, 0x3284, 0x329b, 0x3282,
+ 0x327d, 0x327c, 0x3299, 0x327e, 0x329a, 0x3295, 0x327b, 0x3286, 0x3348,
+ 0x3392, 0x35b2, 0x3642, 0x3672, 0x3615, 0x3630, 0x3643, 0x365b, 0x361d,
+ 0x3673, 0x362d, 0x3bc9, 0x3621, 0x361c, 0xf8ea, 0x3629, 0x361e, 0x3633,
+ 0x3910, 0x390e, 0xf8f1, 0x390d, 0x3911, 0x3912, 0x3917, 0x3909, 0x390f,
+ 0x3998, 0x3994, 0x3996, 0x3999, 0x3995, 0x3997, 0x3a50, 0x3a52, 0x3a4d,
+ 0x3a57, 0x3a53, 0x3a56, 0x3ab8, 0x3b12, 0x3bf1, 0x3bf0, 0x3bee, 0x3bef,
+ 0x3be5, 0x3beb, 0x3be7, 0x3bf2, 0x3be6, 0x3bf7, 0x3c09, 0x3c6b, 0x3c6a,
+ 0x3e79, 0x3ecd, 0x3eef, 0x3ee4, 0x3ee3, 0x3f6c, 0x3f67, 0x3f62, 0x3f58,
+ 0x3f69, 0x3fab, 0x3f57, 0x3fad, 0x3f54, 0x3fae, 0x3f76, 0x3f49, 0x3f45,
+ 0x3f4f, 0xf90f, 0x3f50, 0x3f7d, 0x3f44, 0x3f66, 0x3f48, 0x3fa3, 0x3f51,
+ 0x3f53, 0xf910, 0x3f60, 0x3f47, 0x3f5e, 0x3f85, 0x3fac, 0x3f6d, 0x3f75,
+ 0x3fa8, 0x3d55, 0x3f43, 0x3f4e, 0x3f5c, 0x3f56, 0x3f6e, 0x3f63, 0x3f6a,
+ 0x4356, 0x4312, 0x435c, 0x4358, 0x4355, 0x437e, 0x43a8, 0x4311, 0x4359,
+ 0x435a, 0x4367, 0x4354, 0x435b, 0x43f0, 0x4529, 0x452c, 0x452a, 0x4527,
+ 0x4567, 0x4568, 0x4593, 0x4595, 0x459a, 0x45ee, 0x45f1, 0x45ed, 0x45e9,
+ 0x46cb, 0x46df, 0x46db, 0x483c, 0x484e, 0x486c, 0x487b, 0x487c, 0x4883,
+ 0x486b, 0x4866, 0x4863, 0x48a0, 0x4885, 0x4868, 0x48a2, 0x49ec, 0x3ee8,
+ 0x49e7, 0x4a10, 0x4a18, 0x4a3a, 0x4a1a, 0x4a38, 0x4a41, 0x4a1b, 0x4a14,
+ 0x4a1c, 0x4a1d, 0x4b12, 0x4b0d, 0x4b07, 0x4b7e, 0x4b7f, 0x0ab9, 0x4b80,
+ 0x4b7a, 0x4bf3, 0x4cb9, 0x4cbb, 0x4cba, 0x4cbd, 0x4cb7, 0x4cbf, 0x4d21,
+ 0x4e3a, 0x4e3d, 0x4e36, 0x4e49, 0x4e81, 0x3fb6, 0x4e3f, 0x4e4d, 0x4e3e,
+ 0x3fbd, 0x4e30, 0x4e4f, 0x4f37, 0x4f98, 0x4f99, 0x5011, 0x500d, 0x5088,
+ 0x508a, 0x521c, 0x5255, 0x5256, 0x5262, 0x5257, 0x5242, 0x5210, 0x524d,
+ 0x525a, 0x5266, 0x5246, 0x287e, 0x524f, 0x62f9, 0x5387, 0x5384, 0x53f4,
+ 0x53f5, 0x53f2, 0x53f7, 0x5545, 0xf950, 0x5549, 0x5535, 0x54fd, 0x5530,
+ 0x5543, 0x5546, 0x40d6, 0x5533, 0x56c6, 0xf956, 0x56d4, 0x71d8, 0x56e0,
+ 0x0fa7, 0x5744, 0x0398, 0x5854, 0x583e, 0x5835, 0x583a, 0x4171, 0x5834,
+ 0x5839, 0x5846, 0x585a, 0x585b, 0x583c, 0x59dc, 0x59d6, 0x59d0, 0xf95e,
+ 0x5aac, 0xf95d, 0x5aa5, 0x5bf4, 0x5c24, 0x5be0, 0x5bfd, 0x5bf2, 0x5bfc,
+ 0x5c02, 0x5bf1, 0x5bff, 0x5bd2, 0x5bd8, 0x5bd3, 0x5bf9, 0xf963, 0x5bed,
+ 0x5bf7, 0x5bf0, 0x5bd7, 0x5c09, 0x5bf5, 0x5ec2, 0x5ec5, 0x5ecf, 0x4298,
+ 0x5ec1, 0x5ec6, 0x5ed4, 0x5ece, 0x609b, 0x6099, 0x608f, 0x60b7, 0x6082,
+ 0x6093, 0x60b4, 0x60c1, 0x6090, 0x609a, 0x6094, 0x609c, 0x60b5, 0xf96f,
+ 0xf96e, 0x609f, 0x608e, 0x609e, 0x623c, 0x6247, 0x6241, 0x62eb, 0x62ec,
+ 0x62ed, 0x62ee, 0x62df, 0x62f2, 0x630d, 0x630e, 0x0186, 0x63a9, 0x63a4,
+ 0x63a5, 0x645f, 0x645a, 0x6466, 0x6468, 0x646a, 0x6464, 0x6465, 0x64c1,
+ 0x64d8, 0xf97b, 0x64d9, 0x6509, 0x65aa, 0x65a3, 0x65b9, 0x59e2, 0x65a5,
+ 0x65ab, 0x6620, 0x6789, 0x678b, 0x67db, 0x67e4, 0x67ef, 0x67e2, 0x67e9,
+ 0x67f0, 0x67f3, 0x67dd, 0x681e, 0x691d, 0x6946, 0x697c, 0x6980, 0x6981,
+ 0x6982, 0x6987, 0x6988, 0x698a, 0x698c, 0x69e7, 0x69eb, 0x69ea, 0x6a68,
+ 0x6a6b, 0x6a69, 0x6a66, 0x6a6a, 0x6a65, 0x6ae5, 0x6ae4, 0x6ae6, 0x6d18,
+ 0x6e24, 0x6e48, 0x6e2f, 0x6e7e, 0x6d89, 0x6e1e, 0x6e49, 0x6e26, 0x6e09,
+ 0x6e34, 0x6e2d, 0x6e4a, 0x6e15, 0xf9a9, 0x6e33, 0x6e28, 0x6e27, 0x6e20,
+ 0x6e2b, 0x6e29, 0x6e6a, 0x6e0b, 0x6e0e, 0x6e1c, 0x6dff, 0xf9aa, 0x6e35,
+ 0x6e11, 0x6e4b, 0x6e4c, 0x6e1f, 0x6e0f, 0x6e39, 0x6e68, 0x6e1d, 0x6e08,
+ 0x6e0c, 0x6e0d, 0x6e62, 0x6eaf, 0x6e32, 0x6e2c, 0x6e64, 0x6e04, 0x6e16,
+ 0x6e4d, 0x6e07, 0x6eae, 0x71d4, 0x71d1, 0x71d5, 0x71d0, 0x7371, 0x735d,
+ 0x735b, 0x737a, 0xf9bd, 0x737f, 0x7379, 0x7367, 0x739e, 0x7394, 0x7364,
+ 0x735e, 0x7381, 0x735a, 0x7357, 0x737c, 0x7398, 0x7366, 0x737e, 0x7382,
+ 0x7368, 0x735f, 0x7363, 0x7397, 0x45cd, 0x7353, 0x737b, 0x737d, 0x7378,
+ 0x7406, 0x75c0, 0x75c2, 0x75c3, 0x76dc, 0x76e6, 0x76ec, 0x76f2, 0x76e8,
+ 0x76eb, 0x76ea, 0x76e5, 0x76e0, 0x76d0, 0x76d8, 0x76d5, 0x76d3, 0x76e4,
+ 0x76f3, 0x76db, 0x772f, 0x77f9, 0x785d, 0x785b, 0x784c, 0x7858, 0x7860,
+ 0x7853, 0x7850, 0x7907, 0x7908, 0x78f4, 0x78f6, 0x7904, 0x78fd, 0x7905,
+ 0x7a28, 0x7a56, 0x7a42, 0x7a5c, 0x7a3d, 0x7a2f, 0x7a2b, 0x7a58, 0x7a61,
+ 0x7a2c, 0x7a51, 0x7a50, 0x7a3c, 0x7a36, 0x46f6, 0x7a60, 0x7a5b, 0x7a2e,
+ 0x7a40, 0x7a5f, 0x7a26, 0x7a2d, 0x7a5e, 0x7a3b, 0x7bef, 0x7bf3, 0x7bee,
+ 0x7bed, 0x7c5a, 0x7c62, 0x7c5b, 0x7c5f, 0x7c5e, 0x7c64, 0x7ce0, 0x7ce1,
+ 0x7ce5, 0x7da5, 0x7d9b, 0x7d9f, 0x7d9c, 0x477a, 0x7daa, 0x7da4, 0x7da3,
+ 0x7e67, 0x7f26, 0x7f1a, 0x47b8, 0x7f1c, 0x7f15, 0x7f1b, 0x7f18, 0x7f1e,
+ 0x7f25, 0xf9dc, 0x807b, 0x8075, 0x8093, 0x808f, 0x807c, 0x809b, 0x8088,
+ 0x8091, 0x807e, 0x4801, 0x8086, 0x825b, 0x8254, 0x8335, 0x8340, 0x8337,
+ 0x8329, 0x8326, 0x8323, 0x8330, 0x8320, 0x8328, 0x8332, 0x832a, 0x8331,
+ 0x8324, 0x8341, 0x8342, 0x8343, 0x8325, 0x8338, 0x841c, 0x841d, 0x841e,
+ 0x84f6, 0x85a5, 0x8589, 0x859d, 0x858a, 0x8587, 0x85ab, 0x8586, 0x859e,
+ 0x8593, 0x85a1, 0x8588, 0x85a3, 0x859f, 0x85a0, 0x86ff, 0x8700, 0x8702,
+ 0x86f8, 0x86f7, 0x8701, 0x8787, 0x8789, 0x8776, 0x876e, 0x8777, 0x8782,
+ 0x8785, 0x8783, 0x8784, 0x8857, 0x884b, 0x8856, 0x885d, 0x8860, 0x884d,
+ 0x8855, 0x8854, 0x8853, 0x8850, 0x8863, 0x8862, 0x8917, 0x8916, 0x892d,
+ 0x89d9, 0x89bf, 0x492f, 0x89b2, 0x89ac, 0x89b0, 0x89cf, 0x89b8, 0x4931,
+ 0x89d3, 0x89b1, 0x89af, 0x89ce, 0x89b4, 0x89b7, 0x89d5, 0x499c, 0x8d38,
+ 0x8d28, 0x8d3f, 0x8d40, 0x8d41, 0x8d33, 0x8d2b, 0x8d2e, 0x8f11, 0x8f18,
+ 0x8f17, 0x8f19, 0x8f16, 0x49e6, 0x8f0d, 0x8f26, 0x8f79, 0x8fd8, 0x8ff3,
+ 0x8fd7, 0x8fcc, 0x8fcf, 0x8fcb, 0x8fd1, 0x8fce, 0x8fd4, 0x8fd5, 0x8fd3,
+ 0x8fd6, 0x8fcd, 0x8fda, 0x8fd2, 0x8fde, 0x90cc, 0x90b8, 0x90b7, 0x90c2,
+ 0x90c3, 0x91fa, 0x91f9, 0x921f, 0x921d, 0x4382, 0x92a6, 0x9290, 0x929e,
+ 0x9298, 0x9293, 0x9292, 0x92a5, 0x9295, 0x93a9, 0x93a8, 0x93aa, 0x93ab,
+ 0x93ac, 0x941f, 0x9422, 0x94aa, 0x9496, 0x9491, 0x94ab, 0x94a2, 0x94a4,
+ 0x949d, 0x9497, 0x947d, 0x949f, 0x949c, 0x9499, 0x94a6, 0x9492, 0x94a7,
+ 0x95c9, 0x95c8, 0x95c7, 0x95cb, 0x9674, 0x96c9, 0x4b38, 0x96d2, 0x96db,
+ 0x96eb, 0x96e9, 0x96ef, 0x96ee, 0x96f9, 0x96de, 0x9816, 0x9845, 0x987f,
+ 0x9898, 0x989f, 0x9886, 0x9890, 0x989a, 0x989d, 0x988d, 0x989c, 0x98a0,
+ 0x98a7, 0x988f, 0x9a41, 0x9a35, 0x9a37, 0x9a30, 0x9a3a, 0x9a36, 0xfa08,
+ 0x9aca, 0x9b12, 0x9b15, 0x9b22, 0x9b13, 0x9b18, 0x9b21, 0x9c10, 0x9c20,
+ 0x9c2f, 0x9ca5, 0x9ca3, 0x9cb6, 0x9cab, 0x9d68, 0x9d67, 0x9d6f, 0x9d77,
+ 0x9d64, 0x9d78, 0x4c3a, 0x9d76, 0x9d6e, 0x4cb1, 0x9fd0, 0x9fb3, 0x9fcb,
+ 0x9fd6, 0x9fb1, 0x9fb4, 0x9fd7, 0x9fc6, 0x9fba, 0x9fd1, 0x9fd2, 0x9fb5,
+ 0x9fc4, 0x9fcc, 0x9fbb, 0x9fb2, 0xa25b, 0xa25a, 0xa259, 0xa299, 0xa294,
+ 0xa296, 0xa293, 0xa291, 0xa28f, 0xa298, 0xa30c, 0xa30a, 0xa30e, 0xa312,
+ 0xa311, 0xa30b, 0xa39a, 0x4d47, 0xa3b4, 0x4d51, 0xa41c, 0xa420, 0xa421,
+ 0xa4d3, 0xa4d2, 0xa538, ERROR, 0x4ccf, 0x011d, 0x0192, 0x018f, 0x018c,
+ 0x03ea, 0x04b9, 0x056e, 0x05a0, 0x91dd, 0x0612, 0x0617, 0x066d, 0x0805,
+ 0x07fb, 0x07fd, 0x0806, 0x0800, 0x07ff, 0x07fe, 0x08b6, 0x0905, 0x0907,
+ 0x0abc, 0x0abb, 0x0b8b, 0x0b87, 0x7bfb, 0x0fe7, 0x0fe6, 0x0fe2, 0x85d3,
+ 0x0fd9, 0x0fca, 0x1012, 0x1010, 0x0fdc, 0x0fd0, 0x0f8b, 0x1013, 0x2a10,
+ 0x0fda, 0xf84f, 0x0ffd, 0x0fe5, 0x0fcc, 0x1039, 0x0fc7, 0x0fd8, 0x1460,
+ 0x1464, 0x1486, 0x145e, 0x1466, 0x145f, 0x1477, 0x1482, 0x1496, 0x153e,
+ 0x1579, 0x157a, 0x1688, 0x1689, 0x168c, 0x43e0, 0x167b, 0x1686, 0x1894,
+ 0x1897, 0x18b7, 0x18b5, 0x18b8, 0x1893, 0x18b2, 0x18b4, 0x1899, 0x18c3,
+ 0x189d, 0x189b, 0x18a3, 0x3747, 0x199f, 0x199e, 0x19a3, 0x19a0, 0x19a1,
+ 0x1ac5, 0x1ac6, 0x1abe, 0x1ac4, 0x1abf, 0x1b4c, 0x1b4a, 0x1bb1, 0x1c15,
+ 0x1c17, 0x1c10, 0x1c18, 0x1ce0, 0x1cdf, 0x1d27, 0x1f43, 0x1f48, 0x1f1d,
+ 0x1f50, 0x1f58, 0x1f47, 0x1f54, 0x1f53, 0x1f40, 0x1f55, 0x3817, 0x1f5a,
+ 0x2470, 0x215b, 0x214d, 0x2156, 0x214f, 0xf887, 0x2159, 0xf888, 0x2154,
+ 0x2153, 0x2150, 0x22b3, 0x236e, 0x38a3, 0x236f, 0x2393, 0x2429, 0x2425,
+ 0x2428, 0x246f, 0x32b8, 0xf897, 0x24b3, 0x2579, 0x257e, 0x257c, 0x2583,
+ 0xf8ac, 0x2800, 0x2834, 0x2865, 0x2836, 0x28a7, 0x2859, 0x2858, 0x2831,
+ 0x2862, 0x2838, 0x2873, 0x283e, 0x2855, 0x2854, 0x2895, 0xf8ad, 0x28a5,
+ 0x2894, 0x289a, 0x289b, 0x2899, 0x289f, 0x2853, 0x2a12, 0x2a0a, 0x2a09,
+ 0x2a0c, 0x2a0b, 0x2a0e, 0x2a0d, 0x2a08, 0x2d38, 0x2d3a, 0x2d37, 0x2d3d,
+ 0x2d2d, 0x2d82, 0x2d95, 0x2d87, 0x2d9d, 0x2db5, 0x2d81, 0x2dc7, 0x2d9b,
+ 0x2d98, 0x2d94, 0x2d86, 0x2d90, 0x2d34, 0x2d8e, 0x2d85, 0x2da6, 0x2d96,
+ 0x2fea, 0x2fdf, 0x32bd, 0x2ff7, 0x2feb, 0x2fe0, 0x2fe8, 0x2fe1, 0x2fe9,
+ 0x2fee, 0x2fe5, 0x2fec, 0x3063, 0x30c6, 0x30c2, 0x30c1, 0x30c0, 0x30c3,
+ 0x3118, 0x32ae, 0x32a3, 0x32c5, 0x32a0, 0x32b4, 0x32a5, 0x3b1e, 0x32a4,
+ 0x32a8, 0x32a6, 0x36a8, 0x368d, 0x3682, 0x369e, 0x3689, 0x3683, 0x3691,
+ 0x36a6, 0x369a, 0x3690, 0x3685, 0x367d, 0xf8ec, 0x369b, 0x36a5, 0x36f0,
+ 0x3696, 0x3688, 0x36d6, 0x36d8, 0x3686, 0x36a4, 0x3697, 0x391c, 0x3919,
+ 0x399e, 0x399f, 0x399d, 0x399c, 0x3a5d, 0x3a5e, 0x3a73, 0x3a63, 0x3abe,
+ 0x3ac1, 0x3abc, 0x3abf, 0x3abb, 0x3abd, 0x3b13, 0x3b14, 0x3bf8, 0x3bfa,
+ 0x3c06, 0x3bfe, 0x3c51, 0x400b, 0x3ff1, 0x3fa9, 0x3fd5, 0x3fdc, 0x3fcb,
+ 0x3ff2, 0x405f, 0x3fdb, 0x3fd6, 0x3fd9, 0x3fd1, 0x3fcf, 0x3fd8, 0x3fe0,
+ 0x3fd4, 0x3ff3, 0x4005, 0x3fce, 0x3ff4, 0xf912, 0x3fda, 0x400e, 0x4006,
+ 0x3fd7, 0x3fcd, 0x4007, 0x3fe1, 0x4008, 0x43be, 0x43ef, 0x43d9, 0x43da,
+ 0x71d7, 0x43a0, 0x43df, 0x439e, 0x43bf, 0x43af, 0x43a7, 0x43aa, 0x43f4,
+ 0x43ae, 0x43b5, 0x43b8, 0x43db, 0x43c0, 0x43b7, 0x43a2, 0x43dd, 0x43a1,
+ 0x43a5, 0x43b4, 0x43a6, 0x43ab, 0x43ac, 0x439f, 0x43b1, 0x43fc, 0x452e,
+ 0x4530, 0x4599, 0x45f8, 0x45f6, 0x46f4, 0x46eb, 0x46e1, 0x46e4, 0x4875,
+ 0x4869, 0x3e9a, 0x4899, 0x489e, 0x4894, 0x4893, 0x4891, 0x4a19, 0x4a17,
+ 0x4a49, 0x4a47, 0x4a48, 0x4a52, 0x4a40, 0x4a63, 0x4a46, 0x4a5f, 0x4b0e,
+ 0x4b85, 0x4b87, 0x4bcb, 0x4bcc, 0x4bc9, 0x4ccb, 0x1ce7, 0x4d20, 0x4e5f,
+ 0x4e60, 0x4e6a, 0x4e76, 0x4e73, 0x4e71, 0x4e66, 0x3fc2, 0x4e6b, 0x4e79,
+ 0x4e7b, 0x4f3c, 0x4f9e, 0x4f9c, 0x501c, 0x501e, 0x5021, 0x5096, 0x50a1,
+ 0x50b6, 0x50a0, 0x5094, 0x5097, 0x5281, 0x5286, 0x52c0, 0x528a, 0xf94b,
+ 0x5285, 0x5295, 0x5249, 0x5282, 0x5284, 0x2878, 0x5290, 0x52b1, 0x53fe,
+ 0x53fb, 0x5550, 0x5556, 0x555a, 0x554c, 0x40dc, 0x5557, 0x56e1, 0x56d9,
+ 0x56db, 0x56f4, 0x5745, 0x5747, 0x5874, 0x586b, 0x5868, 0x5869, 0x5879,
+ 0xf95b, 0x5880, 0x5881, 0x5861, 0x5870, 0x586f, 0x5873, 0x585d, 0x59fa,
+ 0x41b3, 0x59f3, 0x5a0a, 0x5a17, 0xf95f, 0x5ab0, 0x5c3e, 0x5c46, 0x5c4f,
+ 0x5c44, 0x5c69, 0x5c33, 0x5c2f, 0x5c4e, 0x5c3a, 0x5c2b, 0x5ca9, 0x5c50,
+ 0x5c45, 0x5c37, 0x5c25, 0x5c2c, 0x5c3f, 0x5c34, 0x5c29, 0x5c1e, 0x5c3d,
+ 0x5eed, 0xf966, 0x5ef3, 0x5eea, 0x5eeb, 0x60cc, 0x60ce, 0x60d0, 0x60e3,
+ 0x60e0, 0x60d1, 0x60dc, 0x60dd, 0x60f0, 0x60db, 0x60e5, 0x60f1, 0x60c9,
+ 0x60e8, 0x60e7, 0x60c8, 0x60de, 0x60cd, 0x60c5, 0x60c6, 0x60e4, 0x60c3,
+ 0x62fb, 0x62fc, 0x62fe, 0x6303, 0x6300, 0x62fd, 0x6305, 0x6313, 0x63a7,
+ 0x63b4, 0x6470, 0x6474, 0x6471, 0x6475, 0x647d, 0x6473, 0x64c4, 0x64c3,
+ 0x64de, 0x64dd, 0x6511, 0x650f, 0x6510, 0x65c3, 0x65c2, 0x65ca, 0x65c1,
+ 0x6623, 0x67b1, 0x6824, 0x6811, 0x6825, 0x680a, 0x681f, 0x6820, 0x6814,
+ 0x6828, 0x6803, 0x6812, 0x680b, 0x6817, 0x2a11, 0x6949, 0x6989, 0x6990,
+ 0x698f, 0x6996, 0x6995, 0x6993, 0x69ed, 0x69f0, 0x43de, 0x6a85, 0x6a77,
+ 0x6a7a, 0x6a84, 0x6a79, 0x6a7d, 0x6a7b, 0x6aed, 0x6aec, 0x6df6, 0x6d9b,
+ 0x6e9d, 0x6f11, 0x6ec4, 0x6ec8, 0x6edf, 0x6ebf, 0x6eb3, 0x6eba, 0x6f10,
+ 0x6f06, 0x6e88, 0x6e9a, 0x6ee0, 0x6ecc, 0x6eb5, 0x6ee1, 0x6ebc, 0x6ec6,
+ 0x6f0b, 0x6ea4, 0x6e95, 0x6ea3, 0x6ee2, 0x6ecd, 0x6ee3, 0x6eab, 0x6ecb,
+ 0x6e8f, 0xf9ab, 0x6ea9, 0x6f24, 0x6ee4, 0x6f12, 0x6ee5, 0x6f67, 0x6eaa,
+ 0x6ea0, 0x6ee6, 0x6ec1, 0x6ee7, 0x6f0d, 0x6e86, 0x6eb0, 0x6e8b, 0x6ee8,
+ 0x6ec9, 0x6f19, 0x6ec0, 0x6f0c, 0x6ee9, 0x6eea, 0x71ed, 0x71e3, 0x71e4,
+ 0x71e8, 0x71d2, 0x71e2, 0x8666, 0x73cf, 0x73d1, 0x73c3, 0x73c9, 0x73ea,
+ 0x73b4, 0x73dc, 0x73bd, 0x73e6, 0x73c8, 0x73ec, 0x73b2, 0x73a9, 0x73d3,
+ 0x73c0, 0x73e9, 0x73d5, 0x45d9, 0x73c5, 0x45dd, 0x73cb, 0x73d0, 0x73d2,
+ 0x73e4, 0x73e8, 0x73cd, 0x73b6, 0x73aa, 0x73d4, 0x8449, 0x73c1, 0x73dd,
+ 0x73ce, 0x75c9, 0x75ca, 0x76fd, 0x76d9, 0x76ff, 0x7704, 0x76fa, 0x7706,
+ 0x7715, 0x7711, 0x7707, 0x770b, 0x77fc, 0x77fd, 0x786d, 0x7865, 0x7914,
+ 0x7913, 0x790c, 0x790b, 0x7918, 0x7922, 0x7a7d, 0x7a6f, 0x7a75, 0x7a7b,
+ 0x7a80, 0x7a7f, 0x7a96, 0x7a6d, 0x7a6b, 0x7a86, 0x7a73, 0x7a62, 0x7a77,
+ 0x7a81, 0x7a69, 0x7a82, 0x7a97, 0x7a84, 0x46fc, 0x7a78, 0xf9d0, 0x7a7a,
+ 0x7a6a, 0x7a65, 0x7a7e, 0x7a94, 0x7bc2, 0x7bc1, 0x7bf9, 0x7c71, 0x7c6b,
+ 0x7c6d, 0x7c6f, 0x7c6e, 0x7cf2, 0x7ce8, 0x7cef, 0x7ce9, 0x7cea, 0x7ced,
+ 0x7cf3, 0x7ce6, 0x7dc9, 0x7db4, 0x7db3, 0x7db9, 0x7dca, 0x7db1, 0x7db6,
+ 0x7dc7, 0x7dc4, 0x7db7, 0x7e6f, 0x7f33, 0x7f32, 0x7f1f, 0xf9d9, 0x7f2b,
+ 0x7f30, 0x7f36, 0x7f42, 0x7f41, 0xf9d8, 0x80a5, 0x80ab, 0x80a9, 0x80b3,
+ 0x80a7, 0x80a0, 0x80d2, 0x80a8, 0x80b6, 0x80ac, 0x80ae, 0x80e6, 0x8265,
+ 0x8347, 0x8363, 0x834d, 0x835f, 0x834b, 0x8360, 0x8349, 0x8353, 0xf9df,
+ 0x8f3a, 0x8357, 0x834e, 0x8352, 0x8354, 0x8420, 0x8422, 0x85c1, 0x85d7,
+ 0x85d5, 0x85c4, 0x85d0, 0x85bb, 0x85e2, 0x85cb, 0x85b8, 0x85bf, 0x85d8,
+ 0x85c0, 0x85ba, 0x85b4, 0x85bc, 0x85d4, 0x85ed, 0x85c2, 0x85d9, 0x85cc,
+ 0x872f, 0x8723, 0x8796, 0x878d, 0x879e, 0x8799, 0x8883, 0x4907, 0x886a,
+ 0x8869, 0x8875, 0x886c, 0x8880, 0x886e, 0x8881, 0x8877, 0x8876, 0x8873,
+ 0x8870, 0x8884, 0x8919, 0x89f2, 0x933d, 0x89ec, 0x89eb, 0x89f6, 0x89ef,
+ 0x89f4, 0x89ee, 0x89f3, 0x89ed, 0x8c9b, 0x8c98, 0x8c94, 0x147a, 0x8c9a,
+ 0xf9f0, 0x8d4c, 0x49a8, 0x8d57, 0x8d51, 0x8d62, 0x8d52, 0x8d5c, 0x8d53,
+ 0xf9ef, 0x8e85, 0x8f2d, 0x8f3e, 0x8f30, 0x8f7d, 0x8fe6, 0x8ff6, 0x8fe4,
+ 0x8fe9, 0x8fec, 0x8ff2, 0x8fe8, 0x8fe3, 0x8feb, 0x8ff0, 0x8fea, 0x8fe7,
+ 0x8ffd, 0x8fe5, 0x8fee, 0x8ff5, 0x8ff9, 0x8ff1, 0x8ff4, 0xf9f4, 0x9011,
+ 0x90de, 0x90d8, 0x90dd, 0x90db, 0x90d3, 0x90e1, 0x91de, 0x91fc, 0x9228,
+ 0x92b7, 0x92b8, 0x92c7, 0x92b2, 0x92a9, 0x92b9, 0x92bc, 0x92b3, 0x92d1,
+ 0x93b0, 0x93b1, 0x93b6, 0x9404, 0x942c, 0x94c1, 0x949e, 0x94ba, 0x4aca,
+ 0x94d1, 0x94d3, 0x94d4, 0x94d5, 0x94c5, 0x94b6, 0x94b2, 0x94b5, 0x94c3,
+ 0x94b9, 0x94c6, 0x95d6, 0x95e0, 0x95db, 0x95d7, 0x95dd, 0x9715, 0x970c,
+ 0x970f, 0x970e, 0x96fe, 0x9704, 0x970b, 0x9702, 0x96ff, 0x9708, 0x9710,
+ 0x9717, 0x9713, 0x9706, 0x9709, 0x9824, 0x9826, 0x9825, 0x9848, 0x98b5,
+ 0x98d2, 0x98d5, 0x98c4, 0x98af, 0x98ad, 0x98c1, 0x98c0, 0x98cc, 0x98cd,
+ 0x98c3, 0x98c8, 0x98c5, 0x98ba, 0x98d0, 0x98c2, 0x98ce, 0x4b8d, 0x9a43,
+ 0x9a42, 0x9a40, 0x9a31, 0x9acf, 0x9ace, 0x9b30, 0x9b34, 0x9b32, 0x9b43,
+ 0x9b3c, 0x9c11, 0x9c35, 0x9c34, 0x9c37, 0x9c31, 0x9cbf, 0x9cbc, 0x9cc2,
+ 0x9cc9, 0x9d83, 0x9d8b, 0x9da0, 0x9d8d, 0x9d8c, 0x9d9a, 0x9d8a, 0x9d91,
+ 0x9ff1, 0xa00f, 0xa001, 0xa007, 0xa00c, 0x4cc0, 0x9fdc, 0x9fee, 0x9ff7,
+ 0x9ff2, 0x9ff8, 0x9feb, 0x4cca, 0x9fe6, 0x9fed, 0x9fe9, 0xa008, 0xa000,
+ 0x9fe5, 0x9ffc, 0xa261, 0xa25e, 0xa25f, 0x4d25, 0xa29b, 0xa316, 0xa315,
+ 0xa320, 0xa314, 0xa31a, 0xa317, 0xa39c, 0x4d4a, 0xa3f1, 0x4d53, 0xa3f0,
+ 0xa428, 0xa424, 0xa42a, 0xa42b, 0xa4d5, 0xa504, 0xa505, 0xa591, 0xa592,
+ 0xa6a6, 0x0109, 0x0422, 0x041a, 0x040e, 0x041b, 0x0408, 0x50b3, 0xf81c,
+ 0x069d, 0x0812, 0x081e, 0x08bb, 0x08bf, 0x08bc, 0x0908, 0x0909, 0x0963,
+ 0x09c8, 0x3728, 0x0b8e, 0x0b8d, 0x1043, 0x104d, 0x106d, 0x1042, 0x1052,
+ 0x1051, 0x1069, 0x1050, 0x1056, 0x106c, 0x1044, 0x1045, 0x106b, 0x3605,
+ 0x1068, 0x1057, 0x122e, 0x1231, 0x122d, 0x148b, 0x14b2, 0x148d, 0x14a3,
+ 0x14a4, 0x1490, 0x1489, 0x148e, 0x1492, 0x157b, 0x1690, 0x168f, 0x18e9,
+ 0x18cd, 0x18c5, 0x18d0, 0x18c9, 0x18d1, 0x18c7, 0x18d2, 0x185f, 0x18e1,
+ 0x18cc, 0x18c6, 0x18e4, 0x19a9, 0x1ad3, 0x1ada, 0x1ad2, 0x1adb, 0x1b4d,
+ 0x1b4e, 0x1c1c, 0x1ce8, 0x1f6c, 0x1f5f, 0x1f66, 0x1f64, 0x1f78, 0x1f65,
+ 0x1f6d, 0x1f61, 0x1f7a, 0x2007, 0x2166, 0x2168, 0x2162, 0x22d3, 0x22d4,
+ 0x22d1, 0x22dc, 0x2373, 0x2372, 0x242d, 0x242c, 0x242f, 0x2472, 0x24b4,
+ 0x2589, 0x28cd, 0x28a6, 0x28a2, 0x28a0, 0x2846, 0x28a1, 0x6857, 0x28a3,
+ 0x28b1, 0x28db, 0x28f6, 0x28dc, 0x28d6, 0x2a13, 0x2d9c, 0x2d97, 0x2dd8,
+ 0x2de4, 0x2dd4, 0x2de5, 0x2ddb, 0x2dd0, 0x2dda, 0x2dcc, 0x2ddc, 0x2ded,
+ 0x2dd3, 0x2dd1, 0x2dce, 0x2dd9, 0x2ddd, 0xf8c6, 0x2ee6, 0x2ee5, 0x2ee9,
+ 0x2fff, 0x2ffe, 0x300e, 0x308c, 0x30ca, 0x30cb, 0x311a, 0x32d7, 0x32cf,
+ 0x32d0, 0x32c9, 0x32cc, 0x32d3, 0x33a4, 0x33a3, 0x3681, 0x3726, 0x36f3,
+ 0x3727, 0x36f2, 0x36ff, 0x36f5, 0x36fc, 0x370e, 0x3bf0, 0x36f6, 0x3700,
+ 0x3723, 0x3705, 0x3725, 0x3708, 0x3750, 0x3925, 0x3920, 0x3923, 0x3921,
+ 0x39a1, 0x3a69, 0x3a6c, 0x3a68, 0x3a6b, 0x3acc, 0x3acd, 0x3c10, 0x3c0d,
+ 0x3c0a, 0x3c16, 0x3c14, 0x3c52, 0x4028, 0x402e, 0x402c, 0x404d, 0x4049,
+ 0x4031, 0x4030, 0x4033, 0x402d, 0x4036, 0x403e, 0x402f, 0x4027, 0x4034,
+ 0x404c, 0x43fe, 0x4412, 0x441f, 0x4417, 0x43f5, 0x4415, 0x43f7, 0x3e02,
+ 0x1f7d, 0x43fa, 0x43f9, 0x444b, 0x459c, 0x459d, 0x3e23, 0x46f0, 0x46f6,
+ 0x46ef, 0x489d, 0x489a, 0x48a7, 0x48af, 0x48aa, 0x4a64, 0x4a86, 0x4a75,
+ 0x4a70, 0x4a84, 0x4a6b, 0x4a85, 0x4a6c, 0x4b17, 0x4b94, 0x4b93, 0x4cd2,
+ 0x4cd7, 0x4cd4, 0x4ea6, 0x4ea7, 0x4e9c, 0x4e8b, 0x4e8d, 0x4e98, 0x4eb9,
+ 0x4e9b, 0x4e9d, 0x4e99, 0x4ea8, 0x4e91, 0x4e87, 0x4e9a, 0x4fa6, 0x501f,
+ 0x50a7, 0x50b1, 0x50b2, 0x50b7, 0x52d0, 0x52b3, 0x52b5, 0x52c4, 0x52c3,
+ 0x52bc, 0x52b2, 0x52ba, 0x52bb, 0x52c2, 0x52cd, 0x52be, 0x52b7, 0x538f,
+ 0x5403, 0x5404, 0x5571, 0x5577, 0x5574, 0x558b, 0x557a, 0xf951, 0x558c,
+ 0x5573, 0x56ff, 0x56fb, 0x56fd, 0x56f0, 0x56f3, 0x56fc, 0x56f2, 0x5892,
+ 0x589e, 0x58ae, 0x5896, 0x5a14, 0x5a12, 0x5a13, 0x5a16, 0x5a0f, 0x5ab6,
+ 0x5abd, 0x5c8c, 0x5cae, 0x5cac, 0x5cab, 0x5c99, 0x5c92, 0x5cbb, 0x5c9e,
+ 0x5c7e, 0x5caf, 0x5cbc, 0x5c98, 0x5f01, 0x5f09, 0x5f06, 0xf967, 0x5f07,
+ 0x5f08, 0x60cf, 0x610e, 0x6132, 0x4315, 0x6112, 0x6116, 0x6117, 0x611b,
+ 0x6115, 0x6131, 0x6118, 0x611a, 0x6110, 0x610a, 0x6109, 0x624f, 0xf973,
+ 0x630f, 0x6310, 0xf975, 0x6328, 0x6311, 0x6316, 0x6317, 0x6302, 0x63bb,
+ 0x63ba, 0x63c3, 0x63bc, 0x648a, 0x6484, 0x6486, 0x64e0, 0x6517, 0x6518,
+ 0x651e, 0x6515, 0x65d3, 0x65da, 0x65d9, 0x67e6, 0x67f4, 0x67e1, 0x6869,
+ 0x6840, 0x6858, 0x686c, 0x684d, 0x6921, 0x6999, 0x69f1, 0x3f68, 0x6a86,
+ 0x6f5b, 0x6f5c, 0x6f77, 0x6f2c, 0xf9ad, 0x6f58, 0x6f64, 0x6f61, 0x6f48,
+ 0x6f97, 0x6f59, 0x6f29, 0x6f62, 0x6f2e, 0x6f68, 0x6f90, 0x6f3a, 0x6f3d,
+ 0x6f5e, 0x6f46, 0x6f69, 0x6f65, 0x6f3e, 0x6f49, 0x6f56, 0x6fe1, 0x6f78,
+ 0x6f79, 0x6f66, 0x6f4a, 0x6f35, 0x6f7a, 0x6f92, 0x6f60, 0x6f36, 0x6f51,
+ 0x6f42, 0x455d, 0x6f3f, 0x6f7b, 0x6f5d, 0x6f94, 0x6f6a, 0xf9b5, 0x71f2,
+ 0x73bb, 0x741b, 0x741a, 0x7433, 0x7417, 0x740a, 0x7415, 0x7412, 0x7401,
+ 0x742d, 0x73fd, 0x7423, 0x7405, 0x7411, 0x7400, 0x741c, 0x7435, 0x742e,
+ 0x7436, 0x0abf, 0x742f, 0x740c, 0x7409, 0x7431, 0x73fc, 0x740f, 0x7418,
+ 0x7402, 0x7600, 0x771f, 0x7737, 0x465a, 0x7738, 0x772b, 0x772e, 0x7721,
+ 0x7730, 0x7729, 0x7731, 0xf9c9, 0x7701, 0x772c, 0x7722, 0x77ff, 0x7877,
+ 0x7867, 0x787f, 0x787d, 0x787b, 0x787e, 0x791e, 0x791c, 0x7921, 0x7926,
+ 0x7927, 0x7929, 0x792c, 0x791d, 0x792b, 0x7abf, 0x7aa4, 0x7aaa, 0x7aae,
+ 0x7a9f, 0x7ad0, 0x7ab1, 0x7aad, 0x7a9b, 0x7ab2, 0x7aa9, 0x7ab3, 0x7ab4,
+ 0x7aba, 0x7aa5, 0x7ab7, 0x7aac, 0x7acb, 0x7acf, 0x7bc6, 0x7c01, 0x7bff,
+ 0x7bfd, 0x7c77, 0x7c78, 0x7c76, 0x7cf7, 0x7dcc, 0x4785, 0x7dd4, 0x7dd7,
+ 0x7dd5, 0x7dd6, 0x7dd3, 0x7f5d, 0x7f55, 0x80e0, 0x8148, 0x80ee, 0x80db,
+ 0x80e7, 0x80d6, 0x80e5, 0x80e1, 0x80dd, 0x80e2, 0x8270, 0x8266, 0x826f,
+ 0x826e, 0x8381, 0x8369, 0x836e, 0x836d, 0x836c, 0x8384, 0x8385, 0x8371,
+ 0x8373, 0x836a, 0x836f, 0x837b, 0x856a, 0x857c, 0x857d, 0x8581, 0x85fa,
+ 0x8605, 0x85eb, 0x85fb, 0x85e9, 0x85ef, 0x85fc, 0x85e7, 0xf9e1, 0x85ee,
+ 0x85fd, 0x8732, 0x87a7, 0x87b5, 0x87b1, 0x87b9, 0x87a8, 0x87b3, 0xf9e6,
+ 0x888a, 0x8891, 0x888d, 0x8899, 0x490b, 0x889a, 0x889b, 0x8892, 0x888f,
+ 0x88ab, 0x4cdb, 0x4939, 0x8a75, 0x8a31, 0x8a38, 0x4937, 0x8a35, 0x8a69,
+ 0x8a3b, 0x8a3d, 0x8a6c, 0x8a79, 0x8a3c, 0x8a3e, 0x8c97, 0x8ca5, 0x8ca2,
+ 0x8c9d, 0x8ca1, 0x8d68, 0x8d6f, 0x8d6d, 0x8d72, 0x8d75, 0x8d77, 0x8d79,
+ 0x8eb5, 0x8eea, 0x8eab, 0x8f43, 0x8f41, 0x8f42, 0x9009, 0x9008, 0x9006,
+ 0x9001, 0x9003, 0x9000, 0x9004, 0x900a, 0x900e, 0x900d, 0x9007, 0x900f,
+ 0x9014, 0x9002, 0x9015, 0x900c, 0x9010, 0x9005, 0x90fd, 0x90ff, 0x9104,
+ 0x9100, 0x9109, 0x922b, 0xf9f7, 0x9231, 0x92db, 0x92c5, 0x92d3, 0x92ce,
+ 0x4a6b, 0x92c9, 0x92bf, 0x92cb, 0x92c0, 0x92d0, 0x92d4, 0x93c1, 0x93b9,
+ 0x93bb, 0x93c3, 0x93c9, 0x9407, 0x942d, 0x94f8, 0x94e1, 0x94fa, 0x94ef,
+ 0x94fd, 0x4acd, 0x94eb, 0x94f1, 0x94ed, 0x94fe, 0x95f8, 0x9603, 0x95ee,
+ 0x95e8, 0x9601, 0x96ec, 0x9722, 0x9714, 0x9734, 0x972f, 0x9739, 0x9741,
+ 0x973c, 0x9749, 0x9758, 0x973a, 0x9742, 0x973f, 0x9822, 0x9823, 0x984a,
+ 0x98dc, 0x98d9, 0x98db, 0x98e2, 0xfa07, 0x98df, 0x98e0, 0x98d7, 0x9a4f,
+ 0x9a46, 0x9a53, 0x9a55, 0x9a4e, 0x9a4a, 0x9a4c, 0x9a63, 0x9b51, 0x9b53,
+ 0x9b58, 0x9b4d, 0x9b5a, 0x9b49, 0x9b5d, 0x9c12, 0x9c3c, 0x9cd1, 0x9cdf,
+ 0x9cd6, 0x9cd8, 0x9ce0, 0x9cd9, 0x9db1, 0x9dac, 0x9daa, 0x9dee, 0x9dbd,
+ 0x4c4d, 0x9dc3, 0x9da8, 0x9dae, 0x9dab, 0xa01d, 0xa027, 0xa038, 0xa012,
+ 0xa048, 0xa02b, 0xa016, 0xa019, 0xa03d, 0xa023, 0xa02a, 0xa264, 0xa2ad,
+ 0xa2ac, 0xfa14, 0xa2b1, 0xa2af, 0xa32c, 0xa324, 0xa325, 0xa328, 0xa3f9,
+ 0xa3f7, 0xa3fd, 0xa3fe, 0xa439, 0xa433, 0xa4d7, 0xa4d8, 0xa4e4, 0x14a1,
+ 0xa50e, 0xa53b, 0xa544, 0xa542, 0xa594, 0xa593, 0xa5d5, 0xa6a7, 0x0431,
+ 0x0423, 0x0428, 0x0427, 0x04c6, 0x05a3, 0x0621, 0x081b, 0x3510, 0x08c1,
+ 0x08c3, 0x092a, 0x0969, 0x0a27, 0x10b6, 0x10a7, 0x10a4, 0x10a6, 0x1090,
+ 0x109e, 0x1094, 0x10a8, 0x10a5, 0x10a2, 0x1091, 0x367b, 0x14bc, 0x14bd,
+ 0x14b4, 0x14b0, 0x14e4, 0x1545, 0x154b, 0x157e, 0x157f, 0x157d, 0x15c3,
+ 0x18fc, 0x18f7, 0x18f0, 0x18ed, 0x18f1, 0x18f8, 0x1ae9, 0x1ceb, 0x381d,
+ 0x1f90, 0x1f8d, 0x1f86, 0x1f91, 0x1f8a, 0x2008, 0x2050, 0x22ea, 0x22e6,
+ 0x22e2, 0x22e7, 0x22ed, 0x22e1, 0x2434, 0x2476, 0x2475, 0x2473, 0x24b5,
+ 0x2590, 0x2592, 0x28e1, 0x28df, 0x28d5, 0x28f2, 0x28fe, 0x2913, 0x292e,
+ 0x2a19, 0x2e08, 0x64f5, 0x2e05, 0x2e09, 0x2e06, 0x2e03, 0x2dfd, 0x2dfc,
+ 0x2e02, 0x2e42, 0x301a, 0x3011, 0x3015, 0x3016, 0x30cc, 0x30cf, 0x30d0,
+ 0x3122, 0x311e, 0x3121, 0x32e5, 0x3b27, 0x3354, 0x32ef, 0x3353, 0x3351,
+ 0x33ad, 0x3767, 0x3768, 0x37a4, 0x3777, 0x3789, 0x3744, 0x378b, 0x3779,
+ 0x375b, 0x3743, 0x3757, 0x374a, 0x377c, 0x3746, 0x377b, 0x3756, 0x39a8,
+ 0x3a76, 0x3a72, 0x3ad6, 0x3ad8, 0x3ad1, 0x3c22, 0x3c20, 0x3c23, 0x3c1e,
+ 0x3c6e, 0x40a3, 0x4077, 0x40a6, 0x406d, 0x40a2, 0x407c, 0x4084, 0x4068,
+ 0x4074, 0x4086, 0x40a5, 0x407b, 0x407a, 0x4069, 0x4072, 0x4076, 0x444a,
+ 0x4437, 0x442a, 0x442d, 0x4446, 0x4428, 0x4426, 0x4442, 0x442c, 0x4438,
+ 0x442b, 0x4433, 0x4445, 0x4539, 0x46f9, 0x46fa, 0x48b8, 0x48b7, 0x48bb,
+ 0x48b9, 0x48b4, 0x4a6f, 0x4a87, 0x4a8f, 0x4aa2, 0x4aa3, 0xf931, 0x4b9b,
+ 0x4b9d, 0x4bce, 0x3fcf, 0x4ebd, 0x4ebf, 0x4e92, 0x3fcd, 0x4eef, 0x4ec9,
+ 0x4fa4, 0x4fa8, 0x4faa, 0x5028, 0x5024, 0x5025, 0x5026, 0x50a9, 0x50ba,
+ 0x50be, 0x50bc, 0x50c0, 0x52f0, 0x52df, 0x52e0, 0x52ed, 0x52db, 0x52fb,
+ 0x52b9, 0x52da, 0x52eb, 0x52ec, 0x559a, 0x559f, 0x559b, 0x5597, 0x55a1,
+ 0x570f, 0x5705, 0x5748, 0x4182, 0x58bc, 0x58ba, 0x5abf, 0x5d01, 0x5ce8,
+ 0x5cef, 0x5ce4, 0x5ce6, 0x5d02, 0x5ceb, 0x5ce0, 0x5ced, 0x5cd9, 0xf964,
+ 0x5d14, 0x5cee, 0x4252, 0x5d13, 0x5cf9, 0x5cf8, 0x5f25, 0xf969, 0x5f19,
+ 0x5f20, 0x5f43, 0x5f3f, 0x6145, 0x614c, 0x6149, 0x614f, 0x6141, 0x613e,
+ 0x614d, 0x6152, 0x614a, 0x614e, 0x6173, 0x6142, 0x6151, 0x6155, 0x6150,
+ 0x616c, ERROR, 0x616a, 0x6153, 0x6168, 0x6255, 0x6256, 0x631c, 0x631d,
+ 0x7f80, 0x631e, 0x6323, 0x631f, 0x63e1, 0x63cd, 0x63cb, 0x63cc, 0x63c8,
+ 0x63c9, 0x649b, 0x6494, 0x6492, 0x6496, 0x6493, 0x6495, 0x648f, 0x651d,
+ 0x6522, 0x6521, 0x65e9, 0x65ef, 0x65e0, 0x65e6, 0x65e4, 0x6829, 0x682c,
+ 0x6876, 0x6883, 0x6878, 0x683c, 0x4443, 0x687a, 0x4451, 0x68f2, 0x699e,
+ 0x699b, 0x699a, 0x69f6, 0x69f5, 0x6aa5, 0x6a93, 0x6aa4, 0x6e82, 0x6ec7,
+ 0x6fb7, 0x701d, 0x6fe2, 0x6fd7, 0x6fe3, 0x6fe4, 0x6fbc, 0x6fd3, 0x455a,
+ 0x6f5a, 0x6fd2, 0x6f2d, 0xf9af, 0x6fc4, 0x6fd0, 0x6fe5, 0x7005, 0x7007,
+ 0x6fe6, 0x701b, 0x6fe7, 0x6fd8, 0x6fbe, 0x7017, 0x6fb4, 0x6fd9, 0x6fe8,
+ 0x6fad, 0x6faf, 0x6fc8, 0x6fe9, 0x6fea, 0x71fe, 0x71fb, 0x7200, 0x7472,
+ 0x7470, 0x7446, 0x7459, 0x745e, 0x7448, 0x744f, 0x7471, 0x7460, 0x745f,
+ 0x746e, 0x7473, 0xf9c0, 0xf9bf, 0x7447, 0x746d, 0x746f, 0x7481, 0x746c,
+ 0x7478, 0x7483, 0x7449, 0x7468, 0x7474, 0x7463, 0x746a, 0x6885, 0x7465,
+ 0x7462, 0x74c8, 0x75d0, 0x75d4, 0x75d1, 0x7603, 0x7742, 0x7763, 0x7756,
+ 0x775b, 0x7755, 0x7750, 0x772d, 0x7744, 0x7748, 0x7745, 0x7782, 0x4665,
+ 0x7762, 0x7885, 0x788d, 0x7936, 0x792f, 0x7931, 0x7937, 0x7aa7, 0x7ad9,
+ 0x7af0, 0x7af2, 0x7afd, 0x7ae8, 0x7aeb, 0x7aee, 0x7ae0, 0x7ae9, 0x7aed,
+ 0x7ad6, 0x7af8, 0x7ad4, 0x7adf, 0x7ae7, 0x7ad8, 0x7ae3, 0x7aef, 0x7b0f,
+ 0x7bca, 0x1546, 0x7c05, 0x7c0c, 0x7c0d, 0x7c7f, 0x7c80, 0x7c81, 0x7d01,
+ 0x7d03, 0x7df2, 0x7de2, 0x7de3, 0x7dde, 0x7de9, 0x7de8, 0x7de0, 0x7e01,
+ 0x7df5, 0x7de4, 0x8d01, 0x7e77, 0x7f74, 0x7f6f, 0x7f62, 0x7f61, 0x7f6d,
+ 0x7f73, 0x7f6a, 0x7f69, 0x8112, 0x812d, 0x8114, 0x810f, 0x8129, 0x8116,
+ 0x8103, 0x8146, 0x815c, 0x8111, 0x8106, 0x80dc, 0x812b, 0x812a, 0x812c,
+ 0x8127, 0x827a, 0x839c, 0x8399, 0x8395, 0x838b, 0x8398, 0x8396, 0x8432,
+ 0x85a4, 0x85aa, 0x861b, 0x48af, 0x860d, 0x861c, 0x860a, 0x8620, 0x8608,
+ 0x861a, 0x8613, 0x8611, 0x875d, 0x875f, 0x875e, 0x8760, 0x87bb, 0x87bc,
+ 0x87c1, 0x87c0, 0x87c8, 0x87ce, 0x88a7, 0x88b2, 0x88b6, 0x88a5, 0x88ba,
+ 0x88b5, 0x88ad, 0x88a4, 0x88d3, 0x88b0, 0x88b1, 0x891d, 0x8a8d, 0x4941,
+ 0x8a91, 0x8ab6, 0x8ab7, 0x8abd, 0x8abc, 0x8a96, 0x8a94, 0x8aa0, 0x8ca8,
+ 0x8ca6, 0x8d84, 0x8d96, 0x8d88, 0x8d9a, 0x8ed1, 0x8ecf, 0x8f50, 0x8f51,
+ 0x8f4e, 0x8f80, 0x8f81, 0x901b, 0x9017, 0x9020, 0x9019, 0x901a, 0x9021,
+ 0x901e, 0x9018, 0x901d, 0x4a29, 0x912d, 0x9124, 0x9127, 0x912e, 0x9125,
+ 0x911c, 0x9119, 0x4a2a, 0x9123, 0x911f, 0x911a, 0x912b, 0x911e, 0x91e0,
+ 0x9233, 0x92e6, 0x92fc, 0x92e5, 0x92f8, 0x92f6, 0x92ea, 0x92f2, 0x92ed,
+ 0x92eb, 0x92f0, 0x92f1, 0x93c6, 0x93c8, 0x93ce, 0x93c5, 0x4a96, 0x93cb,
+ 0x9513, 0x9514, 0x9507, 0x950c, 0x961a, 0x4b12, 0x9617, 0x9606, 0x9616,
+ 0x9607, 0x9610, 0x9609, 0x9619, 0x9615, 0x976e, 0x973b, 0x973e, 0x976c,
+ 0x9765, 0x9764, 0x9759, 0x977c, 0x9770, 0x9779, 0x982c, 0x9852, 0x9851,
+ 0x984c, 0x9900, 0x9910, 0x9913, 0x98ff, 0x98fe, 0x98ed, 0x9a5a, 0x9a58,
+ 0x9a5c, 0x9ada, 0x9b78, 0x9b5e, 0x9b67, 0x9b64, 0x9c13, 0x9c23, 0x9c41,
+ 0x9c3f, 0x9c40, 0x9ced, 0x9ce3, 0x9cea, 0x9cf0, 0x9ce6, 0x9ce9, 0x9cf1,
+ 0x9cee, 0x9dd4, 0x9dd1, 0x9ddc, 0x9dec, 0xa069, 0xa06d, 0xa057, 0xa066,
+ 0xa0f9, 0xa04a, 0xa060, 0xa056, 0xa059, 0xa04c, 0xa06a, 0xa062, 0xa063,
+ 0xa070, 0xa05f, 0xfa0d, 0xa064, 0xa05d, 0xa068, 0xa09f, 0xa2ba, 0xa2b8,
+ 0xa2bc, 0xa2b9, 0xa2b4, 0xa33b, 0xa32d, 0xa338, 0xa32f, 0xa332, 0xa441,
+ 0xa4cb, 0xa4de, 0xa4dd, 0xa4da, 0xa4dc, 0xa510, 0xa54f, 0xa549, 0xa598,
+ 0xa596, 0xa597, 0xa5c7, 0x019c, 0xa5da, 0xa5d8, 0xa6a8, 0x010a, 0x019d,
+ 0x04cb, 0x0538, 0x0539, 0x05a6, 0x0823, 0x0822, 0x0821, 0x09ce, 0x0b92,
+ 0x0b91, 0x10ec, 0x10e0, 0x10ed, 0x1108, 0x10e5, 0x10ee, 0x10e4, 0x10eb,
+ 0x10e3, 0x10ea, 0x110a, 0xf859, 0x14d1, 0x14e3, 0x14d4, 0x14d0, 0x14d9,
+ 0x367e, 0x58e1, 0x14da, 0x14d3, 0x154c, 0x154d, 0x157c, 0x1580, 0x15cc,
+ 0x18ff, 0x1908, 0xa508, 0x1901, 0xf86b, 0x1900, 0x1aed, 0x1af3, 0x1aee,
+ 0x1af1, 0x1af0, 0x1ade, 0x1b51, 0x1f82, 0x1fa9, 0x1f98, 0x1f9d, 0x1f9a,
+ 0x1f9e, 0x1f9f, 0x1fa6, 0x1fa7, 0x2009, 0x202f, 0x2171, 0x216d, 0x2172,
+ 0x22ef, 0x22f0, 0x243b, 0x2439, 0x243c, 0x2438, 0x4bfd, 0x243a, 0x2478,
+ 0x2479, 0x2477, 0x2598, 0x259c, 0x2599, 0x259a, 0x2911, 0x290a, 0x28fd,
+ 0x290f, 0x2919, 0x2903, 0x2915, 0x290c, 0x2909, 0x2912, 0x2934, 0x292a,
+ 0x2908, 0x292d, 0x2928, 0xf8b1, 0x292c, 0x2926, 0x2933, 0x39a7, 0x2a1a,
+ 0x2a1e, 0x2e07, 0x2e2c, 0x2e32, 0x2e28, 0x2e31, 0x2e29, 0x2e30, 0x2e2a,
+ 0x2e44, 0x2e2e, 0x30d1, 0x3124, 0x32f7, 0x32f4, 0x32f3, 0x32f8, 0x37b5,
+ 0x3796, 0x3798, 0x3795, 0x3791, 0x37b2, 0x379e, 0x3759, 0x37a3, 0x379a,
+ 0x379b, 0x4320, 0x6183, 0x3ada, 0x3adf, 0x3b16, 0x3c1f, 0x3c2d, 0x3c2e,
+ 0x3c2b, 0x40b8, 0x40bb, 0x40bf, 0x40ba, 0x40d5, 0x40e3, 0x40c1, 0x40be,
+ 0x40bd, 0x40b4, 0x40c2, 0x40a1, 0x4087, 0x40d7, 0x40ca, 0x40b5, 0x40da,
+ 0x40d9, 0x40b3, 0x40d8, 0x4467, 0x4471, 0x4462, 0x445c, 0x4468, 0x4452,
+ 0x4456, 0x1109, 0x0442, 0x45a0, 0x4700, 0x46fe, 0x46ff, 0x48cb, 0xf928,
+ 0x48ca, 0x48a9, 0x48c8, 0x4ab4, 0x4aac, 0x4aaa, 0x4aa9, 0x4c0e, 0x4ce9,
+ 0x4ced, 0x4cf2, 0x4ceb, 0x4cee, 0x4ee8, 0x4edb, 0x4ed7, 0x4ee3, 0x4ee5,
+ 0x4eee, 0x4ed5, 0x4fb3, 0x502d, 0x50c1, 0x50c3, 0x530c, 0x530e, 0x5307,
+ 0x5317, 0x5309, 0x5316, 0x539a, 0x539c, 0x55b4, 0x55b7, 0x55b3, 0x154e,
+ 0x5713, 0x5714, 0x58e6, 0x58dc, 0x58e8, 0x58e5, 0x5a2e, 0x5a2c, 0x5a2b,
+ 0x5acd, 0x5d3d, 0x5d32, 0x5d2d, 0x5d45, 0x5d3e, 0x5d50, 0x5d25, 0x5d53,
+ 0x5d23, 0x5f37, 0x5f38, 0x5f47, 0x5f3d, 0x5f3e, 0x5f49, 0x5f4a, 0x5f1d,
+ 0x7ce9, 0x61a5, 0x618c, 0x618d, 0x6189, 0x6196, 0x6185, 0x618f, 0x6177,
+ 0x618e, 0x6182, 0x618a, 0x6188, 0x617b, 0x6197, 0x617d, 0x6179, 0x6259,
+ 0x6324, 0x632d, 0x632e, 0x632b, 0xf976, 0x63da, 0x63d8, 0x63d6, 0x6487,
+ 0x64a0, 0x6528, 0x6525, 0x651f, 0x65f3, 0x65f7, 0x65f6, 0x682b, 0x685b,
+ 0x6848, 0x81cb, 0x685c, 0x686d, 0x689d, 0x6899, 0x688c, 0x6891, 0x689b,
+ 0x689a, 0x689c, 0x6895, 0x688d, 0x6896, 0x68a5, 0x692a, 0x69a1, 0x69a4,
+ 0x69ad, 0x6aa9, 0x6aae, 0x6ab0, 0x700d, 0x6f63, 0x6f71, 0x7051, 0x7054,
+ 0x702a, 0x7044, 0x7055, 0x7099, 0x7039, 0x703f, 0x703e, 0x704f, 0x704d,
+ 0x7035, 0x7040, 0x7031, 0x6fd5, 0x702b, 0x7033, 0x7041, 0x7056, 0x704c,
+ 0x7046, 0x703c, 0x7045, 0x7043, 0x703d, 0x7070, 0x7057, 0x7038, 0x7058,
+ 0x4565, 0x7037, 0x7207, 0x7206, 0x7209, 0x74ab, 0x7490, 0x7493, 0x74bc,
+ 0x74a9, 0x749e, 0x74bf, 0x74aa, 0x7491, 0x74a4, 0x749a, 0x74a7, 0x74a1,
+ 0x749c, 0x74a2, 0x749b, 0x749f, 0x7494, 0x748f, 0x72f0, 0x7492, 0x7495,
+ 0x74a5, 0x74a6, 0x7604, 0x779c, 0x7779, 0x777a, 0x777e, 0x777b, 0x7771,
+ 0x7781, 0x777f, 0x777c, 0x777d, 0x7775, 0x7776, 0x788e, 0x788f, 0x793e,
+ 0x793f, 0x7940, 0x7941, 0x4704, 0x7b0d, 0x7b17, 0x7b10, 0x7b0e, 0x7aea,
+ 0x7b1d, 0x7b03, 0x7b22, 0x7b04, 0x7b00, 0x7b20, 0x7b21, 0x7b23, 0x7b13,
+ 0x7b09, 0x7b11, 0x7bcb, 0x7bce, 0x7bd0, 0x7bcc, 0x7bd4, 0x14db, 0x7c09,
+ 0x7c0b, 0x7c85, 0x7d06, 0x7d0d, 0x4764, 0x7d14, 0x7d0f, 0x7e09, 0x7e14,
+ 0x7e0b, 0x7dfc, 0x7e04, 0x7e0a, 0x7e00, 0x7dfd, 0x7e07, 0x7e06, 0x7e11,
+ 0x7e79, 0x7e78, 0x7f88, 0x7f80, 0x7f8b, 0x8159, 0x8161, 0x8175, 0x4823,
+ 0x8155, 0x815b, 0x815f, 0x8152, 0x8162, 0x8172, 0x815d, 0x8168, 0x8171,
+ 0x8165, 0x8166, 0x8167, 0x8176, 0x814c, 0x8160, 0x8174, 0x8150, 0x828a,
+ 0x8281, 0x8286, 0x827f, 0x8280, 0x83a5, 0x83a7, 0x83a8, 0x83a6, 0x83af,
+ 0x6195, 0x83b1, 0x8435, 0x8439, 0x85c3, 0x8630, 0x862a, 0x862b, 0x862d,
+ 0x862e, 0x862c, 0x8623, 0x8621, 0x8622, 0x876c, 0x8781, 0x878f, 0x8780,
+ 0x87d0, 0x87cd, 0x87d5, 0x87d4, 0x88d1, 0x88be, 0x88cb, 0x88ce, 0x88bd,
+ 0x88d0, 0x8b04, 0x8ad5, 0x8ad0, 0x8ad3, 0x8afb, 0x8ad8, 0x8ad1, 0x8afd,
+ 0x8ad9, 0x8ad6, 0x8ae6, 0x8af9, 0x8da1, 0x8d9d, 0x8d9e, 0x95d9, 0x8eff,
+ 0x8f5f, 0x8f57, 0x8f60, 0x8f59, 0x902c, 0x9025, 0x9027, 0x9030, 0x9024,
+ 0x9026, 0x902d, 0x902e, 0x9029, 0x9031, 0x9145, 0x9147, 0x9152, 0x914a,
+ 0x9150, 0x9146, 0x914f, 0x914e, 0x9153, 0x9321, 0x9309, 0x931a, 0x931b,
+ 0x5315, 0x9310, 0xf9f9, 0x9314, 0x930e, 0x9312, 0x930b, 0x93cf, 0x93d2,
+ 0x93d0, 0x93d4, 0x93d3, 0x93d1, 0x0b18, 0xf9fb, 0x9409, 0x951c, 0x9527,
+ 0x9525, 0x951b, 0x9529, 0x951f, 0x9530, 0x9524, 0x9528, 0x9519, 0x952f,
+ 0x9624, 0x9621, 0x9625, 0x9626, 0x9627, 0x9676, 0x9766, 0x9775, 0x9769,
+ 0x977e, 0x978f, 0x9774, 0x7210, 0x97ad, 0x982b, 0x982a, 0x9858, 0x9922,
+ 0x991d, 0x992b, 0x992c, 0x992d, 0x9933, 0x991b, 0x9927, 0x992a, 0x9928,
+ 0x993b, 0x9a7e, 0x9a71, 0x9a79, 0x9a78, 0x9a70, 0x9a6d, 0x9a7d, 0x9a75,
+ 0x9a76, 0x9ade, 0x9b66, 0x9b83, 0x9b87, 0x9b7b, 0x9b89, 0x9b86, 0x9b82,
+ 0x9b7c, 0x9b81, 0x9c43, 0x9c45, 0x9cf7, 0x9cf9, 0x9cfa, 0x9e05, 0x9dfe,
+ 0x9e0f, 0x9dff, 0x9dfa, 0x9e09, 0x9e20, 0x9e0c, 0x9e3c, 0x9e22, 0x9df8,
+ 0x9e0a, 0x9e08, 0x9df7, 0xa08e, 0xa077, 0xa08b, 0xa0b4, 0xa08a, 0xa09a,
+ 0xa079, 0xa083, 0xa07f, 0xa0a1, 0xa08f, 0xa0a3, 0xa081, 0xa094, 0xa07e,
+ 0xa082, 0xa090, 0xa0a5, 0xa0ad, 0xa09d, 0xa267, 0xa269, 0xa2cb, 0xa2c8,
+ 0xa2d1, 0xa340, 0xa34b, 0xa349, 0xa346, 0xa33e, 0xa343, 0xa33f, 0xa3a5,
+ 0xa3a7, 0xa44e, 0xa44d, 0x259b, 0xa4e5, 0xa4e1, 0xa4e2, 0xa516, 0xa514,
+ 0xfa1b, 0xa559, 0xa551, 0xa55f, 0xa54a, 0xa557, 0xa558, 0xa5ca, 0xa5db,
+ 0xa5de, 0xa5e0, 0xa5e1, 0xa5df, 0xa5e2, 0xa5e3, 0xa692, 0xa6bf, 0xa6be,
+ 0x010b, 0x0452, 0x044e, 0x34b9, 0xf813, 0x05a7, 0x0826, 0x0827, 0x08c6,
+ 0x090b, 0x096a, 0x0978, 0x111a, 0x1116, 0x1119, 0x1117, 0x111b, 0x1118,
+ 0x1120, 0x1237, 0x14ec, 0x1581, 0x923d, 0x190f, 0x19ad, 0x1afb, 0x1b52,
+ 0x1faf, 0x1fb7, 0x1fb2, 0x2178, 0x21ac, 0x2300, 0x22fe, 0x2302, 0x22fd,
+ 0x2303, 0x2440, 0x2443, 0x2442, 0x24b7, 0x25a2, 0x2900, 0x2935, 0x2941,
+ 0x2905, 0x0453, 0x2950, 0x294e, 0x2953, 0x2e53, 0x2e50, 0x2e57, 0x2e5f,
+ 0x2e55, 0x2eea, 0x3026, 0x9830, 0x302a, 0x3028, 0x302c, 0x302d, 0x30d4,
+ 0x3307, 0x3358, 0x3359, 0x37c5, 0x37cd, 0x37c7, 0x37e8, 0x3c4b, 0x3932,
+ 0xa697, 0x3ade, 0x3c32, 0x0ac8, 0xf915, 0x40f1, 0x40f0, 0x40ec, 0x4109,
+ 0x40f9, 0x40f5, 0x40fe, 0x4474, 0x4481, 0x447c, 0x4475, 0x4489, 0x4482,
+ 0x4497, 0x4486, 0x447d, 0x4493, 0x449c, 0x4476, 0x4480, 0x4545, 0x06a1,
+ 0x4703, 0x48c9, 0x48cd, 0x48d0, 0x4aad, 0x4ac5, 0x4ba2, 0x4cec, 0x4cf6,
+ 0x4cf3, 0x4ef3, 0x4efa, 0x4ef9, 0x4ef5, 0x4ef4, 0x4ef8, 0x4fb6, 0x4fb4,
+ 0x5032, 0x50cd, 0x50c8, 0x50ce, 0x50ca, 0x532a, 0x5321, 0x531d, 0x55bd,
+ 0x55be, 0x55c2, 0x40f1, 0x55c9, 0x571f, 0x58f1, 0x58ed, 0x58f2, 0x58e0,
+ 0x58f7, 0x5a30, 0x5a37, 0x5a31, 0x5a36, 0x5ac8, 0x5d6d, 0x5d69, 0x5d7d,
+ 0x5d61, 0x5d70, 0x5d71, 0x5d73, 0x5d76, 0x5d75, 0x5d78, 0x5d79, 0x5d64,
+ 0x5d6e, 0x5f51, 0x5f4f, 0x5f22, 0x61af, 0x61aa, 0x61a3, 0x619d, 0x619c,
+ 0x61a1, 0x61b6, 0x61ac, 0x61a2, 0x61a7, 0x61b0, 0x61a9, 0x61c3, 0x6331,
+ 0x6332, 0x6333, 0x6334, 0x6337, 0x633c, 0x63d9, 0x63dd, 0x63de, 0x63df,
+ 0x63e0, 0x64a5, 0x64aa, 0x64a2, 0x64a3, 0x6604, 0x6603, 0x65fe, 0x6628,
+ 0x68af, 0x68ad, 0x68a6, 0x69ac, 0x69a5, 0x69b0, 0x69b1, 0x6a01, 0x6ab2,
+ 0x6ad2, 0x6af1, 0x6fd1, 0x7047, 0x70c9, 0x70a7, 0x70c8, 0x7095, 0x708e,
+ 0x7091, 0x707d, 0x70ee, 0x708d, 0x708c, 0x70b0, 0x7096, 0x7042, 0x707c,
+ 0x70b1, 0x70b2, 0x7084, 0x709d, 0x70a1, 0x7098, 0x70b3, 0x7022, 0x707b,
+ 0x708a, 0x70ce, 0x7080, 0x7097, 0x70b4, 0x70b5, 0x709a, 0x709f, 0x7093,
+ 0x7212, 0x720b, 0x720e, 0x74a3, 0x74cc, 0x74dc, 0x74e1, 0x74de, 0x74d2,
+ 0x74db, 0x74d9, 0x74d7, 0x74d4, 0x74c9, 0x74eb, 0x74da, 0x74d1, 0x7504,
+ 0x74ca, 0x74e2, 0x75d7, 0x778c, 0x7799, 0x77a2, 0x7796, 0x7794, 0x779f,
+ 0x4667, 0x778e, 0x7803, 0x7894, 0x7893, 0x7944, 0x7b2f, 0x7b35, 0x7b2b,
+ 0x7b32, 0x7b2d, 0x7b36, 0x4714, 0x7b31, 0x7b12, 0x7b33, 0x7b1f, 0x7b34,
+ 0x7b40, 0x7b3f, 0x7b41, 0x7bd3, 0x7c89, 0x7d18, 0x7d10, 0x7e1a, 0x7e25,
+ 0x7e1e, 0x7f92, 0x7f95, 0x7f93, 0x8184, 0x819a, 0x8189, 0x818d, 0x8188,
+ 0x8191, 0x819b, 0x819c, 0x9548, 0x828e, 0x8292, 0x83c5, 0x83c1, 0x83b8,
+ 0x83be, 0x83b5, 0x83c7, 0x843c, 0x4889, 0x85ec, 0x863f, 0x8639, 0x8637,
+ 0x87a1, 0x8794, 0x87a0, 0x87de, 0x87db, 0x87df, 0x87dc, 0x88d6, 0x88dc,
+ 0x88dd, 0x88e0, 0x88e3, 0x88e1, 0x8b18, 0x8b19, 0x8b53, 0xf9ec, 0x8b44,
+ 0x8b0e, 0x8b0f, 0x8b47, 0x8b17, 0x8b1d, 0x8b11, 0x8cb4, 0x8cb6, 0x8db7,
+ 0x8dbe, 0x8dc2, 0x8db4, 0x8f31, 0x8f15, 0x8f83, 0x903b, 0x9036, 0x9042,
+ 0x9050, 0x9040, 0x9034, 0x9038, 0x903d, 0x903e, 0x9035, 0x903a, 0x9046,
+ 0x9037, 0x9039, 0x9045, 0x9177, 0x915d, 0x916a, 0x9176, 0x916b, 0x916c,
+ 0x9165, 0x9164, 0x9171, 0x915f, 0x9172, 0x91fe, 0x91ff, 0x923e, 0x932b,
+ 0x9336, 0x932d, 0x9339, 0x933f, 0x933b, 0x9333, 0x9342, 0x933a, 0x93d5,
+ 0x93d8, 0x93d9, 0x940d, 0x940a, 0x9439, 0x943a, 0x953d, 0x9545, 0x953a,
+ 0x9537, 0x953e, 0x9542, 0x9787, 0x978c, 0x9782, 0x976b, 0x97a0, 0x979a,
+ 0x9790, 0x978e, 0x97a1, 0x97bd, 0x97b2, 0x97b5, 0x97b7, 0x97aa, 0x97a2,
+ 0x97a5, 0x97ae, 0x97ab, 0x97bc, 0x9832, 0x985a, 0x9964, 0x995c, 0x994d,
+ 0x993f, 0x993e, 0x9952, 0x9958, 0x9957, 0x995e, 0x9953, 0x9954, 0x9956,
+ 0x8f65, 0x9a84, 0x9a85, 0x9a86, 0x9b97, 0x9ba1, 0x9ba2, 0x4c0b, 0xfa0a,
+ 0x9ba3, 0x9ba6, 0x4c17, 0x9c15, 0x9c24, 0x9c4a, 0x9c49, 0x9c48, 0x9c4b,
+ 0x9d0e, 0x9962, 0x9d0b, 0x9d0a, 0x9d08, 0x9d06, 0x9e43, 0x9e47, 0x9e3f,
+ 0x9e46, 0x9e50, 0x4c6d, 0x9e4b, 0x4c70, 0x9e52, 0xa0d7, 0xa0bf, 0xa0d8,
+ 0xa0e0, 0xa0e7, 0xa0b8, 0xa0d5, 0xa0ef, 0xa0e6, 0xa0e4, 0xa0d4, 0xa0d6,
+ 0xa0ea, 0x4ced, 0xa0bb, 0xa0e9, 0xfa10, 0xa26d, 0xa270, 0xa273, 0xa272,
+ 0xa2d4, 0xa2ce, 0xa2d5, 0xa35a, 0xa358, 0xa352, 0xa350, 0xa355, 0xa34e,
+ 0xa34d, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3d1, 0xa458, 0xa463, 0xa45e, 0xa454,
+ 0xa45b, 0xa4e9, 0xa4e7, 0xa4e8, 0xa51d, 0xa567, 0xa55a, 0xa55c, 0xa55b,
+ 0xa561, 0xa5a1, 0x4d8d, 0xa5a4, 0xa5e9, 0xa5ef, 0xa5e5, 0xa5f5, 0xa5eb,
+ 0xa5ed, 0xa696, 0xa695, 0xa6b3, 0xa6b5, 0xa6b1, 0x34a7, 0x044d, 0x0624,
+ 0x082b, 0x09cf, 0x0ac9, 0x1136, 0x1131, 0x1154, 0x113a, 0x1138, 0x1239,
+ 0x1238, 0x14f4, 0x14f3, 0x14f6, 0x14fc, 0x14f5, 0x14f1, 0x169c, 0x1918,
+ 0x191a, 0x1afc, 0x1afe, 0x1b03, 0x1b53, 0x1d2b, 0x1fc6, 0x1fc1, 0x217b,
+ 0x2306, 0x2449, 0x24b8, 0x25a3, 0x2952, 0x294d, 0x295f, 0x295e, 0x2961,
+ 0x2a23, 0x2e8c, 0x2e6f, 0x2e75, 0x2e74, 0x2e71, 0x2e70, 0x2e6c, 0x3126,
+ 0x3308, 0x6707, 0x37f0, 0x37ef, 0x37fb, 0x3810, 0x380c, 0x37f6, 0x37fe,
+ 0x3a7c, 0x3ae1, 0x3c38, 0x3c6f, 0x4118, 0x4115, 0x411c, 0x4110, 0x4135,
+ 0xf917, 0x4117, 0x411d, 0x4126, 0x4128, 0x4129, 0x412a, 0x411a, 0xf916,
+ 0x2307, 0x44ab, 0x44ac, 0x44a1, 0x44ae, 0x44a3, 0x44a7, 0x4548, 0x4604,
+ 0x46fd, 0x3e5a, 0x4708, 0x48d2, 0x4ac6, 0x4abe, 0x4b1c, 0x4ba6, 0x4ba7,
+ 0x4bab, 0x4c00, 0x4cfb, 0x4cfc, 0x4cf9, 0x4d01, 0x4f06, 0x4f04, 0xf93c,
+ 0x5034, 0x5336, 0x5332, 0x5342, 0x532d, 0x5335, 0x55d8, 0x5723, 0x5720,
+ 0x5901, 0x5900, 0x5903, 0xa6bc, 0x5a3c, 0x5a41, 0x5a35, 0x5ac9, 0x5d8e,
+ 0x5d9e, 0x5d99, 0x5db4, 0x5daa, 0x5d9f, 0x5d96, 0x5d9d, 0x5dc3, 0x5d74,
+ 0x5dab, 0x42af, 0x5f63, 0x5f5b, 0x5f5a, 0x61c5, 0x61c4, 0x61cf, 0x61c8,
+ 0x61a4, 0x61bd, 0x61d3, 0x6260, 0x633b, 0x63e3, 0x63e7, 0x64a8, 0x64ac,
+ 0x64a9, 0x652a, 0x6608, 0x6609, 0x68b9, 0x6ac1, 0x6ac2, 0x6ab8, 0x70e1,
+ 0x70eb, 0x70e5, 0x70fa, 0x70e4, 0x710b, 0x70d7, 0x70ef, 0x70e0, 0x70ec,
+ 0x70fb, 0xf9b0, 0x70d3, 0x70e6, 0x70fc, 0x70e3, 0x70cf, 0x70da, 0x70dc,
+ 0x70d2, 0x70a4, 0x456b, 0x7217, 0x7216, 0x74f2, 0x74fc, 0x7518, 0x74f6,
+ 0x74fe, 0x74f3, 0x74f7, 0x7501, 0x74f9, 0x7506, 0x74f5, 0x7510, 0x74df,
+ 0x7503, 0x7508, 0x75d8, 0x7605, 0x7797, 0x77b3, 0x77ae, 0x77af, 0x77a7,
+ 0x77b1, 0x77a8, 0x77ac, 0x77ab, 0x7804, 0x789a, 0x794a, 0x7b42, 0x7b58,
+ 0x7b4b, 0x7b45, 0x7b49, 0x7b4c, 0x7b59, 0x7b56, 0x471b, 0x7b46, 0x7b44,
+ 0x7b5b, 0x7b69, 0x7c8e, 0x7c8f, 0x7d1e, 0x68bc, 0x7e2f, 0x7f9e, 0x7f9d,
+ 0x7f9f, 0x7f9c, 0x81b4, 0x81ae, 0x81ab, 0x81b3, 0x81af, 0x81c2, 0x8293,
+ 0x8295, 0x8296, 0x8297, 0x83cf, 0x83ce, 0x83cb, 0x844b, 0x8646, 0x8643,
+ 0x8645, 0x8651, 0x87ae, 0x87af, 0x87b0, 0x87b8, 0x87e2, 0x87e3, 0x87e6,
+ 0x88ed, 0x88ea, 0x893a, 0x8b59, 0x8b84, 0x8b5f, 0x8b7c, 0x8b5c, 0x8b58,
+ 0x8b55, 0x8b5d, 0x8b7e, 0x8b80, 0x8b83, 0x8b57, 0x4963, 0x8b5e, 0x8cba,
+ 0x8dd5, 0x8f58, 0x8f68, 0x8f67, 0x904a, 0x904c, 0x9052, 0x9049, 0x904e,
+ 0x9047, 0x904d, 0x904b, 0x904f, 0x917e, 0x9187, 0x9183, 0x9189, 0x4aca,
+ 0x9186, 0x9188, 0x9247, 0x9242, 0x9249, 0x9248, 0x4a80, 0x4a84, 0x4a7f,
+ 0x9344, 0x9351, 0x9346, 0x9347, 0x93e4, 0x940f, 0x943f, 0x954b, 0x9557,
+ 0x9552, 0x4af1, 0x9551, 0x9558, 0x955e, 0x9553, 0x955d, 0x954d, 0x963c,
+ 0x963f, 0x9646, 0x963e, 0x9644, 0x9645, 0x9641, 0x9638, 0x9642, 0x9643,
+ 0x967a, 0x97a3, 0x97ba, 0x97c0, 0x97c4, 0x97c6, 0x97cb, 0x9861, 0x997a,
+ 0x9973, 0x9972, 0x9974, 0x9980, 0x9981, 0x9a47, 0x9a95, 0x9a8f, 0x9a90,
+ 0x9a92, 0x9a94, 0x9a8b, 0x9ae6, 0x9bb2, 0x9bb8, 0x9bbd, 0x9bbe, 0x9bce,
+ 0x9bba, 0x9c16, 0x9c26, 0x9c25, 0x9c4c, 0x9c50, 0x9c4e, 0x9c51, 0x9c52,
+ 0x9d14, 0x9d15, 0x9d1b, 0x9e82, 0x9e99, 0x9e9a, 0x9e7d, 0x9e85, 0x9e86,
+ 0x9e9c, 0x9e79, 0x9e7b, 0x9e80, 0x9e83, 0x9e81, 0xa11e, 0xa11b, 0xa12a,
+ 0xa0fb, 0xa105, 0xa120, 0xa111, 0xa104, 0xa0fd, 0xa103, 0xa110, 0xa118,
+ 0xa10a, 0xa14e, 0xa109, 0xa107, 0xa11c, 0x4d1c, 0xa277, 0xa276, 0xa2d8,
+ 0xa2d9, 0xa361, 0xa35c, 0xa35e, 0xa360, 0xa3aa, 0xa3d6, 0xa3d8, 0xa409,
+ 0xa408, 0xa46b, 0xa465, 0xa473, 0xa474, 0xa4ed, 0xa524, 0xa525, 0xa56a,
+ 0xa5a7, 0xa5a8, 0xa60b, 0xa5fa, 0xa5f9, 0xa5ff, 0xa604, 0xa5f6, 0xa605,
+ 0xa699, 0xa6ab, 0xa6bd, 0xa6b8, 0x34a8, 0x0464, 0x045a, 0x0572, 0x097a,
+ 0x0b95, 0x115f, 0x1161, 0x115e, 0x115a, 0x115c, 0x115d, 0x116e, 0x1157,
+ 0x1158, 0x1502, 0x150b, 0x1508, 0x1551, 0x1925, 0x1928, 0x1923, 0x1921,
+ 0x1924, 0x1929, 0x1b06, 0x1b0a, 0x1fca, 0x1fcc, 0x1fcb, 0x1fcf, 0x217f,
+ 0x217c, 0x21d6, 0x2309, 0x230b, 0x2376, 0x247d, 0x25a5, 0x295b, 0x295c,
+ 0x295d, 0x2965, 0x2e6d, 0x2e82, 0x2e83, 0x2e87, 0x2e95, 0x2e8a, 0x30d6,
+ 0x3128, 0x330d, 0x382e, 0xf8ee, 0x382d, 0x3821, 0x3819, 0x393b, 0x393c,
+ 0x393a, 0x3a7e, 0x3c3b, 0x4147, 0x4139, 0x4134, 0x4136, 0x4146, 0x413b,
+ 0x4141, 0x4145, 0x44c0, 0x44c4, 0x44ba, 0x44bd, 0x44be, 0x45a3, 0x470c,
+ 0x48d9, 0x4acd, 0x4bae, 0x4cff, 0x4d24, 0x4fbb, 0x4fbc, 0x5036, 0x50d5,
+ 0x50d3, 0x50d6, 0x533c, 0x533f, 0x55de, 0x55e3, 0x5727, 0x5729, 0x418b,
+ 0x5905, 0x5907, 0x590c, 0x5ad0, 0x5dbe, 0x5dbc, 0x5dd0, 0x5dc2, 0x5db5,
+ 0x5dc9, 0x5f66, 0x432b, 0x61d5, 0x61e2, 0x61dc, 0x61e3, 0x61da, 0x61c2,
+ 0x61e8, 0x63e9, 0x64af, 0x64ad, 0x64ae, 0x660b, 0x68c1, 0x69b6, 0x69b9,
+ 0x6ac0, 0x70a5, 0x7128, 0x7122, 0x7129, 0x7118, 0x711f, 0x711c, 0x7112,
+ 0x712a, 0x457a, 0x7121, 0x712b, 0x7117, 0x70f0, 0x7116, 0x7123, 0x752b,
+ 0x7526, 0x753d, 0x7522, 0x753a, 0x7531, 0x7532, 0x7554, 0x7521, 0x7535,
+ 0x4609, 0x752e, 0x7530, 0x752f, 0x7536, 0x75da, 0x75d9, 0x77bb, 0x77bc,
+ 0x77b7, 0x77c2, 0x77bd, 0x77b2, 0x466d, 0x5344, 0x5dd1, 0x7b52, 0x7b6b,
+ 0x7b67, 0x471f, 0x7b61, 0x7b6c, 0x7b51, 0x7b74, 0x7b77, 0x7b6f, 0x7b6d,
+ 0x7b68, 0xf9d1, 0x7b84, 0x7c90, 0x7c92, 0x7c93, 0x7d1f, 0x7e31, 0x7e38,
+ 0x7e39, 0x7e37, 0x7fab, 0x81c3, 0x81c8, 0x81cb, 0x81cf, 0x8298, 0x83d4,
+ 0x83d3, 0x83d8, 0x83d9, 0x83dd, 0x83d1, 0x83d6, 0x843e, 0x8658, 0x8657,
+ 0x8655, 0x87c4, 0x87e4, 0x88ee, 0x88ef, 0x88f3, 0x88f2, 0x88f0, 0x8bab,
+ 0x8b9a, 0x8baf, 0x8b97, 0x496a, 0x496c, 0x8bbf, 0x8b94, 0x8b93, 0x8cbe,
+ 0x8cbb, 0x8cbc, 0x8dd9, 0x8f6c, 0x9053, 0x9054, 0x905b, 0x9058, 0x9056,
+ 0x9057, 0x919f, 0x9194, 0x9196, 0x9197, 0x924a, 0x924b, 0x9355, 0x935a,
+ 0x935e, 0x935f, 0x9359, 0x935b, 0x9358, 0x9354, 0x93e8, 0x93eb, 0x93ec,
+ 0x9413, 0x9566, 0x956b, 0x9562, 0x9569, 0x9563, 0x955f, 0x954e, 0x9648,
+ 0x964a, 0x97e3, 0x97db, 0x97d8, 0x97d6, 0x9986, 0x9990, 0x9991, 0x9988,
+ 0x9994, 0x9983, 0x4bb2, 0x999c, 0x998d, 0x9985, 0x9a98, 0x9a9a, 0x9a9c,
+ 0x9ae7, 0x9bc5, 0x9bd0, 0x9bd1, 0x9c19, 0x9c27, 0x4c1d, 0x9c54, 0x9d2d,
+ 0x9d22, 0x4c2d, 0x9d1f, 0x9ebd, 0x9eae, 0x9ebb, 0x9ead, 0x9ebc, 0x9eb9,
+ 0x9eb4, 0x9ecb, 0x9eb7, 0x9eb3, 0x9eba, 0x9eb6, 0x9ecd, 0x9ebe, 0x9ec9,
+ 0xfa0b, 0xa15f, 0xa13b, 0xa161, 0xa15c, 0xa18a, 0xa15a, 0xa14d, 0xa146,
+ 0xa144, 0xa13d, 0xa140, 0xa13c, 0xa18c, 0xa141, 0xa14c, 0xa13e, 0xa14a,
+ 0xa27c, 0xa27a, 0xa365, 0xa36e, 0xa369, 0xa36a, 0xa36f, 0xa36c, 0xa370,
+ 0xa368, 0xa36b, 0x4d45, 0xa3ac, 0xa3de, 0xa3dd, 0xa3dc, 0x44c5, 0xa48c,
+ 0xa483, 0xa482, 0xa488, 0xa485, 0xa481, 0xa4f5, 0xa4ef, 0xa4f4, 0xa4f2,
+ 0xa4f6, 0xa4f3, 0xa4f0, 0xa4f1, 0xa52b, 0xa527, 0xa528, 0xa56c, 0xa5ae,
+ 0xa60e, 0xa61b, 0xa616, 0xa61f, 0xa622, 0xa620, 0xa621, 0xa614, 0xa613,
+ 0xa69d, 0xa69c, 0xa69e, 0xa69f, 0x046b, 0x08c8, 0x1178, 0x1176, 0x1170,
+ 0x1171, 0x150a, 0x192c, 0x2311, 0x247e, 0x2957, 0x2966, 0x2969, 0x2967,
+ 0x2968, 0x2971, 0x296f, 0xa3ae, 0x2e8b, 0x2e96, 0x3035, 0x303a, 0x306b,
+ 0x3316, 0x3843, 0x3846, 0x383f, 0x383b, 0x383d, 0x39b1, 0x39b2, 0x3ae4,
+ 0x3c40, 0x415d, 0x4151, 0x414d, 0x414c, 0x415b, 0x44d4, 0x44d2, 0x44ca,
+ 0x44c8, 0x44d0, 0x44c9, 0x4549, 0x45a4, 0x4712, 0x470f, 0x4711, 0x48db,
+ 0x48dd, 0x48dc, 0x4ad4, 0x4b21, 0x4bb2, 0x4d04, 0x4d02, 0x4f11, 0x4f16,
+ 0x4f10, 0x4fbe, 0x721a, 0x534c, 0x534a, 0x55f2, 0x55f1, 0x572a, 0x572c,
+ 0x572f, 0x5731, 0x5911, 0x5912, 0x5a4b, 0x5ddb, 0x5dd6, 0x5ddd, 0x5de2,
+ 0x5de4, 0x5de0, 0x5ddf, 0x5de3, 0x5f6e, 0x5f71, 0x61e9, 0x61ea, 0x6263,
+ 0x63eb, 0x63ea, 0x68bd, 0x68bb, 0x68c6, 0x68cc, 0x68c8, 0x44cf, 0x68c9,
+ 0x68ca, 0x68cf, 0x68d0, 0x69ba, 0x69fb, 0x6a03, 0x6ac4, 0x7149, 0x7153,
+ 0x7136, 0x714a, 0x7141, 0x714e, 0x7119, 0x714d, 0x7145, 0x714c, 0x7147,
+ 0x7148, 0x714f, 0x7137, 0x7142, 0x754a, 0x7546, 0x460a, 0x7549, 0x754f,
+ 0x7551, 0x754c, 0x460c, 0x7606, 0x7951, 0x7b7a, 0x7b83, 0x7b7e, 0x7b7f,
+ 0x7b80, 0x4bb5, 0x7c91, 0x7c94, 0x7c95, 0x7d21, 0x7d20, 0x7e3d, 0x7e40,
+ 0x7e46, 0x7e84, 0x7fac, 0x7fad, 0x482e, 0x81da, 0x81d9, 0x83e2, 0x83e1,
+ 0x83e3, 0x83e4, 0x83de, 0x83df, 0x8641, 0x8659, 0x865c, 0x865a, 0x87e8,
+ 0x88f6, 0x88fc, 0x88f7, 0x88fa, 0x88f9, 0x8bc4, 0x8bbe, 0x8bd2, 0x8bbd,
+ 0x8b95, 0x8bd4, 0x8de4, 0x9061, 0x9062, 0x9063, 0x9064, 0x9060, 0x905c,
+ 0x905d, 0x905e, 0x91a5, 0x91a6, 0x924c, 0x9368, 0x936e, 0x9371, 0x936b,
+ 0x936f, 0x93ee, 0x93f1, 0x93f0, 0x93ef, 0x9415, 0x9414, 0x8f6e, 0x9447,
+ 0x957c, 0x957a, 0x9574, 0x9576, 0x956e, 0x9578, 0x956d, 0x956c, 0x964e,
+ 0x97d7, 0x97ea, 0x97e5, 0x9864, 0x99b3, 0x99a3, 0x99a5, 0x99a7, 0x99a2,
+ 0x999f, 0x99a6, 0x999e, 0x99a8, 0x9aa9, 0x9aa6, 0x9aaa, 0x9aab, 0x9aa0,
+ 0x9aa1, 0x9aa8, 0x9ae8, 0x9ae9, 0x9aea, 0x9be4, 0x9bdf, 0x9be0, 0x9c28,
+ 0x9c5d, 0x9c5b, 0x9c56, 0x9c57, 0x9c5f, 0x9c62, 0x9ee1, 0x9ee3, 0x9ede,
+ 0x9ed9, 0x9ee8, 0x9ef2, 0x9ef6, 0x9ee6, 0x9ef4, 0x9ef5, 0x9ee5, 0x9ee2,
+ 0x4c8d, 0xa196, 0xa1aa, 0xa197, 0xa170, 0xa1a1, 0xa19d, 0xa1a9, 0xa16f,
+ 0xa17e, 0xa194, 0xa19a, 0xa173, 0xa187, 0xa171, 0xa177, 0xa188, 0xa18d,
+ 0xa185, 0xa178, 0xa1ad, 0xa280, 0xa281, 0xa2e5, 0xa2e7, 0xa37c, 0xa3af,
+ 0xa3e1, 0xa496, 0xa4a3, 0xa490, 0xa4f8, 0xa52e, 0xa575, 0xa57e, 0xa57d,
+ 0xa57b, 0xa578, 0xa5b0, 0xa634, 0xa636, 0xa630, 0xfa1d, 0xa62e, 0xa637,
+ 0x0ace, 0x0b97, 0x0b98, 0x117c, 0x117e, 0x117d, 0x117f, 0x150f, 0x16a4,
+ 0x1931, 0x192e, 0x192f, 0x1932, 0x1d2c, 0x1fd4, 0x1fdc, 0x1fd8, 0x200e,
+ 0x2183, 0x2184, 0x2312, 0x2972, 0x297c, 0x297e, 0x2ea6, 0x2ea0, 0x2e9e,
+ 0x2ea2, 0x312a, 0x3318, 0x384d, 0x3858, 0x385b, 0x5914, 0xf8f2, 0x3ae6,
+ 0x4164, 0x4168, 0x4160, 0x4162, 0x44d7, 0x454b, 0x48e0, 0x4b22, 0x4d05,
+ 0x4f19, 0x4f1a, 0x4fc3, 0x50d8, 0x50dc, 0x534f, 0x55f7, 0x55f4, 0x55f8,
+ 0x5913, 0x5a50, 0x5df0, 0x5de9, 0x5def, 0x5ded, 0x5dea, 0x5df8, 0x5e05,
+ 0x5df2, 0x5f72, 0x4331, 0x61f9, 0x61f3, 0x61f6, 0x61f2, 0x61f7, 0x6266,
+ 0x6265, 0x6340, 0xf977, 0x68d1, 0x68d3, 0x6a04, 0x7159, 0x7160, 0x715b,
+ 0x715d, 0x715e, 0x7169, 0x715c, 0x7161, 0x716a, 0x715f, 0x754e, 0x755c,
+ 0x7560, 0x7563, 0x75db, 0x77ca, 0x77c9, 0x77c8, 0x78a5, 0x78a3, 0x7b8e,
+ 0x7b87, 0x7b89, 0x7b85, 0x7b86, 0x7b8f, 0x7b8a, 0x7b90, 0x7c98, 0x7c9b,
+ 0x7e47, 0x7e49, 0x7e48, 0x81e5, 0x81ea, 0x81ed, 0x83f0, 0x83ef, 0x83f2,
+ 0x83ec, 0x8440, 0x8660, 0x865f, 0x87eb, 0x87ec, 0x8900, 0x8901, 0x8be2,
+ 0x8bdf, 0x8be0, 0x8be1, 0x8be3, 0x8cc3, 0x8deb, 0x8dea, 0x8f61, 0x8f71,
+ 0x906b, 0x9068, 0x9069, 0x9067, 0x91b0, 0x91b1, 0x91b2, 0x9251, 0x9374,
+ 0x957f, 0x9584, 0x9653, 0x9654, 0x97f0, 0x97f4, 0x97f1, 0x9837, 0x99bf,
+ 0x4bbc, 0x4bbb, 0x99bd, 0x99be, 0x99b7, 0x99c0, 0x99ba, 0x99b8, 0x99bc,
+ 0x99bb, 0x9aeb, 0x9be7, 0x9c1d, 0x9c1c, 0x9c63, 0x244b, 0x9d38, 0x9d36,
+ 0x9d34, 0x9d37, 0x9f06, 0x9f1c, 0x9f02, 0x9f1d, 0x9f1e, 0x9ee0, 0x9f11,
+ 0x9f18, 0x9f21, 0x9f20, 0x9f10, 0xa1bd, 0xa1ae, 0xa1b5, 0xa1b8, 0xa1b9,
+ 0xa1be, 0xa1c4, 0xa1bc, 0xa1ba, 0xa283, 0xa2ea, 0xa2ec, 0xa37e, 0xa37b,
+ 0xa3e5, 0xa4a7, 0xa49e, 0xa49a, 0xa52f, 0xa531, 0xa583, 0xa5b5, 0xa646,
+ 0xa641, 0xa643, 0xa63d, 0xa642, 0xa63b, 0xa647, 0x096b, 0x09d0, 0x118e,
+ 0x1b11, 0xf871, 0xf889, 0x244c, 0x312b, 0x384f, 0x385e, 0x3863, 0x386b,
+ 0x393f, 0x3ae9, 0x416d, 0x416b, 0x416a, 0x9f2a, 0x44e0, 0x44dd, 0x44e1,
+ 0x44de, 0x44dc, 0x454d, 0x4716, 0x48e3, 0x4ae5, 0x4ae4, 0x4f1d, 0x574b,
+ 0xa6c1, 0x5a4e, 0x5ad6, 0x5dfd, 0x5e07, 0x5dfe, 0x5e03, 0x5e0b, 0x5dff,
+ 0x5f7a, 0x5f77, 0x61fb, 0x6343, 0x63ed, 0x69bc, 0x44df, 0x6a05, 0x6ac6,
+ 0x6ac5, 0x7174, 0x7173, 0x7172, 0x7178, 0x7573, 0x757a, 0x4f1c, 0x7576,
+ 0x7575, 0x7577, 0x77cf, 0x77ce, 0x77cd, 0x78a8, 0x7b98, 0x7b92, 0x7b94,
+ 0x7c9a, 0x7fb4, 0x81eb, 0x81f4, 0x81f3, 0x81ee, 0x81f2, 0x81f0, 0x8664,
+ 0x8c05, 0x8bfb, 0x8bfc, 0x8df3, 0x906c, 0x91ba, 0x9379, 0x937e, 0x9378,
+ 0x93f4, 0x9416, 0x9657, 0x99c8, 0x99c3, 0x99ce, 0x9ab3, 0x9aed, 0x9aee,
+ 0x9bf1, 0x9bf8, 0x4c14, 0x9c64, 0x9c65, 0x9f35, 0x9f29, 0x9f2c, 0x9f31,
+ 0x9f2b, 0x9f2e, 0x9f25, 0xa1da, 0xa1e0, 0xa1d4, 0xa1e1, 0xa1dd, 0xa3e7,
+ 0xa412, 0xa4ae, 0xa4af, 0xa586, 0xa585, 0xa5d1, 0xa658, 0xa63f, 0xa652,
+ 0xa64b, 0xa653, 0xa650, 0xa656, 0xa657, 0xa6cd, 0xa6cb, 0x0831, 0x0830,
+ 0x09d1, 0x361c, 0x1192, 0x1190, 0x118f, 0x1193, 0x1191, 0x3772, 0x2313,
+ 0x247f, 0x2eac, 0x4170, 0x44e5, 0x4b23, 0x4b24, 0x4d08, 0x4d07, 0x4f1f,
+ 0x4f20, 0x4f21, 0x50e1, 0x5354, 0x5357, 0x5355, 0x55fa, 0x5738, 0x7186,
+ 0x5737, 0x5a53, 0x5f7e, 0x5f7b, 0xf971, 0x61fd, 0x61fc, 0x6346, 0x6932,
+ 0x6ac7, 0x7171, 0x7183, 0x716f, 0x717e, 0x717d, 0x7181, 0x717c, 0x758a,
+ 0x757e, 0x7580, 0x757d, 0x757f, 0x7582, 0x77d4, 0x77d0, 0x77d2, 0x7955,
+ 0x7b9b, 0x7b9a, 0x7e4e, 0x81f1, 0x83f8, 0x83fd, 0x865e, 0x8666, 0x8905,
+ 0x8c0a, 0x8c0b, 0x8c0e, 0x8c0d, 0x8c11, 0x8c09, 0x8c10, 0x8c0c, 0x8c12,
+ 0x8cc4, 0x8df7, 0x8df8, 0x8f6a, 0x8f6b, 0x91c0, 0x91c2, 0x9385, 0x9380,
+ 0x9384, 0x9381, 0x91c4, 0x958b, 0x958d, 0x958e, 0x9ab7, 0x9ab9, 0x9aef,
+ 0x9bfb, 0x9bff, 0x9c67, 0x9c68, 0x9c69, 0x9d3f, 0x9f3c, 0x9f4c, 0x9f3d,
+ 0x9f3e, 0x9f3f, 0x9f3b, 0xa1ff, 0x4d0e, 0xa1f6, 0xa1ee, 0xa1fc, 0xa1f8,
+ 0xa201, 0xa1fa, 0xa288, 0xa380, 0xa411, 0xa4fe, 0xa500, 0xa535, 0x503c,
+ 0xa5bd, 0xa5bb, 0xa65c, 0xa65a, 0xa6d1, 0xa6d0, 0x0a0b, 0x3873, 0x1939,
+ 0x1b1a, 0x1fe3, 0x2187, 0x2377, 0x2378, 0x2eb1, 0x386a, 0x3874, 0x3aeb,
+ 0x417b, 0x45a5, 0x48e4, 0x4d0b, 0x4d0e, 0x4d0c, 0x5739, 0x5e10, 0x5e11,
+ 0x5e16, 0x5f81, 0x5f80, 0x61fe, 0x6201, 0x6200, 0x6347, 0x63ef, 0x7188,
+ 0x758b, 0x758d, 0x7587, 0x7585, 0x758f, 0x7584, 0x7588, 0x758e, 0x758c,
+ 0x77d7, 0x77d6, 0x7b9f, 0x2188, 0x8203, 0x83fe, 0x87ef, 0x8909, 0x8908,
+ 0x8c20, 0x8c24, 0x8c1f, 0x9070, 0x9256, 0x93f7, 0x93f8, 0x93f6, 0x9590,
+ 0x965e, 0x97f7, 0x99d6, 0x99d5, 0x9abb, 0x9af0, 0x9c01, 0x9c6c, 0x9d41,
+ 0x9d42, 0x9f4f, 0x9f53, 0x9f58, 0xa212, 0xa204, 0xa213, 0xa205, 0xa20d,
+ 0xa382, 0xa381, 0xa4b5, 0xa4ba, 0xa5be, 0xa665, 0xa663, 0xa66e, 0xa66a,
+ 0xa66c, 0xa6c4, 0x096c, 0x7ba5, 0x1b12, 0x244d, 0x331f, 0x3877, 0x3878,
+ 0x3c44, 0x417c, 0x44eb, 0x44ea, 0x44ec, 0x45a7, 0x4719, 0x4f23, 0x7674,
+ 0x5601, 0x5e1c, 0x6203, 0x6348, 0x68da, 0x7191, 0x7192, 0x7596, 0x7597,
+ 0x7591, 0x7593, 0x77d8, 0x77d5, 0x7957, 0x7958, 0x7ba2, 0x8205, 0x83fa,
+ 0x890c, 0x890a, 0x8c2e, 0x8c29, 0x8c2f, 0x8cc5, 0x9072, 0x91c8, 0x925a,
+ 0x9259, 0x9389, 0x9388, 0x99db, 0x99d9, 0x99da, 0x9abc, 0x4bec, 0x9c06,
+ 0x9c05, 0x9c6f, 0x9c6d, 0x9c70, 0x9f60, 0x9f5e, 0x9f63, 0x9f5a, 0x9f5f,
+ 0xa219, 0xa21d, 0xa21b, 0xa222, 0xa21c, 0xa21e, 0xa2f7, 0xa384, 0xa415,
+ 0xa4b8, 0xa4c1, 0xa501, 0xa50a, 0xa5d2, 0xa675, 0xa674, 0xa672, 0x0ad0,
+ 0x1b1b, 0x2010, 0x2379, 0x44ed, 0x4bb9, 0x4f24, 0x4fc5, 0x5603, 0x634a,
+ 0x68f7, 0x69c1, 0x69c2, 0x7194, 0x7599, 0x759a, 0x795a, 0x7ba8, 0x7c25,
+ 0x7c9e, 0x8441, 0x8c32, 0x8c33, 0x91cb, 0x91ca, 0x91cc, 0x9593, 0x99e0,
+ 0x9c71, 0x9f6b, 0xa22b, 0xa229, 0xa21a, 0xa226, 0xa227, 0xa22a, 0xa2f8,
+ 0x503d, 0xa676, 0x1518, 0x387a, 0x417f, 0x4279, 0x63f0, 0x719a, 0x7196,
+ 0x759e, 0x759d, 0x75dc, 0x77da, 0x820b, 0x8402, 0x8442, 0x8667, 0x938b,
+ 0x99e2, 0x9f71, 0xa22f, 0xa22e, 0xa4c6, 0xa58e, 0xa67b, 0xa677, 0xa678,
+ 0xa67c, 0x387c, 0x6207, 0x7197, 0x7bd9, 0x890d, 0x890e, 0x99e3, 0x99e4,
+ 0x9af3, 0x9c75, 0xa237, 0xa235, 0xa58f, 0xa680, 0xa67f, 0xa6d4, 0x2eb4,
+ 0xa3ec, 0x8f75, 0x4d10, 0x6269, 0x75a4, 0x77db, 0x91d1, 0x938d, 0x9f76,
+ 0xa239, 0xa684, 0xa682, 0x0ad2, 0x44ee, 0x4d11, 0x5f84, 0x8f74, 0x938f,
+ 0x938e, 0xa23b, 0x08cb, 0xa688, 0xa686, 0x335c, 0x53a4, 0x9075, 0xa68b,
+ 0x1519, 0x7c9f, 0x99e5, 0xa240, 0x4d12, 0xa2fb, 0xa68c, 0x53a5, 0x9c77,
+ 0x9c78, 0xa6d6, 0x77df, 0x91d2, 0x151a, 0x7ba9, 0x91d3, 0xa4ca, 0x69c4,
+ 0x78b1, 0x9664, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR,
+};
+
+/*
+ * The second table is generated by running the following sh+Perl
+ * over CNS.TXT:
+
+cat CNS.TXT | \
+perl -ne '$a{$1,hex$2,hex$3}=hex$4 if /^0x(\S)(\S\S)(\S\S)\s+0x(\S+)\s/;' \
+ -e 'END {$o=" "; for $p (0..6) { for $r (0..93) { for $c (0..93) {' \
+ -e '$k=$a{$p+1,$r+33,$c+33}; $k = 0 if !defined $k; $k >>= 16;' \
+ -e '$k <= 3 or die; $v |= $k << $sh; $sh += 2;' \
+ -e 'if ($sh == 32) { $o .= sprintf"0x%08xU, ", $v; $v=$sh=0; }' \
+ -e '(print "$o\n"), $o=" " if length $o > 64; } } }' \
+ -e 'if ($sh > 0) { $o .= sprintf"0x%08xU, ", $v; $v=$sh=0; }' \
+ -e 'print "$o\n"; }'
+
+ */
+static const unsigned int cns11643_forward_2[(7*94*94+15)/16] = {
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00800000U, 0x00002000U, 0x00000000U, 0x00002000U,
+ 0x00200080U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x02000002U, 0x80000000U, 0x00000000U, 0x02000000U,
+ 0x00000000U, 0x00000000U, 0x00200800U, 0x00000000U, 0x00000020U,
+ 0x00000080U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x08000000U, 0x00000200U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000800U, 0x00000000U, 0xa0080000U, 0x00008000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x20000000U, 0x00200000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000008U, 0x00000020U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000200U, 0x00000000U, 0x00000008U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00008080U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x02000000U, 0x00000000U, 0x00000000U,
+ 0x02000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000080U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000080U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000008U, 0x80000008U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x20000000U, 0x00000200U, 0x00000000U, 0x00000800U, 0x08000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000020U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x20000000U, 0x00800000U, 0x00000000U, 0x00000000U, 0x00000200U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00800000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x20000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00020000U, 0x00000000U, 0x00000000U, 0x02000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00008000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000800U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00002000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00002000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x20000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x08000000U, 0x00000000U, 0x02000000U, 0x00000000U,
+ 0x00002000U, 0x00000000U, 0x00000000U, 0x80000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000080U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000020U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000008U, 0x00000000U,
+ 0x00000000U, 0x00080000U, 0x00000200U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000800U, 0x00000000U, 0x00000008U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00020000U, 0x02000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00820000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00080000U, 0x00000002U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000002U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000800U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x02000000U, 0xa02a0282U, 0x2aa00002U, 0x000808a8U,
+ 0x28228088U, 0x80080080U, 0xa28a02a2U, 0x208a0a20U, 0xaa00a2aaU,
+ 0x080aa2a2U, 0x0880808aU, 0x8082802aU, 0x82a0a282U, 0x80a20880U,
+ 0x022a0088U, 0xaa08888aU, 0x88a082a8U, 0x022808a0U, 0x82800a80U,
+ 0x0a280022U, 0xa2288022U, 0x8a0a08aaU, 0x828a0a2aU, 0x8a08a00aU,
+ 0x8aaa8088U, 0x08222822U, 0x22088a02U, 0xa082a802U, 0xa8200a08U,
+ 0x8a088020U, 0x2a00080aU, 0x80202208U, 0x02822802U, 0x288202a0U,
+ 0x82088808U, 0x08020a82U, 0x8a0882a2U, 0x2a80a200U, 0x8022228aU,
+ 0xaa0aa280U, 0x80208000U, 0x8282aa82U, 0x0aa8882aU, 0xa0020088U,
+ 0xa2288aa8U, 0x822288aaU, 0xa20a88aaU, 0x00888282U, 0x20a00028U,
+ 0xa8000080U, 0x20a08a28U, 0x00a888a0U, 0x00002a88U, 0x2a828aaaU,
+ 0x82282220U, 0x28828200U, 0x0002220aU, 0x22288a00U, 0x2a082008U,
+ 0x08aaa888U, 0xa2828a20U, 0xa2aaa0a2U, 0x220a2028U, 0xa820a080U,
+ 0x08aaa2a8U, 0x820a80a2U, 0x02a8880aU, 0x822a0000U, 0x28808a02U,
+ 0xa2228020U, 0xaaaa0280U, 0x0a2802aaU, 0x0aaa8008U, 0x088a020aU,
+ 0x88002080U, 0x02822020U, 0x22a08aaaU, 0x80282a00U, 0xa0000088U,
+ 0x8a880880U, 0x22a08a08U, 0x8aaa8208U, 0x02a08802U, 0x00a0a8a8U,
+ 0x8aa22aaaU, 0x0aa282a8U, 0x8020a88aU, 0x88880a08U, 0xa02aa082U,
+ 0xa00a2088U, 0x000022a0U, 0x2a82288aU, 0xa02200a0U, 0x00802282U,
+ 0xa8a828a0U, 0x82a22820U, 0xa2a8a888U, 0x00822808U, 0x0220028aU,
+ 0xa8220202U, 0x8882000aU, 0x22a8a0a0U, 0x2808a808U, 0x80002a02U,
+ 0xa0aa2220U, 0x2a028aa2U, 0x08822a08U, 0x080a0000U, 0x08820a00U,
+ 0x82a0008aU, 0x80000080U, 0x02a00880U, 0x880a2802U, 0x2000a208U,
+ 0x20aa8a00U, 0xa2a80280U, 0x88082a02U, 0x0aaa8882U, 0x2282aaa0U,
+ 0xa0280800U, 0x02aa0888U, 0x08a02828U, 0x082280a0U, 0x02280a22U,
+ 0x0022a2a8U, 0x82002002U, 0x88aa8a28U, 0x2282aa82U, 0x088088a0U,
+ 0x0a88aa88U, 0x8a882a22U, 0x2800a022U, 0x22a028a8U, 0x2aa8a02aU,
+ 0x028a2820U, 0x22a800a8U, 0x28820a82U, 0x28a08882U, 0x08200a02U,
+ 0x0020082aU, 0x22a0aa82U, 0x080808a8U, 0x020a2a20U, 0x808aa220U,
+ 0x0aa80000U, 0x00a2a02aU, 0x2088a288U, 0x2aa80aa0U, 0x80828820U,
+ 0x80000802U, 0x2aa80008U, 0x8280208aU, 0x220002a0U, 0xaa80a802U,
+ 0xa0080a00U, 0x088082aaU, 0x88000800U, 0x822a22aaU, 0x822aa88aU,
+ 0x0282a288U, 0xaaa22a82U, 0x282aa222U, 0x80282aa0U, 0x28a088a0U,
+ 0x80000822U, 0xa0028820U, 0x000a0a00U, 0x222882a0U, 0x08aa2a02U,
+ 0x08080aa8U, 0x0a20a080U, 0x8a80a000U, 0xa2802a20U, 0x20822aa8U,
+ 0x8a8aa028U, 0x08828802U, 0xaa2020a8U, 0x280880a2U, 0x00002a8aU,
+ 0x08008022U, 0x20828802U, 0x82a28280U, 0xa8220088U, 0x20020008U,
+ 0x8aaa2a2aU, 0x2aa28022U, 0x0288880aU, 0xaa02a82aU, 0xa82aa2a2U,
+ 0x2a8a2002U, 0x80000022U, 0x0a22a822U, 0x0888a280U, 0x20a0aa28U,
+ 0xaa008088U, 0x8828028aU, 0xa80822a8U, 0x0808a82aU, 0x2aa00880U,
+ 0x82aa8080U, 0xaa208a80U, 0xa0800022U, 0x02828880U, 0x222a2000U,
+ 0xa228a02aU, 0x08088088U, 0x20800020U, 0x0288028aU, 0x0a20a8a2U,
+ 0x002a2a8aU, 0x00002020U, 0x800080aaU, 0xaa2a0820U, 0x2800222aU,
+ 0x22a20008U, 0x80088880U, 0x80200a20U, 0x08a82220U, 0x00000882U,
+ 0x00800020U, 0xaaa80a00U, 0xa2a0a880U, 0x82888282U, 0x28820802U,
+ 0xa082808aU, 0x282220a8U, 0x8222a082U, 0x8280222aU, 0x20008020U,
+ 0x2a880008U, 0x8a0aaaa0U, 0x02882080U, 0x8200a820U, 0x20008822U,
+ 0xaa8808aaU, 0x82888aa0U, 0x88202088U, 0x0a2a22aaU, 0x0a0800a0U,
+ 0xa8800aa8U, 0xaa880808U, 0xa022a0a0U, 0x2a022802U, 0xaa2a8a00U,
+ 0xaaa020a2U, 0xa2088a80U, 0x08080202U, 0x8000a028U, 0x088a82a0U,
+ 0x8802888aU, 0x00aaa8aaU, 0x2000a008U, 0x000a2a0aU, 0x200a0280U,
+ 0x288a8200U, 0x8a82a002U, 0xa28228aaU, 0x22802800U, 0x20a00000U,
+ 0xaa20288aU, 0x2082a80aU, 0x2202a202U, 0x00208882U, 0x2a082802U,
+ 0xa80008a0U, 0x08002800U, 0x00aa880aU, 0xa2200080U, 0x8208aaa8U,
+ 0x0a880082U, 0xa88a00a0U, 0x2a002828U, 0x0a888822U, 0xa8000a20U,
+ 0xa880a282U, 0x88028a00U, 0x8a8a2aa8U, 0x8a20880aU, 0xaaa800a2U,
+ 0x00228a8aU, 0xa22a0a28U, 0x08082822U, 0x02882002U, 0x22008aa8U,
+ 0x208aa00aU, 0x2a00a02aU, 0x28082280U, 0x2a202aaaU, 0x82282020U,
+ 0x22a88888U, 0xa2aa8800U, 0x08a82288U, 0x200a202aU, 0x282800a8U,
+ 0x88002008U, 0xa288aa2aU, 0xaa28a028U, 0xa0820a82U, 0xaa20aa00U,
+ 0x8882aa82U, 0x8a2aa080U, 0x2aa0200aU, 0x82082280U, 0x82a808a0U,
+ 0x00a00082U, 0x2000a08aU, 0xaaa2a002U, 0xaaa0a000U, 0x8208008aU,
+ 0x20082200U, 0x28a88000U, 0x0a2a0208U, 0x88a0a22aU, 0x2a8a2828U,
+ 0x28828a80U, 0x20802808U, 0xa028a222U, 0xaaa28808U, 0x002aa020U,
+ 0x02882a00U, 0x080808a0U, 0x82800002U, 0xa080a8a2U, 0x08828882U,
+ 0x22a0a0a0U, 0x2200a200U, 0x280aaaa2U, 0x28aaa022U, 0xa2a80080U,
+ 0xaa82280aU, 0xa0280220U, 0x20882808U, 0x2280a880U, 0x0208aa28U,
+ 0x8a2a8a2aU, 0xaa00228aU, 0x88820a00U, 0x8000a8a0U, 0x0a000a8aU,
+ 0x20a88aaaU, 0xaaa22aa0U, 0xa8088a2aU, 0xa2a00088U, 0x2a280aa2U,
+ 0x822a0aa0U, 0x802a2282U, 0x88028228U, 0x080aa008U, 0x080a080aU,
+ 0x022022a8U, 0x2a0280a0U, 0x228a2028U, 0xaa2282a8U, 0x0a2a8802U,
+ 0x88aaa2aaU, 0xa0222aaaU, 0x828a2a22U, 0x202a28aaU, 0x020822a0U,
+ 0xa088a2a0U, 0x20a20a08U, 0x0088880aU, 0xa800aa00U, 0x2aa08828U,
+ 0x02a800a2U, 0x8a008000U, 0x00002020U, 0xa8202002U, 0x22a2a822U,
+ 0x02aaaa28U, 0xa0888880U, 0x20202882U, 0x28aa80aaU, 0xaa20828aU,
+ 0x2a882a28U, 0xa88aa228U, 0x28a820a0U, 0x280022a0U, 0xaa28828aU,
+ 0x2008a220U, 0x0082a802U, 0x0aaa2800U, 0x08200a8aU, 0x2a208080U,
+ 0x0280a2a2U, 0x02a82200U, 0x22028288U, 0x0a28a220U, 0x82080288U,
+ 0xa8200888U, 0x82822a00U, 0xa828022aU, 0x008a8282U, 0xa0280228U,
+ 0x22a0a228U, 0x20202082U, 0xa0208200U, 0x2a08a802U, 0x880880a8U,
+ 0xaa888880U, 0x288a8a20U, 0x00a2a80aU, 0xa882a82aU, 0x80880a80U,
+ 0x00aa2088U, 0x28a2a0aaU, 0xaaa80a88U, 0xa828a222U, 0x220aa8a2U,
+ 0x0802aaa2U, 0x02028080U, 0x88aaaaa8U, 0x2aaa0800U, 0x0088aaaaU,
+ 0x2a222828U, 0x8a02aaa0U, 0x22aa8280U, 0x22088080U, 0xa28802a0U,
+ 0x02000a2aU, 0x280002a0U, 0x02a20a2aU, 0x8a20a288U, 0xa0202288U,
+ 0x8a200222U, 0xaaa2aa8aU, 0x02822a28U, 0x82220220U, 0x20a28008U,
+ 0x08800a82U, 0xaa8aa2a8U, 0x200a82a8U, 0x80822082U, 0x0a8a82a8U,
+ 0xaaaaa8aaU, 0x8208a0a2U, 0xa8002820U, 0x002a280aU, 0x20a2a082U,
+ 0x2aa8aa0aU, 0x202000aaU, 0x8208a888U, 0x0aa0a202U, 0x02a88a0aU,
+ 0x2a22020aU, 0x0a220aa8U, 0x2a08aa22U, 0xaa882280U, 0xa0888a28U,
+ 0x0a2a00a8U, 0x028a88aaU, 0xa80820a2U, 0x8802aa0aU, 0x82aa8208U,
+ 0x8888288aU, 0x808280a8U, 0x08008aaaU, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaa2aU,
+ 0xa2aaaaaaU, 0xaaa2aaaaU, 0x82aaaaaaU, 0xaaa2aaaaU, 0xaaaaa82aU,
+ 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaaa8aU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0x2a2aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aa2U,
+ 0xa8aaaaaaU, 0xaaaa2aaaU, 0xa8aaa8aaU, 0x0aaaa28aU, 0xaaa2aa82U,
+ 0x2a8aaaaaU, 0xaaaaa8a8U, 0xaaaaa2aaU, 0xaa2aaaaaU, 0x2aaaaaaaU,
+ 0xaaaaaaaaU, 0xaa2a8aaaU, 0xaaaa2aaaU, 0xa8aaaaaaU, 0xaaaaaaaaU,
+ 0xaa8aa2a2U, 0xaaa2aaaaU, 0xaa2aaaaaU, 0xa8aa8aaaU, 0xaaaaaaaaU,
+ 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU,
+ 0xaaaaaaaaU, 0x8aaaa2aaU, 0xaaaaa88aU, 0x8aaaa8aaU, 0xaaaaaaaaU,
+ 0xaaa8aaaaU, 0xaa0aaaaaU, 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaa8aaaaaU, 0xa8aaaaaaU, 0x8aaaaaaaU, 0xaaaaa8aaU,
+ 0xaaaaa88aU, 0x2aaaaaaaU, 0xaaaa2aaaU, 0xaaaa2aaaU, 0xaaaaaaaaU,
+ 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa2aaU,
+ 0xaaaaa2aaU, 0x8aaaaaaaU, 0x8aaaaaaaU, 0xaaaaa8a2U, 0xaaaaaaaaU,
+ 0xaa8aaaaaU, 0xaaaaaa28U, 0xaaaaaaaaU, 0xaaa8aaaaU, 0xaaaa2aa2U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaa8aU, 0x8a8aaaaaU, 0xa0aa2aaaU,
+ 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa28a2aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa88aU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaa2aU, 0xaaa8a2aaU, 0xaaaaaaaaU, 0xaaaa8aaaU,
+ 0xaaaaaaaaU, 0xaaa8aaaaU, 0x28a8aaaaU, 0x2aaaaaaaU, 0xaaa8aaaaU,
+ 0xaaaaaaa2U, 0xaaaaaaaaU, 0x0aaaa882U, 0xaaaaaaa2U, 0xaaa2aa8aU,
+ 0xaaaaaa2aU, 0xaa2aaaaaU, 0xa8aaaaa2U, 0xaaaaaaaaU, 0x82aaaaaaU,
+ 0xaaaaa08aU, 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x2aaaaaaaU, 0x0a2aa22aU, 0xaaaaaaaaU, 0x2aaaaaaaU,
+ 0xaaa2aaa8U, 0xaaaaaaa2U, 0xaaa2aaaaU, 0x2aaaaaaaU, 0xaa8aaaaaU,
+ 0xaaaaaaaaU, 0xaaa2aa2aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU,
+ 0xaaaaaaaaU, 0xaaa8aa8aU, 0xaaaaaa8aU, 0xa28aaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaa8aaaU,
+ 0xaaaaaa8aU, 0x2aaaaaaaU, 0xaaaa2aaaU, 0xaaaaa2aaU, 0xaaa8aaaaU,
+ 0xaaaaaaa2U, 0x2a0aaaaaU, 0x2aaa8aaaU, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaa2aa2aaU, 0xa8a8a2aaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaa22aaaaU, 0xaaaaaaaaU, 0x2aaa2aaaU, 0xaaaaaaaaU,
+ 0x8aaaaaaaU, 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa8aU,
+ 0xa8aaa8aaU, 0xaaaaa22aU, 0xaaaaa2aaU, 0xaaaaaaaaU, 0xaaaaa2aaU,
+ 0xaaaaaaaaU, 0xaaa8aaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaa2a2U, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaa8aaa8U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x2aaaa8aaU, 0xaaaaaaaaU, 0xaa8aa2aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaa8aaaa0U, 0xaaa2aaaaU, 0xaaaaaaaaU, 0x2aa8aaaaU,
+ 0xaaaa2a2aU, 0xaa2a8aaaU, 0xaaaaaaaaU, 0xaaa8aaaaU, 0xaaaaaaaaU,
+ 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaaaaaa2aU, 0xa8aaaaa8U, 0xaaaaa2a8U,
+ 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa8U, 0xaa88aaaaU, 0xaaaaa22aU, 0xaa8aaaaaU, 0xaaaaaaa8U,
+ 0xa2aaa0aaU, 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa82aaaaaU,
+ 0x88aaaaaaU, 0xaaaaa8aaU, 0xaaa2aaaaU, 0xaaaaa222U, 0xaaaa2aaaU,
+ 0xaaaa2aaaU, 0xaaaaa2aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU,
+ 0xaa0aaaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU, 0xa82aaaaaU, 0xaaaaaaaaU,
+ 0x2aaa8aaaU, 0xaa2aaaa2U, 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaa2aaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa82aaaaU, 0xaaa22aaaU, 0x2aaaa8aaU,
+ 0xaaa88aaaU, 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xa8aaaaaaU, 0xaaaaa2a2U, 0xaaaaaaaaU, 0x8aaaaaa2U, 0xaaaaa2a2U,
+ 0x2a8a2a8aU, 0xaaa8aaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xa8aaaaaaU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaa2aaU, 0xaa2aaaaaU, 0xaaaa8aaaU,
+ 0x8aa2a2aaU, 0xaaa8aaaaU, 0xaaaa0aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa8aaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa8aaaaU, 0xaaaaaaaaU,
+ 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa2aU,
+ 0xaaaaaaaaU, 0x82aaa8aaU, 0xaaaaaaaaU, 0xa2aaaaaaU, 0x2aaaaaaaU,
+ 0xaa2aaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xa2aaa0aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaa8U,
+ 0xaaaa2aaaU, 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0x8aaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa2aU, 0xaaaaaaaaU,
+ 0xa2aa8aaaU, 0xaaaaaa2aU, 0x2aaaaa2aU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa22aa2aU,
+ 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaa2aaaU, 0xaaaaaaaaU, 0xa2aaaa2aU,
+ 0xaaaaaaaaU, 0x2aa8aaaaU, 0xa8aaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0xaaaa8aaaU, 0xaaaa0aaaU, 0xaaaa2aaaU, 0xa2aa8aaaU, 0xaaaaaaaaU,
+ 0x8aaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaa8a2aaaU, 0xaaa8aaaaU,
+ 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaa8aU, 0xaaaaaaa8U, 0x2aaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU,
+ 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xa8aaaa8aU, 0x2a8aaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaa8aaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xa8aaaaaaU, 0x2aa2aaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaa82aU,
+ 0x2aaaaaa2U, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU,
+ 0xa8aaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaaaa28aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xa2aaaaaaU, 0x8aaaaa2aU,
+ 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaaaaa828U, 0xa8aaaaaaU, 0xaaaa0aa2U,
+ 0xaa2a8aaaU, 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0x2aaa2aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa88U,
+ 0xaaaaaaa0U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa8U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaaaU, 0x88aa8aaaU,
+ 0xaa8a2aa8U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x8aaaa8aaU, 0xaaaaaaa2U,
+ 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaa2aa8aU, 0xaaaaaa2aU, 0xaaaaaaaaU, 0xaaaaaa8aU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaa2aaaaaU, 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaa2aa2aaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaa8a2aaU, 0x2aaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa8aU, 0xaaa2aaa2U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aa0aaU, 0xaaa8aa8aU, 0xaaaaaaaaU,
+ 0xaa8aaaaaU, 0x88aaaaaaU, 0x8a28aaaaU, 0xaaaaaaaaU, 0xaaaaaaa8U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2a8aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa2U, 0x8aaaa8aaU,
+ 0xaa2aaaaaU, 0x2aaaaaaaU, 0xaaaaaa2aU, 0xaaaaa8aaU, 0x28aaaaaaU,
+ 0xaaaaa8aaU, 0xaaa8aaaaU, 0x0aaaa02aU, 0xaaaaaaaaU, 0x8aaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaa2U, 0xaaaaa88aU, 0xaaaaaaaaU, 0x2aaa2aaaU,
+ 0xaaaa2aaaU, 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaa2aaaaU, 0xa8aa2a2aU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x8aa2aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa8aaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU,
+ 0xaaaa2aaaU, 0x002aaaaaU, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0xaaaa8a00U, 0x8aaaaa2aU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xa8aaaaa2U, 0xa2aaaaa2U, 0xaaaaaaaaU, 0xaaaaaa8aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaa8aa8aaU, 0xaaaaaaaaU, 0xa8aaaaaaU,
+ 0xaaa88aaaU, 0x2aaaaaaaU, 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaa02U, 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU, 0xaaaaa2aaU, 0x0aa2aaaaU,
+ 0xaaaaaaaaU, 0xaaa22aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa8aaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa28aU, 0xaa2aaa8aU,
+ 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aa2aaaU,
+ 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa2U, 0x2aaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0x8aaaaaaaU, 0xa82aaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa2a8aaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaa2aU, 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa8aaaaU, 0x2aaaaaaaU,
+ 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU,
+ 0xaa2aa2aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaa2aaaU,
+ 0xaaaaaaaaU, 0xaaaaaa2aU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaa22aaaU,
+ 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa2aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa8aa2aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaa8aa8U, 0xaaaaaaa2U,
+ 0xaaaaa2aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaa2a2U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8a2a2a0U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaa2aaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaaa2aU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaa2aaU, 0xaaaa2a28U,
+ 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaa8aaaaU, 0xaaaaaa8aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa88U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaaaU,
+ 0xa2aaaa2aU, 0x0aaaa8aaU, 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU,
+ 0xaaaaaaaaU, 0xaaaa88aaU, 0xaaaaaaaaU, 0xaaaaaa2aU, 0x8aaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaa2aaaaU, 0xaaa8aaa8U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU,
+ 0xaaaa2aa8U, 0xaaaaaaa2U, 0xaa2aaaaaU, 0xaaaaaaaaU, 0xaaa22aaaU,
+ 0x2aaaaa2aU, 0xaaaaaaa8U, 0xaaa2a2aaU, 0xaaaaaaaaU, 0xaaaaa2aaU,
+ 0xaaaaaaaaU, 0xa28aaaaaU, 0x22aaaaaaU, 0xaaaaaaaaU, 0xaaaaaa2aU,
+ 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa8U, 0xaaaaaaa8U, 0xaaaaa2aaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa82aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaa8aa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaa8aaU, 0x8aaa8aaaU, 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa8aU, 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8a8aaaaU,
+ 0xaaaaaaa8U, 0xaaaaa2a8U, 0xa2a8aa28U, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaa8aaaaU, 0xaaa2aaaaU,
+ 0xaaaaa8aaU, 0xaaaaaa2aU, 0xa2aaaaa8U, 0x2aaaaa2aU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2a22aaa2U, 0xaaaaa2aaU, 0xaaaaa2aaU,
+ 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaa2aaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaa8aa2aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa22aaaaaU, 0xaaaaaaa2U,
+ 0xaaaaa8aaU, 0xaaa2a2aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU,
+ 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaa8aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa8U, 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaa2aaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaa2a2aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xa2aaaaaaU,
+ 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa8aU,
+ 0xaaaaaaaaU, 0xaaa2a8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU,
+ 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0x2aaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaa2U, 0xaaaaaaaaU, 0xa2aaaaaaU,
+ 0xaaaaa2aaU, 0xaaaaa8aaU, 0xaaaa28aaU, 0xaaaaaaaaU, 0xaaaa2aaaU,
+ 0xaa2aaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU,
+ 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaaaU,
+ 0x0000aaaaU, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0xaaaa0000U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaa8aaaaaU, 0xaaaaaaa2U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa8aaaU,
+ 0xaaaaaaa2U, 0xa2aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa8aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0xaa2a2aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaaaaa2U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa8aU, 0xa2aaaaaaU, 0xaaaaa8aaU, 0xaaaaa2aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaa2aaa2aU, 0xaaa2aaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaa2aa88aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU,
+ 0xaaaaaaaaU, 0xaa2aaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU,
+ 0x2aaaaaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa8aU, 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaa88aaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaa2aU, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaa8aaU,
+ 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa8U,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU, 0x8aaa2aaaU,
+ 0xaaa2aaaaU, 0xaaaaa88aU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa8aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU,
+ 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU, 0xa8aaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8a8aaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU,
+ 0xaa2aaaaaU, 0x2aaaaaaaU, 0xaaaaaaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaa8a8U, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaa8aaaU, 0xaaaaaaaaU,
+ 0xaaa8aaa8U, 0xaaaaaaaaU, 0xaaa2aaaaU, 0xa2aaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU,
+ 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaa2aaaaU, 0xaaaaaaa2U, 0x2aa8aaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa82U, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU, 0xaaaaa2aaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaa2aaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU,
+ 0xaaaaaaaaU, 0xaaaa8aaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa2aU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x8aaaaaaaU,
+ 0xaa8aaaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa8a8U, 0xaaa88aaaU, 0xaaaa2aaaU, 0xaaaaaaaaU,
+ 0xa8aaaaaaU, 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU,
+ 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa2aaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaa2aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaa2U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU,
+ 0x2aaaa80aU, 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaa8aaU, 0xaaaaaaaaU, 0xaaaa2aaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaa2aaU,
+ 0xaaaaaaa2U, 0xaa2aaaaaU, 0xa8aaaaaaU, 0x2aa2aaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0x0aaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa2aU, 0xaaaaa8a8U, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaa8aU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x2aaaaaaaU, 0xaaaaa8aaU,
+ 0xaaa8aaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa8U, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0x8aaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaa0aaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaa2U,
+ 0xaaaaaaaaU, 0xaa8aa8aaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaa8aaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaa2aU, 0xaaaaaaaaU, 0xaaaa8aaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xa8aaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU, 0xaaaaaaaaU,
+ 0xaaaaaaaaU, 0xaaaaaaaaU, 0x0000002aU, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+ 0x00000000U,
+};
+
+/*
+ * Mapping from Unicode back to CNS 11643.
+ *
+ * This inverse is done the same way the SBCS ones are done: I
+ * provide a list of CNS 11643 positions, sorted into ascending
+ * order of their Unicode values. Then we can binary-search through
+ * this list, referring to the above table for each comparison, to
+ * find the coordinates for a given code point.
+ *
+ * Generated by running the following sh+Perl over CNS.TXT:
+
+cat CNS.TXT | \
+perl -ne '$a{hex$4}=[$1,hex$2,hex$3]if/^0x([1-7])(\S\S)(\S\S)\s+0x(\S+)\s/;' \
+ -e 'END {$o=" ";for$k(sort{$a<=>$b}keys %a){($p,$r,$c)=@{$a{$k}}; ' \
+ -e '$o .= $C; $C = ", "; (print "$o\n"), $o=" " if length $o > 65;' \
+ -e '$o.=sprintf"%d",(($p-1)*94+($r-33))*94+($c-33);} print "$o\n"; }'
+
+ */
+
+static const unsigned short cns11643_backward[] = {
+ 79, 181, 113, 16, 111, 112, 454, 452, 453, 455, 451, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 24, 22, 154, 67, 68, 69, 70,
+ 12, 11, 73, 74, 78, 96, 167, 95, 168, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 490, 491, 492, 493, 494, 495, 496, 497,
+ 498, 499, 149, 146, 148, 147, 150, 151, 153, 152, 158, 114, 121,
+ 134, 133, 130, 131, 138, 139, 141, 140, 129, 122, 120, 123, 118,
+ 119, 132, 135, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109,
+ 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120,
+ 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131,
+ 3132, 3133, 3134, 470, 471, 472, 473, 474, 475, 476, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 212, 213,
+ 215, 216, 217, 218, 210, 209, 208, 207, 206, 223, 224, 226, 225,
+ 219, 220, 222, 221, 231, 232, 233, 191, 192, 193, 194, 195, 196,
+ 197, 198, 205, 204, 203, 202, 201, 200, 199, 211, 214, 91, 90,
+ 84, 83, 93, 92, 89, 88, 81, 85, 82, 227, 228, 230, 229, 87, 86,
+ 145, 142, 144, 143, 564, 565, 566, 567, 568, 569, 570, 572, 573,
+ 574, 575, 576, 577, 579, 580, 581, 582, 584, 585, 586, 587, 588,
+ 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627,
+ 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679,
+ 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692,
+ 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718,
+ 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731,
+ 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
+ 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757,
+ 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770,
+ 771, 772, 773, 774, 775, 776, 0, 2, 3, 80, 49, 50, 45, 46, 53,
+ 54, 57, 58, 41, 42, 162, 37, 38, 71, 72, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 5, 414, 415, 416, 417, 418,
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 94, 178, 179, 173, 174, 175, 177,
+ 180, 176, 137, 136, 172, 44285, 26605, 44195, 44182, 26562, 26717,
+ 27186, 19484, 20004, 18268, 18405, 17862, 26718, 26903, 20605,
+ 26564, 17756, 17749, 17752, 17754, 44413, 17846, 26618, 17838,
+ 17839, 35551, 17995, 17992, 17998, 44636, 18273, 35724, 26908,
+ 26911, 18272, 35730, 26910, 26907, 18283, 18628, 45459, 27190,
+ 18627, 36002, 27191, 18621, 27188, 27193, 36359, 19498, 19037,
+ 27516, 46083, 27954, 19487, 19497, 27959, 28505, 20010, 28499,
+ 28504, 47710, 48030, 20011, 20606, 20609, 20612, 29057, 29058,
+ 29053, 29055, 38688, 29632, 29628, 29623, 21143, 49620, 29624,
+ 21138, 30888, 21137, 21134, 21142, 29627, 30264, 21625, 21624,
+ 30266, 21623, 21627, 21629, 22107, 30892, 40100, 30890, 22496,
+ 22798, 31936, 31937, 32376, 32726, 23236, 23234, 57705, 58135,
+ 33402, 23715, 26620, 27520, 22799, 17757, 17854, 18006, 35554,
+ 44646, 44648, 18007, 18635, 57180, 18561, 27961, 36853, 28510,
+ 29063, 33403, 18637, 20015, 30269, 17719, 17860, 18009, 35733,
+ 18290, 18289, 18291, 27200, 18639, 19048, 19047, 27962, 20018,
+ 20019, 29065, 21144, 36856, 26572, 44306, 17765, 26629, 35453,
+ 26725, 26726, 26925, 26927, 26923, 26922, 18644, 18648, 18645,
+ 36375, 27968, 19058, 19060, 27972, 27973, 27967, 36859, 27969,
+ 27974, 20025, 48673, 28515, 28518, 20023, 38055, 20619, 29642,
+ 29644, 29643, 29637, 21148, 21146, 29640, 29639, 21147, 30270,
+ 30897, 30896, 30898, 41386, 31471, 55834, 32377, 32727, 26575,
+ 26633, 26731, 18021, 26930, 45010, 45502, 27532, 19062, 27975,
+ 28524, 21151, 31474, 22500, 31475, 40110, 31943, 27977, 28526,
+ 38063, 45013, 19508, 42857, 26738, 44673, 27534, 20026, 48683,
+ 29075, 38709, 33702, 44671, 28529, 17727, 44448, 17871, 48687,
+ 18303, 26518, 44206, 44905, 26937, 17875, 35465, 17873, 18027,
+ 18026, 18025, 18307, 45035, 18655, 19067, 27537, 19068, 28530,
+ 48693, 39402, 21153, 30274, 23673, 17732, 19069, 46876, 19511,
+ 30276, 35376, 17734, 17877, 26941, 27220, 20579, 21156, 30133,
+ 26582, 17781, 17777, 17883, 17881, 18029, 26744, 18028, 18034,
+ 26747, 26752, 18035, 26746, 18032, 18031, 18043, 18052, 18325,
+ 18312, 26944, 18321, 35753, 45050, 18661, 18675, 18674, 18677,
+ 18669, 27222, 27225, 18665, 27546, 19080, 27541, 19072, 19079,
+ 27542, 27540, 46152, 19085, 36412, 19518, 19526, 27991, 37397,
+ 19524, 19517, 27997, 19515, 28000, 27998, 27994, 27993, 19884,
+ 27996, 37403, 20039, 28552, 20042, 20033, 28543, 28538, 20046,
+ 20051, 20034, 28545, 20050, 28544, 20044, 47776, 37406, 37407,
+ 20037, 28537, 28550, 28548, 20054, 37395, 20052, 20047, 38094,
+ 29087, 29083, 20632, 38098, 29084, 29089, 20630, 20633, 48709,
+ 29659, 21167, 21164, 21162, 29656, 29651, 29662, 21160, 21645,
+ 29660, 29663, 29658, 38729, 30283, 30279, 21653, 30280, 21641,
+ 53061, 30906, 30907, 22122, 30902, 30905, 30910, 22117, 22115,
+ 55106, 31477, 22503, 31478, 30908, 41391, 31945, 22801, 41396,
+ 32379, 41980, 42382, 23238, 23412, 33011, 23607, 23606, 33633,
+ 59140, 17783, 17766, 17888, 35770, 18329, 18679, 19087, 29665,
+ 32729, 17784, 18061, 26758, 18072, 18073, 26757, 18076, 18078,
+ 18074, 18067, 18336, 26960, 18340, 18341, 18697, 45564, 18695,
+ 18696, 18694, 18690, 19090, 27556, 27558, 19094, 19093, 19095,
+ 19098, 19533, 19534, 19540, 19531, 28012, 28556, 20059, 28559,
+ 20070, 47797, 20061, 20066, 29102, 29104, 20636, 20638, 29099,
+ 29101, 29671, 29670, 29668, 21176, 29672, 21174, 53089, 21669,
+ 21659, 30286, 21661, 21665, 30277, 22125, 30919, 22128, 22123,
+ 22124, 22127, 22126, 31487, 22510, 22507, 31486, 55851, 22808,
+ 56529, 42385, 23675, 33635, 37439, 21840, 18699, 27230, 35775,
+ 28568, 29673, 21188, 31955, 17791, 17897, 17899, 26764, 18089,
+ 26964, 35776, 26970, 26966, 26971, 18704, 28016, 46939, 19547,
+ 20074, 29105, 22119, 17755, 17903, 17901, 26655, 26658, 26654,
+ 17900, 18097, 18102, 18095, 18094, 18092, 18099, 18346, 18356,
+ 26974, 18363, 18347, 18355, 18364, 18368, 18349, 26978, 18365,
+ 18359, 18351, 18357, 35780, 18354, 18345, 27242, 27238, 18705,
+ 18707, 27236, 19112, 19115, 19110, 19122, 19120, 27568, 19116,
+ 19129, 19125, 19117, 27572, 27567, 19106, 27569, 19130, 19119,
+ 19114, 19107, 28020, 19557, 19564, 19552, 19573, 28019, 19563,
+ 19554, 19556, 20102, 20092, 20105, 20089, 20107, 20097, 20095,
+ 20090, 37457, 20099, 37449, 28575, 20100, 20084, 28574, 20101,
+ 20082, 20098, 20094, 20093, 29108, 20651, 29110, 20663, 20662,
+ 20657, 20652, 29113, 20654, 29112, 20665, 20660, 20664, 20661,
+ 20658, 21192, 29680, 29685, 29681, 29679, 21190, 21199, 21198,
+ 29684, 29686, 21194, 21195, 29682, 30295, 30293, 21676, 21674,
+ 30299, 21672, 22139, 22142, 30926, 31491, 31493, 22810, 22811,
+ 32387, 41985, 23045, 23047, 23240, 32732, 23241, 33016, 33250,
+ 23753, 23754, 17905, 44737, 26772, 18370, 27245, 27574, 19133,
+ 20114, 29116, 54156, 23716, 17793, 17906, 44738, 18104, 26775,
+ 18106, 44739, 18376, 36079, 18721, 18722, 18724, 27575, 36469,
+ 46214, 19585, 19580, 19581, 28025, 46963, 19583, 20116, 28577,
+ 29119, 29121, 29124, 20672, 29693, 29694, 21683, 29696, 30302,
+ 30304, 30305, 31958, 23416, 59146, 26776, 26983, 46225, 20117,
+ 27585, 46973, 29697, 39452, 26662, 26779, 26985, 26984, 27249,
+ 27250, 27586, 36932, 28030, 36930, 28029, 28583, 28584, 29126,
+ 29698, 17797, 17910, 26987, 18379, 18380, 27254, 27253, 18730,
+ 18729, 18727, 27587, 46980, 19588, 28586, 37481, 29702, 30309,
+ 23052, 17737, 26782, 17799, 17800, 17798, 17801, 17913, 26666,
+ 35486, 26786, 35485, 17914, 17915, 26783, 26784, 18111, 35611,
+ 35615, 18115, 18116, 26781, 18388, 45116, 26994, 26995, 26991,
+ 18383, 45111, 18386, 18387, 35797, 18731, 27256, 27600, 27592,
+ 27590, 19145, 27604, 27594, 19141, 27599, 27603, 27596, 19142,
+ 46245, 36485, 19150, 27593, 19605, 19592, 28034, 19595, 28040,
+ 46990, 19596, 28036, 46993, 19599, 19602, 20130, 20133, 20124,
+ 28593, 28595, 20136, 29127, 20131, 20127, 29131, 29128, 29139,
+ 38146, 29140, 48805, 20676, 29132, 29705, 49761, 29716, 29713,
+ 29704, 21202, 29707, 21208, 21205, 29717, 21204, 30315, 30311,
+ 39461, 21685, 39457, 30310, 30318, 21687, 30314, 30312, 21684,
+ 30319, 30931, 30932, 31497, 30930, 40159, 22146, 54187, 22523,
+ 22519, 40823, 31496, 22521, 55871, 32393, 41990, 41991, 33019,
+ 23417, 33253, 43832, 17918, 44257, 20139, 30320, 17802, 28045,
+ 17803, 26670, 26671, 17920, 26791, 26793, 18120, 26790, 18121,
+ 26999, 27000, 27264, 26794, 27261, 27263, 45656, 18744, 27262,
+ 27260, 27611, 27613, 28050, 28051, 28048, 28052, 19611, 28602,
+ 28597, 28604, 28601, 20143, 28603, 20140, 28600, 29147, 29142,
+ 29146, 29145, 29148, 29722, 29721, 29720, 29718, 21697, 21698,
+ 30934, 31502, 31500, 32738, 32737, 23535, 33256, 47881, 21211,
+ 30936, 17923, 17922, 17921, 18123, 44782, 27001, 27006, 27004,
+ 35819, 27005, 18397, 27003, 18399, 18746, 18747, 27269, 36101,
+ 27268, 27267, 27616, 27618, 27617, 19158, 19613, 28057, 28055,
+ 28058, 19612, 37514, 28607, 28608, 20148, 38164, 29725, 21212,
+ 29728, 29729, 30326, 30327, 21700, 22150, 30937, 30939, 40171,
+ 32397, 32739, 26798, 18403, 21215, 54202, 27270, 29152, 44268,
+ 26675, 17926, 17927, 18127, 18408, 27009, 27010, 18751, 27272,
+ 45679, 27273, 18752, 27622, 36979, 28060, 27623, 20153, 20150,
+ 38172, 29154, 29153, 48830, 30328, 30330, 23419, 27011, 30942,
+ 44541, 18412, 27012, 18411, 19619, 20155, 20156, 29730, 30332,
+ 22152, 17808, 45149, 18413, 27277, 27279, 18755, 36110, 36114,
+ 18756, 45688, 36510, 28063, 19621, 19622, 28616, 20157, 28615,
+ 29158, 38800, 29732, 49796, 22153, 30945, 31504, 44273, 17928,
+ 17931, 26806, 35508, 26681, 18420, 18422, 18136, 26803, 18421,
+ 26805, 26808, 18130, 26804, 26807, 18145, 18418, 27280, 27282,
+ 27022, 18762, 18427, 27017, 18426, 27023, 27021, 27015, 18761,
+ 27292, 18771, 27287, 27018, 27284, 19174, 46299, 27288, 36116,
+ 27643, 27299, 27285, 27286, 27291, 18758, 46305, 19173, 18767,
+ 28070, 36529, 19634, 27637, 19624, 19166, 27638, 19631, 27639,
+ 19168, 46309, 19179, 27646, 28069, 28071, 28077, 19626, 47924,
+ 28078, 19636, 28075, 37000, 28072, 19627, 20161, 28087, 28082,
+ 20159, 19628, 19638, 20170, 28079, 47930, 20166, 28081, 28073,
+ 36526, 20165, 37539, 28085, 37545, 28629, 28623, 20175, 28632,
+ 20178, 28627, 28621, 38181, 20684, 28628, 29169, 20179, 29162,
+ 36997, 20174, 20685, 20692, 29166, 29738, 38197, 48858, 21220,
+ 29165, 29167, 20695, 21218, 29737, 29751, 21219, 20694, 29743,
+ 29742, 29744, 21712, 29748, 30336, 21715, 21222, 21710, 29745,
+ 29747, 29741, 21720, 21707, 29746, 30949, 21723, 30338, 30340,
+ 30339, 30342, 53201, 30344, 22162, 30343, 21719, 30950, 40839,
+ 31962, 31968, 31511, 31964, 22818, 31963, 22817, 30951, 42011,
+ 32746, 32403, 42006, 56599, 23421, 32745, 32743, 23538, 33257,
+ 23775, 17933, 18147, 27029, 45169, 27650, 27651, 36532, 19641,
+ 20184, 29173, 29755, 39502, 21724, 22531, 44821, 27030, 27031,
+ 27304, 18773, 26598, 26597, 17812, 26685, 26684, 26686, 26815,
+ 26811, 18153, 18154, 18157, 18152, 27033, 18436, 35839, 18435,
+ 18447, 27312, 27654, 27034, 18434, 27305, 27311, 18775, 18430,
+ 18776, 18778, 27663, 18786, 27313, 18777, 27309, 27653, 27652,
+ 18779, 18774, 19195, 19185, 19642, 19192, 19201, 27662, 19188,
+ 19186, 28103, 28106, 28102, 19657, 47111, 28110, 19660, 19661,
+ 28100, 19645, 28092, 19650, 28105, 28101, 20190, 19655, 28653,
+ 28641, 19646, 29176, 20696, 28643, 20189, 28650, 28647, 28644,
+ 20191, 20188, 28655, 28640, 20193, 29187, 29186, 20702, 29183,
+ 29181, 20700, 20706, 29179, 29185, 20707, 20721, 20714, 20710,
+ 20718, 20711, 20717, 20712, 20704, 29759, 29768, 49837, 21238,
+ 21257, 21256, 29757, 21241, 21250, 21258, 29763, 21236, 38826,
+ 21242, 30352, 21735, 29771, 38824, 21254, 21255, 30365, 21732,
+ 53229, 30356, 30357, 30353, 30369, 30363, 39505, 30361, 39509,
+ 21741, 30364, 22173, 31514, 30962, 22172, 22167, 22177, 22171,
+ 22170, 22534, 22539, 22537, 22532, 22535, 31972, 22820, 31977,
+ 31975, 31973, 22826, 22828, 31976, 22819, 31974, 22829, 23058,
+ 23059, 32750, 23249, 32749, 42773, 23423, 33025, 23610, 33410,
+ 33409, 43625, 27036, 27667, 27666, 28112, 29191, 26821, 18167,
+ 27039, 27040, 27320, 18790, 19205, 27669, 46352, 19664, 28113,
+ 19666, 28117, 28664, 28660, 28663, 28662, 28661, 37597, 20202,
+ 29199, 29196, 29198, 20723, 29773, 38837, 38835, 29776, 30372,
+ 30371, 30370, 30966, 30969, 22830, 31985, 32755, 33028, 18168,
+ 46353, 20726, 18449, 27324, 19208, 19938, 20203, 30375, 31519,
+ 33412, 27325, 27676, 46357, 48004, 49868, 39522, 17940, 45199,
+ 46361, 19672, 19675, 29208, 30377, 30378, 26689, 26690, 26824,
+ 18169, 18172, 18171, 18173, 18454, 18452, 27044, 36142, 27326,
+ 18796, 27327, 27328, 18793, 18805, 45754, 27679, 28132, 27678,
+ 19214, 46364, 19217, 27680, 47142, 28127, 28131, 28128, 19680,
+ 47140, 20211, 28669, 20205, 20206, 28674, 20216, 28671, 48022,
+ 20210, 48908, 38229, 20729, 20734, 20737, 20732, 20730, 20739,
+ 20735, 29211, 29210, 20731, 21267, 29781, 21261, 21265, 39530,
+ 30379, 21747, 21750, 30975, 30974, 22184, 39527, 22180, 22181,
+ 30976, 54295, 22548, 22543, 31521, 31991, 31992, 31990, 55921,
+ 23061, 23062, 23253, 23543, 23544, 43317, 43316, 17943, 30979,
+ 22549, 18459, 19221, 36570, 19686, 20217, 28892, 38858, 39535,
+ 22188, 17945, 18176, 26829, 18179, 18466, 18461, 18471, 18468,
+ 35862, 18807, 18811, 27338, 27335, 18808, 27690, 27684, 27687,
+ 27691, 19225, 36576, 27685, 27694, 19228, 27689, 19224, 19702,
+ 28140, 19687, 19692, 37030, 28139, 28143, 28138, 28689, 19701,
+ 19706, 28684, 20223, 28681, 20240, 20225, 28679, 37618, 28682,
+ 20221, 37624, 28690, 20230, 28692, 20231, 20244, 20220, 20222,
+ 29227, 20760, 20749, 20759, 29214, 29217, 29218, 20755, 20752,
+ 20747, 29216, 20741, 29224, 20745, 20746, 20769, 20744, 20742,
+ 29800, 29225, 20743, 20831, 20750, 29801, 29788, 29798, 29795,
+ 21274, 29791, 29786, 21276, 29787, 21285, 29796, 29797, 29793,
+ 29799, 21290, 21275, 29802, 29784, 38864, 21284, 29221, 21291,
+ 21759, 39556, 30387, 21757, 39544, 21764, 30384, 30383, 21774,
+ 21769, 53282, 30385, 30395, 21771, 21773, 21753, 21766, 22218,
+ 22217, 30989, 30983, 22206, 22199, 30982, 30386, 22214, 22193,
+ 22212, 31530, 22202, 22208, 21756, 30987, 22196, 30993, 22204,
+ 22203, 22205, 22561, 31529, 22559, 22564, 22558, 31532, 55230,
+ 40867, 22552, 22565, 22554, 22567, 31999, 31995, 22839, 32001,
+ 32000, 32414, 32418, 23070, 32415, 32413, 32417, 32420, 23073,
+ 23072, 23071, 23261, 23255, 32760, 32758, 23257, 23262, 32763,
+ 23260, 23254, 42776, 23427, 23259, 23547, 33259, 23614, 23612,
+ 23613, 35665, 44853, 27054, 35867, 27057, 27053, 27699, 27339,
+ 27340, 45771, 27343, 27342, 36579, 27696, 27700, 27701, 27697,
+ 19710, 28145, 28146, 47171, 28696, 28694, 20247, 37634, 28697,
+ 46409, 29234, 29231, 29230, 29232, 29233, 29235, 21293, 49906,
+ 29807, 30405, 21785, 30995, 30996, 31536, 31535, 22569, 22571,
+ 32422, 57247, 33262, 43326, 43630, 44560, 18829, 18702, 20249,
+ 28700, 38884, 22845, 26693, 18478, 35879, 27062, 18830, 18832,
+ 18831, 19248, 19712, 28147, 28706, 28705, 28707, 28703, 20251,
+ 20776, 29236, 29237, 20777, 29815, 38885, 29816, 29813, 30409,
+ 30408, 31000, 30999, 31538, 32764, 23263, 43327, 35671, 27065,
+ 27703, 19250, 28152, 28710, 28711, 28712, 20778, 29818, 22222,
+ 22223, 31003, 31540, 22846, 27350, 17950, 27066, 18482, 27067,
+ 18834, 27705, 28155, 28157, 28156, 28158, 19716, 27706, 28154,
+ 37658, 20253, 28716, 28713, 29242, 20780, 29241, 29240, 29828,
+ 29821, 29822, 29823, 38893, 29825, 31004, 31006, 31007, 22224,
+ 32007, 32006, 23077, 33706, 27709, 18483, 19717, 21786, 22225,
+ 26554, 17819, 17818, 17955, 35427, 26697, 18193, 18188, 26836,
+ 18202, 44878, 18199, 26838, 18184, 44879, 44873, 18197, 18488,
+ 18486, 18485, 18489, 18487, 27071, 18495, 18493, 18835, 36193,
+ 27073, 18851, 36186, 36187, 27353, 18853, 18843, 46423, 19255,
+ 19256, 27710, 46454, 19259, 27711, 19718, 19273, 19272, 19269,
+ 19260, 28160, 19726, 28172, 28173, 19723, 28167, 19741, 19722,
+ 20256, 19739, 28161, 28177, 37661, 28163, 28165, 47198, 37064,
+ 20271, 19736, 20272, 19728, 47220, 19733, 28718, 28723, 20278,
+ 28719, 20266, 28726, 20283, 20280, 20262, 28724, 28727, 20260,
+ 20264, 20274, 20784, 48110, 29256, 20785, 20796, 20794, 20813,
+ 20797, 29249, 29258, 29246, 20807, 29257, 20793, 20801, 29261,
+ 20788, 20806, 38264, 29248, 29251, 20791, 20808, 21296, 29838,
+ 21307, 49940, 21300, 49021, 21299, 29835, 29842, 29839, 49945,
+ 21791, 30424, 30426, 21792, 21805, 30433, 30422, 21790, 30418,
+ 21795, 38909, 53362, 21793, 31009, 22226, 21799, 31012, 31018,
+ 40253, 31011, 22230, 22229, 31015, 40244, 22234, 22238, 31016,
+ 31543, 22232, 22227, 31013, 22233, 30427, 40245, 22577, 22583,
+ 31551, 31553, 22579, 31545, 22573, 31544, 31549, 22586, 31546,
+ 31548, 22578, 32013, 32011, 32017, 32014, 32023, 32426, 32428,
+ 32018, 32424, 23078, 23265, 32769, 32773, 32770, 23267, 33034,
+ 42799, 33035, 33037, 33264, 23430, 23429, 23548, 33415, 23617,
+ 33540, 33541, 23757, 17963, 26839, 18206, 18501, 27078, 18511,
+ 18506, 18870, 18856, 18869, 18864, 18863, 18858, 27360, 19283,
+ 27718, 19287, 19750, 19749, 19759, 28186, 28191, 28185, 28192,
+ 20295, 28738, 28734, 20294, 28735, 28737, 28733, 20118, 20303,
+ 20289, 20297, 20825, 20818, 20827, 29276, 20815, 20826, 29273,
+ 29271, 29274, 49025, 20816, 20821, 29854, 21326, 21316, 49044,
+ 29851, 29855, 29857, 21324, 21813, 21810, 21818, 21808, 21814,
+ 30435, 31024, 22244, 22242, 31030, 22246, 22248, 31023, 22251,
+ 22252, 22588, 31555, 22590, 22595, 55277, 22796, 22853, 31557,
+ 23275, 23086, 23269, 23276, 32774, 33039, 43106, 33417, 23619,
+ 23777, 27083, 18513, 19795, 21327, 18873, 27721, 19761, 28744,
+ 18514, 27365, 28745, 18516, 18517, 36616, 46467, 27725, 29860,
+ 55284, 32027, 33041, 17745, 19288, 26701, 18210, 26842, 45294,
+ 27090, 35900, 27089, 27086, 18875, 18878, 27367, 18877, 19289,
+ 19290, 27728, 27727, 28195, 37080, 28194, 28199, 19763, 47257,
+ 19762, 28749, 28751, 28752, 29864, 49061, 29279, 20835, 29863,
+ 29861, 29865, 30440, 30439, 30443, 30442, 30444, 31033, 31035,
+ 31034, 31560, 22597, 22598, 32029, 32028, 32433, 57790, 33418,
+ 27091, 26846, 18218, 26843, 18217, 45298, 27096, 35921, 18526,
+ 18521, 18522, 27097, 27371, 27373, 27374, 18881, 45848, 19292,
+ 36625, 27730, 27729, 27731, 27735, 47264, 27736, 37084, 28207,
+ 47272, 28208, 28204, 28210, 28206, 28213, 28758, 28756, 20315,
+ 28760, 48162, 29866, 29285, 29867, 29284, 20837, 29283, 29871,
+ 49991, 29870, 29869, 29868, 21329, 28759, 30452, 30447, 30451,
+ 30453, 54415, 31037, 31039, 22599, 31563, 31564, 32030, 42044,
+ 32780, 32781, 32782, 32778, 33542, 17967, 26704, 17969, 17970,
+ 18222, 18220, 18221, 18531, 18885, 45308, 18533, 27098, 18534,
+ 18892, 19295, 27376, 27377, 28214, 19304, 19305, 19296, 28215,
+ 19306, 19303, 19770, 19773, 19772, 28218, 19769, 19774, 20323,
+ 28762, 37706, 20840, 20320, 20319, 20849, 29290, 20842, 20846,
+ 38303, 20855, 21341, 53414, 30457, 30456, 21830, 21835, 21826,
+ 21831, 21827, 21825, 22255, 40292, 31042, 22256, 22601, 31568,
+ 22605, 32032, 22603, 22858, 32439, 23282, 27378, 27379, 36631,
+ 27740, 28220, 28219, 28763, 29877, 29878, 29876, 30458, 30459,
+ 32035, 33709, 26851, 35925, 18537, 18896, 27382, 19311, 19312,
+ 27742, 19310, 27741, 28226, 28764, 28225, 28223, 28224, 28222,
+ 28766, 28769, 28227, 28767, 29299, 29298, 29294, 29297, 20859,
+ 29300, 38955, 29880, 29883, 29881, 29885, 29884, 29882, 30460,
+ 30462, 30461, 31050, 22262, 31053, 31052, 31571, 31572, 22608,
+ 31574, 22607, 31570, 32038, 32037, 32441, 32440, 33266, 33543,
+ 33420, 19313, 29302, 21838, 31577, 20335, 35692, 44903, 18223,
+ 27386, 18902, 27388, 27744, 27746, 37103, 19779, 20336, 28771,
+ 29306, 20862, 20863, 29305, 29886, 21839, 30465, 30464, 31055,
+ 40904, 32041, 32042, 32443, 32784, 33421, 29310, 26854, 26855,
+ 35930, 18545, 27391, 18906, 27394, 18905, 18907, 19323, 27752,
+ 27756, 27750, 27751, 19321, 27748, 27760, 27754, 46510, 19320,
+ 27753, 27755, 37112, 28233, 19783, 28231, 27757, 28230, 28236,
+ 19782, 28234, 28781, 28782, 20341, 20346, 48185, 20344, 28785,
+ 38321, 28778, 28779, 20343, 20345, 37720, 28784, 28787, 29317,
+ 38325, 29312, 29321, 29311, 29319, 29316, 29323, 29895, 29899,
+ 50020, 21347, 21349, 29894, 29892, 53447, 30479, 21841, 30478,
+ 30476, 30474, 30470, 53451, 30469, 38972, 30482, 54447, 31059,
+ 31060, 22268, 31065, 31061, 31067, 31589, 31585, 32050, 32046,
+ 56004, 31588, 56000, 32447, 32444, 32445, 33049, 33050, 23437,
+ 43111, 33422, 33545, 33544, 23794, 18226, 18909, 19325, 19785,
+ 20869, 21350, 38974, 39630, 31073, 32452, 33052, 33640, 27109,
+ 27399, 18910, 27767, 27766, 28238, 28239, 28789, 49117, 29907,
+ 29909, 21352, 21842, 30484, 31074, 32053, 32787, 27111, 27402,
+ 27401, 27768, 27770, 19326, 28242, 19786, 20349, 20870, 38336,
+ 21355, 31077, 29913, 31595, 32453, 23523, 33785, 18230, 26858,
+ 27117, 27118, 27116, 27115, 27113, 27404, 27407, 27408, 27405,
+ 27409, 36266, 27411, 45895, 18913, 27779, 19330, 19339, 19333,
+ 27774, 19334, 37121, 28247, 28248, 19793, 19791, 28249, 28245,
+ 28244, 20351, 28804, 20355, 28805, 20356, 28800, 28803, 28794,
+ 28796, 28806, 28801, 28808, 28802, 28798, 29329, 28807, 28797,
+ 29343, 29340, 20871, 29332, 29333, 29334, 29338, 29339, 49132,
+ 38980, 29916, 29924, 29919, 29914, 21360, 29926, 29929, 29922,
+ 29927, 21363, 29915, 21844, 30492, 30489, 30491, 30494, 30490,
+ 30500, 21846, 39637, 30486, 22270, 22271, 31079, 31083, 22275,
+ 22273, 31080, 31087, 31601, 31597, 31600, 31598, 22617, 31599,
+ 31602, 31603, 40327, 41526, 32060, 32062, 32063, 32058, 22864,
+ 32059, 32791, 32789, 32792, 32790, 33054, 23438, 33269, 33424,
+ 33271, 33642, 33790, 27120, 27416, 28254, 29933, 22620, 31607,
+ 32795, 33548, 27784, 27785, 28257, 28256, 48232, 29346, 29935,
+ 17971, 18231, 27122, 27421, 18917, 27419, 18921, 18826, 27792,
+ 27789, 27795, 36679, 19798, 19343, 19344, 27791, 27794, 28261,
+ 28264, 19799, 28262, 19797, 28263, 19801, 20362, 37750, 48240,
+ 28819, 20359, 28814, 29359, 29352, 29358, 20882, 29355, 20885,
+ 29356, 20879, 29357, 29351, 29353, 29354, 29361, 29937, 21372,
+ 29940, 21370, 29936, 29944, 29938, 39001, 30515, 30511, 30509,
+ 30508, 30517, 53489, 30514, 22280, 22276, 31095, 22277, 54482,
+ 40344, 31099, 31096, 31610, 31616, 21371, 31608, 22621, 22622,
+ 31614, 22874, 32066, 22870, 32070, 32068, 32067, 32460, 57305,
+ 23284, 32797, 32796, 33056, 33057, 33058, 33273, 33272, 23678,
+ 23758, 18924, 27424, 27423, 45911, 19347, 27797, 19350, 19807,
+ 28266, 28265, 20368, 20367, 28820, 29364, 29363, 20893, 20894,
+ 20897, 29366, 20895, 20898, 21375, 39013, 21378, 39659, 21853,
+ 31105, 22282, 31103, 31104, 31617, 22879, 22880, 23097, 33060,
+ 23801, 35703, 18234, 35945, 45348, 27125, 18549, 18550, 18552,
+ 27427, 27432, 27428, 27426, 27429, 27798, 19354, 19359, 47351,
+ 28270, 28269, 19816, 28268, 37156, 37154, 28273, 28272, 28274,
+ 19811, 28276, 37153, 19817, 28267, 37762, 28825, 28829, 20374,
+ 28831, 20377, 28830, 20378, 28828, 29374, 20899, 29372, 20904,
+ 29371, 20901, 29370, 20902, 29946, 29368, 38368, 21386, 21379,
+ 29950, 21388, 21383, 29949, 21381, 29947, 50082, 29948, 30524,
+ 30520, 21859, 30521, 21857, 53503, 21863, 30527, 30525, 30523,
+ 21864, 31112, 31111, 22288, 31108, 31107, 31109, 22290, 31620,
+ 22626, 31622, 22881, 56037, 32076, 32074, 32075, 23443, 32800,
+ 33062, 58229, 33061, 33275, 33276, 23806, 26862, 45353, 18931,
+ 18930, 27434, 27435, 19364, 19363, 19362, 28278, 28279, 19818,
+ 37166, 28281, 28280, 47360, 20379, 28834, 20380, 48272, 20381,
+ 38376, 29378, 29377, 49168, 29955, 50095, 30531, 39670, 40141,
+ 31118, 31115, 31117, 54504, 22628, 22629, 31627, 31628, 31626,
+ 31630, 22630, 32078, 32079, 32469, 32470, 32803, 33277, 17973,
+ 18555, 27439, 18935, 19368, 27806, 19365, 37167, 20382, 28837,
+ 20907, 29379, 29380, 29385, 29958, 31633, 32080, 23101, 36284,
+ 27814, 27809, 19371, 27816, 19372, 27812, 27811, 28285, 28292,
+ 19823, 37169, 28286, 28290, 19824, 47367, 28287, 28840, 28847,
+ 28844, 20387, 29386, 28845, 20393, 28848, 20386, 28842, 48280,
+ 48275, 20915, 29397, 29393, 29392, 20917, 20918, 29388, 20913,
+ 29391, 20910, 29394, 39047, 28849, 29960, 21396, 29965, 29964,
+ 21400, 29969, 29963, 21394, 29968, 29961, 39031, 30546, 30540,
+ 30535, 21872, 21869, 30551, 21878, 30549, 21873, 30563, 39694,
+ 21875, 30565, 30554, 30562, 30544, 39685, 21870, 39704, 30561,
+ 30556, 30542, 21877, 21879, 30557, 39689, 31133, 31139, 22294,
+ 31136, 31124, 31137, 22298, 31138, 31140, 31135, 31128, 31142,
+ 31122, 22295, 31642, 40966, 31645, 31641, 31649, 40982, 31652,
+ 31634, 22635, 31637, 31639, 31640, 40983, 31636, 40999, 32089,
+ 32100, 32096, 32101, 32088, 22883, 32095, 23105, 32087, 32097,
+ 56054, 32091, 32094, 32085, 41567, 32093, 22886, 22884, 41580,
+ 32483, 42095, 23103, 32480, 42087, 23106, 23102, 23104, 32102,
+ 32805, 33066, 33069, 33071, 23447, 33067, 23450, 33065, 33070,
+ 23553, 42834, 33281, 33283, 33430, 33434, 33429, 23656, 33549,
+ 33711, 33737, 59468, 27440, 19378, 19382, 47377, 28298, 37186,
+ 19831, 48285, 28854, 28855, 20396, 20395, 28856, 20925, 20921,
+ 20922, 20924, 20926, 21404, 29973, 21405, 21406, 50113, 21407,
+ 21882, 21883, 21880, 21881, 30572, 53540, 30570, 22299, 31660,
+ 22642, 22641, 31656, 31657, 21891, 31658, 41593, 32107, 22891,
+ 32106, 32105, 41599, 22892, 23109, 32488, 32490, 32808, 23289,
+ 57835, 42849, 33438, 43358, 33647, 23724, 27131, 45939, 18948,
+ 18946, 18949, 27817, 27823, 19384, 19383, 27821, 19388, 27824,
+ 19387, 27822, 19385, 19389, 28307, 28299, 19836, 19843, 28300,
+ 28309, 19845, 28306, 28304, 28302, 19841, 19846, 19838, 20419,
+ 37799, 20410, 20415, 20404, 20413, 20402, 48302, 20414, 29401,
+ 20936, 20942, 29405, 29410, 29406, 20932, 20928, 21413, 29976,
+ 29985, 29980, 29986, 21408, 20930, 21419, 21422, 29988, 39061,
+ 21416, 21911, 39718, 30579, 30577, 30581, 21898, 21902, 21914,
+ 21893, 21896, 30575, 30578, 30580, 21897, 30585, 39719, 21907,
+ 21904, 22303, 31154, 22305, 31152, 22306, 22307, 31666, 22647,
+ 41014, 22645, 41021, 22646, 31661, 22651, 22650, 55390, 32119,
+ 32117, 31665, 22896, 22895, 22944, 32499, 32496, 32501, 32495,
+ 56629, 23112, 23110, 42489, 23290, 32809, 23291, 23292, 23452,
+ 23451, 33285, 58241, 23556, 33286, 33439, 33552, 33551, 58862,
+ 23681, 33649, 33648, 33738, 27442, 27832, 19848, 19851, 37193,
+ 28313, 19849, 28312, 28865, 29990, 21423, 31159, 33444, 18562,
+ 18953, 18952, 18950, 27444, 27833, 46604, 27836, 28314, 29412,
+ 28867, 20943, 20944, 38420, 21427, 21428, 31160, 31668, 32122,
+ 32506, 33084, 33554, 46613, 27837, 19206, 28317, 28315, 28316,
+ 47403, 28870, 28874, 28873, 29413, 21431, 29992, 21430, 29993,
+ 21429, 30590, 31164, 22310, 31670, 32127, 32128, 33287, 19395,
+ 19396, 28319, 19852, 28320, 28323, 28321, 19854, 19853, 28877,
+ 28878, 37813, 28876, 20947, 29415, 20948, 29414, 20946, 21432,
+ 29995, 29994, 29996, 31166, 31167, 22903, 22905, 22904, 23295,
+ 33086, 20422, 20423, 27454, 27455, 27847, 27456, 19857, 29417,
+ 29999, 29998, 30000, 30003, 30001, 30596, 31676, 31673, 31674,
+ 32133, 33088, 26866, 19401, 19400, 19859, 28326, 28882, 38431,
+ 20951, 30007, 30005, 30006, 30008, 21435, 21920, 30599, 31171,
+ 22311, 31172, 31678, 31681, 31680, 31679, 22909, 32813, 23559,
+ 49238, 26708, 44596, 26868, 26867, 18566, 46631, 18570, 18565,
+ 27141, 27137, 27142, 27138, 27140, 35963, 18575, 18568, 36302,
+ 27462, 27457, 27459, 18959, 18956, 45964, 36308, 19412, 27856,
+ 27861, 27862, 27854, 46640, 36736, 19871, 28337, 28333, 19869,
+ 28336, 28343, 28342, 28335, 28344, 47431, 19865, 19864, 19868,
+ 28898, 28883, 20428, 28894, 37832, 28899, 28890, 28889, 28891,
+ 28886, 20435, 28888, 28893, 28900, 48033, 48367, 49247, 29428,
+ 20955, 29431, 29424, 29427, 20957, 29420, 29429, 20962, 29433,
+ 20960, 20956, 37203, 29426, 30022, 30015, 30013, 30014, 30016,
+ 22317, 30019, 30017, 30012, 21440, 21439, 30009, 30024, 30018,
+ 30610, 30605, 30611, 30602, 30609, 50180, 30601, 30608, 30612,
+ 38453, 31180, 31181, 22315, 22314, 31175, 31178, 31179, 31183,
+ 41042, 31688, 31685, 31689, 32137, 22911, 32139, 22912, 23115,
+ 32513, 32512, 42499, 32815, 33089, 33091, 33090, 33092, 33291,
+ 47443, 56121, 18647, 20965, 27865, 28349, 30616, 31188, 19414,
+ 19415, 19875, 30617, 50196, 22320, 23457, 27150, 27466, 27465,
+ 18964, 19417, 27871, 19876, 47456, 47455, 20439, 28903, 28904,
+ 48382, 38458, 29436, 30032, 30034, 30033, 21443, 50199, 39115,
+ 21931, 30621, 30618, 31189, 31190, 31693, 31697, 31696, 22658,
+ 22659, 41054, 40934, 31695, 32145, 32818, 27874, 28353, 31192,
+ 31191, 31698, 32146, 33294, 44602, 17976, 17978, 18242, 26875,
+ 26882, 18247, 18584, 18588, 18585, 18591, 27153, 18583, 27166,
+ 27154, 18586, 18590, 35974, 18582, 18970, 27469, 18973, 18974,
+ 18969, 18976, 18978, 45991, 27876, 19428, 27888, 19431, 19422,
+ 19425, 46677, 19424, 27885, 19423, 19432, 36754, 27880, 27891,
+ 19427, 28355, 28369, 28374, 19891, 28366, 28362, 19887, 28363,
+ 28359, 28354, 28360, 47481, 19877, 47477, 37233, 19890, 19893,
+ 37227, 28933, 28921, 28920, 28925, 28914, 37841, 28916, 28911,
+ 20448, 28919, 20449, 20446, 28917, 28922, 20450, 48416, 20441,
+ 29437, 29439, 28926, 20984, 30058, 29460, 29462, 29447, 20972,
+ 20970, 20981, 29461, 20990, 29465, 30054, 21446, 30040, 50231,
+ 30053, 21448, 30036, 39131, 30050, 21447, 30062, 30049, 30045,
+ 21451, 39130, 50251, 21454, 21463, 21936, 30631, 21932, 30629,
+ 30647, 30624, 21934, 30630, 21952, 30626, 30632, 21940, 21938,
+ 21955, 30642, 22326, 30625, 21943, 30627, 21941, 21954, 21942,
+ 39799, 21949, 30644, 30628, 21950, 30636, 31200, 31204, 31202,
+ 31219, 31208, 31199, 22328, 31212, 22332, 31207, 22322, 31210,
+ 31203, 31205, 31195, 41654, 22321, 31209, 31196, 22323, 31214,
+ 31224, 30056, 31713, 31705, 31701, 31711, 41072, 31699, 31704,
+ 22667, 22660, 31706, 22663, 22668, 22914, 32147, 32158, 22918,
+ 22921, 22915, 22922, 32150, 56141, 32148, 55477, 32516, 23300,
+ 23126, 32517, 23124, 23127, 56826, 32820, 32825, 23310, 32824,
+ 23301, 57881, 23306, 32823, 32829, 23307, 32821, 23302, 32827,
+ 33094, 23462, 33095, 23560, 33298, 58267, 23626, 23627, 43526,
+ 33556, 33713, 33650, 23761, 33740, 33742, 33768, 33767, 43927,
+ 18594, 27477, 27894, 19434, 19433, 19435, 37244, 19899, 37867,
+ 20461, 20994, 38497, 38496, 20995, 20996, 30649, 31229, 32165,
+ 41668, 41667, 32831, 18249, 18986, 18988, 18989, 27896, 27898,
+ 46696, 19905, 19904, 28385, 19902, 28384, 28382, 37887, 47509,
+ 28939, 20468, 28941, 20466, 37871, 28937, 28934, 20465, 20467,
+ 29475, 29476, 21004, 21000, 29480, 28935, 29482, 21003, 30073,
+ 21469, 30067, 30068, 30066, 30070, 21470, 30065, 30071, 50268,
+ 21471, 30076, 21959, 21961, 53707, 21956, 21957, 30659, 21960,
+ 30074, 30665, 30658, 21476, 31237, 22337, 54696, 31236, 31722,
+ 22341, 54698, 22342, 41095, 31732, 31727, 22676, 31733, 31724,
+ 31731, 22677, 31723, 22671, 31729, 31740, 22674, 22681, 22670,
+ 32174, 41098, 32172, 22923, 32527, 42144, 23133, 32524, 32528,
+ 42530, 32832, 32833, 32837, 32835, 32838, 23317, 23467, 33103,
+ 32834, 33305, 23561, 23563, 23629, 58284, 58623, 33457, 58628,
+ 23727, 33770, 18992, 46706, 19906, 21005, 30082, 30666, 27902,
+ 28945, 21963, 31249, 23137, 18595, 18995, 27485, 36782, 27905,
+ 36778, 28397, 28947, 28400, 28401, 28399, 28946, 20478, 28403,
+ 20475, 20473, 20472, 19029, 29487, 30084, 49360, 21482, 30092,
+ 39179, 39180, 29491, 30096, 30086, 21484, 29485, 30089, 30093,
+ 30085, 30090, 21489, 21479, 21490, 30671, 30674, 30669, 30668,
+ 30677, 30675, 30682, 31257, 31260, 31261, 21968, 31254, 31744,
+ 31748, 22690, 22688, 31745, 22683, 55516, 22689, 31746, 22686,
+ 41695, 32189, 32187, 32188, 32183, 32185, 32533, 56213, 32840,
+ 57438, 23318, 32841, 23468, 33460, 58297, 23683, 33563, 23682,
+ 33744, 36322, 27906, 28404, 28952, 19452, 19451, 28406, 28408,
+ 28954, 37902, 28953, 20480, 21009, 21010, 30101, 30103, 30685,
+ 30683, 31265, 31266, 40531, 31267, 41112, 31749, 31750, 32193,
+ 32195, 32536, 32537, 23139, 32535, 32539, 23469, 33772, 23809,
+ 28413, 21012, 29492, 21011, 30105, 30692, 30687, 30689, 30694,
+ 30690, 31275, 31272, 31273, 31752, 31751, 41708, 32540, 32543,
+ 32843, 32844, 33653, 18998, 36324, 19000, 27917, 19456, 28420,
+ 19925, 19921, 37278, 28423, 37285, 19931, 19935, 19928, 28418,
+ 19926, 19934, 28422, 37284, 47546, 19933, 37277, 28970, 20486,
+ 20487, 28973, 28972, 20483, 20488, 20484, 28971, 28961, 28960,
+ 28962, 20497, 48484, 20496, 21016, 49382, 21023, 29499, 29498,
+ 29497, 21019, 21024, 21027, 30108, 30111, 30121, 30107, 21505,
+ 30117, 30113, 21496, 30114, 21504, 21502, 21492, 30700, 30697,
+ 30703, 30705, 21973, 30708, 30699, 30702, 21978, 30706, 30701,
+ 21976, 30707, 53762, 30696, 21982, 31281, 22353, 22354, 54752,
+ 31282, 22692, 31757, 22696, 22697, 41130, 32205, 56874, 32202,
+ 32206, 22937, 22940, 32199, 22942, 32555, 42161, 23142, 32550,
+ 32552, 32560, 42160, 32851, 23324, 57450, 32849, 23326, 32845,
+ 23328, 33116, 33118, 57921, 33117, 33119, 33112, 58303, 23566,
+ 33315, 43377, 27488, 27920, 48499, 20498, 30123, 21988, 31762,
+ 32212, 33319, 28429, 20499, 29505, 30125, 30126, 21507, 30711,
+ 22357, 31290, 22356, 31289, 22358, 31763, 31764, 22699, 33123,
+ 33655, 27922, 28430, 47565, 28431, 30714, 30712, 30715, 31292,
+ 31294, 32215, 32563, 32561, 33124, 23568, 23731, 33656, 28435,
+ 47567, 19942, 28981, 21509, 21990, 21989, 22359, 22701, 22947,
+ 22948, 32565, 56902, 23146, 32219, 28436, 28439, 37925, 28982,
+ 28984, 20505, 28985, 48512, 28986, 29516, 21031, 21033, 39206,
+ 50363, 21510, 21992, 21993, 30721, 30719, 53789, 30720, 39880,
+ 21996, 22361, 31300, 31296, 31298, 31297, 22363, 55572, 31767,
+ 31301, 23332, 23473, 33464, 36796, 38559, 30136, 30135, 33127,
+ 36797, 27924, 27925, 28440, 28441, 19947, 19949, 20508, 28988,
+ 20513, 20509, 37931, 20512, 28991, 28990, 29521, 29522, 38567,
+ 21035, 29523, 38563, 30137, 50374, 30138, 21517, 39217, 21518,
+ 39215, 22002, 30726, 30724, 21999, 30727, 53796, 31307, 40573,
+ 40566, 22365, 31770, 31776, 31769, 41154, 32224, 22950, 32223,
+ 32221, 32225, 22951, 32568, 23333, 32858, 32856, 32859, 33129,
+ 33321, 23569, 33322, 33466, 33565, 33658, 27491, 19002, 27927,
+ 19457, 28449, 28444, 37305, 19954, 28446, 28447, 28448, 19955,
+ 37948, 28995, 28999, 20520, 28996, 28992, 48525, 48531, 37941,
+ 28993, 28994, 28998, 20519, 37944, 29000, 29524, 38582, 21037,
+ 21039, 39227, 30141, 30144, 30142, 30145, 30148, 21519, 30147,
+ 22003, 21040, 30730, 30739, 22005, 53813, 22009, 22004, 30737,
+ 30738, 30736, 30732, 30731, 30729, 22008, 30740, 31315, 22370,
+ 22367, 31316, 31314, 40579, 31317, 22366, 41168, 31782, 31783,
+ 31777, 31781, 31779, 22704, 22954, 32231, 32235, 32229, 32232,
+ 56924, 32571, 22955, 32572, 32234, 32864, 32863, 33135, 33131,
+ 43188, 33467, 58648, 33566, 23734, 23795, 20525, 37952, 29001,
+ 29002, 20524, 21042, 21041, 21043, 30743, 31319, 31787, 22707,
+ 23153, 32868, 23637, 27492, 27493, 19459, 19962, 19963, 19967,
+ 28452, 28453, 19964, 19965, 19961, 47600, 20531, 20526, 29003,
+ 20533, 21046, 29525, 21045, 49447, 29527, 30149, 30152, 30150,
+ 21525, 30745, 30744, 30747, 30746, 22374, 40595, 31320, 31321,
+ 39920, 22709, 31789, 31792, 31794, 22708, 31788, 32239, 32238,
+ 32237, 41756, 32240, 32241, 32580, 32579, 32578, 32869, 32870,
+ 33137, 23571, 23570, 23686, 33716, 33746, 23810, 30751, 23336,
+ 30154, 22019, 32872, 57487, 18253, 26885, 18596, 35980, 27498,
+ 27495, 19460, 27930, 27933, 19461, 27931, 19968, 28460, 19972,
+ 20542, 29006, 20537, 48543, 20541, 29530, 21530, 30155, 21528,
+ 22021, 30754, 30758, 22024, 22381, 22379, 22380, 31795, 31796,
+ 56298, 22960, 32585, 33569, 17828, 26713, 18257, 18258, 18259,
+ 18603, 27174, 19009, 27501, 21057, 19016, 27499, 27503, 19012,
+ 19013, 46042, 27941, 27937, 19465, 27936, 30160, 28463, 28465,
+ 28470, 28462, 19975, 28467, 29013, 20547, 29535, 29537, 21056,
+ 31799, 29539, 30156, 30157, 21534, 21533, 39261, 30159, 22025,
+ 30766, 30765, 40607, 41199, 23638, 33469, 19018, 19468, 19469,
+ 28475, 28471, 19978, 37339, 28472, 29015, 20549, 20550, 20551,
+ 29019, 49487, 21061, 29544, 29543, 29546, 29545, 30162, 30163,
+ 30768, 30770, 30767, 30769, 31330, 31329, 31327, 22385, 31333,
+ 31328, 54853, 22387, 31800, 31805, 55633, 31804, 41772, 32588,
+ 32591, 32590, 32589, 32592, 33145, 33146, 33327, 33326, 33571,
+ 33570, 33774, 28477, 46784, 19985, 20554, 20559, 20556, 20562,
+ 21067, 38616, 21539, 30168, 21547, 30165, 30170, 30167, 22042,
+ 30772, 22034, 22033, 53885, 22037, 53891, 22390, 22391, 31341,
+ 31339, 55644, 22726, 55640, 31808, 31807, 22966, 22968, 32256,
+ 32253, 56330, 32248, 41782, 32252, 22975, 22974, 23161, 32593,
+ 23166, 23155, 23173, 32596, 42224, 32595, 23172, 23167, 23164,
+ 23338, 32599, 23343, 32875, 32881, 42602, 23351, 32882, 33150,
+ 23480, 32878, 33152, 23481, 33154, 57975, 23478, 23483, 23484,
+ 23578, 23642, 42916, 58350, 23576, 58351, 23579, 43198, 33473,
+ 43396, 33470, 23639, 23641, 23690, 23688, 33573, 23691, 23765,
+ 46786, 29022, 29556, 32259, 19986, 28479, 20565, 29026, 20569,
+ 20566, 21082, 29563, 29561, 30176, 21552, 21556, 21551, 39275,
+ 21553, 53899, 30777, 22047, 22050, 31348, 31344, 22402, 31345,
+ 22404, 22406, 22409, 22408, 54884, 31817, 31818, 31823, 22731,
+ 22729, 31816, 31821, 33157, 32886, 42922, 33328, 35436, 17829,
+ 17983, 35716, 44952, 27182, 27183, 18607, 36351, 27505, 19020,
+ 27504, 27949, 27946, 19478, 27947, 19480, 27945, 19994, 19988,
+ 28480, 19991, 19993, 19995, 19990, 20570, 29028, 20575, 21086,
+ 21085, 29568, 29567, 21084, 21088, 21558, 21557, 21560, 21559,
+ 22052, 22051, 53913, 22410, 31352, 31350, 31824, 23175, 32888,
+ 33158, 19481, 28485, 20581, 20577, 20580, 20578, 29569, 21091,
+ 21090, 21092, 21565, 22056, 22055, 22414, 22413, 22301, 31827,
+ 22735, 22979, 23176, 23353, 23177, 23354, 33329, 23736, 23813,
+ 19997, 20584, 48614, 21095, 30186, 30190, 30187, 21567, 30193,
+ 21568, 30192, 50474, 22057, 22060, 22058, 31358, 22418, 22417,
+ 31835, 22736, 22740, 31357, 22739, 31832, 31834, 32262, 22980,
+ 22981, 32263, 56361, 56369, 32607, 32606, 23178, 23179, 23180,
+ 32890, 23356, 33331, 33333, 33334, 23649, 23738, 23694, 23737,
+ 23785, 23817, 23819, 33335, 28489, 28491, 29035, 30781, 32896,
+ 29573, 21097, 21570, 30197, 30196, 31362, 31361, 31837, 32897,
+ 33165, 42930, 33576, 29040, 20588, 29037, 21100, 29576, 29578,
+ 21099, 49545, 30199, 30205, 30200, 21572, 21573, 30202, 30784,
+ 31368, 31366, 31365, 31369, 31367, 31838, 31373, 22421, 22745,
+ 31843, 31839, 55701, 22742, 22746, 22747, 32271, 41829, 32275,
+ 32269, 41818, 41826, 32268, 32274, 23183, 23182, 32610, 32614,
+ 23181, 32902, 32899, 42622, 58004, 58002, 33169, 33167, 42936,
+ 58003, 23583, 43211, 33475, 23651, 33577, 33664, 23739, 33720,
+ 23767, 33747, 29580, 30208, 30206, 30207, 30209, 22423, 31846,
+ 56392, 32278, 22985, 32616, 32617, 33170, 33339, 23652, 21101,
+ 22748, 23190, 23189, 23361, 33172, 33476, 20590, 20591, 20592,
+ 21104, 31375, 31374, 22986, 32619, 32620, 23584, 29042, 29584,
+ 29583, 38653, 39321, 30218, 21574, 30219, 21576, 30217, 30216,
+ 39322, 30212, 22067, 30794, 30797, 40013, 31378, 31380, 22425,
+ 30798, 22435, 22426, 22433, 54944, 22752, 31854, 55720, 22749,
+ 31858, 22750, 22751, 22754, 22756, 32287, 22987, 32282, 32280,
+ 32284, 22990, 22988, 32286, 32285, 22993, 32624, 32626, 32630,
+ 32623, 32629, 23191, 32622, 32632, 32625, 32628, 32914, 32916,
+ 32915, 23363, 33174, 33176, 33173, 33179, 33178, 58015, 33342,
+ 23585, 33341, 33582, 43561, 23740, 28492, 29045, 21106, 29592,
+ 29597, 29593, 30222, 30227, 30230, 30221, 30225, 21580, 30801,
+ 30802, 31387, 31388, 31384, 31385, 31386, 31864, 31867, 31866,
+ 31863, 31861, 31865, 32290, 56399, 32289, 32291, 22996, 22997,
+ 22998, 32635, 23194, 23193, 32921, 23364, 33181, 33479, 33583,
+ 22758, 22999, 19483, 28493, 20594, 20595, 29049, 20593, 29050,
+ 21116, 20597, 29602, 29599, 21585, 21117, 29600, 21109, 21108,
+ 21113, 29604, 29605, 21581, 21582, 30232, 53979, 21583, 30233,
+ 50509, 22069, 30806, 30805, 30808, 30807, 31389, 30810, 31393,
+ 31394, 31391, 31872, 31397, 31873, 31875, 41282, 22760, 23003,
+ 41277, 22759, 32297, 32296, 32300, 32298, 32299, 32924, 32639,
+ 23195, 32927, 32926, 23366, 23368, 33185, 33184, 23498, 33183,
+ 33346, 33344, 23586, 33347, 33480, 23741, 33667, 33722, 33750,
+ 22071, 22442, 32304, 32645, 30234, 22762, 31401, 22761, 23768,
+ 20598, 38675, 21119, 30235, 21594, 30236, 21588, 21596, 21597,
+ 21600, 21598, 30816, 22076, 22075, 30815, 22074, 30814, 30817,
+ 22450, 22449, 22448, 40713, 22444, 31408, 40715, 54997, 31879,
+ 22765, 22768, 31878, 22764, 32312, 42283, 32307, 23007, 32313,
+ 23008, 32308, 32310, 23011, 32650, 32648, 23197, 32655, 32649,
+ 32653, 32654, 32932, 32931, 23372, 23370, 32938, 42651, 42658,
+ 23371, 33190, 33191, 33192, 33194, 23502, 42970, 33189, 58403,
+ 43231, 33350, 33348, 23589, 33482, 33483, 33481, 23698, 58951,
+ 58950, 23742, 33723, 23788, 33776, 23804, 33800, 20000, 20599,
+ 30239, 21602, 22080, 30822, 30820, 30823, 22083, 22453, 22454,
+ 31411, 31413, 31410, 31409, 22772, 31882, 31886, 31881, 22771,
+ 31884, 41878, 32319, 23203, 32657, 32656, 32940, 23374, 33197,
+ 33353, 33484, 33587, 33670, 20601, 29611, 32659, 43235, 59398,
+ 20602, 38025, 50539, 30247, 30246, 30244, 21609, 39348, 30828,
+ 22085, 31416, 31417, 31889, 22776, 31892, 32321, 32324, 23013,
+ 32325, 32327, 32326, 32328, 32663, 23205, 32661, 32944, 32946,
+ 32945, 57616, 42988, 23505, 33357, 33592, 33590, 23700, 43571,
+ 33672, 59105, 33724, 33786, 57620, 42990, 21612, 21611, 21837,
+ 22457, 58416, 23743, 21614, 30835, 30836, 31426, 22458, 32335,
+ 23015, 32334, 32333, 23206, 41901, 23380, 33362, 33361, 58420,
+ 33597, 33598, 33801, 38027, 30250, 39359, 30839, 30851, 22090,
+ 54029, 30856, 30849, 30842, 30840, 22472, 31431, 31429, 31435,
+ 22465, 22473, 31428, 22471, 22469, 22467, 22462, 31897, 22780,
+ 32336, 55782, 31899, 23017, 32338, 41907, 32342, 32340, 23023,
+ 32339, 23022, 32344, 32346, 32678, 42320, 32688, 32672, 32682,
+ 32674, 32669, 23209, 42316, 32683, 42310, 32681, 32685, 23211,
+ 23214, 23215, 23398, 32952, 57638, 32958, 23387, 57640, 32950,
+ 23386, 23388, 33210, 23512, 23515, 33209, 23513, 23510, 33207,
+ 23508, 23514, 33368, 23592, 33370, 33367, 23591, 33369, 23597,
+ 33366, 23594, 33491, 33492, 33495, 33490, 58752, 23664, 23661,
+ 43580, 43575, 23703, 33602, 33603, 43431, 23745, 33676, 23704,
+ 33757, 33758, 33804, 21124, 21615, 21616, 21617, 21619, 39366,
+ 21618, 40067, 30862, 22092, 30867, 30858, 54032, 30863, 22097,
+ 22098, 22095, 21780, 30864, 31441, 22480, 31440, 22481, 31442,
+ 22476, 31447, 55031, 31437, 22479, 31450, 22790, 31438, 22482,
+ 31448, 22485, 31443, 55038, 22672, 22791, 31914, 22786, 22788,
+ 22785, 31915, 22793, 31913, 32350, 32356, 32347, 23030, 23027,
+ 32353, 32352, 41929, 32359, 32691, 23218, 32693, 32964, 23225,
+ 32696, 42327, 32357, 23399, 32975, 23404, 23402, 32973, 32967,
+ 23403, 57655, 32965, 32974, 23405, 23519, 33213, 33215, 33214,
+ 43024, 23518, 33376, 33381, 23601, 33375, 23599, 23600, 33500,
+ 23668, 43439, 33499, 43447, 33502, 23667, 23666, 33503, 33605,
+ 33607, 33606, 23709, 33609, 33680, 23747, 59242, 23791, 23811,
+ 33802, 23816, 30870, 32360, 58100, 33508, 43698, 39368, 30872,
+ 30873, 22102, 22489, 31451, 55049, 23032, 32699, 23524, 23710,
+ 23711, 30256, 30257, 21620, 30876, 30874, 31452, 31455, 31453,
+ 31456, 22794, 32363, 32362, 23036, 32706, 32703, 32710, 32704,
+ 32709, 33222, 33221, 33223, 43284, 43279, 33509, 23712, 58466,
+ 33684, 54066, 32980, 32981, 55058, 32364, 32712, 32985, 33224,
+ 33513, 33615, 54068, 31457, 55060, 42725, 32988, 33228, 33225,
+ 33227, 33226, 33386, 33516, 33685, 29621, 21622, 30881, 30882,
+ 31458, 31928, 41362, 41955, 41952, 32366, 41956, 32714, 23228,
+ 32991, 32994, 32992, 42731, 33231, 23526, 33517, 33616, 33687,
+ 23749, 33686, 33730, 32367, 23229, 33392, 23713, 31460, 33622,
+ 33623, 32370, 32369, 32371, 32717, 33238, 31461, 31932, 32372,
+ 32718, 33239, 23603, 33519, 33522, 23041, 32373, 23408, 57692,
+ 42740, 33241, 33762, 43893, 31935, 41372, 32375, 32720, 32722,
+ 33000, 32998, 32999, 23528, 33246, 33398, 33397, 23671, 43472,
+ 33630, 33627, 33631, 33695, 33694, 33731, 23773, 23792, 23799,
+ 33788, 33789, 33803, 43304, 42372, 42429, 33247, 33248, 33700,
+ 23793, 3290, 3292, 26513, 3293, 17677, 17676, 8841, 3312, 3310,
+ 3313, 3311, 8842, 3355, 8850, 8848, 3354, 3353, 26532, 3449, 3448,
+ 3447, 26560, 3450, 3446, 3573, 3574, 17831, 17830, 17832, 26716,
+ 17984, 4015, 17672, 26514, 17683, 3314, 3356, 8851, 26533, 3357,
+ 8870, 3740, 9228, 27509, 17673, 3315, 3358, 3451, 8871, 18267,
+ 17674, 26509, 26510, 8836, 3294, 3317, 17687, 8843, 3318, 17685,
+ 3359, 3452, 3454, 3453, 26608, 3575, 3576, 17896, 4016, 18613,
+ 4792, 3291, 26511, 8837, 3295, 3320, 3319, 17709, 17708, 17833,
+ 3577, 26609, 17985, 4017, 26900, 26899, 18614, 5250, 10573, 20003,
+ 20005, 6213, 11897, 11898, 17675, 3296, 17684, 3361, 17834, 4018,
+ 3297, 8844, 3321, 17688, 3362, 3364, 8852, 3365, 3363, 26534,
+ 17747, 17835, 3578, 4019, 17987, 18269, 4020, 4394, 571, 3322,
+ 3366, 17710, 3579, 3581, 3580, 3741, 4021, 4022, 4395, 4396, 18617,
+ 18616, 18618, 18615, 4793, 28495, 11899, 20604, 16015, 3298, 17689,
+ 17690, 3368, 3367, 8853, 3369, 3375, 17712, 3370, 3371, 8855,
+ 8854, 3373, 3374, 17715, 3372, 17714, 17713, 26535, 3457, 3458,
+ 3459, 3460, 3456, 3463, 8877, 26566, 8873, 8876, 3464, 3480, 17748,
+ 8875, 26565, 3461, 3462, 3455, 17753, 17751, 8872, 8874, 17844,
+ 17837, 3594, 8914, 3591, 3595, 8924, 8912, 3592, 8916, 17840,
+ 17836, 17851, 3593, 17843, 3596, 26614, 3582, 8915, 3597, 8919,
+ 17842, 8923, 8920, 17841, 17849, 8917, 3583, 3585, 3598, 26611,
+ 3587, 8909, 3590, 3588, 3589, 8925, 8922, 8913, 3586, 17845, 17852,
+ 8910, 3584, 17850, 26615, 17848, 8918, 8921, 17847, 8911, 9031,
+ 26720, 3763, 3750, 18001, 17993, 9032, 3747, 18000, 3765, 17991,
+ 3755, 17990, 3754, 9020, 3758, 3753, 9025, 9033, 17999, 9029,
+ 17994, 3756, 17996, 17988, 3759, 3744, 3768, 9022, 17989, 17997,
+ 9240, 3742, 3764, 3743, 3751, 3752, 9027, 9023, 3757, 3749, 9019,
+ 3745, 9030, 3766, 3769, 3748, 3761, 3767, 3746, 9028, 3762, 9034,
+ 9021, 3760, 9024, 9026, 4036, 9242, 9254, 4028, 18274, 9255, 4023,
+ 4033, 26913, 18282, 4026, 9236, 4034, 9235, 9239, 9246, 9244,
+ 4042, 4037, 9230, 9232, 4039, 4027, 9233, 9245, 9252, 4032, 9238,
+ 9231, 4031, 9234, 4035, 9237, 18271, 4030, 18284, 4025, 18275,
+ 4040, 9247, 4041, 9251, 18270, 9249, 9253, 4038, 9241, 9229, 26905,
+ 9243, 4029, 9248, 4024, 9250, 18279, 18276, 18278, 18277, 18280,
+ 4411, 4399, 18624, 18625, 9589, 9597, 18633, 4398, 4406, 4418,
+ 18623, 9603, 9601, 9596, 27189, 27195, 18622, 4400, 9602, 9592,
+ 4414, 4405, 4413, 9587, 18629, 9599, 18626, 9590, 4409, 9591,
+ 18630, 9586, 4416, 4403, 4412, 4402, 18619, 9588, 9593, 18620,
+ 9600, 4410, 4407, 9595, 4415, 9598, 9594, 4404, 4417, 4408, 4401,
+ 4397, 27196, 18632, 18631, 27194, 9604, 4819, 4797, 19027, 4813,
+ 19032, 4818, 10044, 10043, 10048, 10049, 4800, 19023, 4809, 19043,
+ 19031, 19041, 4822, 19025, 4810, 27513, 19030, 19028, 19026, 10037,
+ 4803, 10038, 19034, 4824, 27515, 4815, 4794, 4795, 10057, 5267,
+ 19038, 4808, 4807, 10039, 4811, 10589, 4802, 10050, 4817, 4816,
+ 4806, 10042, 10051, 19024, 10036, 4805, 10052, 4814, 10040, 4796,
+ 19033, 4799, 4798, 10053, 4812, 4801, 4821, 4823, 10047, 4820,
+ 19036, 10055, 10041, 10056, 19022, 10045, 27512, 10054, 19035,
+ 10046, 19039, 19040, 4804, 10597, 10585, 19485, 5255, 19488, 10590,
+ 10596, 5254, 10583, 5258, 10587, 10580, 5256, 10584, 5261, 5266,
+ 19493, 10601, 19490, 10579, 19491, 5262, 19042, 10600, 19496,
+ 19486, 5257, 10586, 5253, 10581, 10577, 10591, 10578, 10576, 10588,
+ 10594, 10595, 5259, 19489, 27956, 11216, 10592, 10575, 10593,
+ 19500, 5269, 10598, 5268, 10574, 19492, 10582, 10599, 5264, 5263,
+ 5260, 5265, 19501, 19499, 5251, 19494, 19495, 5252, 5747, 20012,
+ 11219, 11212, 28501, 5744, 28500, 11220, 20008, 20009, 28503,
+ 11210, 11213, 5743, 11214, 20006, 28498, 5746, 11218, 28509, 11208,
+ 11207, 5748, 20007, 5749, 5745, 5750, 11206, 11217, 11215, 11209,
+ 28506, 28497, 28507, 5742, 11211, 20610, 20613, 6220, 6214, 11903,
+ 6223, 11909, 11912, 6216, 6217, 11906, 6215, 11915, 6221, 11916,
+ 20611, 11911, 6222, 20608, 11900, 6219, 11901, 29054, 11910, 11908,
+ 20614, 11904, 6218, 11902, 6224, 11907, 11914, 11905, 11913, 20607,
+ 20615, 6671, 6668, 21130, 6669, 29622, 12596, 12588, 6667, 6664,
+ 12589, 21133, 21131, 6666, 12592, 21132, 12594, 21141, 29630,
+ 12601, 21135, 21140, 12600, 12595, 6663, 12587, 6661, 12590, 6672,
+ 12593, 21136, 12597, 6665, 6662, 12599, 12598, 6670, 12591, 21139,
+ 7052, 13211, 21628, 13208, 7053, 30262, 7051, 21630, 13215, 13212,
+ 13205, 7050, 21632, 7054, 13206, 7049, 7057, 13209, 13210, 7055,
+ 7056, 13216, 13213, 13214, 21631, 21626, 7444, 13852, 7441, 13849,
+ 7443, 7445, 22106, 13850, 7442, 30889, 13851, 22110, 13848, 22105,
+ 22109, 7740, 14422, 7741, 14420, 31464, 14421, 14419, 14418, 22498,
+ 22497, 14423, 7739, 22108, 31468, 14887, 14888, 22797, 13207,
+ 14886, 7742, 8188, 15250, 15251, 23235, 8431, 8432, 15838, 15837,
+ 8515, 8514, 16166, 23672, 3299, 3323, 3377, 26536, 3376, 3466,
+ 3465, 3601, 3600, 3602, 3599, 17853, 3771, 3770, 3772, 18005,
+ 26722, 18004, 18002, 4044, 26914, 4043, 4045, 18285, 4419, 27197,
+ 182, 10058, 183, 5270, 185, 184, 11221, 20013, 186, 6673, 187,
+ 23410, 3300, 17691, 3378, 3603, 4046, 18634, 3301, 3381, 3379,
+ 3380, 3604, 17855, 26621, 3773, 4048, 4047, 4049, 18984, 4825,
+ 20616, 7446, 17678, 26537, 17716, 17711, 17717, 8849, 26557, 3467,
+ 3468, 17759, 17760, 3605, 26623, 9035, 18288, 4421, 4420, 10060,
+ 10059, 5271, 17679, 3382, 8856, 17761, 18008, 9256, 18636, 4422,
+ 19046, 4828, 19044, 4826, 4827, 19045, 19502, 7447, 578, 3469,
+ 26569, 3606, 8926, 17859, 17858, 17857, 18010, 3774, 3775, 18011,
+ 9036, 26724, 9257, 4050, 9258, 26915, 26918, 18638, 18640, 18641,
+ 10062, 10063, 4831, 19049, 10064, 19050, 10061, 4832, 4830, 4829,
+ 10065, 19504, 10602, 19503, 20020, 20017, 11222, 28512, 20021,
+ 11917, 12602, 21634, 21633, 21635, 7058, 7448, 13853, 22499, 3302,
+ 3316, 17686, 17692, 17720, 17762, 17861, 18012, 18292, 26920,
+ 5272, 5752, 47726, 6674, 21145, 8838, 3383, 26571, 3472, 3470,
+ 3471, 4051, 18293, 3303, 3304, 26517, 3324, 17693, 17721, 3384,
+ 3385, 3386, 8879, 3473, 17764, 8878, 3610, 17864, 8928, 3608,
+ 3609, 8927, 17863, 17865, 3611, 3607, 17866, 9037, 4370, 9038,
+ 18016, 18018, 9039, 26727, 18013, 3777, 3776, 18015, 18014, 3780,
+ 3778, 3779, 18017, 4057, 18294, 4056, 9263, 9260, 9261, 18297,
+ 9259, 4058, 4054, 4053, 18298, 4055, 4052, 18296, 26929, 4059,
+ 4424, 9605, 18642, 9262, 4429, 18643, 9606, 4425, 4428, 4427,
+ 4426, 4423, 18646, 10068, 19059, 4835, 10071, 4833, 19056, 27525,
+ 19053, 10067, 4836, 4834, 4837, 10069, 10070, 19051, 10066, 10072,
+ 19057, 19052, 19054, 19055, 19505, 5756, 5273, 10603, 10605, 10604,
+ 10606, 5274, 20024, 5753, 20022, 5754, 5755, 19506, 6226, 11919,
+ 20618, 11918, 11920, 11921, 6227, 20617, 6225, 12603, 12604, 6676,
+ 6675, 12942, 30272, 21636, 7059, 7060, 7061, 7063, 13217, 13218,
+ 7062, 21637, 22111, 7449, 30899, 7450, 22112, 31472, 15252, 15840,
+ 15839, 16167, 23605, 3305, 17694, 17723, 17722, 3475, 3474, 3612,
+ 26635, 26632, 8929, 26634, 17867, 3782, 3783, 3781, 3784, 9040,
+ 9041, 26733, 26734, 26735, 18020, 18019, 18300, 35745, 35742,
+ 35743, 18299, 35746, 4061, 9264, 26931, 4060, 18301, 9607, 4433,
+ 9608, 4432, 18651, 18649, 27206, 4430, 27208, 4431, 18650, 19066,
+ 10073, 19063, 19061, 19064, 19065, 5275, 10608, 19507, 5278, 10607,
+ 5462, 5277, 5276, 5759, 37391, 5758, 5757, 6228, 20622, 20621,
+ 6231, 6232, 6230, 29073, 6229, 20623, 38704, 12605, 21150, 12606,
+ 38700, 21149, 21638, 13220, 7064, 13219, 21819, 7451, 14424, 7743,
+ 40109, 15253, 8336, 583, 3325, 3387, 8857, 17724, 3388, 3389,
+ 17725, 17768, 17767, 3476, 3477, 17769, 3613, 9042, 9265, 9266,
+ 26932, 4434, 10074, 5280, 5279, 11224, 11223, 48681, 22113, 3306,
+ 3390, 3478, 27979, 5281, 8839, 26576, 8880, 3479, 17771, 8931,
+ 3615, 3614, 8930, 3785, 18022, 18652, 27211, 27213, 4838, 27535,
+ 27980, 10609, 6233, 12607, 6677, 21152, 21639, 13854, 22501, 23237,
+ 15583, 17680, 3391, 17726, 18023, 9267, 9609, 5284, 5282, 5283,
+ 3307, 26523, 3326, 17695, 3394, 17728, 3393, 3392, 3482, 3481,
+ 17869, 8881, 8932, 17870, 17872, 4065, 4062, 4064, 4063, 18302,
+ 4435, 18653, 27981, 5760, 33009, 3308, 17729, 3395, 17772, 3484,
+ 3483, 9043, 26740, 4066, 18577, 27985, 17681, 26524, 8858, 17773,
+ 3486, 3485, 3616, 3617, 9044, 3786, 18024, 3787, 18304, 4067,
+ 4068, 4069, 18305, 4436, 9610, 18654, 27986, 4839, 20624, 8840,
+ 26543, 3396, 17730, 26578, 26577, 17774, 8933, 17874, 9045, 9046,
+ 9268, 18306, 9269, 9612, 9611, 9614, 9613, 4437, 10610, 4841,
+ 10075, 4840, 19509, 27989, 11225, 5761, 20029, 11226, 20028, 20627,
+ 20626, 20625, 12608, 6678, 21154, 29077, 21155, 21640, 7065, 22502,
+ 15254, 17682, 17731, 26544, 8859, 17775, 3487, 26641, 17876, 26940,
+ 18308, 18309, 5285, 19510, 20030, 3309, 3327, 3398, 3397, 17733,
+ 3399, 17735, 26580, 17776, 17878, 26742, 4071, 18310, 4070, 4072,
+ 18659, 18658, 4438, 18657, 18656, 46147, 4842, 20628, 13855, 8016,
+ 3328, 3489, 3504, 3499, 26583, 3494, 3493, 3500, 3498, 3491, 3505,
+ 3492, 3488, 3503, 3502, 3501, 3490, 17782, 3497, 17778, 17779,
+ 3496, 17780, 3506, 3495, 26581, 17880, 17882, 3623, 26645, 3629,
+ 3625, 17884, 3631, 8934, 3628, 3618, 3621, 3624, 3620, 3627, 3630,
+ 3619, 3622, 3626, 3632, 17885, 17886, 17879, 9055, 9052, 18039,
+ 3800, 9053, 3788, 3790, 3814, 3809, 18042, 18047, 18038, 9060,
+ 9054, 3792, 3794, 9059, 3801, 9049, 3813, 3815, 3789, 3806, 18051,
+ 9047, 3812, 18040, 3797, 18044, 3807, 3808, 9048, 3805, 3803,
+ 18033, 3804, 3810, 9056, 3791, 18048, 3811, 9058, 3799, 3796,
+ 18036, 9051, 3795, 9061, 3798, 18045, 3802, 18041, 18037, 18030,
+ 3793, 9057, 18046, 18049, 9050, 18050, 26951, 26950, 18313, 9286,
+ 9285, 4090, 9288, 9290, 9279, 9282, 9289, 4091, 18319, 18323,
+ 9276, 9280, 18320, 26946, 9284, 9629, 4086, 9633, 4073, 9281,
+ 4074, 4087, 4080, 4076, 18316, 9277, 4079, 4084, 4093, 9278, 9271,
+ 4078, 9272, 9274, 26947, 4081, 18311, 4083, 9270, 9275, 18315,
+ 18324, 4092, 4088, 9283, 4094, 18318, 4085, 9273, 4082, 18314,
+ 18322, 4077, 4075, 9287, 4089, 18671, 18672, 9628, 9616, 9631,
+ 18666, 18668, 9618, 4445, 4459, 4441, 4458, 4450, 4455, 4439,
+ 9617, 9623, 4454, 9635, 4456, 18670, 4446, 18663, 18673, 9625,
+ 9622, 4444, 18660, 9615, 4457, 9630, 4449, 9632, 4460, 4440, 4451,
+ 4448, 9620, 4452, 9626, 9627, 4447, 4453, 4443, 18664, 18678,
+ 18676, 4442, 9619, 18662, 9624, 18667, 9634, 10095, 4855, 10077,
+ 27554, 10082, 4848, 4859, 10080, 4843, 4853, 4858, 10087, 27547,
+ 4854, 4857, 19074, 19082, 10090, 4849, 10081, 19071, 19075, 19083,
+ 10093, 10094, 19076, 4851, 10092, 4847, 4862, 27550, 10084, 19078,
+ 4845, 19077, 10097, 10085, 10089, 4850, 4861, 10086, 4856, 10091,
+ 10098, 10625, 19070, 10096, 4863, 4844, 10088, 10079, 19073, 4852,
+ 27549, 27555, 10078, 19081, 19086, 10083, 10076, 4860, 19520,
+ 10617, 19529, 5304, 10631, 5302, 5299, 10622, 5295, 10626, 5306,
+ 10616, 10621, 10620, 4846, 5301, 10629, 19527, 10632, 10613, 28004,
+ 5779, 19528, 10633, 5307, 27999, 5293, 5290, 10624, 5287, 28001,
+ 10630, 19516, 5294, 10634, 19513, 10614, 10628, 5297, 10615, 10618,
+ 10623, 19523, 19522, 5298, 5296, 5308, 19512, 20043, 19525, 27992,
+ 5303, 19519, 5291, 5443, 28007, 5292, 10619, 5305, 5300, 10627,
+ 5289, 19514, 5288, 10611, 10612, 11231, 20049, 5762, 5765, 11242,
+ 5785, 11245, 5763, 11238, 5769, 5775, 6050, 20038, 20045, 5773,
+ 11235, 5786, 5766, 5774, 11243, 11935, 11248, 11236, 28541, 11227,
+ 11240, 11234, 5772, 11246, 20035, 20031, 5768, 5788, 5781, 20040,
+ 5770, 5767, 20053, 5778, 20041, 11247, 11233, 11239, 11241, 11229,
+ 11244, 5764, 11228, 20055, 5771, 5787, 5783, 11230, 5777, 20048,
+ 5784, 5780, 5776, 20036, 11237, 47760, 5782, 11933, 11929, 20634,
+ 11944, 11922, 11931, 6247, 6248, 6240, 11940, 6250, 11927, 11926,
+ 11924, 11942, 6238, 11936, 11925, 6241, 11934, 6236, 11930, 11937,
+ 11939, 20631, 29088, 11943, 6245, 11923, 6239, 11928, 20032, 6234,
+ 48726, 6246, 11938, 6242, 6243, 6249, 6237, 188, 6235, 11932,
+ 20629, 6244, 11941, 6694, 6689, 21163, 12623, 12619, 21157, 12613,
+ 6683, 6679, 12622, 6680, 12616, 12618, 21158, 12621, 21171, 6685,
+ 21161, 6692, 6686, 29664, 21159, 12611, 6687, 6688, 12614, 6693,
+ 21169, 12612, 12617, 6684, 12610, 6690, 6682, 21168, 29652, 6681,
+ 12615, 12620, 21166, 6691, 21197, 12609, 21165, 7072, 13237, 21652,
+ 13234, 21643, 7066, 7078, 7079, 21648, 7069, 13232, 7071, 13224,
+ 7077, 21655, 13236, 7068, 13238, 7067, 30284, 13233, 13235, 7070,
+ 13231, 13225, 13222, 30281, 21649, 11232, 13228, 21642, 13221,
+ 13227, 13226, 21646, 13223, 21654, 7074, 21656, 21651, 21170,
+ 21647, 7073, 21644, 53082, 21650, 7075, 13229, 7452, 13230, 13864,
+ 22120, 13857, 22121, 7464, 13861, 7456, 7460, 13860, 22116, 7459,
+ 7455, 7458, 7453, 7463, 13862, 13858, 7462, 13856, 7461, 13863,
+ 13859, 7076, 30912, 7465, 13865, 7457, 7454, 22118, 22505, 14431,
+ 14433, 7745, 14434, 14432, 14430, 14429, 7747, 14428, 7748, 31479,
+ 22506, 22504, 31483, 14426, 14427, 7744, 7749, 7746, 14425, 22806,
+ 8017, 22805, 14891, 14889, 14894, 14892, 22803, 14890, 14893,
+ 22804, 22802, 22807, 8189, 15257, 15258, 8190, 32380, 15259, 15255,
+ 15260, 15256, 8018, 23042, 32728, 15584, 15586, 8339, 15585, 8338,
+ 8337, 23411, 8340, 15842, 15843, 33013, 8434, 8433, 8435, 15841,
+ 16017, 16016, 23531, 8516, 8518, 8517, 16018, 8573, 16281, 33405,
+ 33404, 8614, 23674, 16280, 16353, 8845, 17758, 26586, 3508, 3507,
+ 26584, 3635, 3634, 8936, 3633, 8935, 17889, 3818, 9064, 18059,
+ 9063, 18053, 3816, 3819, 18058, 18057, 9062, 18056, 3817, 18087,
+ 18054, 18055, 18331, 9291, 18328, 9292, 4095, 18327, 18330, 18326,
+ 4461, 18680, 10099, 10100, 4864, 4865, 19088, 10636, 5309, 5311,
+ 10635, 5310, 11249, 5789, 20057, 20056, 28553, 29095, 6251, 6252,
+ 11945, 20635, 6696, 21172, 6695, 13239, 13867, 13866, 23532, 16413,
+ 3329, 8860, 17736, 8882, 8883, 17785, 26587, 26588, 3638, 3642,
+ 8938, 26650, 3640, 3639, 8937, 3641, 3637, 17892, 17893, 3636,
+ 8939, 17890, 17891, 3829, 18064, 18077, 3826, 18063, 3822, 9065,
+ 18079, 18069, 18062, 9066, 18075, 3824, 18060, 9068, 3820, 9069,
+ 9067, 3823, 3825, 3828, 3827, 3821, 9070, 18065, 18080, 18081,
+ 18066, 18071, 18070, 18068, 4100, 9305, 18334, 4102, 18332, 4101,
+ 18335, 9306, 4099, 4098, 9296, 26956, 9295, 18337, 9293, 9298,
+ 9297, 9294, 9303, 9304, 9301, 9299, 4097, 18338, 26953, 26955,
+ 9302, 4103, 9307, 26952, 18339, 9300, 18333, 4462, 4096, 26961,
+ 4463, 9640, 18684, 18683, 9646, 18687, 18682, 18685, 4469, 9644,
+ 9650, 18692, 9641, 9645, 9647, 9649, 9643, 18691, 9642, 9637,
+ 9638, 4464, 18686, 4466, 4465, 9639, 9648, 18688, 18693, 18689,
+ 27229, 18681, 4468, 27227, 9636, 10110, 19091, 10109, 10114, 10105,
+ 19097, 10108, 10107, 19096, 10111, 19105, 10115, 4866, 4869, 19101,
+ 19102, 10106, 10112, 19100, 19089, 19104, 4868, 10101, 19092,
+ 4467, 10650, 10113, 19103, 10104, 27560, 4867, 10103, 19099, 10641,
+ 19535, 19538, 5312, 5316, 10657, 10639, 10653, 5317, 10655, 19539,
+ 10661, 19541, 10665, 19530, 28008, 10656, 10644, 10652, 19532,
+ 10666, 10664, 10654, 10649, 10642, 11257, 10640, 5321, 10647,
+ 5322, 5318, 10637, 10659, 10645, 19536, 19542, 10643, 10662, 5319,
+ 19543, 10668, 5313, 5315, 10651, 10646, 4870, 5314, 10648, 10663,
+ 10667, 10658, 10660, 10638, 28554, 20063, 11252, 20058, 11261,
+ 11260, 5797, 11253, 20060, 5798, 5796, 20069, 11255, 5793, 11259,
+ 20065, 11254, 11256, 11250, 5791, 28560, 11269, 11268, 11265,
+ 5790, 5794, 5795, 10102, 11262, 5792, 5320, 11264, 11251, 11267,
+ 11266, 20067, 11270, 20062, 11959, 20064, 11263, 29100, 28558,
+ 28562, 11258, 11951, 6262, 6265, 6260, 11950, 11954, 11949, 20640,
+ 6254, 6264, 11946, 6258, 11953, 20644, 6256, 6255, 11956, 6257,
+ 11958, 20639, 11955, 6253, 20647, 20645, 20641, 6263, 11960, 11948,
+ 11957, 20646, 29096, 11947, 20643, 20642, 6259, 20637, 6261, 11952,
+ 11961, 21184, 21179, 12631, 6697, 12637, 21183, 21177, 6702, 12633,
+ 12640, 12625, 6704, 6698, 12630, 7080, 12629, 12638, 6699, 21178,
+ 6703, 12628, 12634, 12639, 12624, 6701, 12632, 21175, 21186, 12636,
+ 12642, 12626, 12635, 21173, 6700, 12641, 21182, 21185, 21181,
+ 12627, 29666, 7084, 13241, 7082, 7081, 13243, 13248, 21657, 13244,
+ 21667, 13247, 7087, 21668, 7439, 7086, 21662, 13240, 13246, 21180,
+ 7085, 13245, 21664, 13242, 21660, 7083, 21666, 21663, 21658, 13872,
+ 22131, 13874, 13869, 7467, 13871, 22132, 7466, 13873, 22129, 22133,
+ 7469, 13875, 7468, 13868, 13870, 22130, 22508, 7753, 14437, 22509,
+ 7752, 14438, 7751, 14436, 7750, 14435, 8020, 8019, 15261, 15263,
+ 23044, 15262, 8191, 8192, 23043, 56530, 8193, 15587, 8341, 23413,
+ 16169, 16168, 8615, 3330, 3400, 17894, 3830, 18084, 18082, 18083,
+ 18342, 9651, 18698, 19544, 5799, 5800, 20071, 11962, 6705, 12643,
+ 13249, 22134, 17696, 8861, 17786, 17895, 9071, 18701, 18700, 17697,
+ 18085, 9308, 9652, 10116, 4871, 21187, 15264, 32385, 8436, 3331,
+ 3509, 8884, 17787, 3643, 3644, 26651, 4104, 26963, 19546, 5323,
+ 37440, 6707, 20648, 6708, 6706, 21670, 3332, 26548, 3401, 3403,
+ 3402, 8862, 3404, 3510, 8885, 17789, 3511, 17788, 26589, 17790,
+ 26652, 17898, 3645, 3646, 8940, 18088, 3831, 26761, 9072, 26968,
+ 4108, 9309, 26965, 4106, 4107, 4105, 10117, 18343, 18344, 4473,
+ 4472, 4474, 4471, 18703, 9653, 4109, 4470, 4872, 4873, 27565,
+ 4874, 19548, 10669, 19549, 19550, 28017, 5801, 11271, 5324, 20072,
+ 20073, 28570, 20649, 6266, 20650, 6710, 6709, 12644, 21189, 7088,
+ 7470, 30922, 14895, 16019, 16170, 3333, 3512, 17792, 3513, 8946,
+ 3648, 3651, 17902, 8944, 8942, 3650, 8945, 8947, 8941, 3653, 3652,
+ 3649, 3647, 8943, 17904, 18100, 3842, 26766, 18091, 3839, 9077,
+ 9080, 9079, 26768, 3833, 3841, 18090, 26769, 3838, 9076, 9074,
+ 3837, 18101, 18098, 18093, 3832, 3835, 18096, 9075, 9082, 9078,
+ 3836, 3840, 3843, 9073, 9081, 3834, 18362, 18348, 4114, 4122,
+ 18353, 9321, 9314, 4123, 9325, 9310, 9317, 18366, 18361, 4113,
+ 9311, 4111, 9318, 9322, 4110, 18358, 9323, 9316, 18352, 9319,
+ 18350, 4125, 4116, 9326, 9324, 18360, 4121, 4119, 9315, 4118,
+ 9313, 9312, 4117, 4115, 4124, 4120, 4112, 18711, 9320, 18367,
+ 4476, 18718, 4483, 9667, 4475, 9659, 9655, 18706, 9671, 9654,
+ 18717, 4478, 9664, 4481, 4484, 18719, 4479, 9668, 4482, 18708,
+ 4881, 9674, 9656, 18709, 18710, 9658, 9665, 9669, 9673, 9670,
+ 9663, 9666, 18716, 18714, 9660, 4486, 9662, 9661, 9672, 4477,
+ 9657, 4485, 18715, 4480, 18713, 4887, 10125, 19113, 4886, 18712,
+ 27573, 10123, 27571, 4875, 19128, 4880, 19123, 10122, 10119, 10124,
+ 4876, 10118, 19127, 4879, 4877, 19111, 10126, 4878, 4882, 19108,
+ 19118, 4883, 19121, 4885, 19131, 27566, 27570, 4884, 19109, 19553,
+ 19575, 10120, 10121, 19126, 46208, 19124, 10127, 10676, 5325,
+ 11285, 10675, 10694, 19559, 19555, 5331, 19568, 10692, 19570,
+ 5330, 5326, 10701, 10685, 10688, 19565, 5334, 10698, 10690, 5327,
+ 5335, 19561, 10695, 10693, 19566, 19578, 10678, 10699, 10687,
+ 10682, 19577, 10672, 10700, 10684, 10671, 19576, 5333, 10689,
+ 10702, 10686, 10674, 10679, 10670, 19558, 5332, 19579, 10683,
+ 10680, 5328, 10673, 19567, 10697, 5329, 19562, 10681, 10677, 19560,
+ 19571, 10696, 19569, 19574, 19572, 5802, 11278, 20106, 11275,
+ 11292, 11280, 11293, 20113, 5804, 20088, 20086, 20077, 11289,
+ 11286, 20080, 20108, 20103, 20078, 20085, 11287, 11290, 11294,
+ 20112, 10691, 11296, 11982, 20091, 5805, 11297, 11273, 11283,
+ 20087, 11288, 20081, 20083, 5803, 5806, 11295, 11298, 11277, 11274,
+ 20104, 20079, 11276, 20076, 20111, 11281, 11279, 5807, 20075,
+ 11291, 20110, 20109, 11282, 11284, 11272, 11970, 11968, 6275,
+ 6273, 11978, 11969, 11979, 11975, 11967, 11981, 11966, 11973,
+ 6272, 6271, 6270, 11971, 11976, 6267, 6274, 20656, 11964, 20655,
+ 11974, 11963, 11972, 6268, 11977, 11965, 6269, 11980, 20653, 20096,
+ 20659, 12648, 6715, 6714, 6716, 12660, 12650, 12656, 12645, 12659,
+ 12658, 12662, 12655, 6711, 12654, 6717, 21193, 12647, 6712, 21191,
+ 12661, 6713, 12649, 12652, 12657, 12651, 12646, 21196, 21200,
+ 12653, 13251, 7092, 13254, 13253, 13256, 13258, 21679, 7090, 21675,
+ 13252, 21671, 13250, 21681, 13259, 13257, 13255, 21673, 13261,
+ 21677, 13260, 7094, 7089, 21678, 7091, 7093, 21680, 21682, 13262,
+ 13882, 22137, 22140, 13881, 13880, 22138, 13883, 13876, 22136,
+ 13877, 13885, 13878, 22141, 7471, 13887, 22135, 13886, 13879,
+ 22143, 14442, 7756, 14440, 14445, 14444, 13884, 22513, 7755, 22511,
+ 14443, 14439, 14447, 14446, 7754, 22515, 14441, 22512, 7472, 22514,
+ 22516, 8021, 23046, 22812, 22809, 14896, 15265, 15266, 15267,
+ 8342, 32731, 23239, 8343, 23242, 15588, 23243, 15845, 15844, 23414,
+ 23533, 16020, 16021, 16171, 16282, 23676, 3334, 3335, 26525, 3336,
+ 3405, 3514, 8948, 3654, 3655, 3846, 3847, 3845, 3844, 4126, 18369,
+ 26979, 9327, 4128, 4127, 9328, 26980, 27243, 4487, 18720, 4888,
+ 10128, 10704, 28023, 5336, 5809, 10703, 5808, 20666, 6718, 20667,
+ 12663, 7473, 22144, 7757, 14448, 23049, 8344, 23244, 8519, 17698,
+ 8886, 17794, 3515, 8887, 3658, 17907, 3656, 3657, 3659, 26774,
+ 3849, 3848, 18105, 9083, 3850, 26982, 9084, 9329, 18373, 9330,
+ 18371, 4129, 4131, 4133, 4130, 4134, 4132, 18375, 18372, 18374,
+ 4491, 4488, 4490, 4492, 4489, 10129, 9675, 18723, 10131, 10130,
+ 4894, 27579, 4890, 27582, 46223, 4891, 4893, 4895, 4892, 19136,
+ 4897, 4896, 27581, 19135, 19134, 5341, 10706, 10705, 5340, 19584,
+ 5339, 5338, 5342, 5337, 19582, 11304, 11301, 5811, 11300, 11305,
+ 28579, 5813, 11303, 5810, 5812, 11302, 20115, 11983, 20669, 11984,
+ 11985, 20670, 20671, 20668, 29123, 6719, 6727, 12664, 6721, 6725,
+ 12665, 6726, 6722, 6723, 6720, 6724, 7097, 11299, 7098, 7096,
+ 30303, 7095, 13888, 7474, 14449, 14450, 23050, 32388, 8194, 8345,
+ 23415, 3337, 17795, 3660, 18109, 18107, 18108, 18377, 4493, 10132,
+ 4898, 19137, 19138, 5345, 5344, 5343, 5814, 5815, 11306, 6728,
+ 7475, 3338, 8863, 3406, 8888, 26590, 17796, 8949, 3661, 26661,
+ 17909, 18378, 4135, 18725, 20119, 11986, 20673, 3339, 26550, 3407,
+ 8950, 9085, 26986, 9086, 18110, 3851, 18726, 11307, 5816, 11987,
+ 30308, 22517, 7758, 3340, 3360, 3408, 8889, 3516, 17911, 3855,
+ 3854, 3852, 3853, 9331, 4137, 4138, 9332, 4136, 18381, 18382,
+ 4497, 9676, 4496, 4494, 4495, 4901, 4899, 19139, 19140, 10134,
+ 4900, 10133, 4889, 10707, 28032, 19586, 5347, 5348, 20121, 20120,
+ 5346, 19587, 6729, 12666, 7099, 7100, 13263, 7759, 14897, 14898,
+ 23053, 8437, 16283, 8846, 3409, 26664, 3341, 8891, 8890, 26593,
+ 17912, 3662, 8952, 8953, 8951, 26665, 8954, 17917, 18112, 18117,
+ 9094, 26785, 9089, 9091, 9093, 9090, 3859, 9087, 18113, 9088,
+ 3856, 3857, 9092, 9095, 3858, 9096, 18114, 9346, 18390, 9340,
+ 9335, 4140, 9343, 9341, 9334, 9347, 9350, 9345, 9338, 4142, 9344,
+ 4143, 9339, 9342, 9333, 9337, 9349, 4144, 26992, 4145, 18391,
+ 9336, 9348, 4139, 4141, 18389, 18392, 18384, 26997, 18385, 9693,
+ 9686, 9692, 9685, 9687, 9681, 9679, 18736, 9694, 9691, 9677, 18732,
+ 4499, 9689, 9690, 9688, 9680, 9678, 4498, 9684, 9682, 18733, 18739,
+ 9683, 9695, 18735, 18738, 18740, 18734, 4906, 19148, 4905, 19144,
+ 10135, 4902, 10137, 19149, 4907, 10138, 27605, 19146, 4910, 19147,
+ 4908, 10139, 9696, 10141, 19143, 4904, 27601, 4903, 27606, 10136,
+ 10140, 4909, 5350, 5349, 19594, 19591, 19590, 10709, 10713, 10715,
+ 5351, 10718, 19600, 5355, 10720, 19601, 5357, 19598, 5353, 5361,
+ 19604, 5358, 10711, 5352, 20126, 10710, 10708, 10722, 10712, 19589,
+ 5354, 10721, 5359, 10717, 10716, 5360, 10714, 5356, 19597, 46991,
+ 19593, 10723, 19603, 10719, 11322, 11329, 11318, 5819, 11314,
+ 11330, 11308, 11327, 11325, 11319, 20137, 11328, 11321, 20123,
+ 11313, 11331, 11311, 11324, 11309, 20122, 11332, 20138, 5820,
+ 20125, 11326, 11990, 11312, 5817, 20129, 11316, 20135, 5818, 11315,
+ 11320, 20134, 28596, 11317, 28590, 20132, 11323, 20128, 11994,
+ 29134, 20680, 29136, 11997, 11989, 20677, 11991, 20675, 11996,
+ 11995, 6276, 29130, 11310, 11993, 20674, 20678, 6277, 29129, 11988,
+ 11992, 29137, 29133, 12673, 21209, 12680, 12671, 21201, 12678,
+ 12669, 12677, 12681, 12668, 12672, 12667, 21203, 6730, 29715,
+ 12670, 6731, 12676, 12675, 12674, 21206, 21207, 12679, 21688,
+ 21689, 21686, 13267, 13269, 7102, 13270, 21694, 13265, 21690,
+ 13264, 13274, 21692, 13272, 7101, 13275, 13266, 13271, 13273,
+ 13268, 21693, 21691, 22145, 13892, 13897, 13891, 13896, 22148,
+ 13889, 13899, 13895, 13900, 13894, 13890, 13898, 22147, 13901,
+ 13893, 14451, 7763, 22520, 7761, 22522, 7760, 7762, 22518, 14899,
+ 22813, 15163, 15268, 23054, 15589, 15590, 23246, 8346, 23245,
+ 15846, 23247, 8438, 33020, 15847, 23418, 16023, 8521, 23534, 8520,
+ 16022, 8574, 23609, 16172, 33535, 33407, 17699, 26519, 3342, 3663,
+ 8955, 9097, 4001, 5362, 19606, 21695, 3343, 3519, 3518, 3517,
+ 26668, 3860, 4911, 11998, 3344, 3345, 3346, 3410, 18118, 18393,
+ 4500, 27609, 9697, 18742, 18741, 5821, 3347, 8864, 17738, 26551,
+ 3520, 3521, 8892, 3664, 35497, 17919, 18119, 9098, 18122, 3861,
+ 26792, 9099, 4151, 18395, 18394, 9352, 4149, 4148, 9351, 4146,
+ 9353, 4147, 4150, 4501, 18743, 4503, 9701, 9698, 9699, 9700, 9702,
+ 4502, 10143, 10142, 19151, 4913, 19154, 4912, 19153, 19155, 19152,
+ 19610, 5365, 10725, 19608, 5364, 5366, 5363, 19607, 19609, 5823,
+ 10724, 37503, 5824, 11334, 20016, 5825, 11333, 5822, 20141, 20142,
+ 20144, 12001, 12003, 6278, 12002, 12000, 11999, 29149, 29724,
+ 21210, 12684, 6736, 6734, 29719, 6735, 12682, 12683, 21696, 6732,
+ 13279, 13277, 21699, 7104, 13278, 7105, 7103, 6733, 13904, 13902,
+ 13903, 13276, 14453, 7764, 14452, 14900, 14901, 13905, 15269,
+ 3348, 3522, 3666, 8956, 3665, 18396, 4152, 6279, 17700, 3411,
+ 3523, 4504, 5826, 17701, 8893, 17804, 8894, 17805, 8957, 3863,
+ 9103, 9101, 3864, 9100, 9102, 9104, 26797, 3862, 18125, 18124,
+ 4156, 4157, 4154, 18398, 18400, 4153, 9706, 4155, 18401, 4505,
+ 18745, 9705, 9707, 9704, 9708, 4506, 4916, 10144, 19157, 10146,
+ 4914, 10147, 4915, 10145, 19156, 9703, 10726, 10729, 10730, 10727,
+ 5370, 5369, 5367, 5368, 10728, 19616, 19615, 20146, 5371, 20147,
+ 20145, 5828, 5829, 47882, 5830, 12004, 12006, 12008, 6281, 6280,
+ 5827, 12007, 12005, 12688, 21214, 21213, 12686, 12692, 6737, 12693,
+ 12690, 6738, 12687, 12685, 12691, 7107, 13281, 12689, 7109, 13282,
+ 7108, 7111, 13283, 7106, 7110, 13910, 13908, 13907, 13909, 13906,
+ 22149, 31960, 8196, 15591, 15592, 23248, 15848, 16024, 8649, 17702,
+ 17924, 4158, 3865, 18402, 18404, 4507, 18749, 18748, 19159, 3349,
+ 3412, 26552, 3524, 8958, 18126, 3866, 9105, 18406, 9709, 4508,
+ 6739, 3350, 17739, 17806, 17925, 3667, 20149, 6282, 3351, 3413,
+ 3414, 3526, 3525, 26676, 8959, 3668, 26677, 9106, 18128, 3867,
+ 18407, 9355, 9356, 9357, 18409, 4159, 4160, 9354, 4161, 27271,
+ 27621, 4509, 9710, 18750, 10149, 4917, 19160, 10148, 19617, 5372,
+ 10731, 5373, 10732, 19618, 20154, 20152, 5831, 28612, 20151, 29155,
+ 12009, 20681, 12695, 12694, 6740, 30329, 7112, 13284, 7476, 13911,
+ 7765, 22814, 8522, 16174, 17703, 17704, 17807, 17908, 9358, 18410,
+ 9711, 5374, 11335, 6283, 20682, 22151, 22815, 8022, 23755, 17705,
+ 3869, 18129, 3868, 4510, 18753, 10150, 5376, 5648, 5377, 5375,
+ 5832, 20683, 12696, 6741, 7113, 23536, 8847, 8960, 26678, 9108,
+ 3870, 9107, 3871, 26801, 4165, 9361, 9360, 4164, 4162, 4163, 9359,
+ 18415, 18414, 4512, 9712, 4515, 4511, 4517, 4513, 4514, 4516,
+ 27276, 19161, 19163, 4920, 4919, 4918, 19162, 10734, 5378, 5381,
+ 5379, 10733, 5384, 28062, 5380, 10735, 5383, 5382, 28061, 28066,
+ 28617, 11337, 11336, 20158, 5835, 5833, 5834, 11338, 6284, 12011,
+ 6285, 12010, 29159, 29734, 13285, 21216, 21217, 7115, 12697, 7114,
+ 21701, 6742, 13913, 13912, 7766, 14454, 15270, 15593, 15594, 23420,
+ 3415, 26529, 3527, 17810, 26682, 8895, 17809, 35507, 3873, 3875,
+ 18135, 8963, 9111, 9110, 9109, 17929, 8962, 8961, 3670, 3874,
+ 3872, 3669, 17930, 17932, 18134, 4166, 9362, 18138, 4167, 9116,
+ 27025, 9118, 9117, 9363, 18133, 18131, 9113, 18423, 3879, 3877,
+ 18139, 9112, 9114, 9120, 18143, 3876, 18142, 9115, 9124, 4169,
+ 18140, 9121, 3878, 18144, 9119, 9122, 18137, 4168, 18132, 4170,
+ 9123, 18417, 18425, 9383, 9370, 9368, 9382, 9377, 4522, 4171,
+ 9378, 9381, 4518, 9380, 4172, 4177, 4175, 9371, 27281, 9366, 9373,
+ 4182, 9384, 4519, 9374, 27024, 4520, 4178, 9376, 18763, 9727,
+ 4521, 9365, 4179, 4523, 4180, 4176, 4181, 9375, 9364, 9379, 4173,
+ 18416, 18764, 9367, 9372, 9369, 4174, 18419, 9713, 27296, 9714,
+ 18424, 9724, 10154, 9725, 4529, 9728, 9718, 4528, 9720, 27290,
+ 9721, 18769, 19170, 9723, 4524, 18759, 19164, 4924, 18760, 18766,
+ 9719, 9715, 4925, 19175, 27289, 9729, 4921, 10152, 9722, 18757,
+ 10151, 9717, 9726, 18768, 18770, 4527, 4922, 4533, 4923, 9730,
+ 10153, 4526, 4927, 4532, 4531, 4530, 4926, 9731, 4928, 4525, 27302,
+ 9716, 19171, 19169, 19172, 18765, 19167, 5385, 10157, 10159, 27640,
+ 10161, 4929, 4935, 10738, 10165, 10156, 5387, 10736, 19177, 4934,
+ 4932, 10167, 27648, 10737, 27647, 10158, 19180, 4933, 10162, 4936,
+ 10164, 19623, 19165, 4931, 10163, 10166, 10160, 19182, 4930, 5388,
+ 19632, 10155, 5386, 19633, 28086, 19178, 19183, 5389, 19176, 19630,
+ 19181, 10740, 10749, 5838, 20167, 5391, 5396, 5839, 10751, 5403,
+ 11340, 10741, 5395, 5398, 5393, 10739, 10753, 10756, 11355, 28083,
+ 10754, 11344, 5394, 5401, 5405, 10748, 11339, 10752, 5390, 11341,
+ 10755, 11343, 10744, 19625, 5836, 20169, 10742, 10743, 5400, 20168,
+ 19629, 5399, 10746, 5404, 10750, 5397, 10747, 19640, 5402, 5840,
+ 5837, 11342, 20171, 10745, 20172, 5392, 19637, 19639, 20173, 20160,
+ 19635, 5845, 5849, 11346, 6290, 5847, 11350, 5851, 12012, 11352,
+ 6292, 5843, 5846, 11353, 20177, 11354, 11360, 5853, 6293, 29168,
+ 11356, 11361, 11349, 6303, 20162, 6294, 5852, 11347, 11362, 20164,
+ 6302, 5850, 6287, 11359, 20176, 5854, 11351, 11345, 5844, 11348,
+ 38179, 11357, 20690, 6286, 6291, 5841, 11358, 20180, 6289, 20181,
+ 20182, 20163, 5842, 6301, 12699, 12023, 20688, 12015, 12698, 29164,
+ 12019, 12021, 20686, 20691, 12018, 21228, 6300, 29163, 12017,
+ 6304, 21227, 48853, 20687, 12714, 21225, 20693, 6299, 6744, 12024,
+ 12700, 21226, 20689, 6297, 12016, 12020, 6743, 6288, 12013, 12014,
+ 6745, 6296, 6298, 6295, 12022, 12704, 12705, 12710, 7120, 12717,
+ 21702, 6751, 21713, 6750, 12712, 21703, 7119, 12701, 6749, 21230,
+ 12716, 6747, 6748, 21711, 12713, 13302, 7117, 5848, 21231, 12715,
+ 7124, 12707, 30346, 7118, 21223, 7123, 12702, 12706, 12703, 12709,
+ 6752, 7116, 6746, 21714, 13288, 12711, 21221, 7122, 21232, 7125,
+ 53190, 12708, 21224, 7121, 13287, 39489, 21716, 21233, 21717,
+ 21706, 13292, 7480, 13286, 13925, 13301, 7129, 21709, 7127, 7478,
+ 13298, 13294, 7133, 21705, 13916, 22161, 21721, 22160, 7131, 13293,
+ 21722, 13914, 21718, 13297, 30952, 13300, 13291, 21708, 7132,
+ 30948, 21704, 7126, 13915, 7479, 13299, 7128, 7130, 13296, 7134,
+ 13295, 13290, 13289, 7477, 13303, 13918, 14456, 7482, 22154, 13924,
+ 22156, 13922, 22163, 14457, 22157, 7483, 13923, 22159, 13920,
+ 7768, 14455, 22165, 13917, 13919, 7769, 7485, 7767, 7484, 7771,
+ 13921, 7481, 22155, 22158, 22164, 31970, 14910, 31508, 14902,
+ 22530, 22528, 22525, 22527, 22526, 14463, 14903, 14459, 31507,
+ 22524, 8023, 14461, 14460, 7770, 14458, 14462, 14911, 14907, 14909,
+ 32399, 14904, 14905, 32400, 14908, 14906, 8197, 22816, 8200, 8199,
+ 8198, 8347, 15595, 8348, 15271, 8439, 15849, 8440, 8523, 8575,
+ 16175, 23537, 16176, 16177, 23717, 16459, 3416, 8896, 3528, 3672,
+ 3673, 3671, 17934, 3674, 3881, 3880, 18146, 9385, 4184, 4183,
+ 18772, 10168, 5406, 5407, 28089, 28091, 20183, 5855, 12025, 6305,
+ 6306, 12027, 12029, 12028, 29174, 12719, 21235, 12718, 6753, 12720,
+ 21234, 13304, 7135, 21725, 7486, 22166, 7772, 8024, 7773, 23539,
+ 3417, 17740, 17741, 17811, 9125, 18149, 18150, 9386, 4186, 4185,
+ 4187, 4534, 9732, 9733, 19184, 10169, 4937, 5408, 5856, 11363,
+ 3418, 26530, 3352, 3419, 17813, 8897, 3532, 3531, 3529, 3530,
+ 17938, 3677, 8970, 8972, 3676, 8964, 17935, 8965, 17936, 8971,
+ 8967, 8969, 3675, 8966, 8973, 8968, 17937, 3888, 3897, 3895, 9135,
+ 9132, 9140, 3893, 9141, 18166, 3886, 9138, 18155, 3892, 9134,
+ 9133, 3890, 9139, 3891, 4188, 3885, 9136, 18151, 9126, 3882, 18164,
+ 3901, 9131, 9137, 3887, 3889, 18156, 9127, 18163, 9128, 9129,
+ 26814, 3900, 3894, 3899, 9130, 3898, 3884, 3883, 3896, 18162,
+ 26817, 18160, 18161, 18165, 18158, 18159, 18440, 18433, 4202,
+ 9398, 9391, 4197, 4216, 9387, 9394, 9396, 9399, 4211, 18429, 9395,
+ 9388, 4209, 9392, 18431, 9400, 4194, 18428, 9397, 4204, 4203,
+ 9390, 4192, 18443, 18441, 4193, 4191, 18442, 4215, 4207, 4201,
+ 4189, 9393, 4200, 4190, 4208, 4217, 9734, 4205, 9389, 4195, 4198,
+ 4199, 18437, 4213, 4214, 4212, 4206, 4210, 4196, 4535, 18439,
+ 18446, 18444, 18445, 18438, 18432, 18782, 9740, 4547, 4539, 4541,
+ 4546, 9752, 4544, 10170, 4938, 4549, 9737, 9745, 4545, 9744, 9741,
+ 9749, 9751, 4538, 4542, 4548, 4940, 9746, 4540, 4551, 9739, 18784,
+ 18785, 36132, 4543, 4939, 4537, 27316, 9736, 9743, 9735, 9738,
+ 9742, 10171, 4550, 27308, 9747, 9748, 9750, 4536, 18781, 19193,
+ 19194, 18780, 18783, 27318, 4954, 10183, 4952, 4953, 10173, 10189,
+ 19187, 4943, 19190, 19196, 10757, 10191, 10185, 19199, 10176,
+ 19198, 10194, 10179, 4949, 10780, 10182, 4951, 4942, 19203, 10196,
+ 10184, 4945, 10177, 10174, 10175, 4946, 10190, 10197, 4948, 10181,
+ 10180, 4956, 4955, 4941, 4947, 4950, 10193, 19189, 19200, 10187,
+ 4944, 10172, 10195, 10186, 10188, 10192, 19191, 19202, 19197,
+ 10758, 19662, 5416, 5436, 5435, 19652, 5424, 19654, 10776, 10772,
+ 10769, 10787, 5419, 5411, 19651, 19663, 10774, 5872, 5415, 10782,
+ 19647, 5437, 5434, 10778, 10761, 19643, 19656, 5433, 10784, 10760,
+ 5422, 5426, 10783, 19648, 10770, 5427, 5421, 10759, 19644, 5858,
+ 10786, 10768, 5432, 10771, 10785, 5431, 19649, 11364, 28098, 5412,
+ 10766, 5417, 5428, 28099, 5423, 10775, 10765, 10763, 10781, 5409,
+ 5429, 5413, 5857, 10779, 5414, 28108, 5410, 5425, 5420, 5418,
+ 10767, 5430, 10764, 10777, 10773, 11366, 11365, 19658, 19659,
+ 10762, 11382, 20196, 5860, 20195, 11388, 11371, 11385, 12030,
+ 5863, 11389, 11392, 5862, 11374, 11391, 11390, 5864, 11367, 5859,
+ 5867, 20198, 5865, 11387, 28656, 11377, 5869, 11394, 11386, 11395,
+ 5877, 5875, 11384, 11383, 20186, 11381, 11375, 5868, 20185, 5866,
+ 10178, 11368, 20187, 12060, 11369, 5861, 5874, 12032, 28639, 5870,
+ 5871, 11370, 11393, 12031, 11378, 11373, 5873, 11379, 11376, 20197,
+ 20192, 5878, 28654, 20194, 6321, 20720, 20697, 12035, 12054, 12059,
+ 12047, 6317, 12064, 6314, 12033, 20705, 12034, 6307, 6316, 12041,
+ 6319, 6320, 12042, 20703, 12055, 12061, 6315, 20709, 6309, 12040,
+ 12036, 12063, 12045, 12046, 12037, 12057, 12048, 12058, 12050,
+ 20708, 6310, 12721, 6313, 6311, 12062, 12053, 12049, 20701, 20698,
+ 12038, 6763, 12052, 6318, 12044, 20699, 12043, 20719, 21248, 20713,
+ 6312, 6308, 12742, 12056, 12051, 12039, 20715, 20716, 12737, 21237,
+ 12722, 12733, 21251, 12740, 6761, 5876, 12738, 6756, 21243, 21247,
+ 21239, 6755, 12745, 29764, 12723, 12736, 12724, 12735, 6759, 12739,
+ 11380, 21244, 29765, 21253, 12746, 12731, 6762, 13318, 7136, 21246,
+ 12744, 12743, 6764, 13305, 7137, 13306, 21245, 12727, 12728, 12725,
+ 12730, 12726, 12747, 6758, 7138, 6760, 6765, 21240, 12729, 21252,
+ 12741, 21726, 21249, 12734, 21734, 13309, 21737, 6754, 7141, 13932,
+ 13314, 13313, 13315, 21729, 21728, 13312, 7142, 21740, 7148, 7145,
+ 21730, 7146, 13307, 13310, 13320, 7154, 7152, 21727, 13311, 11372,
+ 7139, 13317, 13308, 21743, 7155, 13316, 6757, 7144, 12732, 21744,
+ 21733, 7147, 21742, 7151, 7153, 7150, 7149, 21739, 7143, 13319,
+ 7140, 7156, 21738, 21736, 7490, 7491, 13931, 7500, 7497, 22169,
+ 7488, 7495, 13933, 7493, 7487, 21731, 7494, 22176, 13930, 7775,
+ 7489, 40199, 7496, 7774, 13929, 13928, 22175, 7498, 22168, 7499,
+ 22178, 13927, 13926, 7776, 13936, 7492, 13934, 22174, 22533, 7777,
+ 22536, 7782, 14466, 14468, 22822, 7779, 22824, 14469, 14465, 22823,
+ 14467, 7780, 7783, 22538, 14464, 7778, 7781, 8026, 13935, 8025,
+ 55901, 22821, 8031, 14915, 22827, 8029, 8030, 14918, 14914, 8027,
+ 14912, 8201, 14916, 31981, 14917, 14913, 22825, 8028, 15272, 23056,
+ 15275, 23057, 23055, 15276, 15274, 15277, 8202, 15273, 23422,
+ 15599, 8350, 15598, 15597, 15596, 8349, 8351, 15850, 8442, 8441,
+ 23541, 23542, 16026, 16025, 16028, 8576, 8524, 16179, 16027, 23540,
+ 23611, 16178, 8578, 8577, 8616, 16284, 16354, 3420, 44443, 18787,
+ 11396, 13937, 17742, 17743, 3678, 8974, 3904, 3902, 26820, 3903,
+ 26819, 9401, 4218, 4552, 18789, 9753, 18791, 9754, 18788, 4553,
+ 10199, 27670, 4957, 4958, 10198, 19204, 27671, 19668, 19667, 5444,
+ 28116, 5440, 28120, 10788, 5447, 5446, 5439, 5442, 5445, 5441,
+ 19665, 11400, 5438, 5879, 20199, 20200, 20201, 5881, 5882, 11399,
+ 11402, 5880, 11397, 11401, 11398, 20722, 6322, 20725, 29200, 12065,
+ 20724, 21259, 6766, 12748, 7501, 7157, 13321, 7158, 7159, 13323,
+ 13322, 13324, 13939, 13938, 14471, 14470, 7784, 7785, 15278, 23250,
+ 3421, 18103, 18448, 27674, 19207, 11403, 19669, 19670, 5884, 5883,
+ 12066, 14919, 8443, 16180, 3422, 26822, 4959, 19209, 5449, 5448,
+ 11404, 11405, 6323, 12749, 6767, 13940, 31520, 3423, 3533, 18450,
+ 4219, 9402, 9755, 4554, 5450, 19671, 11406, 5885, 6324, 29206,
+ 13325, 13326, 30971, 22540, 14472, 8032, 16355, 3424, 18451, 9403,
+ 4220, 4555, 18792, 9756, 4960, 10203, 10201, 10202, 4961, 10200,
+ 19673, 28125, 19676, 19674, 5452, 5453, 10789, 5454, 5451, 11407,
+ 20204, 11408, 12067, 29207, 6769, 6768, 30972, 14473, 14920, 23060,
+ 15280, 15279, 15600, 17744, 8865, 4556, 19678, 20727, 3425, 3534,
+ 17814, 3680, 3679, 17942, 17941, 3681, 3682, 8976, 8975, 9142,
+ 3905, 9145, 9144, 9143, 9146, 18170, 27043, 4221, 9409, 9405,
+ 9414, 18458, 18453, 4228, 18457, 4226, 9410, 9406, 9413, 4225,
+ 4232, 9408, 9404, 4231, 9411, 4224, 9412, 4227, 4229, 9416, 9415,
+ 9407, 4223, 4222, 4230, 27042, 18455, 18456, 18799, 18795, 9761,
+ 9767, 18802, 4562, 4559, 9758, 9763, 18797, 4565, 4557, 9762,
+ 4560, 4563, 18794, 27330, 9765, 18798, 4558, 9770, 4561, 18800,
+ 4564, 9759, 9764, 9768, 9760, 9757, 18803, 18804, 9769, 9766,
+ 18801, 18728, 19213, 4969, 4962, 4965, 19219, 4968, 19211, 10206,
+ 19216, 4963, 10204, 19215, 4967, 19220, 19212, 4964, 19210, 10207,
+ 4966, 19679, 28130, 10793, 5456, 10792, 10794, 5455, 5460, 10205,
+ 19218, 10791, 10795, 19681, 5457, 10790, 5459, 19682, 5458, 20215,
+ 11415, 20208, 11410, 20214, 5886, 5890, 5887, 11413, 11416, 20212,
+ 5888, 28673, 5889, 5894, 12076, 11414, 5892, 11411, 11409, 20207,
+ 5893, 20209, 11412, 20213, 6330, 29212, 12068, 6327, 6328, 6326,
+ 12073, 12072, 12069, 6332, 20738, 20733, 12071, 5891, 20736, 20728,
+ 12075, 12070, 6329, 6325, 6331, 12074, 21263, 29778, 21264, 6772,
+ 29782, 12752, 12751, 12750, 6770, 29780, 21268, 21262, 21266,
+ 6771, 13329, 13332, 7161, 21749, 21751, 7160, 13333, 13328, 7163,
+ 13330, 21746, 7162, 13327, 21745, 13331, 7507, 7504, 13949, 13948,
+ 21748, 13947, 13942, 22182, 13943, 22186, 30973, 22179, 7505,
+ 22183, 7502, 7506, 13941, 7503, 13944, 13945, 13950, 22185, 22546,
+ 13946, 22544, 22545, 14474, 31522, 22541, 22542, 7787, 22547,
+ 14923, 7786, 14921, 14922, 8033, 8204, 15281, 23064, 8203, 23063,
+ 15602, 15603, 23251, 8352, 23252, 15601, 8444, 33413, 16181, 8579,
+ 16285, 16286, 23718, 3426, 26599, 3683, 3684, 3906, 18174, 9417,
+ 4566, 4970, 5461, 5286, 5895, 5896, 5751, 11417, 6333, 12754,
+ 12753, 22187, 57754, 3427, 3685, 9418, 4234, 18460, 4233, 18806,
+ 9771, 9772, 10208, 10209, 4971, 4972, 19685, 4973, 10796, 19684,
+ 19683, 5463, 28678, 5898, 20218, 5897, 12077, 12346, 12755, 13951,
+ 22189, 8034, 8353, 3428, 3537, 3538, 3536, 3539, 3535, 17815,
+ 3688, 17946, 8984, 3687, 3689, 17947, 17944, 8979, 8978, 8981,
+ 8980, 8983, 3686, 8977, 8982, 18181, 9147, 3916, 9148, 9152, 3915,
+ 18182, 9156, 9151, 9154, 3908, 3909, 3910, 3911, 18178, 3918,
+ 18177, 9150, 3913, 3919, 18180, 9149, 9155, 18175, 3912, 9153,
+ 3914, 3907, 3917, 18183, 26827, 4255, 18462, 9420, 4235, 27050,
+ 4245, 4246, 4238, 4256, 4240, 9428, 4251, 9423, 4241, 9438, 9439,
+ 9431, 9424, 4254, 9436, 4249, 4247, 18473, 9437, 18464, 9435,
+ 9427, 9419, 9426, 4242, 27046, 4248, 18465, 4236, 9430, 9429,
+ 9421, 18470, 4250, 9433, 9422, 4253, 9440, 4237, 18463, 4244,
+ 9425, 9434, 4252, 27048, 4239, 4243, 27051, 9432, 18469, 18467,
+ 9804, 4574, 4587, 18821, 9799, 9789, 4580, 9787, 4573, 9782, 4583,
+ 9795, 9776, 9778, 18813, 27692, 27337, 18815, 9781, 9773, 9794,
+ 9810, 4578, 9783, 9801, 18812, 9775, 9808, 9809, 9812, 9803, 9788,
+ 9796, 4584, 4571, 4579, 4591, 4568, 4570, 18816, 18810, 18825,
+ 9780, 4588, 4581, 9806, 9777, 4590, 4585, 9786, 27336, 27681,
+ 4589, 9793, 9785, 4582, 9805, 9797, 18809, 4576, 9811, 9784, 4572,
+ 9802, 9792, 4577, 9798, 4569, 9774, 4586, 4988, 4575, 9791, 9790,
+ 9779, 18472, 9807, 18819, 9800, 18817, 4567, 18824, 18822, 45765,
+ 18823, 10229, 4995, 10230, 19236, 10218, 4984, 4996, 19230, 10211,
+ 19226, 10220, 10228, 19234, 10210, 10237, 4974, 19237, 19243,
+ 19223, 10236, 10231, 19238, 10232, 4982, 4993, 10222, 19229, 10223,
+ 10233, 10224, 19242, 10219, 10213, 10214, 10227, 10221, 19227,
+ 19222, 4975, 4979, 10235, 10215, 4991, 4987, 19233, 27688, 4990,
+ 4997, 4980, 4992, 10226, 4994, 4977, 19232, 4976, 10212, 27682,
+ 10216, 4985, 10234, 10225, 10217, 4989, 4986, 18814, 4978, 4981,
+ 19241, 19231, 19240, 19239, 10817, 19698, 10801, 10802, 10806,
+ 19709, 10821, 10818, 19691, 10811, 10810, 5470, 10814, 10829,
+ 10797, 19704, 10830, 10816, 10834, 10822, 5469, 10820, 5464, 5485,
+ 5475, 19700, 5479, 5478, 10798, 28136, 10827, 10833, 10825, 10832,
+ 19694, 10813, 10799, 10831, 10815, 5467, 5480, 19703, 10824, 5473,
+ 19690, 19705, 19693, 10823, 10800, 5481, 19688, 5483, 10826, 5484,
+ 5466, 10807, 10828, 19697, 19545, 5472, 5482, 10809, 10819, 10804,
+ 10808, 5477, 10803, 5465, 5474, 5471, 10812, 4983, 11440, 5468,
+ 19689, 19695, 19707, 19708, 19699, 20246, 5476, 20242, 11443,
+ 11465, 11454, 5918, 20233, 5913, 11437, 5914, 11453, 20239, 11446,
+ 11459, 5910, 11419, 11461, 5900, 11427, 5903, 5902, 28687, 5919,
+ 19696, 11421, 11455, 11456, 5905, 5901, 11435, 20238, 5912, 11430,
+ 20227, 11457, 5908, 11449, 11462, 11424, 11429, 11423, 20219,
+ 5907, 11442, 12099, 11425, 5911, 11434, 11458, 5906, 11431, 11428,
+ 11445, 5909, 5899, 5921, 11448, 11447, 20226, 20243, 20234, 20236,
+ 20229, 20224, 11420, 5904, 11460, 11436, 11438, 20232, 11451,
+ 11450, 11418, 5915, 5917, 11426, 11433, 11441, 5916, 11432, 11444,
+ 11463, 11452, 20237, 20245, 20228, 11464, 11422, 20241, 12119,
+ 6341, 20748, 12117, 12096, 12101, 12094, 20766, 12113, 12080,
+ 12087, 29220, 12111, 12121, 12097, 20751, 12084, 12103, 12108,
+ 12088, 20754, 12105, 12085, 20740, 20764, 12092, 12093, 6343,
+ 12112, 12110, 20762, 12081, 12115, 20763, 12116, 12118, 6347,
+ 6339, 20758, 10805, 12089, 12107, 12090, 6336, 6352, 12114, 6350,
+ 6346, 12079, 6338, 20768, 12082, 6351, 20767, 12098, 12078, 20765,
+ 6344, 12102, 12086, 6345, 12095, 6335, 5920, 12104, 11439, 12083,
+ 29215, 20756, 12109, 6340, 12106, 6337, 12100, 6348, 12091, 12120,
+ 20753, 20770, 6342, 12231, 20761, 6349, 12769, 12767, 21269, 12789,
+ 12765, 21272, 12783, 6334, 6775, 12761, 12788, 21292, 12766, 12780,
+ 6780, 6773, 21289, 12786, 21281, 12759, 12785, 21282, 6791, 12776,
+ 12792, 6789, 12768, 6774, 12770, 12784, 6783, 12763, 6787, 6777,
+ 12772, 12762, 12756, 21273, 12782, 6784, 12791, 12757, 6781, 29790,
+ 12778, 29792, 6782, 12764, 12775, 12771, 12773, 21278, 6776, 12790,
+ 6790, 12774, 21270, 12793, 29804, 21271, 12758, 12779, 6779, 6788,
+ 6786, 12760, 12781, 6785, 21280, 21283, 6778, 12777, 21288, 21279,
+ 29805, 21765, 12787, 21287, 13345, 21277, 13341, 13337, 13357,
+ 13354, 7166, 21781, 21777, 13361, 13344, 7177, 13351, 21760, 21762,
+ 13340, 13350, 7174, 13370, 30390, 13367, 13353, 13338, 21776,
+ 21768, 13358, 13360, 7170, 13348, 13343, 13334, 7167, 7175, 30401,
+ 13363, 7176, 13335, 13369, 13356, 13362, 7173, 21758, 21761, 13359,
+ 21752, 13366, 21772, 7178, 21767, 7172, 13352, 13339, 13371, 13336,
+ 13364, 7169, 21755, 13346, 21754, 13347, 7168, 7165, 13342, 7171,
+ 21763, 7164, 21779, 13365, 13368, 13349, 13964, 21775, 21770,
+ 21778, 13956, 22195, 13952, 7520, 22211, 22207, 7509, 7514, 7510,
+ 13966, 13977, 7508, 13958, 13967, 13355, 13968, 22191, 22194,
+ 7515, 22215, 13983, 7519, 7522, 13954, 22210, 7518, 22200, 13981,
+ 13982, 13972, 13971, 13963, 22192, 22213, 13973, 13980, 13979,
+ 22198, 7513, 7511, 13965, 13962, 22219, 13959, 13978, 7521, 13976,
+ 7517, 7516, 22190, 13970, 30404, 13953, 13955, 13957, 13975, 13969,
+ 7512, 22197, 13960, 22201, 13974, 22216, 22209, 13961, 22550,
+ 7795, 14492, 7788, 14477, 22556, 14488, 7790, 14495, 22560, 14484,
+ 22557, 14479, 22551, 31526, 14496, 14475, 14486, 22566, 7797,
+ 14491, 14497, 14485, 7789, 14487, 14476, 7796, 22562, 22555, 14494,
+ 14481, 7792, 22563, 14483, 14480, 7798, 14482, 7791, 7794, 14490,
+ 14478, 14493, 22553, 14489, 22568, 22831, 8036, 14934, 8041, 8042,
+ 22834, 22842, 22833, 8035, 14933, 22835, 14930, 14931, 8039, 14925,
+ 14929, 8038, 22841, 14926, 22836, 22844, 22840, 22837, 8040, 8037,
+ 22843, 14924, 14928, 14932, 22838, 15287, 15284, 15293, 23065,
+ 15292, 15290, 15285, 23076, 8208, 23066, 23075, 32416, 23068,
+ 23074, 15286, 8207, 7793, 15289, 8206, 15294, 15288, 15283, 14927,
+ 23069, 23067, 8205, 15282, 15607, 23258, 15606, 15291, 8354, 22832,
+ 15610, 15611, 15605, 15609, 32759, 15604, 23256, 32757, 15854,
+ 15608, 8447, 8445, 15852, 23426, 23425, 23424, 15855, 23428, 15851,
+ 15853, 8446, 23546, 23545, 16030, 16031, 8525, 16029, 16184, 8580,
+ 16182, 16183, 16287, 23677, 8650, 16358, 16356, 16357, 16359,
+ 23719, 23756, 23720, 16460, 3429, 3690, 17948, 4257, 27058, 9441,
+ 18474, 18475, 9813, 27341, 18827, 19245, 10238, 10240, 19244,
+ 10239, 19246, 10241, 5486, 10836, 10242, 19711, 10835, 10837,
+ 10838, 11466, 5923, 11467, 11469, 5924, 5922, 11468, 20772, 12127,
+ 12125, 12124, 20771, 12123, 12122, 6353, 12126, 6792, 12794, 12796,
+ 6793, 12795, 7180, 21783, 7179, 13372, 21782, 21784, 13985, 13984,
+ 13986, 22221, 22220, 7523, 14498, 7799, 22570, 14935, 8043, 15295,
+ 8526, 3430, 3540, 3691, 3920, 4258, 4259, 18476, 18477, 4592,
+ 18828, 19247, 10243, 20250, 20248, 29810, 20773, 6354, 20774,
+ 21294, 30407, 13498, 7524, 8044, 3431, 17816, 3692, 27063, 9443,
+ 4260, 9442, 18479, 9814, 4593, 9815, 36168, 4594, 10245, 4999,
+ 4998, 19249, 10843, 10841, 10842, 10840, 19713, 10839, 11470,
+ 11473, 5926, 11471, 5925, 11472, 12128, 20775, 29814, 12797, 12798,
+ 12799, 21295, 13375, 13374, 7181, 13373, 13376, 13987, 31002,
+ 40877, 13988, 13989, 31539, 14499, 7800, 8045, 15296, 8448, 8866,
+ 18480, 4595, 9816, 5000, 28151, 28153, 5487, 19714, 5927, 11474,
+ 20252, 6356, 6355, 20779, 12800, 12801, 7182, 7183, 13991, 13990,
+ 14936, 16185, 3432, 8867, 3541, 17949, 3921, 9157, 18481, 4596,
+ 6357, 3433, 9817, 4597, 9818, 7801, 3434, 9444, 9819, 18833, 10250,
+ 10249, 10247, 19253, 10246, 10251, 10248, 19251, 19252, 5488,
+ 5489, 19715, 5928, 11475, 28715, 11476, 11477, 20254, 12132, 12133,
+ 12131, 20781, 12129, 12130, 6358, 12802, 13379, 13378, 13377,
+ 13380, 13993, 13992, 7525, 13994, 7802, 14500, 22572, 14937, 15297,
+ 16032, 3435, 3543, 3542, 26696, 4261, 8868, 8898, 3693, 8985,
+ 9158, 9159, 4262, 18484, 9445, 4598, 9820, 9821, 5001, 5005, 10252,
+ 5004, 5002, 5003, 10844, 5490, 5931, 20255, 5929, 5930, 11478,
+ 20782, 20783, 6794, 3436, 8899, 17820, 3544, 17817, 8902, 17954,
+ 3547, 8901, 3546, 3545, 3922, 8900, 17821, 17822, 8986, 8990,
+ 8992, 8993, 3703, 3704, 8989, 3699, 17952, 8987, 17958, 8991,
+ 3700, 18194, 3695, 17951, 3696, 17956, 3702, 8988, 3694, 3923,
+ 3697, 3698, 3701, 9176, 9174, 9161, 3935, 9168, 3930, 9162, 18491,
+ 9170, 18189, 9167, 3933, 9166, 3940, 9175, 3942, 18192, 3944,
+ 17953, 9160, 18196, 3931, 9177, 18190, 3938, 3941, 18185, 9468,
+ 3925, 3948, 3939, 9163, 3928, 3943, 9171, 3926, 3927, 9466, 9164,
+ 3934, 3945, 9178, 9165, 3932, 18186, 3937, 9446, 3946, 9172, 3936,
+ 18490, 3947, 3924, 9169, 3929, 9173, 9467, 18187, 18191, 18201,
+ 18198, 18195, 18200, 4274, 4290, 9453, 4281, 18845, 9474, 4266,
+ 18498, 4269, 9465, 27077, 9451, 9455, 4277, 4279, 9458, 4286,
+ 4272, 4270, 4271, 4285, 9470, 4280, 9457, 9459, 4278, 4283, 9460,
+ 9473, 18500, 4599, 4289, 27070, 4267, 9472, 18499, 9476, 9456,
+ 9478, 9463, 4276, 9452, 4275, 4293, 4282, 18497, 9450, 9830, 4288,
+ 4292, 9464, 9469, 18492, 4294, 4287, 4273, 4263, 18496, 4268,
+ 27068, 9454, 4264, 9477, 18494, 9448, 9447, 9461, 9449, 4291,
+ 5006, 4284, 9462, 4265, 18846, 4614, 9475, 18837, 9837, 9840,
+ 18847, 9843, 9832, 18839, 18841, 9846, 9849, 9851, 9829, 4600,
+ 4605, 10257, 4621, 9844, 9852, 9836, 9828, 18840, 18838, 18844,
+ 10284, 4608, 9841, 9833, 9835, 4613, 19265, 9838, 4607, 9825,
+ 9847, 18842, 9850, 18836, 18854, 4604, 18850, 4616, 9822, 4618,
+ 4602, 4622, 9848, 9824, 4619, 10278, 9471, 4606, 4601, 9831, 9823,
+ 4620, 4612, 9842, 4617, 4615, 9834, 4609, 9826, 4610, 4611, 9827,
+ 9845, 4603, 9839, 27354, 18852, 18848, 19262, 19258, 10260, 5014,
+ 5019, 19264, 19275, 19261, 10269, 10275, 10271, 10258, 10261,
+ 10254, 10255, 5026, 5011, 10270, 10279, 5021, 5007, 19254, 5016,
+ 10262, 5018, 10263, 10273, 19271, 19274, 19257, 5020, 10288, 10256,
+ 5013, 5012, 5024, 10253, 10286, 10274, 10287, 10281, 10267, 10282,
+ 19270, 10276, 10285, 10283, 5025, 10268, 5010, 5009, 5017, 5023,
+ 10280, 5022, 10265, 5491, 19263, 10289, 10264, 10259, 5015, 5027,
+ 5008, 19276, 10272, 10277, 19268, 19266, 19267, 5525, 10846, 10850,
+ 19724, 5506, 5504, 19735, 19740, 5495, 10848, 10847, 5515, 20257,
+ 10853, 5509, 19727, 10871, 10883, 5492, 10868, 10861, 5527, 10845,
+ 19719, 10873, 19720, 5524, 5512, 5523, 5502, 10857, 10875, 10867,
+ 5503, 5497, 10881, 19721, 10874, 10876, 5505, 5513, 10878, 10855,
+ 10872, 10860, 10880, 5518, 5494, 5516, 10865, 10863, 10864, 5507,
+ 10859, 10858, 5496, 10852, 10882, 5498, 10862, 5528, 19729, 5522,
+ 10851, 5519, 5517, 5526, 10869, 5521, 10266, 10870, 5520, 10877,
+ 5493, 10866, 5511, 10854, 5510, 19737, 5508, 5500, 5499, 11479,
+ 10879, 20270, 19747, 10856, 19745, 19742, 11500, 19725, 5501,
+ 19732, 19743, 19731, 19744, 19734, 28182, 19738, 19748, 19746,
+ 20261, 5960, 5514, 5942, 11494, 5956, 20259, 11482, 5939, 5935,
+ 11512, 5941, 5945, 5940, 5949, 11516, 11507, 20284, 20286, 11489,
+ 5954, 5948, 11501, 5932, 11513, 11506, 5936, 11495, 5951, 11524,
+ 11525, 28728, 5933, 11511, 5953, 11499, 11485, 11486, 5957, 11490,
+ 11497, 11491, 20267, 5955, 5963, 11487, 11480, 11481, 20263, 11483,
+ 5938, 11496, 20287, 5952, 5961, 20265, 20282, 11498, 11522, 11514,
+ 5934, 11520, 5946, 20279, 5944, 20277, 11526, 5943, 11504, 11492,
+ 11502, 5966, 11508, 11505, 11488, 5962, 11518, 11515, 11523, 5937,
+ 11503, 5965, 20268, 11510, 20799, 20273, 5947, 5950, 20269, 11509,
+ 5964, 11493, 10849, 20258, 20285, 11519, 11517, 11521, 20275,
+ 28731, 20276, 20281, 28732, 11484, 5959, 12164, 12163, 12137,
+ 6364, 20789, 12162, 12140, 12141, 29264, 6374, 12171, 6369, 12161,
+ 20792, 12134, 6375, 6365, 12149, 12139, 12142, 12166, 6359, 12173,
+ 12165, 6368, 12154, 6379, 20787, 20795, 6378, 6372, 20805, 29255,
+ 12172, 6360, 12152, 12143, 12156, 12168, 6380, 20798, 6362, 12151,
+ 20786, 12144, 6371, 20790, 6370, 12147, 12157, 12167, 12138, 12148,
+ 6363, 12158, 6376, 6367, 12145, 6366, 12136, 12150, 12170, 5958,
+ 6822, 12153, 12803, 12155, 12169, 6373, 12146, 6361, 6377, 7201,
+ 12135, 49019, 12160, 20809, 20803, 20812, 12159, 20802, 20810,
+ 20804, 20800, 20811, 12831, 6819, 12820, 12825, 6808, 21297, 12805,
+ 6821, 21298, 6799, 12804, 12837, 6823, 12808, 12824, 21312, 12810,
+ 12840, 12836, 6797, 6807, 13406, 6820, 6805, 12806, 21310, 12835,
+ 6809, 12832, 12845, 12812, 12821, 21801, 21302, 12843, 12833,
+ 6804, 21787, 21311, 12819, 6798, 6796, 6814, 29832, 21306, 12817,
+ 12814, 12815, 21301, 12839, 21303, 12844, 12842, 6802, 12846,
+ 6806, 6813, 29833, 12807, 13382, 12816, 21305, 6800, 6818, 6815,
+ 6803, 12826, 12811, 6816, 12828, 6810, 6812, 6795, 21304, 12830,
+ 12822, 12809, 6811, 12838, 12841, 12818, 12829, 21797, 6801, 7184,
+ 12827, 13381, 21309, 12834, 21308, 29847, 21313, 12813, 13391,
+ 13401, 7187, 13400, 13412, 7189, 13398, 30417, 13402, 7200, 21806,
+ 13393, 7192, 21796, 13405, 14002, 7204, 7203, 13407, 13390, 13417,
+ 7198, 21788, 7188, 13410, 30434, 13414, 13419, 13408, 13396, 7191,
+ 7194, 7202, 7197, 21798, 13399, 12823, 21807, 21789, 13395, 13418,
+ 7193, 21802, 7196, 13420, 7185, 13409, 13383, 13415, 7811, 21803,
+ 13397, 31010, 7186, 13392, 7190, 13384, 6817, 13388, 30416, 13413,
+ 13389, 13387, 7195, 21804, 13411, 21800, 13386, 13404, 13403,
+ 13416, 13394, 7199, 30429, 14005, 22237, 7538, 7528, 14017, 13997,
+ 7530, 14009, 7537, 7532, 14007, 14502, 14013, 14019, 14012, 13995,
+ 14010, 14021, 14023, 7527, 14022, 7533, 7539, 22235, 7536, 22239,
+ 14016, 7535, 14011, 22228, 13999, 14004, 22231, 14015, 7534, 7531,
+ 7526, 7529, 14003, 31021, 13385, 13998, 14001, 14018, 14006, 13996,
+ 14501, 14020, 14000, 14014, 21794, 22236, 14504, 7815, 22575,
+ 22574, 7803, 22580, 22581, 7807, 14506, 14512, 14510, 7805, 7806,
+ 7813, 14513, 14505, 7808, 22576, 14509, 14508, 14514, 7814, 22582,
+ 7809, 7812, 14507, 7816, 7810, 7817, 7804, 14511, 23082, 14503,
+ 22240, 22584, 14950, 8050, 14947, 14949, 22849, 8048, 14945, 14946,
+ 14941, 22851, 22848, 14008, 14942, 8049, 14938, 22847, 8046, 14951,
+ 8047, 14939, 14940, 14944, 8052, 22850, 8051, 32021, 22852, 14943,
+ 8214, 15301, 15307, 8215, 15298, 8212, 8209, 15309, 8213, 23079,
+ 8210, 15300, 15303, 15304, 15305, 15308, 23081, 14948, 15299,
+ 8211, 15306, 15623, 15302, 23080, 15614, 8356, 15617, 8357, 15626,
+ 15616, 15613, 23266, 15615, 15619, 15622, 15621, 15625, 15612,
+ 23264, 8355, 15620, 15624, 15627, 15618, 15856, 15857, 15861,
+ 15862, 23433, 15859, 15860, 15858, 23431, 8449, 23432, 8527, 16036,
+ 23615, 23549, 16033, 16034, 16035, 8528, 23616, 16187, 16186,
+ 16290, 8617, 16288, 16291, 16289, 16360, 8651, 8665, 16436, 16414,
+ 23776, 16435, 16479, 16480, 3437, 26555, 17961, 17959, 3705, 8994,
+ 17960, 17964, 9179, 18207, 3949, 18204, 3952, 18203, 9180, 18208,
+ 3950, 3951, 18205, 18510, 9487, 9489, 9484, 9481, 9483, 18507,
+ 18503, 18508, 4298, 18502, 18512, 18509, 4296, 18505, 18504, 9485,
+ 4297, 9482, 9479, 4295, 9486, 27080, 9480, 4299, 9488, 27082,
+ 9854, 18861, 9858, 18859, 18857, 4631, 18855, 27359, 18868, 18865,
+ 9861, 18862, 4623, 4626, 4628, 4630, 4627, 9857, 9856, 18867,
+ 4625, 9859, 9860, 18866, 9853, 4629, 18871, 4624, 18860, 9855,
+ 27361, 19277, 10303, 10304, 10305, 5032, 27720, 5028, 10294, 19279,
+ 10302, 10307, 5033, 19280, 10292, 10298, 10291, 10301, 19286,
+ 19284, 10297, 5029, 5031, 10306, 19278, 10290, 10293, 10299, 19282,
+ 10300, 10308, 10296, 19281, 5030, 19285, 5533, 10890, 19755, 19757,
+ 10892, 10888, 19754, 10900, 10886, 10899, 5529, 10884, 11530,
+ 10894, 5532, 19760, 10895, 10898, 19753, 10902, 19751, 10891,
+ 28187, 10896, 19752, 19756, 5530, 5531, 10901, 10889, 10885, 10903,
+ 19758, 10893, 10897, 10887, 5967, 5968, 11540, 5974, 20293, 11528,
+ 11537, 11527, 5971, 11535, 11533, 20302, 11534, 5969, 20301, 11538,
+ 20288, 20299, 20291, 20304, 11531, 11529, 5970, 11532, 11536,
+ 20300, 20298, 20290, 5972, 20292, 20296, 11539, 12179, 12186,
+ 12188, 12194, 20828, 6393, 12174, 20817, 6385, 20819, 12189, 6390,
+ 12195, 6381, 20822, 12192, 20829, 12176, 12193, 12175, 6395, 20823,
+ 12187, 6382, 12196, 21365, 6387, 12180, 6392, 12191, 12178, 12185,
+ 12181, 12177, 6384, 6391, 6389, 6386, 6394, 6383, 12184, 20820,
+ 6388, 20830, 5973, 20814, 12190, 12182, 20824, 12183, 29852, 29856,
+ 12854, 21322, 6826, 21321, 21319, 12850, 12856, 12852, 21323,
+ 6828, 12851, 12855, 12847, 21325, 12849, 6827, 21317, 21320, 21318,
+ 21315, 12853, 12848, 21314, 6829, 6824, 12857, 6825, 13426, 13423,
+ 13435, 13429, 13431, 7205, 13425, 13433, 21817, 21811, 13432,
+ 13430, 21816, 13436, 7208, 13427, 13434, 21815, 7206, 21812, 21809,
+ 13422, 13424, 7207, 13421, 13437, 13428, 22249, 22241, 14027,
+ 7546, 22247, 22243, 14038, 14036, 7540, 14026, 14029, 14030, 14025,
+ 7550, 7551, 14024, 14039, 14034, 7544, 7541, 14033, 14031, 22250,
+ 31022, 7547, 14035, 7542, 22245, 7543, 22253, 14032, 7545, 14028,
+ 54378, 14037, 7548, 14040, 14041, 7549, 7819, 7826, 14515, 14521,
+ 22587, 14519, 7822, 7821, 7818, 14517, 22589, 22594, 22591, 7824,
+ 7823, 7820, 22592, 14520, 14516, 14518, 22593, 7825, 8056, 14954,
+ 22854, 8053, 8054, 14956, 8055, 14953, 22855, 14952, 15313, 14955,
+ 23083, 15314, 8216, 15312, 23084, 32429, 15311, 23274, 15310,
+ 8217, 23271, 8358, 23273, 23270, 15628, 15629, 23085, 23268, 23272,
+ 15865, 15864, 8450, 23550, 15863, 16037, 16038, 23551, 23618,
+ 16188, 16292, 23722, 23721, 16361, 16461, 8685, 16481, 3438, 26556,
+ 4300, 4301, 18872, 27363, 4632, 20305, 30437, 7827, 3439, 4302,
+ 5034, 6396, 3440, 18874, 5534, 6830, 8869, 18515, 9862, 10309,
+ 29277, 12858, 30438, 7828, 3441, 4303, 9863, 9864, 11541, 5975,
+ 20834, 12197, 20833, 20832, 6397, 12859, 29859, 21821, 7209, 21820,
+ 8218, 3442, 11542, 3443, 3707, 8995, 3706, 3955, 3954, 3953, 9181,
+ 18209, 18518, 18519, 4304, 18520, 4305, 9490, 27088, 9865, 18876,
+ 9868, 4634, 9866, 27368, 4633, 9867, 4635, 10312, 10311, 10310,
+ 5035, 19291, 10905, 10906, 5535, 10904, 10907, 5977, 5536, 20307,
+ 20306, 5976, 11546, 11545, 20308, 11543, 11544, 11547, 12199,
+ 12198, 12202, 29280, 12201, 12200, 6831, 12862, 21328, 12861,
+ 6832, 12860, 13438, 21822, 13439, 7210, 31032, 14042, 14043, 39596,
+ 15319, 8219, 15318, 15317, 15315, 15316, 8451, 15630, 16039, 16362,
+ 23778, 3444, 26531, 8903, 3548, 8904, 17965, 17966, 26702, 8996,
+ 8997, 18216, 18214, 9187, 18211, 18212, 9183, 18215, 9182, 4306,
+ 9186, 3957, 9184, 3956, 9188, 9185, 18213, 9494, 9869, 9492, 9499,
+ 18523, 4307, 18527, 4310, 9500, 9496, 18524, 9497, 27093, 9491,
+ 4309, 9493, 4308, 9498, 18525, 9495, 45307, 9873, 4637, 4638,
+ 18884, 9876, 9870, 18883, 9875, 18879, 9871, 4636, 9874, 9872,
+ 18882, 18880, 10318, 10315, 19293, 10317, 5040, 5039, 5037, 10314,
+ 10319, 5036, 5038, 10316, 10915, 10313, 10320, 19294, 28202, 28209,
+ 20309, 10910, 10914, 37087, 10913, 11549, 11560, 28212, 19766,
+ 10916, 19765, 10911, 11548, 5540, 28201, 28211, 5539, 10909, 10912,
+ 5541, 19764, 5538, 5537, 10908, 10917, 11551, 11558, 20310, 5979,
+ 11557, 11554, 20317, 5981, 20312, 20314, 20313, 11556, 20838,
+ 20316, 11550, 11552, 11555, 11553, 5980, 11559, 5978, 6398, 20311,
+ 12206, 12205, 12203, 49065, 6401, 6400, 12207, 20836, 12204, 12863,
+ 6833, 6399, 20839, 12209, 12208, 21823, 12866, 12864, 7211, 21332,
+ 6834, 12865, 13441, 21331, 21333, 21330, 30448, 7212, 13440, 13449,
+ 13448, 13446, 30446, 13445, 13442, 13443, 13444, 13447, 13450,
+ 14048, 14045, 14046, 7552, 14044, 14050, 14049, 14047, 14523,
+ 14524, 7829, 22600, 7830, 14522, 31565, 8058, 14957, 8057, 8220,
+ 32434, 8221, 8359, 15632, 15631, 15866, 16040, 8529, 16190, 16189,
+ 16191, 3549, 9877, 5041, 5542, 10918, 3550, 8905, 3445, 17823,
+ 17746, 8998, 17968, 26705, 9193, 9191, 9192, 9189, 3958, 9190,
+ 18219, 18536, 9508, 18530, 4313, 9506, 9502, 9505, 18529, 9501,
+ 4315, 9504, 18528, 4312, 4311, 18535, 4314, 9507, 9503, 18532,
+ 4642, 4645, 9885, 9884, 9883, 4639, 9892, 9882, 27739, 4641, 10325,
+ 18887, 9889, 9887, 4644, 18890, 9879, 9890, 18886, 9881, 9891,
+ 9888, 9880, 18889, 4640, 9893, 9878, 4643, 18893, 18888, 18891,
+ 10330, 10321, 10332, 19299, 10324, 10335, 10336, 10322, 10334,
+ 10331, 10329, 10333, 5047, 19301, 5045, 19308, 19297, 10327, 19307,
+ 10323, 19302, 10326, 10337, 10328, 5046, 9886, 19298, 5042, 5044,
+ 19768, 10932, 10921, 10919, 20327, 10920, 19300, 10927, 19771,
+ 10928, 10924, 5547, 10929, 10926, 10923, 19767, 5545, 10922, 5543,
+ 5546, 10925, 10933, 5043, 5544, 10931, 10930, 5548, 20325, 20329,
+ 11565, 20318, 20330, 20321, 11566, 5991, 20328, 11572, 20850,
+ 20324, 11574, 11567, 5985, 11571, 11570, 5986, 5992, 20841, 5993,
+ 11573, 5983, 11564, 11562, 11568, 11561, 5990, 11563, 11569, 11575,
+ 5984, 5989, 5987, 5988, 20322, 20331, 5982, 20326, 20845, 20858,
+ 6408, 12216, 6407, 12220, 20852, 12210, 20857, 12221, 20851, 20843,
+ 20854, 12211, 12212, 20856, 12222, 12219, 12217, 12218, 12214,
+ 12213, 20844, 12223, 6404, 20848, 12215, 20853, 6409, 6403, 6410,
+ 6411, 20847, 6406, 6405, 21342, 21337, 12867, 6836, 6835, 21335,
+ 21336, 12872, 21339, 7213, 6837, 21338, 21334, 6839, 12873, 6402,
+ 6838, 12869, 12871, 12868, 21344, 12870, 21340, 13460, 21824,
+ 21834, 13459, 13456, 7216, 14051, 7217, 13455, 21832, 7215, 21829,
+ 13457, 13454, 13451, 13458, 13452, 13453, 7214, 21828, 31044,
+ 14528, 31045, 14055, 21833, 14054, 14056, 22257, 14525, 7555,
+ 31043, 14052, 22254, 7553, 22259, 7557, 7556, 14053, 14057, 22258,
+ 7554, 14532, 7833, 8059, 7834, 7831, 14529, 14527, 22606, 14530,
+ 22602, 14533, 7832, 14531, 14526, 22604, 14960, 14963, 15322,
+ 14958, 22856, 15633, 14964, 22857, 8222, 14962, 8060, 14959, 14961,
+ 14965, 15323, 23087, 15321, 32436, 23089, 23090, 23088, 8223,
+ 15320, 23279, 23277, 23280, 8360, 23278, 23281, 23434, 8453, 16042,
+ 8452, 16044, 16041, 16043, 8581, 16293, 3551, 9509, 10338, 10339,
+ 5549, 12224, 7558, 8224, 8530, 16294, 3552, 9510, 189, 27381,
+ 18895, 9894, 18894, 9895, 18897, 19309, 10340, 10341, 5550, 5551,
+ 20332, 28768, 11576, 12227, 12226, 12225, 12874, 20860, 12875,
+ 12876, 6840, 21345, 13462, 13461, 21836, 22260, 14058, 7559, 7560,
+ 22261, 14537, 14534, 14535, 14536, 14967, 14966, 8061, 15324,
+ 15867, 3553, 4646, 19775, 5552, 12228, 20861, 3554, 27385, 10342,
+ 5553, 19776, 20333, 5994, 5995, 38956, 3555, 3556, 8999, 3960,
+ 3959, 4647, 9896, 11577, 3557, 3558, 3559, 3560, 26706, 3961,
+ 3962, 9195, 9194, 18540, 4316, 9513, 9511, 9512, 18541, 18538,
+ 27103, 18539, 18900, 9897, 9898, 18898, 18901, 4651, 4649, 18903,
+ 4650, 4648, 18899, 5048, 19315, 19314, 19317, 19316, 5052, 5051,
+ 10343, 5050, 5049, 19318, 10344, 19777, 5556, 10935, 10934, 5554,
+ 5555, 19780, 19778, 5997, 5996, 11579, 20338, 20337, 11578, 5557,
+ 20339, 28775, 29308, 6412, 12230, 6413, 12229, 20864, 29889, 29888,
+ 12877, 13463, 7218, 14059, 22263, 22609, 14538, 32043, 8226, 8225,
+ 32783, 23283, 8531, 3561, 9514, 20340, 5558, 12878, 6841, 17824,
+ 18224, 9196, 9197, 9515, 4318, 4319, 18543, 27106, 4317, 18544,
+ 4655, 4656, 4653, 4654, 18904, 9899, 18908, 27395, 9900, 4652,
+ 10345, 19324, 5056, 5057, 19322, 5561, 10351, 27761, 5062, 5060,
+ 10352, 10347, 5059, 5058, 5053, 10350, 10349, 10346, 5061, 19319,
+ 10348, 5054, 27749, 5055, 5562, 10939, 10940, 5563, 10936, 10938,
+ 10942, 10941, 10937, 19781, 5559, 5560, 11587, 6002, 6001, 11581,
+ 5999, 28783, 11584, 6003, 11585, 6004, 11582, 5998, 6000, 11586,
+ 20342, 11583, 11580, 29320, 12243, 20865, 12232, 6415, 6418, 6417,
+ 6422, 6421, 12244, 12242, 12235, 12239, 12238, 6419, 12241, 12237,
+ 12245, 12236, 6420, 6414, 6416, 20866, 12234, 21348, 12880, 6845,
+ 12884, 6844, 12881, 6843, 21346, 12233, 12240, 12883, 29891, 6846,
+ 12885, 12882, 12879, 13466, 13470, 13472, 13468, 13467, 13465,
+ 7221, 7219, 7224, 7225, 13469, 7222, 13464, 7223, 6842, 13471,
+ 7220, 22264, 14061, 31066, 14060, 14068, 14062, 14067, 14064,
+ 7561, 14066, 22266, 22265, 7562, 31064, 7563, 22267, 14065, 14063,
+ 31584, 31587, 7836, 14539, 22612, 22610, 7835, 14542, 14540, 14541,
+ 40304, 40911, 7837, 22611, 22861, 14971, 22860, 8064, 14972, 32044,
+ 32048, 8062, 14973, 8063, 14970, 14974, 22859, 14968, 8227, 15325,
+ 8228, 8361, 14969, 8362, 23436, 23435, 8454, 15868, 8533, 16045,
+ 8532, 23620, 16192, 8618, 8619, 59363, 16475, 17825, 4657, 9901,
+ 6005, 6006, 3562, 3708, 9000, 18225, 9198, 3963, 18227, 4320,
+ 27397, 4658, 4659, 4660, 10944, 10353, 5063, 27762, 27764, 5564,
+ 10943, 19784, 11589, 6008, 20347, 11588, 6007, 20867, 20868, 12246,
+ 7226, 13476, 13473, 13474, 13475, 31071, 31072, 22269, 40924,
+ 22613, 14543, 22614, 14975, 32051, 32052, 23091, 15635, 15634,
+ 33051, 16046, 3563, 9516, 5064, 20348, 6009, 12247, 29911, 21353,
+ 12886, 21351, 7227, 14069, 14976, 15636, 3564, 18228, 18229, 4321,
+ 4663, 9902, 4664, 4662, 18911, 4661, 10354, 5065, 19327, 19328,
+ 5066, 5067, 5566, 10945, 5565, 19787, 19789, 19788, 20350, 11590,
+ 5567, 6010, 12248, 6423, 6424, 29912, 6847, 21354, 6848, 7228,
+ 7565, 14070, 7564, 31596, 14544, 7838, 22862, 14977, 15637, 3565,
+ 3964, 9519, 9518, 4322, 9517, 4323, 9520, 27406, 9908, 4667, 4666,
+ 9910, 9909, 4671, 18914, 4670, 18912, 27410, 4665, 27414, 9904,
+ 9905, 9906, 27403, 4672, 9903, 4668, 9907, 4669, 19337, 19332,
+ 10357, 10361, 10359, 10358, 27782, 10362, 19331, 27776, 19341,
+ 10363, 10364, 10356, 27778, 10355, 19796, 5069, 5070, 19340, 10365,
+ 10360, 19338, 10954, 19792, 10366, 5071, 5068, 19329, 19336, 10948,
+ 28246, 10947, 19790, 10949, 10950, 10952, 10951, 10956, 5571,
+ 5568, 5572, 10946, 5573, 10955, 5570, 10953, 5569, 19335, 19794,
+ 28253, 20357, 20354, 11593, 11595, 11591, 11592, 20352, 20353,
+ 11596, 11598, 11599, 11594, 11597, 6011, 12252, 20874, 12257,
+ 12249, 12253, 29336, 20875, 12258, 12254, 6425, 6433, 20872, 6428,
+ 12250, 12251, 6852, 6436, 6429, 20873, 6434, 6427, 12256, 6435,
+ 12255, 6431, 6426, 6432, 12259, 12891, 12893, 29925, 21362, 29923,
+ 29920, 21356, 21359, 21358, 21357, 21361, 6430, 21364, 21366,
+ 12888, 6850, 12894, 6851, 12892, 12887, 12890, 12895, 6849, 12889,
+ 7230, 13480, 13479, 21843, 7233, 7231, 13477, 7229, 13478, 21845,
+ 7232, 31082, 14078, 22274, 14080, 22272, 14079, 14071, 14075,
+ 14074, 14072, 7567, 7568, 7566, 14073, 14076, 14077, 22616, 7569,
+ 22615, 7843, 14552, 22618, 7840, 14546, 7842, 7844, 31084, 22619,
+ 7841, 14551, 14547, 7839, 14550, 14545, 14549, 14548, 22863, 22865,
+ 14979, 8067, 8068, 8065, 22868, 8066, 22867, 22866, 14978, 32454,
+ 15328, 23093, 23092, 8229, 15326, 15327, 15638, 15641, 15639,
+ 15640, 15869, 23439, 33055, 8455, 16193, 16295, 33547, 8620, 16363,
+ 16364, 8666, 3566, 4673, 19342, 11600, 20358, 12260, 33643, 3567,
+ 3965, 27121, 4324, 18915, 9911, 9912, 5072, 28258, 11601, 6012,
+ 6437, 7845, 14553, 15329, 15642, 3568, 18232, 18233, 9526, 9521,
+ 9523, 9525, 9524, 9522, 4325, 4674, 9921, 18918, 9916, 9913, 18920,
+ 18923, 9920, 18916, 18919, 4676, 4677, 9919, 9918, 9917, 9914,
+ 9915, 9922, 4675, 18922, 5076, 5082, 5081, 10375, 10369, 10367,
+ 19345, 5079, 10963, 5074, 10372, 10376, 10378, 10374, 10368, 5080,
+ 10373, 10371, 5073, 10379, 5083, 10377, 5077, 10370, 19346, 5078,
+ 5075, 19805, 5575, 28260, 10964, 19806, 19800, 10957, 10959, 10961,
+ 19802, 10962, 10960, 5576, 19804, 10965, 19803, 10958, 11605,
+ 6013, 11613, 20363, 11602, 48236, 11614, 20360, 11603, 11604,
+ 20364, 28815, 11612, 11611, 11608, 5574, 6014, 11606, 11609, 6015,
+ 11610, 11607, 20361, 20884, 12271, 20880, 12275, 6444, 20881,
+ 12901, 6447, 12273, 20890, 20876, 12270, 12265, 12267, 12268,
+ 12261, 20888, 6443, 20878, 20883, 6442, 20887, 6438, 12264, 20877,
+ 6445, 20889, 6446, 12263, 12266, 12274, 6440, 6441, 12272, 12262,
+ 29942, 12903, 6854, 12905, 12269, 12907, 6858, 12908, 12904, 21367,
+ 6855, 12900, 6857, 12897, 12902, 12906, 12899, 21368, 21374, 6439,
+ 21373, 12896, 6856, 12898, 21369, 7236, 13482, 7240, 30512, 7238,
+ 30510, 21849, 6853, 21852, 13489, 13490, 7235, 21847, 21851, 13488,
+ 13491, 7237, 7234, 13484, 13481, 13486, 13483, 7241, 13485, 21850,
+ 21848, 13487, 7239, 22278, 7571, 14087, 22281, 14081, 14085, 14091,
+ 14092, 14088, 14089, 14086, 30516, 14083, 31097, 7573, 7570, 14082,
+ 14084, 22279, 7572, 14090, 7849, 22623, 22625, 14560, 14554, 7848,
+ 31613, 7846, 22624, 14562, 7847, 14557, 14558, 14555, 14563, 14559,
+ 31615, 7850, 14556, 14564, 14561, 22876, 22871, 22873, 14983,
+ 22872, 22869, 14980, 22875, 8069, 32071, 14984, 14986, 14985,
+ 14981, 14982, 22877, 15334, 23094, 8230, 23095, 15331, 15333,
+ 15330, 15335, 32463, 23096, 15332, 15644, 15647, 15643, 8363,
+ 15645, 15646, 15648, 8364, 8366, 8365, 15870, 23442, 15872, 23440,
+ 15871, 23441, 16047, 23621, 16296, 16365, 3569, 17972, 9199, 4326,
+ 9528, 4327, 4328, 9527, 9927, 9926, 4678, 4681, 4680, 4679, 9923,
+ 9925, 9924, 10382, 5085, 10386, 10385, 10384, 10380, 5084, 5088,
+ 5091, 19348, 19349, 5092, 10381, 10383, 5090, 5089, 5087, 5086,
+ 10972, 19351, 10970, 10966, 5577, 20365, 10967, 5578, 10968, 10969,
+ 10971, 19809, 5579, 19808, 11618, 20366, 11617, 11616, 11615,
+ 20371, 20369, 28821, 12279, 6448, 29365, 12276, 12278, 20891,
+ 6449, 20896, 6450, 12277, 20892, 20370, 21377, 12917, 21376, 12910,
+ 12911, 39009, 6861, 6859, 6860, 12919, 39011, 12918, 12915, 12914,
+ 12913, 12912, 12916, 12909, 13492, 13497, 13495, 21855, 21856,
+ 21854, 13494, 13493, 13496, 14093, 22283, 7574, 7851, 14566, 22284,
+ 7852, 14565, 14988, 14987, 8070, 22878, 15336, 8231, 15649, 8534,
+ 16048, 23622, 16298, 16297, 8906, 4682, 4683, 10973, 6452, 3570,
+ 3968, 3967, 3966, 26861, 18547, 18546, 9529, 18548, 18551, 4330,
+ 4329, 18553, 4686, 9929, 9932, 9930, 18927, 4684, 4685, 18925,
+ 18926, 9928, 9931, 18928, 5099, 19353, 19352, 19358, 10393, 10395,
+ 10394, 5096, 10389, 19355, 19360, 5094, 5093, 19356, 5097, 5095,
+ 19357, 5098, 10392, 10387, 10388, 10391, 10390, 19361, 19812,
+ 19810, 19814, 19813, 10976, 10977, 10975, 19815, 10974, 5580,
+ 20372, 6020, 48261, 11619, 11621, 11623, 6019, 48256, 20373, 6017,
+ 20376, 11620, 6018, 11622, 6016, 20375, 20900, 12289, 12280, 12283,
+ 12287, 6456, 12285, 29375, 12284, 12281, 12282, 6454, 12288, 6453,
+ 20903, 6458, 6457, 6455, 29369, 12286, 12925, 29952, 12924, 21380,
+ 21382, 12920, 21385, 21384, 6862, 12923, 12922, 6863, 21387, 30522,
+ 29953, 30530, 7246, 21860, 13499, 21861, 7247, 7243, 7245, 21865,
+ 7242, 7244, 21858, 21862, 14094, 22287, 7577, 14096, 14095, 22627,
+ 12921, 7579, 7578, 7575, 7576, 22289, 22286, 14571, 31624, 14569,
+ 7853, 14570, 31623, 14572, 14568, 14567, 14989, 8073, 8071, 8072,
+ 23099, 32466, 23098, 15337, 15338, 8233, 23100, 8232, 15651, 15652,
+ 15650, 23285, 16049, 16050, 23679, 23680, 3571, 9001, 3969, 9530,
+ 4332, 4331, 9531, 18929, 18932, 9934, 4687, 9933, 4688, 18934,
+ 18933, 5100, 10398, 10396, 10402, 5101, 10397, 10401, 10399, 10400,
+ 10978, 10980, 19821, 5581, 19820, 10979, 5582, 6023, 6022, 6021,
+ 11624, 19819, 28832, 12292, 6459, 6460, 20905, 12291, 12290, 20906,
+ 12926, 6865, 6864, 12927, 12928, 7249, 7248, 21866, 14100, 13500,
+ 13502, 13501, 14099, 14097, 14101, 14098, 40375, 7580, 22292,
+ 31120, 22291, 14573, 7854, 14574, 14575, 22631, 8074, 8075, 32472,
+ 8367, 23446, 23445, 8582, 3572, 18235, 18236, 27130, 18556, 18939,
+ 9935, 18940, 18938, 18936, 18937, 10403, 5102, 19366, 19369, 19370,
+ 19367, 5733, 5732, 19822, 20384, 6025, 11626, 6024, 11625, 20383,
+ 29382, 20908, 20909, 12293, 21389, 6866, 12929, 6867, 21390, 22293,
+ 22632, 22633, 31631, 22882, 8368, 15653, 23552, 3709, 4333, 9532,
+ 18942, 4690, 18941, 4689, 9936, 9937, 10405, 10407, 5103, 10409,
+ 10412, 10410, 19374, 27810, 19373, 10411, 10408, 10404, 5104,
+ 10413, 10406, 19375, 19827, 19828, 10989, 5588, 10998, 5585, 19826,
+ 10991, 5589, 19830, 5583, 19825, 10986, 10999, 10987, 10984, 5587,
+ 28291, 5584, 28289, 10990, 10993, 5586, 10994, 5590, 10995, 10985,
+ 10992, 10996, 10988, 10983, 10981, 19829, 10997, 10982, 37791,
+ 11633, 20394, 20391, 20388, 11629, 11635, 6028, 11628, 11630,
+ 6026, 11627, 6033, 11631, 6032, 11632, 6034, 6029, 6035, 6030,
+ 20392, 6031, 20385, 6027, 20389, 11634, 20914, 29398, 6463, 12304,
+ 20911, 12307, 12295, 12300, 12294, 6465, 20920, 12298, 29389,
+ 20912, 20390, 12296, 6464, 20919, 12303, 12302, 12299, 12301,
+ 12297, 6871, 12306, 6461, 12305, 20916, 21391, 12945, 21393, 6878,
+ 12940, 21401, 6877, 12930, 29966, 12932, 6870, 12937, 12936, 12939,
+ 6875, 12934, 12933, 21395, 21399, 6874, 6869, 12935, 6872, 12941,
+ 12943, 12938, 12931, 6873, 21392, 21398, 7257, 6868, 29959, 21397,
+ 12944, 29971, 13506, 7250, 21867, 13508, 30560, 7251, 21876, 21868,
+ 7253, 13511, 30545, 13503, 6876, 13509, 30538, 30566, 30539, 30559,
+ 13505, 21871, 6462, 7256, 30550, 30543, 7252, 30555, 7254, 7255,
+ 30541, 7583, 13510, 13504, 7258, 21874, 13507, 14111, 14106, 31126,
+ 40398, 14116, 7581, 14108, 7585, 14114, 14105, 14102, 14117, 7860,
+ 7586, 14113, 14103, 7584, 14107, 7588, 14104, 14109, 7587, 14112,
+ 14115, 22296, 22297, 14593, 14594, 14578, 14585, 14583, 31646,
+ 22636, 7858, 14590, 14110, 22634, 14581, 22637, 14591, 7857, 14580,
+ 14579, 14589, 14586, 14588, 31635, 14576, 14592, 7855, 22639,
+ 14587, 14596, 14584, 7859, 7856, 14582, 14577, 14595, 7582, 22640,
+ 31638, 22638, 14992, 22889, 22887, 14990, 14996, 8079, 14994,
+ 14993, 8081, 14999, 8080, 22890, 15000, 14997, 8077, 14998, 14991,
+ 8078, 8076, 15342, 14995, 22885, 15001, 15339, 23108, 23107, 32475,
+ 8238, 8236, 15341, 32473, 15343, 15340, 8237, 8234, 8235, 8239,
+ 8370, 23287, 15658, 42482, 15657, 15655, 15654, 15656, 23286,
+ 8369, 8371, 8456, 23449, 33072, 15874, 15873, 23288, 23448, 16051,
+ 23555, 16053, 16055, 16054, 16052, 23554, 23624, 8536, 8535, 23623,
+ 8584, 8583, 8585, 16195, 16194, 16366, 16299, 16367, 8652, 23723,
+ 8653, 16415, 33710, 23807, 8690, 3710, 18558, 9533, 18557, 18943,
+ 9939, 9940, 9938, 18945, 18944, 4691, 9941, 9942, 9943, 19380,
+ 10414, 10420, 19377, 19379, 10418, 5105, 10416, 19381, 10417,
+ 10419, 19376, 10415, 5591, 19832, 11000, 5593, 11002, 5592, 11001,
+ 19833, 19834, 19863, 19835, 28295, 11637, 6036, 20398, 11639,
+ 11636, 11003, 20400, 6037, 20399, 20397, 11638, 20923, 12310,
+ 20927, 6466, 12308, 6467, 12309, 6468, 29975, 21403, 21402, 6879,
+ 12949, 12946, 12948, 6880, 6881, 12947, 21886, 21888, 21884, 13512,
+ 21887, 21890, 13513, 21889, 7259, 13515, 13514, 21885, 190, 31149,
+ 14121, 14122, 14118, 22300, 14119, 7589, 7590, 14120, 7866, 22644,
+ 22643, 7862, 7867, 7863, 7865, 7861, 22302, 7864, 22894, 32111,
+ 32112, 22893, 8082, 14597, 56736, 15345, 32487, 15344, 15659,
+ 8372, 8373, 16057, 15875, 23760, 16056, 23625, 16368, 16437, 3711,
+ 18237, 3970, 18560, 9534, 4334, 18559, 4694, 9946, 4692, 9944,
+ 4697, 4693, 4698, 4696, 9945, 4695, 5109, 5108, 10431, 5117, 10424,
+ 10430, 5113, 10423, 10429, 10427, 5112, 5114, 10426, 5107, 10425,
+ 5118, 5115, 5119, 5116, 10422, 10421, 10428, 5110, 5106, 5111,
+ 27828, 19386, 19390, 11018, 11011, 28863, 6042, 11010, 19842,
+ 5597, 5604, 5601, 5607, 5606, 5602, 19839, 11004, 11007, 19840,
+ 11006, 5598, 11008, 11017, 5599, 11005, 11014, 11015, 5600, 11012,
+ 5605, 5595, 5603, 11009, 5594, 11013, 19847, 19837, 11016, 19844,
+ 20417, 11656, 11647, 6039, 11654, 11651, 11643, 11652, 6041, 11644,
+ 20406, 11640, 20403, 20411, 6474, 11649, 20412, 6038, 11655, 20405,
+ 6045, 6047, 11642, 20409, 28864, 6046, 11645, 6040, 11653, 11646,
+ 11650, 20407, 11648, 6043, 11641, 6048, 5596, 6044, 6049, 20401,
+ 20418, 20416, 20938, 6470, 12317, 12319, 12321, 12325, 20408,
+ 12315, 12313, 6472, 29408, 12320, 12324, 12316, 12312, 20937,
+ 12311, 20940, 20931, 20933, 12322, 12314, 12318, 6473, 20929,
+ 6471, 12326, 6469, 12323, 20935, 12966, 20939, 20941, 20934, 6884,
+ 12958, 7272, 12968, 6887, 12972, 6893, 12953, 21421, 29982, 12969,
+ 12950, 21414, 12971, 12954, 21415, 6900, 6897, 12970, 12964, 6883,
+ 6891, 6890, 21417, 6889, 6895, 21410, 12951, 6896, 12965, 6892,
+ 6882, 12967, 6885, 6886, 6894, 12956, 12955, 12952, 29983, 12960,
+ 12957, 12961, 6899, 21409, 12973, 6888, 12962, 12963, 21418, 12959,
+ 21420, 21412, 6898, 21903, 13520, 7264, 7273, 7269, 13517, 21899,
+ 7266, 7270, 13529, 7260, 13521, 21895, 7268, 21905, 21916, 13524,
+ 13519, 7267, 7271, 13518, 21915, 7265, 21894, 13528, 7262, 13527,
+ 13526, 7274, 13280, 7261, 21912, 13525, 13516, 21892, 7275, 13523,
+ 7263, 21909, 21910, 21906, 21913, 21908, 21901, 21900, 13522,
+ 30586, 7593, 7598, 7591, 14135, 14126, 14138, 14130, 14136, 7599,
+ 7592, 14123, 14129, 14139, 14132, 14137, 14125, 31157, 22304,
+ 14133, 7594, 14131, 7597, 7596, 14127, 14128, 14124, 14134, 7595,
+ 14141, 14140, 22309, 22308, 14608, 14604, 7874, 22648, 14598,
+ 7868, 7884, 14610, 7876, 7872, 14601, 7879, 7882, 14612, 7871,
+ 14603, 7880, 14614, 14611, 14599, 7875, 7869, 7883, 14606, 7878,
+ 14600, 7873, 14613, 7877, 7870, 14607, 7881, 14605, 14609, 22649,
+ 32116, 22898, 15003, 15009, 8088, 15012, 8083, 8084, 15004, 15011,
+ 15006, 8089, 8086, 22900, 15002, 22897, 8085, 15008, 15010, 8087,
+ 15007, 15005, 32115, 22899, 15355, 8243, 8244, 8240, 23111, 8241,
+ 23113, 15351, 15349, 23114, 15353, 8245, 15354, 15347, 15346,
+ 15350, 15348, 8242, 15352, 15660, 8376, 8375, 15661, 23293, 15663,
+ 15662, 8377, 23456, 23453, 15880, 15877, 15878, 23454, 15876,
+ 15879, 8458, 15881, 23455, 8457, 16058, 23557, 8586, 8588, 16196,
+ 8587, 16300, 16370, 16372, 16369, 16371, 8672, 33739, 23802, 3712,
+ 26938, 4699, 10295, 5120, 19850, 5608, 11657, 11658, 21424, 14142,
+ 7885, 14615, 22652, 22901, 8090, 15357, 15356, 8378, 15882, 23558,
+ 16059, 8621, 9002, 26602, 4335, 3971, 9947, 18563, 10437, 10432,
+ 10436, 10434, 5121, 10435, 10433, 19391, 11019, 28868, 11659,
+ 11660, 12329, 12330, 6476, 6477, 12328, 12331, 12327, 6475, 21425,
+ 6901, 21426, 6478, 12974, 7276, 13530, 7277, 21917, 7600, 14145,
+ 14143, 14144, 14618, 14617, 14616, 56088, 32125, 15358, 32508,
+ 8246, 15359, 16060, 8622, 16301, 3713, 4337, 4336, 9949, 4700,
+ 18954, 27839, 9948, 10439, 19392, 5122, 11020, 10438, 19394, 27838,
+ 19393, 5610, 11023, 11021, 11022, 5609, 11662, 11663, 11661, 20945,
+ 6481, 12333, 12332, 12334, 6480, 6479, 29991, 13531, 13533, 21918,
+ 7278, 13532, 14146, 7601, 15014, 22902, 15013, 8247, 15360, 8249,
+ 8248, 15664, 15883, 8459, 3714, 9950, 4701, 10442, 5124, 10441,
+ 10440, 19397, 5123, 19398, 11029, 28322, 11031, 11024, 11025,
+ 5611, 11026, 5612, 11030, 11027, 11028, 5613, 20420, 6051, 6052,
+ 20421, 11664, 12335, 12336, 20949, 12978, 6904, 6902, 6903, 12975,
+ 12976, 50157, 12977, 13538, 21919, 13539, 7279, 13536, 13535,
+ 13537, 13534, 7604, 14147, 7602, 7603, 14620, 7886, 14619, 14871,
+ 22653, 15015, 15016, 8091, 22906, 8092, 7887, 15361, 15362, 15665,
+ 8379, 3715, 3716, 5126, 4338, 5125, 9951, 19855, 27452, 19399,
+ 6053, 3717, 4703, 9952, 9953, 4702, 4704, 3718, 27136, 9954, 5128,
+ 10443, 5130, 5127, 5129, 19856, 11034, 5614, 19858, 11033, 11032,
+ 28881, 12337, 21433, 12979, 29997, 7280, 7605, 14149, 14148, 22654,
+ 14621, 32134, 22907, 23296, 15884, 33289, 33288, 3719, 9200, 9535,
+ 4705, 9955, 46624, 10445, 27849, 19404, 19403, 5131, 10444, 5132,
+ 19402, 11036, 19862, 19861, 5616, 11035, 11037, 19860, 5615, 20425,
+ 11666, 11667, 11665, 6054, 29419, 6482, 20950, 6483, 30004, 6906,
+ 21434, 12981, 12980, 6905, 21437, 20424, 21436, 13540, 21921,
+ 21923, 13541, 21924, 21922, 21925, 14150, 31173, 22312, 7891,
+ 7890, 7888, 7889, 7892, 22655, 15017, 8094, 8093, 15363, 15666,
+ 23297, 23298, 23299, 8538, 8537, 3720, 46627, 10244, 6485, 6055,
+ 6484, 6907, 50165, 3721, 8907, 3722, 3723, 17974, 17975, 9536,
+ 9203, 18239, 9204, 3973, 18241, 9201, 3972, 18240, 3975, 9202,
+ 3977, 3976, 9205, 3974, 26869, 18238, 4343, 4341, 9538, 18571,
+ 4340, 18576, 18573, 18564, 4345, 4347, 4344, 18574, 9541, 9537,
+ 4348, 18567, 4342, 3978, 18569, 4346, 9540, 18572, 27139, 9539,
+ 27144, 4339, 9961, 4709, 4710, 9963, 18963, 9957, 9960, 9969,
+ 9967, 18957, 4711, 9973, 4714, 9970, 9962, 9959, 18958, 18955,
+ 11669, 9968, 4706, 9971, 9956, 9965, 4708, 4713, 9966, 4717, 4715,
+ 18962, 9958, 4712, 18961, 9964, 4716, 4707, 9972, 5137, 19407,
+ 5146, 5135, 5133, 10447, 5141, 5138, 10449, 19405, 19413, 5140,
+ 10448, 10446, 10451, 5145, 5143, 11668, 19406, 10452, 10450, 5134,
+ 19409, 19408, 5136, 5139, 19410, 5142, 18960, 5144, 20433, 11047,
+ 5618, 19874, 11038, 11040, 19872, 11041, 28338, 11049, 11045,
+ 11043, 28884, 11046, 11050, 5619, 5623, 11039, 28332, 11048, 28341,
+ 5621, 19866, 5620, 11044, 11042, 19867, 5617, 5622, 19870, 19873,
+ 6061, 11677, 20427, 28887, 11675, 6063, 28896, 20432, 20434, 20430,
+ 11670, 12351, 20426, 6062, 11674, 20429, 20431, 11671, 6058, 6064,
+ 11676, 6060, 11673, 6908, 6059, 11672, 6065, 6057, 6056, 47433,
+ 12343, 12341, 20958, 12347, 20961, 12339, 12352, 12344, 20952,
+ 12338, 6489, 6495, 12349, 29430, 12342, 20953, 6492, 20954, 20964,
+ 6490, 12350, 6487, 6486, 12345, 6491, 6066, 20959, 12348, 12340,
+ 6488, 6493, 6494, 20963, 6913, 6909, 21438, 6914, 12984, 21441,
+ 30010, 12983, 12985, 6911, 12982, 6912, 12988, 12987, 12986, 30023,
+ 6910, 31184, 21928, 21930, 21926, 13545, 21929, 13548, 7286, 13547,
+ 7285, 7281, 7282, 7283, 13544, 13543, 7284, 21927, 13546, 13542,
+ 14152, 14162, 7608, 7607, 22318, 14156, 14158, 22316, 14153, 22313,
+ 14157, 14151, 14160, 7606, 14159, 14155, 14161, 22656, 14154,
+ 7895, 14622, 14628, 7899, 7901, 7898, 7897, 31684, 7896, 7894,
+ 14623, 14626, 7893, 14627, 22657, 7900, 14625, 56773, 14624, 8095,
+ 22910, 8096, 15020, 15018, 15019, 23116, 15365, 23117, 15364,
+ 8250, 15668, 8380, 15667, 15885, 16061, 8539, 16373, 16374, 8589,
+ 3724, 27147, 4349, 11678, 6915, 7902, 14629, 3725, 26872, 5148,
+ 5147, 11679, 20436, 28901, 30615, 14163, 3726, 4718, 28902, 20437,
+ 11680, 11681, 11682, 6916, 7609, 3727, 27148, 4350, 9974, 5149,
+ 10453, 5624, 20438, 11683, 6496, 6917, 7610, 7903, 8097, 15366,
+ 3728, 4351, 18578, 27149, 5150, 11051, 6067, 21442, 6918, 12989,
+ 13549, 22319, 22913, 23118, 3729, 6068, 12353, 6919, 3730, 9542,
+ 9975, 4719, 18965, 10455, 27870, 19418, 5153, 19419, 5151, 5152,
+ 5154, 19416, 10454, 11056, 11053, 11055, 5625, 5627, 5626, 11052,
+ 5628, 11054, 11684, 11685, 11686, 12356, 20967, 12357, 29435,
+ 12355, 12358, 29434, 6497, 12354, 21444, 6920, 21445, 13554, 13550,
+ 13553, 13555, 13552, 13551, 14164, 14165, 14166, 7611, 7612, 14631,
+ 14630, 14632, 15022, 15021, 15368, 23119, 15369, 15367, 23120,
+ 8381, 32817, 15669, 15670, 23458, 16062, 16197, 16302, 3731, 3979,
+ 7904, 3732, 11057, 11687, 23121, 8629, 9003, 26558, 17977, 9004,
+ 9006, 3733, 9007, 9005, 26710, 9213, 9214, 9208, 18243, 26880,
+ 26874, 9212, 3981, 18244, 3982, 9209, 9207, 9206, 9210, 3980,
+ 9211, 9976, 18246, 26878, 9547, 4354, 9546, 9548, 18581, 4353,
+ 9553, 4357, 9543, 9557, 9563, 4364, 9560, 4361, 18592, 9550, 9556,
+ 9558, 18587, 9545, 4360, 4355, 9551, 4362, 4365, 4359, 18593,
+ 4352, 9555, 9549, 9562, 4367, 4363, 4358, 9554, 5155, 9552, 4356,
+ 4366, 27161, 9544, 27165, 9559, 9561, 18579, 18589, 27162, 18979,
+ 4736, 4730, 4738, 4735, 9983, 9986, 4731, 18967, 9977, 27473,
+ 4724, 4734, 18968, 4737, 4739, 9998, 9989, 18981, 4723, 9997,
+ 4727, 4725, 4720, 9981, 18975, 9996, 9985, 9988, 10001, 18977,
+ 4740, 9995, 4732, 9990, 10000, 9987, 9991, 9994, 18966, 18971,
+ 9979, 9999, 9993, 18972, 18983, 9978, 45993, 9982, 4733, 4728,
+ 4721, 4726, 4722, 4741, 9980, 10472, 4729, 27476, 18982, 9992,
+ 9621, 18980, 10475, 5169, 19429, 10459, 27884, 10470, 10466, 19878,
+ 10485, 19420, 10477, 19426, 10467, 19892, 10476, 10461, 10465,
+ 10488, 5172, 10480, 10471, 5156, 10486, 10457, 27881, 10479, 27890,
+ 5171, 5166, 10456, 5164, 5163, 5168, 10478, 5160, 5167, 9984,
+ 11688, 10473, 27886, 18580, 10463, 5170, 10464, 10468, 5173, 10458,
+ 10482, 20452, 10481, 10489, 5162, 5159, 10487, 10483, 10474, 10469,
+ 5165, 5161, 10460, 5157, 10484, 5158, 27883, 10462, 19421, 19430,
+ 18818, 28364, 19879, 19882, 11063, 11065, 11070, 11090, 5642,
+ 5632, 19885, 11062, 5643, 5644, 11073, 11080, 11086, 19881, 11067,
+ 28370, 11074, 19880, 19894, 5645, 11088, 11083, 5640, 5638, 11079,
+ 11075, 11061, 5629, 11066, 11058, 19886, 5637, 5639, 11071, 11068,
+ 5634, 11084, 5631, 11069, 11729, 11077, 19895, 11076, 5630, 19888,
+ 5641, 19883, 5633, 11059, 11064, 11081, 11087, 5646, 11060, 11072,
+ 11078, 5636, 28372, 19889, 11089, 11082, 11085, 19896, 5635, 28929,
+ 11704, 11692, 6076, 11721, 11730, 11733, 6074, 11700, 11725, 11701,
+ 11715, 6087, 11711, 6084, 20459, 11712, 11689, 37866, 11726, 20444,
+ 20454, 6093, 11723, 11713, 11735, 11708, 12390, 20442, 11738,
+ 6091, 11706, 11718, 6094, 6073, 11710, 11736, 11703, 11696, 11707,
+ 20460, 11695, 11693, 6069, 11727, 11702, 11731, 20440, 11732,
+ 6077, 6082, 6078, 6086, 11722, 6079, 11714, 11698, 6071, 11690,
+ 11724, 11734, 11697, 6085, 11739, 11709, 20447, 11705, 20457,
+ 6070, 6090, 20455, 11720, 6092, 20445, 11716, 6081, 6075, 6083,
+ 6072, 6089, 11717, 11699, 11719, 11694, 11728, 20453, 28928, 20458,
+ 20451, 20443, 11737, 20456, 11691, 12389, 20974, 12411, 6451,
+ 12394, 20978, 12392, 12371, 6501, 12387, 12407, 12383, 6509, 12406,
+ 12381, 6088, 12397, 12382, 12404, 6508, 6500, 20987, 12360, 12368,
+ 20982, 12393, 12385, 12410, 12388, 6514, 12405, 20973, 6505, 20991,
+ 12391, 12399, 12372, 12398, 20968, 12415, 12367, 12400, 20980,
+ 12413, 20992, 12361, 6080, 20993, 12375, 12374, 6507, 20979, 12378,
+ 12380, 12395, 12412, 6510, 20985, 6511, 20977, 12366, 6503, 12370,
+ 12408, 6512, 29457, 6504, 6506, 6513, 12414, 12401, 12396, 20989,
+ 20976, 12377, 12376, 6502, 12362, 6499, 12386, 12363, 12384, 20975,
+ 29454, 12373, 12409, 20971, 20986, 29443, 6498, 20988, 20969,
+ 12369, 29459, 12365, 12403, 12364, 6933, 13029, 21452, 21467,
+ 13012, 21450, 21455, 12990, 13020, 6925, 13005, 13015, 6928, 13008,
+ 6926, 12993, 13023, 12992, 13011, 21459, 12991, 21456, 30061,
+ 13009, 13018, 13016, 13004, 12999, 12997, 21465, 12998, 13017,
+ 13028, 13006, 6927, 21458, 13001, 21457, 13021, 21464, 6930, 13000,
+ 12994, 13010, 6934, 21449, 30041, 6922, 6931, 13002, 12996, 21453,
+ 6924, 12402, 6923, 13013, 20983, 6921, 6936, 6929, 13014, 13003,
+ 12995, 13022, 13007, 6935, 13026, 6932, 13025, 21462, 13019, 13024,
+ 21461, 21466, 13027, 21460, 13595, 13596, 13583, 13582, 13578,
+ 7298, 21948, 7290, 13598, 13597, 12359, 13575, 13579, 13573, 21937,
+ 13592, 13577, 21935, 13599, 13570, 13568, 13580, 13590, 13585,
+ 7300, 13559, 21933, 13589, 21945, 21939, 21953, 7301, 12379, 13571,
+ 13562, 13565, 13603, 13572, 13563, 13561, 13558, 30639, 7294,
+ 13581, 7293, 7297, 13576, 13584, 7287, 13600, 13604, 7289, 21944,
+ 13567, 13587, 13591, 13564, 13601, 7296, 30623, 7295, 13556, 7299,
+ 13594, 13566, 13586, 13560, 13574, 13569, 7291, 7292, 13588, 13605,
+ 13602, 13593, 30637, 21946, 21947, 21951, 30633, 13557, 7288,
+ 14183, 22335, 14174, 14177, 22327, 7618, 14179, 14168, 14175,
+ 14181, 7615, 7619, 7613, 22334, 22325, 14170, 14186, 30648, 31226,
+ 14180, 31211, 14171, 14195, 14189, 14167, 14651, 14173, 7614,
+ 22333, 14184, 22329, 14194, 7622, 22331, 14191, 14172, 14178,
+ 14182, 14176, 14196, 14193, 14190, 7616, 7617, 7621, 14169, 14197,
+ 7620, 14187, 22324, 22330, 14185, 14188, 14664, 14645, 14650,
+ 14663, 14649, 14641, 14646, 31707, 7907, 22664, 14634, 14658,
+ 14660, 14633, 7906, 14662, 14654, 7913, 14661, 14647, 7915, 14639,
+ 14192, 14655, 14652, 14635, 14666, 7909, 22661, 22662, 7910, 14637,
+ 14653, 22666, 14665, 14656, 14643, 7912, 7908, 14657, 14644, 14667,
+ 14638, 14648, 14659, 14640, 14642, 31709, 7916, 14636, 7914, 8099,
+ 7905, 22665, 22669, 7911, 8103, 15038, 22917, 15028, 15023, 15029,
+ 15039, 15043, 15042, 8105, 8104, 22919, 32159, 15030, 15044, 15033,
+ 15025, 22920, 15027, 15026, 15032, 15037, 15024, 15031, 15036,
+ 8102, 32155, 15034, 22916, 8100, 15035, 8098, 8101, 15385, 15040,
+ 8254, 23123, 15377, 15381, 15373, 15376, 23122, 15384, 8252, 15389,
+ 15382, 32519, 15374, 15390, 15383, 8255, 8256, 15387, 23125, 15375,
+ 8251, 8253, 15370, 15378, 15372, 23308, 15388, 15386, 15371, 15379,
+ 32520, 23128, 15677, 8257, 15380, 8383, 8385, 8382, 23303, 15682,
+ 15674, 15672, 15676, 15673, 23305, 23309, 15678, 15680, 8386,
+ 8388, 23313, 15679, 8389, 8387, 15681, 23311, 32828, 23314, 23304,
+ 8384, 23312, 23464, 23463, 8460, 15886, 15892, 8462, 15675, 15891,
+ 23465, 15898, 15889, 15896, 15895, 15671, 15890, 15041, 15899,
+ 15888, 15893, 23461, 15897, 15887, 23459, 16066, 8461, 15894,
+ 23460, 16202, 16067, 16065, 16063, 16064, 16068, 8590, 16200,
+ 16198, 16203, 16201, 23628, 16204, 8591, 16199, 23608, 23725,
+ 16303, 16375, 16376, 16377, 23726, 23779, 16470, 16462, 9008,
+ 4368, 4742, 27895, 10491, 10490, 5174, 5647, 11092, 19900, 19897,
+ 11091, 19898, 6095, 6516, 20462, 6515, 6517, 39149, 13030, 13606,
+ 14198, 14200, 14199, 54678, 7917, 14668, 15045, 16438, 3734, 18248,
+ 9566, 9567, 9565, 9564, 4369, 10005, 10003, 18990, 18985, 10002,
+ 18987, 4743, 4745, 4744, 10004, 18991, 19436, 10503, 10500, 10498,
+ 27900, 19439, 5175, 10501, 5180, 10495, 10510, 19442, 10512, 10496,
+ 19441, 5177, 10513, 10508, 10494, 10499, 10509, 10505, 10502,
+ 19438, 5182, 10511, 10497, 19437, 19443, 10506, 10492, 5181, 5178,
+ 10504, 19440, 10507, 10493, 5179, 5176, 28383, 19903, 5657, 11099,
+ 5656, 19901, 11102, 11105, 5653, 5651, 11094, 11103, 11101, 11098,
+ 11106, 11107, 11109, 11110, 11093, 5650, 11096, 11095, 11108,
+ 5652, 11097, 5654, 5649, 11100, 5658, 28393, 5655, 11104, 6102,
+ 11754, 28938, 11743, 6099, 20463, 12421, 11752, 11740, 6097, 11745,
+ 6100, 11749, 11747, 6103, 6096, 28943, 20464, 11741, 11744, 6101,
+ 28936, 11742, 37878, 11753, 11751, 11746, 11748, 11750, 6098,
+ 20469, 12422, 12428, 12418, 12424, 6518, 12420, 6524, 20997, 20998,
+ 6523, 21002, 6522, 12427, 6525, 6526, 12417, 12430, 6527, 6521,
+ 6520, 12426, 6528, 12416, 12419, 12429, 12425, 29478, 29471, 13062,
+ 13051, 6519, 38506, 20999, 21001, 6943, 13039, 13060, 13040, 6938,
+ 21478, 13037, 29474, 13046, 13038, 6940, 13032, 13059, 6941, 13056,
+ 13057, 13033, 6946, 13048, 21473, 13042, 13049, 13036, 30079,
+ 13061, 13053, 13047, 13031, 6942, 13054, 21468, 6945, 13058, 21475,
+ 13052, 6939, 13050, 21472, 13044, 6937, 13035, 13043, 13055, 13041,
+ 21477, 13045, 21474, 7311, 12423, 13624, 13633, 13623, 13619,
+ 13616, 7312, 13614, 6944, 13607, 7310, 13613, 7309, 13618, 13615,
+ 13631, 13626, 13620, 13625, 7305, 13617, 13636, 13608, 13609,
+ 13632, 7306, 13637, 7308, 13638, 13622, 13034, 13628, 13621, 13630,
+ 13627, 39814, 21962, 30651, 13612, 7303, 13635, 7304, 13610, 7307,
+ 14211, 13629, 13634, 30660, 21958, 14208, 7302, 7623, 14218, 14214,
+ 31235, 14212, 14207, 14222, 22336, 22338, 31243, 7627, 22340,
+ 14203, 14215, 14216, 14206, 14205, 14219, 31240, 14209, 14204,
+ 14210, 22343, 14221, 14202, 14220, 14217, 7625, 7624, 31232, 22339,
+ 7626, 14213, 14201, 14670, 7923, 14674, 14671, 14678, 14684, 14673,
+ 22679, 14693, 7920, 14687, 14676, 14688, 14683, 14690, 14675,
+ 7925, 7924, 14677, 14691, 14669, 14689, 7918, 22678, 14681, 14680,
+ 14685, 14672, 7922, 22680, 7926, 14679, 14686, 7927, 14682, 22675,
+ 22673, 7919, 7921, 15058, 15056, 23131, 22927, 15062, 15060, 15063,
+ 22929, 15049, 15057, 15067, 14692, 15053, 8109, 13611, 15048,
+ 15061, 15055, 15052, 15047, 15046, 15066, 22924, 15051, 15050,
+ 8107, 15059, 22925, 8106, 22926, 41681, 8108, 15054, 15065, 15394,
+ 15395, 23135, 8261, 15392, 8258, 15400, 23130, 8262, 15402, 15391,
+ 15064, 15404, 15393, 42146, 8259, 15399, 23132, 15401, 15396,
+ 15403, 15398, 15397, 8260, 22928, 23134, 15684, 15685, 23316,
+ 15687, 8390, 8391, 15688, 15686, 23315, 15683, 23466, 15902, 15905,
+ 15901, 32529, 8466, 15903, 8465, 8464, 8463, 15904, 16073, 16071,
+ 23562, 16070, 15900, 16072, 15906, 16069, 23630, 16207, 16173,
+ 16205, 8592, 16206, 16208, 16306, 8623, 16305, 16304, 8624, 33560,
+ 8654, 16416, 16440, 16439, 16441, 3735, 10006, 18993, 10514, 10515,
+ 19907, 20471, 20470, 11755, 48456, 15907, 16307, 3736, 4746, 10007,
+ 19444, 28394, 11111, 5659, 11757, 11756, 6104, 21006, 6529, 13639,
+ 7313, 21964, 7314, 22344, 22345, 31250, 7628, 8625, 3737, 18994,
+ 10008, 4371, 10010, 10009, 4747, 10516, 19447, 10523, 5183, 10521,
+ 10519, 19450, 10526, 10517, 10518, 5184, 19445, 5188, 19446, 19448,
+ 10527, 5187, 10525, 10522, 10520, 5185, 5186, 10524, 19449, 5661,
+ 11112, 19915, 5666, 11128, 5665, 11130, 19911, 19917, 11118, 5663,
+ 11129, 19909, 11113, 5664, 11125, 11121, 11123, 11117, 11124,
+ 19908, 28402, 5660, 11120, 19916, 11119, 11115, 19910, 11126,
+ 19912, 19914, 11122, 11114, 19913, 11116, 5662, 11127, 6107, 11768,
+ 28948, 20477, 20479, 11764, 11766, 11761, 11760, 11758, 20474,
+ 11765, 11767, 11763, 20476, 11762, 6105, 6106, 11770, 6537, 12432,
+ 12438, 12433, 12434, 21007, 12439, 38521, 6539, 29486, 6531, 6538,
+ 12431, 11759, 6534, 6532, 12437, 12436, 6533, 6535, 12435, 6530,
+ 21008, 6536, 21965, 13064, 6953, 21488, 21481, 13075, 13074, 21486,
+ 13069, 6955, 13073, 13065, 13066, 6947, 6949, 21483, 13071, 13063,
+ 6951, 6950, 13067, 13072, 13070, 6952, 13068, 21480, 21485, 11769,
+ 6948, 21487, 13640, 13647, 7316, 30681, 13651, 7320, 13643, 13641,
+ 30673, 13650, 21966, 7315, 13649, 7317, 7318, 13642, 7319, 13648,
+ 13644, 13645, 13646, 6954, 21967, 14223, 14235, 31258, 7633, 14230,
+ 14232, 22346, 7631, 14224, 14228, 31255, 14231, 7629, 7632, 14234,
+ 14226, 14227, 14233, 14225, 14229, 7630, 14695, 14694, 7929, 14700,
+ 7931, 22685, 31743, 7928, 14696, 7932, 14697, 22684, 22682, 14698,
+ 14701, 22687, 7930, 15072, 22930, 15075, 22931, 15069, 15071,
+ 22933, 22932, 15070, 15073, 15074, 14699, 15068, 8265, 15408,
+ 15411, 15413, 15406, 15407, 15410, 15412, 8266, 8264, 8263, 15409,
+ 15405, 15689, 8392, 23320, 15690, 23319, 15909, 8467, 15911, 8468,
+ 15908, 15910, 8541, 43169, 16074, 8540, 16211, 16210, 33562, 16209,
+ 23728, 16378, 16379, 16381, 16380, 23780, 9009, 3738, 4748, 11131,
+ 6108, 12440, 8110, 23138, 15414, 23631, 23729, 3983, 18996, 27909,
+ 27908, 5668, 28407, 19919, 19918, 5667, 19920, 11771, 6109, 11773,
+ 11772, 48473, 20481, 12441, 6540, 13076, 13079, 13078, 30100,
+ 13077, 13652, 13654, 13653, 21970, 7635, 22347, 31264, 21969,
+ 7634, 22691, 7933, 14702, 14704, 14703, 22935, 22934, 8111, 22936,
+ 32538, 23140, 15416, 15415, 15691, 8393, 23321, 23470, 8469, 16076,
+ 16075, 8655, 3984, 10011, 4749, 11134, 11132, 28412, 28411, 11133,
+ 11775, 11776, 12448, 11774, 12442, 12446, 12445, 12447, 6541,
+ 12444, 12443, 12449, 21013, 13082, 13080, 21491, 13081, 13657,
+ 13655, 21971, 13656, 14236, 14705, 14706, 8112, 23141, 15417,
+ 15692, 8394, 32546, 15912, 16077, 8542, 33312, 16212, 16382, 3985,
+ 4751, 4752, 10012, 18997, 18999, 10013, 4750, 27915, 5194, 19454,
+ 5192, 19453, 5191, 5198, 5190, 5199, 10528, 5196, 27916, 5193,
+ 5197, 5195, 5189, 19455, 5676, 19927, 5670, 11138, 5675, 19930,
+ 19936, 5677, 5671, 47549, 5672, 19922, 11136, 19924, 19932, 5669,
+ 19929, 11137, 5674, 28416, 37282, 11135, 5673, 19923, 6120, 20489,
+ 6122, 28966, 20490, 11779, 6121, 6110, 6114, 20495, 6560, 12454,
+ 11781, 6115, 20491, 20482, 11784, 11785, 6119, 28967, 11787, 20492,
+ 11789, 20494, 11790, 11778, 11777, 11791, 6118, 11788, 11786,
+ 28963, 6116, 6112, 6123, 11782, 11783, 11780, 20485, 6117, 28968,
+ 20493, 6113, 6111, 12453, 6555, 6550, 21025, 21018, 6545, 21028,
+ 6561, 6546, 21014, 6542, 6557, 6554, 6556, 21017, 6547, 6552,
+ 6543, 6544, 12461, 12458, 12450, 12455, 21020, 6558, 12462, 6559,
+ 6549, 21021, 21026, 12452, 21015, 12460, 12456, 12459, 12457,
+ 6553, 12451, 6548, 21022, 13085, 6957, 6960, 21494, 13087, 21499,
+ 6968, 13086, 6962, 21498, 7325, 13088, 30116, 6967, 13084, 6969,
+ 21493, 21497, 21506, 6958, 21503, 6551, 6961, 21495, 6959, 6963,
+ 6965, 6956, 6970, 6966, 21500, 6964, 13083, 21501, 21985, 7332,
+ 21972, 7328, 21983, 21981, 21979, 7335, 21977, 13660, 7336, 13672,
+ 13665, 7321, 13673, 13667, 7331, 13668, 21984, 7330, 13671, 7324,
+ 13669, 13659, 7323, 14247, 7329, 21986, 7326, 21974, 7334, 21975,
+ 13658, 21987, 13662, 7322, 13661, 13663, 13664, 7333, 13666, 13670,
+ 13674, 7337, 7641, 14242, 14248, 14245, 14237, 14249, 14238, 22351,
+ 14244, 22352, 7636, 7642, 14250, 21980, 22348, 7638, 22355, 7648,
+ 7643, 14252, 14246, 7639, 14239, 7649, 14240, 14241, 7650, 7647,
+ 7327, 22350, 7637, 14253, 7651, 22349, 7644, 14251, 7640, 7645,
+ 7646, 7941, 14711, 14720, 14717, 14719, 22694, 7938, 14712, 22695,
+ 14718, 7934, 14714, 7942, 14710, 14715, 14722, 14243, 14716, 14709,
+ 7935, 14708, 7936, 14723, 7937, 14721, 7940, 14707, 22693, 7939,
+ 14713, 15078, 15092, 15087, 15089, 15077, 8113, 22945, 15076,
+ 8116, 8115, 22941, 15091, 15083, 15080, 15086, 22939, 15079, 22943,
+ 15081, 15090, 15088, 22938, 8114, 15095, 15093, 15084, 15094,
+ 15085, 23143, 15421, 8267, 15428, 23144, 32549, 15915, 8274, 15082,
+ 15419, 8270, 15420, 15425, 23145, 23330, 8272, 8273, 15418, 15427,
+ 15429, 15422, 15424, 15426, 15423, 15430, 8269, 8275, 8271, 8268,
+ 15695, 32850, 8399, 15693, 23327, 23323, 15697, 23329, 15698,
+ 8397, 15699, 15696, 23322, 15694, 8400, 8396, 15700, 23325, 8398,
+ 8395, 23294, 33114, 8470, 23471, 33120, 8471, 15914, 15913, 15916,
+ 15917, 23472, 8472, 16078, 16083, 8543, 23564, 16080, 23565, 16079,
+ 16082, 16081, 23633, 16216, 33461, 8593, 16215, 16213, 23632,
+ 16214, 23634, 23684, 8627, 8626, 16308, 16309, 8628, 23730, 16383,
+ 16384, 8667, 23762, 8673, 23781, 16442, 16471, 3986, 36791, 11139,
+ 19937, 11140, 12463, 13089, 13675, 7944, 22698, 7943, 15096, 15431,
+ 23567, 16217, 3987, 10529, 5200, 5678, 12465, 12464, 7338, 13676,
+ 7339, 14724, 8117, 23331, 23782, 8682, 3988, 9568, 10530, 19940,
+ 28432, 5679, 19939, 11141, 11142, 20501, 11792, 20500, 6124, 6562,
+ 21029, 12467, 12466, 12468, 21508, 13090, 13091, 6971, 7652, 7340,
+ 7653, 14728, 14725, 14727, 14726, 7945, 22946, 15097, 15433, 15432,
+ 9215, 5202, 5201, 10531, 19941, 11143, 20503, 20502, 11794, 11793,
+ 6125, 20504, 12470, 12471, 12469, 29509, 21030, 6564, 6563, 30131,
+ 6973, 6972, 21991, 13677, 14256, 14254, 14255, 7654, 14730, 14729,
+ 22700, 15100, 15099, 15098, 15434, 23732, 16443, 3989, 4753, 19001,
+ 4754, 5203, 5204, 10533, 10532, 11144, 19943, 5685, 5683, 5680,
+ 5684, 5682, 5681, 19945, 19944, 6126, 11797, 20506, 6569, 6128,
+ 6133, 11799, 6135, 6134, 6137, 11798, 11795, 6131, 6127, 6129,
+ 11796, 6136, 6132, 6130, 6571, 6570, 6568, 6572, 29515, 6566,
+ 6567, 21034, 6565, 38552, 12472, 21032, 13093, 21511, 6975, 6976,
+ 6974, 21513, 13092, 21512, 13094, 13680, 13682, 21995, 7349, 13683,
+ 7342, 13679, 7341, 7351, 7347, 7348, 7344, 13678, 7343, 13684,
+ 13681, 21994, 7350, 21997, 7345, 7346, 14258, 22362, 14260, 14259,
+ 22360, 14261, 7655, 14257, 22702, 22703, 7949, 14731, 7946, 7950,
+ 7948, 7947, 15101, 32220, 15104, 56261, 15103, 22949, 15102, 8118,
+ 15435, 15436, 8276, 15437, 8277, 23147, 8402, 32852, 8401, 15918,
+ 23474, 23475, 8473, 15919, 16084, 8544, 8545, 16218, 23635, 8630,
+ 23733, 3990, 19946, 5687, 5686, 12473, 12474, 6977, 14262, 7352,
+ 14263, 14732, 3991, 17979, 10014, 4756, 4755, 10534, 5205, 10535,
+ 11147, 19952, 11146, 19950, 11145, 19948, 19951, 11801, 6140,
+ 20516, 20511, 11800, 6139, 20514, 20507, 20510, 11802, 6138, 20515,
+ 12476, 12479, 12477, 12478, 12482, 12475, 12483, 12480, 12481,
+ 6979, 13095, 21516, 21514, 6978, 21515, 13688, 13686, 22001, 30728,
+ 7353, 13685, 13687, 22000, 7354, 21998, 14264, 22364, 14265, 7951,
+ 22952, 15439, 15441, 15438, 15440, 15701, 15920, 16417, 3992,
+ 4757, 10536, 10538, 10537, 11150, 5689, 19957, 11148, 19953, 5688,
+ 11151, 19956, 11152, 11149, 47587, 11814, 6148, 11806, 11812,
+ 20522, 20517, 6143, 6146, 11805, 6141, 11809, 12489, 6145, 20518,
+ 11804, 20521, 11810, 11807, 11813, 11803, 11811, 6144, 6147, 11808,
+ 6142, 6574, 12485, 6573, 12492, 12491, 6580, 6581, 12493, 6575,
+ 12490, 6579, 12495, 12486, 21036, 12488, 6576, 12484, 12487, 12494,
+ 6577, 12496, 6578, 6980, 13100, 13106, 13098, 13107, 21522, 13097,
+ 13102, 13108, 13105, 13104, 13103, 21521, 13096, 13101, 21520,
+ 13099, 7359, 7356, 13697, 13702, 13704, 13701, 13694, 13696, 13706,
+ 13703, 13698, 13707, 13695, 13705, 7357, 7363, 7361, 13689, 7362,
+ 7358, 13690, 13692, 13691, 13699, 13700, 22007, 7360, 22006, 7355,
+ 13693, 14275, 7657, 22371, 14266, 7658, 7661, 14271, 39895, 14268,
+ 7660, 31310, 22368, 14272, 14273, 14267, 14276, 14269, 14274,
+ 7659, 22369, 7656, 14270, 22705, 14738, 7954, 7952, 7955, 7953,
+ 14737, 14734, 14733, 22706, 14736, 31784, 14735, 15118, 8124,
+ 15109, 15108, 22953, 8119, 15114, 15113, 15105, 15116, 15110,
+ 8123, 15107, 15115, 15106, 8120, 8122, 15111, 8121, 15112, 23149,
+ 15117, 15445, 23148, 8282, 15442, 32573, 15446, 23150, 32570,
+ 8279, 15444, 8284, 23151, 8281, 23152, 15443, 32575, 8283, 15447,
+ 8278, 8404, 8406, 23334, 15704, 8405, 15702, 8280, 15703, 8403,
+ 8474, 8476, 15922, 8475, 15921, 16089, 8546, 16088, 8547, 16086,
+ 16085, 16090, 16091, 16219, 23636, 16087, 16313, 16310, 16311,
+ 16312, 8656, 23735, 16387, 16386, 16385, 16418, 23763, 16463,
+ 16444, 8674, 3993, 5206, 19958, 19959, 20523, 21044, 6582, 21524,
+ 21523, 22011, 22013, 22010, 22012, 7364, 14277, 22956, 8125, 22957,
+ 15448, 23154, 32577, 23335, 33136, 16445, 3994, 4372, 4759, 4758,
+ 36806, 5209, 19458, 10539, 5207, 10540, 5208, 19960, 11157, 11153,
+ 19966, 28454, 5690, 11156, 11155, 11154, 5691, 11158, 11159, 20528,
+ 11821, 11819, 11823, 11824, 11830, 20530, 11826, 11828, 38587,
+ 11820, 11815, 29004, 11827, 20527, 20529, 11829, 11822, 11825,
+ 11816, 6150, 11818, 11817, 6149, 6151, 20532, 6585, 12498, 12500,
+ 12499, 12504, 6583, 21047, 12501, 12497, 12502, 12503, 6584, 6586,
+ 12505, 13112, 13111, 30153, 13109, 13110, 6982, 6984, 6981, 6983,
+ 13714, 13715, 13710, 22017, 13711, 7366, 7371, 7365, 7372, 7367,
+ 13712, 30750, 22014, 13713, 13709, 7373, 7369, 22016, 30748, 7368,
+ 7370, 22015, 13708, 22375, 14279, 7663, 22373, 22372, 14281, 7665,
+ 14284, 14280, 14278, 14283, 7664, 14282, 54819, 7662, 22376, 22710,
+ 7957, 7960, 14740, 22711, 7958, 14739, 7956, 7959, 15119, 15120,
+ 15121, 8126, 22958, 15122, 8127, 8286, 15451, 15452, 15450, 15449,
+ 15453, 8285, 15708, 15706, 15707, 15709, 15705, 15710, 15924,
+ 23476, 15925, 15923, 8477, 16092, 8548, 16093, 16221, 16220, 23783,
+ 3995, 6152, 20534, 21048, 6587, 21049, 21526, 21527, 6985, 22018,
+ 22378, 7667, 22377, 7666, 22959, 8287, 8374, 8478, 3996, 5210,
+ 6588, 22020, 15454, 18250, 26559, 26711, 17980, 18251, 9217, 26884,
+ 18254, 3997, 26886, 4000, 3999, 3998, 18252, 9216, 18599, 9570,
+ 18597, 9572, 4373, 18601, 27171, 4375, 9569, 9571, 4374, 9574,
+ 9573, 9575, 18600, 18598, 10018, 10016, 4762, 10015, 4767, 4764,
+ 4761, 19004, 4768, 19005, 4763, 4766, 46029, 4765, 10017, 19006,
+ 4760, 19003, 5216, 10542, 10548, 5213, 5220, 19462, 5215, 10545,
+ 10547, 5218, 10541, 10544, 5214, 5211, 10543, 5217, 10546, 5219,
+ 5212, 27932, 19464, 19463, 11161, 11164, 5693, 19970, 5703, 5699,
+ 11162, 19969, 19973, 5707, 5700, 5705, 5695, 28459, 5692, 5694,
+ 5706, 11163, 5698, 5701, 5697, 5702, 11165, 5704, 5696, 11160,
+ 19971, 20538, 20539, 20536, 20535, 20540, 11831, 6153, 11833,
+ 20544, 6155, 6157, 28457, 11832, 6154, 6158, 20545, 6156, 20543,
+ 20546, 6594, 12510, 6602, 12507, 21054, 6603, 6592, 21050, 12508,
+ 21053, 21051, 6597, 21052, 12509, 6590, 6589, 21055, 6600, 6599,
+ 6598, 6596, 6601, 12506, 6591, 6593, 6595, 6987, 6990, 21529,
+ 6994, 6988, 6993, 6991, 21532, 6986, 21531, 6992, 6989, 30755,
+ 13719, 7376, 7374, 22023, 13720, 30756, 7377, 7375, 13718, 13717,
+ 22022, 7671, 13716, 7669, 7668, 14285, 7378, 7670, 14286, 7673,
+ 14287, 7672, 7962, 14742, 7961, 7966, 7964, 7965, 8129, 7963,
+ 14741, 14288, 8128, 8130, 22961, 8288, 8289, 32586, 15711, 33325,
+ 8595, 8594, 4002, 17827, 17826, 9014, 5221, 17981, 9011, 9012,
+ 9010, 17982, 9013, 9221, 9218, 9223, 9219, 4003, 4006, 18256,
+ 9220, 4005, 9222, 18260, 18255, 4004, 19976, 18604, 27176, 9578,
+ 9580, 4378, 9576, 9579, 9577, 4376, 4379, 18602, 4377, 18605,
+ 19008, 10020, 10024, 10021, 19011, 4771, 19007, 4772, 19017, 10023,
+ 19010, 10025, 10027, 19015, 4769, 10026, 29540, 19014, 4770, 11172,
+ 10022, 10549, 10558, 10556, 10551, 10552, 10557, 10559, 5223,
+ 19466, 10554, 10550, 5222, 5224, 10553, 10560, 10555, 5708, 11175,
+ 11167, 11173, 11174, 5709, 19974, 11166, 11168, 10019, 11170,
+ 11171, 11169, 6160, 30764, 19977, 11840, 14289, 11841, 11838,
+ 5710, 6162, 11837, 11843, 11842, 6159, 11846, 11836, 11845, 11834,
+ 11844, 11839, 6161, 20548, 12517, 21058, 12512, 12518, 12513,
+ 12511, 12514, 6604, 21059, 12516, 21060, 12515, 6605, 6996, 6995,
+ 13119, 13122, 13114, 13118, 6997, 13117, 13115, 13121, 13116,
+ 13113, 13120, 21535, 13726, 7381, 15123, 13723, 13724, 13722,
+ 11835, 7380, 13727, 13721, 7379, 7382, 13725, 14290, 7674, 14291,
+ 14292, 22382, 14743, 7967, 15124, 15125, 22963, 22962, 15126,
+ 15456, 15455, 15713, 15712, 15927, 15928, 15926, 16094, 8549,
+ 4007, 4774, 4773, 5227, 5226, 10562, 10563, 10561, 19467, 5225,
+ 11179, 19980, 11180, 11176, 5711, 11177, 19979, 11178, 11849,
+ 11851, 11847, 11850, 6163, 11848, 6164, 21063, 12026, 6608, 6607,
+ 21062, 6606, 29541, 12519, 12520, 29542, 13124, 13126, 7001, 6998,
+ 21537, 7000, 6999, 13125, 13123, 21536, 21538, 13734, 13731, 13732,
+ 7386, 13733, 13728, 13729, 7383, 22026, 7384, 13730, 7385, 22027,
+ 14296, 22384, 14297, 14294, 14295, 7675, 14293, 31335, 22383,
+ 22386, 31802, 14747, 14744, 14746, 7970, 14750, 7969, 14748, 14751,
+ 14749, 14745, 7968, 15128, 32245, 15129, 15127, 22964, 15131,
+ 8131, 8132, 15458, 8291, 15130, 15457, 8290, 15716, 15717, 8407,
+ 15715, 32874, 15714, 15929, 8479, 23477, 16222, 16315, 16314,
+ 23687, 8631, 8657, 16316, 16419, 23764, 8675, 4008, 4380, 6609,
+ 8408, 4009, 4775, 5712, 6165, 8133, 4381, 10029, 10028, 10564,
+ 19473, 5230, 5228, 5232, 10566, 19470, 5231, 5229, 19472, 19471,
+ 19474, 10565, 5715, 11186, 19983, 5714, 5716, 11191, 5718, 11188,
+ 11189, 11181, 5717, 11192, 28478, 19982, 11183, 19981, 11184,
+ 11182, 5713, 19984, 11190, 11185, 11187, 11863, 20552, 11862,
+ 11860, 11852, 11867, 11855, 11865, 11872, 11864, 6173, 20561,
+ 6169, 11853, 20555, 11859, 6171, 20563, 11858, 6172, 6174, 11861,
+ 20564, 6166, 6167, 11873, 11871, 20557, 11870, 11856, 20560, 11868,
+ 29021, 6170, 48582, 20553, 20558, 6168, 11869, 11854, 11857, 11866,
+ 13161, 12530, 21069, 12523, 12542, 12551, 12526, 6620, 21066,
+ 12539, 6610, 6612, 6624, 12524, 21078, 21070, 6613, 6615, 6625,
+ 6614, 21080, 29548, 29553, 21079, 6623, 12532, 29555, 12521, 6621,
+ 12531, 6617, 12549, 6622, 12547, 12535, 12545, 6619, 12522, 12548,
+ 12543, 21065, 12550, 6611, 29547, 21068, 6626, 6616, 21072, 21064,
+ 12528, 21075, 12536, 12540, 21074, 12544, 6618, 12527, 12525,
+ 12537, 29549, 29550, 21073, 21076, 12534, 12533, 21077, 12538,
+ 12541, 12546, 30164, 13129, 7002, 13139, 13131, 7008, 7012, 13148,
+ 13156, 13141, 7004, 21545, 13145, 12529, 21546, 7005, 13152, 13157,
+ 13149, 21540, 13151, 13160, 13153, 13135, 13144, 21071, 21549,
+ 7013, 21544, 7009, 13133, 13146, 7007, 13140, 7006, 13154, 13137,
+ 13130, 7010, 13159, 21550, 30166, 13132, 13150, 13147, 13142,
+ 13128, 13127, 13136, 13155, 7011, 13158, 13134, 13138, 7003, 21543,
+ 21548, 21542, 7398, 7393, 13768, 13764, 13740, 7389, 22029, 22043,
+ 30774, 7388, 7394, 30776, 22030, 22028, 13738, 7392, 13750, 13736,
+ 13737, 7387, 13767, 7396, 13753, 13758, 13752, 14315, 13748, 13756,
+ 13754, 13741, 13735, 13762, 7395, 13763, 22035, 13757, 22036,
+ 13746, 13744, 13739, 22038, 22041, 22031, 13747, 13760, 13743,
+ 13759, 13765, 22044, 30775, 7391, 22032, 13755, 13761, 13751,
+ 13745, 7390, 22045, 30773, 22039, 13143, 13749, 7397, 13742, 22040,
+ 21541, 14320, 7678, 14319, 14317, 14335, 7682, 22392, 14332, 14324,
+ 14334, 14310, 14322, 22400, 7684, 22401, 14302, 22395, 14300,
+ 14333, 22389, 14331, 14330, 14314, 14313, 14303, 7686, 31336,
+ 14309, 14318, 14329, 7689, 14336, 22393, 7978, 7691, 7685, 14307,
+ 22394, 14316, 14299, 14301, 7676, 7688, 7681, 14308, 14323, 13766,
+ 7687, 14298, 7973, 14325, 14328, 7683, 22398, 14312, 7690, 7680,
+ 22399, 22396, 22397, 7679, 14321, 14327, 7677, 31338, 14305, 14326,
+ 14306, 54868, 31342, 22388, 14311, 14757, 22722, 14762, 7975,
+ 7977, 14768, 7971, 14782, 14774, 14763, 14764, 14773, 22723, 7984,
+ 14772, 14756, 14771, 14759, 14783, 7983, 7981, 14760, 22714, 14779,
+ 22724, 14765, 14778, 22721, 14780, 14755, 7976, 22712, 14781,
+ 22725, 22715, 14769, 22728, 7980, 14766, 22718, 31812, 7982, 14775,
+ 22719, 22720, 22716, 7974, 14761, 14776, 22713, 14770, 14304,
+ 14777, 14758, 22717, 7979, 22727, 15148, 31810, 7972, 14753, 31809,
+ 15145, 15138, 8135, 22970, 15133, 15149, 15140, 14767, 22967,
+ 15151, 15134, 22969, 8134, 15144, 8136, 8144, 8142, 15146, 8143,
+ 15136, 22976, 15137, 15142, 15147, 22965, 14752, 8137, 15156,
+ 15153, 15480, 15143, 15139, 15154, 15469, 15141, 32258, 8140,
+ 22971, 8139, 14754, 8141, 15150, 15152, 8138, 15155, 15132, 32250,
+ 15135, 22973, 22972, 15478, 23171, 15462, 8295, 15476, 23159,
+ 23160, 15460, 8296, 32594, 15471, 23158, 15467, 8301, 15477, 15461,
+ 15464, 8293, 15479, 23163, 15472, 15475, 8299, 8304, 8302, 15468,
+ 15463, 23168, 8297, 8298, 15459, 8294, 23170, 8292, 8300, 15474,
+ 8303, 23165, 15470, 15481, 8305, 23156, 23157, 23169, 15466, 23162,
+ 15473, 23344, 23479, 15730, 15745, 15732, 15739, 15465, 15737,
+ 15720, 15743, 8411, 15724, 15742, 15731, 32876, 23346, 8410, 23339,
+ 23342, 15747, 15733, 23341, 15738, 15741, 15718, 15744, 15729,
+ 15734, 15722, 15726, 15746, 15736, 15719, 15723, 15725, 15735,
+ 23340, 8409, 15728, 23347, 23348, 23350, 32880, 23345, 23337,
+ 15721, 23349, 15727, 15933, 15937, 8486, 15939, 23482, 8480, 32884,
+ 15935, 15941, 8485, 8481, 33147, 8482, 15932, 15938, 8484, 15936,
+ 8483, 15931, 15740, 15934, 33153, 15930, 15940, 23572, 23577,
+ 8550, 16101, 16104, 16100, 16102, 16103, 16097, 16098, 16095,
+ 23573, 23575, 16099, 16096, 8551, 8552, 23574, 16224, 23643, 16226,
+ 33472, 43394, 23646, 23645, 23647, 16225, 16227, 23640, 8597,
+ 23644, 16223, 8596, 8598, 23648, 16318, 16319, 8632, 16317, 23689,
+ 16389, 16388, 16390, 8659, 16391, 8658, 16392, 16420, 16423, 16422,
+ 8668, 16421, 33717, 23766, 23784, 8678, 8676, 8677, 8683, 16465,
+ 16466, 16464, 16472, 23803, 4382, 26894, 27943, 11193, 11874,
+ 13769, 15482, 42917, 4383, 19019, 4776, 5233, 27944, 19475, 11194,
+ 19987, 11195, 5719, 6177, 11876, 11875, 6181, 6176, 11877, 6178,
+ 6180, 6179, 6175, 20567, 6627, 21083, 21081, 12555, 12553, 29566,
+ 12554, 12552, 7014, 21554, 7017, 7019, 7018, 30175, 21555, 7015,
+ 7016, 13771, 13770, 7399, 13772, 22046, 13773, 7400, 22048, 22049,
+ 30779, 14344, 14342, 14789, 22405, 14340, 14341, 7692, 14337,
+ 14345, 14339, 14343, 14785, 22407, 22403, 14787, 22730, 14788,
+ 7989, 14784, 7988, 14786, 7985, 7986, 7987, 14338, 8147, 15159,
+ 15157, 15158, 8145, 8148, 8146, 22978, 22977, 56995, 15483, 15484,
+ 8306, 23174, 15748, 15750, 15749, 8412, 8487, 15944, 15943, 15942,
+ 4384, 17706, 8908, 9017, 3739, 9015, 9018, 9016, 26897, 18262,
+ 18261, 9225, 18266, 4013, 18263, 4014, 9227, 4011, 9226, 9224,
+ 4012, 4010, 18264, 18265, 18606, 27184, 9581, 9584, 4387, 9583,
+ 9582, 18609, 4386, 4385, 18608, 4389, 9585, 4388, 10034, 4778,
+ 4779, 4780, 10035, 10031, 4777, 10032, 27508, 10033, 10030, 27506,
+ 19479, 27948, 5240, 19477, 19989, 5237, 10567, 5238, 5241, 10568,
+ 19476, 5236, 5234, 5235, 5239, 5720, 11198, 5728, 11197, 19992,
+ 11200, 5724, 11199, 6189, 5722, 5725, 5721, 5726, 5727, 5723,
+ 19996, 20572, 11196, 6185, 11879, 20573, 11883, 20574, 20576,
+ 11882, 6190, 6186, 6187, 11878, 11880, 11881, 6182, 6184, 20571,
+ 6188, 6183, 21087, 12558, 12556, 12557, 6629, 6630, 21089, 12559,
+ 6628, 7020, 30177, 7022, 7021, 21562, 13162, 21563, 21561, 13163,
+ 13775, 22053, 13774, 22054, 31351, 7693, 7694, 14346, 7695, 22411,
+ 14792, 22733, 14790, 22732, 14791, 7990, 22734, 15160, 8307, 23352,
+ 18610, 22412, 7991, 4390, 27950, 5242, 10569, 19482, 11201, 5729,
+ 6191, 11884, 11886, 6193, 6192, 6194, 6195, 11885, 6633, 6634,
+ 6632, 7023, 6631, 12560, 29570, 21564, 21566, 7024, 13776, 14347,
+ 7696, 7992, 15161, 15165, 8151, 15162, 8152, 8150, 15166, 8153,
+ 15164, 15485, 8149, 8308, 23485, 16320, 23692, 23796, 4391, 5731,
+ 5730, 20585, 20583, 20582, 6196, 11888, 11887, 6197, 21093, 12564,
+ 6638, 6635, 12563, 6637, 12561, 6636, 21094, 12562, 13164, 7025,
+ 13779, 39976, 7401, 13777, 7402, 7403, 13778, 7404, 22059, 14348,
+ 22419, 7700, 7697, 7702, 14350, 7698, 14349, 7701, 22416, 22415,
+ 7699, 22420, 14795, 14797, 22737, 22738, 7993, 14796, 7994, 14794,
+ 14793, 32265, 15168, 15167, 8154, 15169, 15490, 8310, 15489, 15486,
+ 8309, 15487, 15488, 15751, 15752, 8413, 23358, 8490, 23355, 23357,
+ 15945, 23487, 23486, 8488, 8489, 15946, 23580, 8553, 8554, 16105,
+ 23581, 23650, 8633, 16322, 8635, 23693, 16321, 16323, 8634, 16393,
+ 33719, 16446, 23818, 18611, 4392, 21096, 6639, 30194, 13165, 21569,
+ 13780, 7703, 7704, 22982, 4393, 20586, 7405, 8311, 4781, 18612,
+ 21571, 7705, 23488, 8599, 4782, 11202, 29038, 11889, 20589, 11891,
+ 20587, 11890, 12568, 12565, 6640, 49541, 6641, 12566, 12567, 21098,
+ 13167, 13172, 7026, 13166, 13168, 13175, 13170, 13174, 13171,
+ 13169, 13173, 7027, 22061, 13783, 22062, 13781, 7407, 22063, 7406,
+ 13782, 7408, 22422, 14353, 31364, 31372, 14352, 7706, 14351, 14798,
+ 22743, 14800, 14802, 14801, 22744, 7995, 14799, 15176, 8155, 15174,
+ 15177, 8156, 32276, 15172, 22983, 15175, 15173, 15170, 8157, 15171,
+ 32615, 23186, 23184, 15491, 23185, 23187, 15493, 15492, 23359,
+ 15753, 23360, 15754, 33168, 23490, 23489, 15947, 23582, 8556,
+ 33337, 8555, 16228, 16229, 8636, 16324, 23695, 8669, 23808, 4783,
+ 6198, 13177, 13176, 13785, 13784, 30792, 22424, 7996, 14804, 14803,
+ 15180, 15178, 15181, 15179, 22984, 32908, 8312, 15494, 15495,
+ 15496, 32906, 15948, 23491, 16106, 23696, 16325, 4784, 21102,
+ 22064, 14354, 14805, 23188, 4785, 29582, 21103, 7028, 30211, 14355,
+ 8158, 15182, 8313, 23362, 15755, 15756, 8491, 16230, 4786, 5734,
+ 5735, 11203, 6199, 6200, 11892, 6201, 29587, 6645, 21105, 6647,
+ 12570, 12571, 12569, 6642, 6643, 6646, 6644, 21577, 21578, 13178,
+ 7029, 7030, 21575, 21579, 13792, 7411, 13787, 13786, 22068, 13791,
+ 7409, 22066, 30795, 7713, 31381, 13788, 13793, 13790, 13789, 22065,
+ 7410, 7711, 22431, 14357, 7707, 22428, 14358, 22429, 22285, 14356,
+ 22427, 7710, 7708, 7712, 22432, 7709, 22430, 22434, 32288, 22994,
+ 22753, 14806, 31851, 14811, 14807, 14810, 7997, 22755, 14602,
+ 14809, 14808, 22992, 8161, 8159, 8162, 8160, 15183, 15184, 15185,
+ 8163, 22989, 22991, 23192, 15500, 8315, 15498, 32633, 8316, 15497,
+ 15499, 8314, 15760, 15757, 32911, 15758, 15759, 15949, 8493, 23493,
+ 8492, 23492, 16108, 16107, 8557, 23654, 23655, 23653, 8600, 8637,
+ 8660, 16394, 16447, 16448, 4787, 11893, 29596, 12572, 13179, 13180,
+ 7031, 30228, 7032, 13794, 7412, 22436, 7998, 22757, 15186, 22995,
+ 8164, 15503, 8317, 15502, 15504, 15501, 15952, 15761, 15762, 23365,
+ 8414, 15951, 23496, 23494, 15950, 23495, 16109, 16449, 23786,
+ 4788, 23497, 23787, 4789, 19998, 5243, 10570, 11204, 19999, 6202,
+ 6205, 6203, 11894, 21114, 6207, 6204, 20596, 21115, 6206, 21107,
+ 6649, 21112, 12573, 21110, 21586, 12574, 13796, 29606, 6648, 6650,
+ 6651, 21111, 13182, 21587, 13181, 7033, 39335, 7034, 21584, 13183,
+ 13795, 7036, 7413, 30804, 7035, 7714, 13797, 7415, 7414, 13798,
+ 13801, 13799, 13800, 7416, 22070, 7719, 7717, 22440, 22441, 7716,
+ 14360, 22439, 7718, 22437, 22438, 14359, 14812, 31395, 14361,
+ 7715, 14362, 14815, 14813, 14814, 14819, 8168, 14818, 14821, 14820,
+ 14817, 14816, 31396, 7999, 23001, 31874, 23000, 23005, 15189,
+ 23004, 15188, 8167, 8165, 8166, 23002, 15187, 15507, 23196, 8318,
+ 32641, 15506, 15505, 8319, 32925, 15767, 15766, 23367, 15764,
+ 23499, 15763, 8416, 8415, 15768, 16110, 8558, 15954, 8494, 15953,
+ 15765, 23587, 16111, 8601, 23697, 8661, 16395, 33749, 16450, 4790,
+ 11205, 14822, 4791, 21118, 39337, 13185, 13184, 14363, 40707,
+ 22443, 14824, 22763, 14823, 23006, 8169, 15508, 15509, 8417, 23500,
+ 23657, 16451, 5244, 6209, 6208, 12575, 12577, 6653, 12576, 6652,
+ 6654, 12578, 21592, 21591, 21595, 13187, 13189, 13188, 21590,
+ 13191, 21589, 21601, 21593, 7037, 13190, 13186, 21599, 30237,
+ 13192, 22078, 13808, 22072, 13811, 13813, 13803, 13807, 13804,
+ 7418, 7421, 7423, 13805, 13806, 7422, 13809, 13812, 13810, 7424,
+ 22073, 7420, 13802, 7417, 22077, 7419, 22079, 22451, 7721, 14369,
+ 14367, 14366, 22452, 14372, 22446, 14371, 14370, 22447, 14365,
+ 7720, 14364, 22445, 14368, 7722, 22767, 14827, 22770, 14831, 14828,
+ 14830, 14829, 14826, 14832, 14835, 14833, 14834, 8001, 22766,
+ 8000, 14825, 14836, 15194, 15197, 15199, 15198, 23009, 15192,
+ 15196, 15191, 23010, 15193, 8170, 15190, 23012, 15195, 15522,
+ 15511, 8320, 23202, 23200, 8321, 15510, 15515, 15521, 15513, 15520,
+ 23199, 15517, 23201, 15516, 15519, 15514, 15512, 23198, 15518,
+ 15775, 15773, 8418, 15772, 15778, 15776, 23369, 8419, 15771, 15769,
+ 32937, 15770, 8421, 15774, 8420, 15777, 15955, 15961, 23503, 23501,
+ 15956, 8498, 15962, 8497, 15960, 15959, 8496, 15958, 8495, 15957,
+ 58046, 16117, 16119, 16118, 33349, 16115, 8560, 16112, 16116,
+ 16121, 23588, 16120, 16113, 16114, 8559, 16231, 8604, 23659, 16232,
+ 8602, 8603, 23658, 33586, 16326, 8638, 16424, 23769, 8670, 23770,
+ 16452, 8671, 16453, 16454, 16468, 16467, 8686, 16476, 5245, 20600,
+ 29610, 12580, 29608, 12579, 29609, 7038, 7039, 13193, 30821, 13814,
+ 14375, 22082, 22081, 7425, 7723, 14373, 31412, 14376, 7724, 22773,
+ 14837, 14374, 15200, 8171, 15523, 32658, 23376, 15781, 15779,
+ 23375, 23373, 15780, 15963, 23504, 8499, 16122, 8607, 8561, 8605,
+ 8606, 16327, 8662, 23771, 5246, 28494, 21603, 30826, 15201, 23590,
+ 23660, 10571, 20603, 6655, 21120, 13194, 21604, 21608, 7040, 13195,
+ 21606, 21605, 21607, 13816, 13815, 7726, 7426, 7427, 30832, 13819,
+ 13818, 13817, 22084, 22456, 14377, 14380, 22455, 14379, 14378,
+ 7725, 14841, 14839, 14838, 31888, 22774, 14840, 22775, 8172, 15203,
+ 15204, 8173, 23014, 15202, 23204, 15525, 15524, 15527, 8322, 15526,
+ 32664, 15782, 15784, 15783, 23506, 15964, 15967, 15965, 15966,
+ 16123, 8562, 33359, 33356, 16233, 16234, 16235, 23699, 8639, 8663,
+ 16455, 5247, 21610, 7428, 7727, 15205, 23377, 16124, 23701, 33674,
+ 16425, 10572, 23789, 8687, 5248, 14381, 22777, 15206, 15528, 23378,
+ 33203, 15968, 16125, 5249, 21121, 13196, 13197, 21613, 7041, 7042,
+ 13821, 7430, 7429, 13820, 14842, 22778, 15207, 15209, 15208, 8176,
+ 8175, 8174, 23379, 8501, 15969, 23507, 8500, 16127, 16126, 23702,
+ 8640, 16328, 5736, 12581, 29618, 21122, 13200, 13198, 13199, 30248,
+ 22089, 13830, 30847, 13825, 13822, 13829, 22087, 30852, 22086,
+ 13831, 30854, 30843, 7432, 13828, 13824, 22088, 30841, 13823,
+ 13827, 13826, 7431, 14392, 14387, 14385, 14394, 14386, 31434,
+ 14382, 31430, 14388, 22459, 22461, 14383, 14851, 14384, 14395,
+ 22468, 31432, 22463, 22466, 40743, 22470, 22464, 14391, 7728,
+ 14390, 14389, 22460, 14393, 22783, 14843, 14846, 31906, 22784,
+ 14845, 22779, 14853, 14848, 14852, 22781, 14850, 14849, 14847,
+ 31898, 14844, 31896, 8004, 8003, 31901, 8005, 8002, 14854, 31902,
+ 31900, 15215, 15218, 32341, 15216, 15220, 41918, 23019, 32337,
+ 15221, 32345, 15213, 8181, 15214, 23018, 15212, 15219, 23207,
+ 15211, 15210, 8180, 8178, 8177, 23021, 23020, 22782, 23016, 15217,
+ 15537, 15543, 8325, 15538, 42318, 15541, 15545, 8326, 15540, 32677,
+ 15532, 23208, 15531, 15544, 15535, 23210, 15533, 15542, 15534,
+ 8324, 8323, 23212, 15529, 15530, 15539, 32687, 23213, 32689, 15536,
+ 32670, 23390, 15787, 15790, 23392, 32671, 23382, 23384, 8179,
+ 23385, 23395, 23396, 32957, 23389, 32956, 23383, 15788, 15794,
+ 15792, 15786, 15797, 23381, 15785, 23397, 8423, 15793, 32951,
+ 23394, 32954, 15789, 8422, 15796, 23393, 32960, 15795, 23391,
+ 15972, 15971, 43006, 23511, 43000, 15978, 43003, 15974, 15977,
+ 8503, 33208, 33211, 15975, 15976, 33206, 15970, 15973, 8502, 23509,
+ 8564, 16138, 16133, 16137, 23598, 16140, 16136, 23593, 16132,
+ 23596, 8566, 16135, 16139, 8565, 16130, 15791, 16134, 33372, 43252,
+ 16131, 23595, 16128, 16129, 8563, 16239, 16241, 16244, 16240,
+ 16245, 23662, 16238, 23663, 16236, 23665, 8608, 16242, 8610, 8609,
+ 16237, 16243, 23705, 16333, 8641, 16334, 23706, 16332, 16329,
+ 33599, 23707, 16331, 16330, 16396, 23744, 16398, 16397, 23746,
+ 16428, 43760, 16427, 16426, 16429, 23772, 8679, 8680, 16473, 16477,
+ 23814, 5737, 11895, 12584, 21123, 6656, 12582, 21125, 19021, 12583,
+ 21127, 21126, 13201, 13202, 7045, 7043, 13203, 7044, 13836, 22096,
+ 13839, 13833, 13840, 13832, 13834, 22099, 13835, 13838, 22093,
+ 22100, 7435, 13843, 13842, 7433, 13837, 13841, 7434, 22478, 30865,
+ 22094, 22091, 22475, 14405, 31445, 7733, 22477, 14400, 7729, 22487,
+ 14397, 14403, 14406, 22484, 7734, 31911, 14402, 14399, 14407,
+ 14398, 22488, 14404, 7730, 22474, 14396, 7731, 22486, 7732, 14401,
+ 22483, 14872, 14859, 14860, 14863, 14861, 31918, 14855, 31919,
+ 22792, 14858, 14868, 14862, 22787, 31912, 8006, 31910, 14870,
+ 14867, 8007, 14869, 14856, 14865, 14866, 22789, 14864, 15225,
+ 15227, 15230, 23024, 23026, 15224, 23028, 8182, 15232, 15223,
+ 15233, 23029, 15229, 15231, 15235, 15228, 15236, 15226, 15222,
+ 8183, 23031, 15234, 8184, 8328, 32355, 23025, 23216, 14857, 15571,
+ 15562, 8330, 15558, 8331, 23224, 23219, 15567, 15561, 15551, 8329,
+ 15564, 15559, 15560, 23222, 15546, 15553, 15568, 23217, 15565,
+ 42330, 15557, 23223, 15569, 15552, 15547, 15566, 23221, 15549,
+ 15563, 15554, 15570, 15550, 8327, 15548, 15555, 15556, 15804,
+ 23220, 15802, 32972, 15807, 23400, 15819, 15810, 15803, 15799,
+ 15812, 15805, 15808, 15801, 15815, 15798, 15806, 15811, 15813,
+ 15816, 15800, 23401, 15820, 15821, 15814, 15818, 15809, 15994,
+ 15997, 23520, 8504, 23516, 15996, 16001, 15999, 8505, 15990, 15980,
+ 15979, 8507, 15992, 15993, 15989, 15981, 23517, 15986, 15817,
+ 33216, 15982, 8506, 15988, 23521, 15987, 15983, 15995, 33217,
+ 15984, 16145, 15998, 16000, 15991, 15985, 16146, 16148, 16142,
+ 8567, 33374, 16155, 16153, 8568, 16152, 16151, 16144, 16141, 16147,
+ 16156, 16143, 16149, 43276, 16254, 16259, 16249, 16252, 8611,
+ 16256, 33501, 16263, 16150, 33505, 16250, 16260, 16264, 16255,
+ 16248, 16258, 33506, 16257, 16262, 16261, 16154, 16253, 16247,
+ 16251, 8642, 8643, 16246, 23669, 16345, 16336, 16344, 16341, 16342,
+ 16335, 16338, 16346, 16340, 16339, 16337, 23708, 16343, 33611,
+ 16399, 33677, 16400, 23748, 16402, 16401, 16404, 16403, 16431,
+ 16430, 16456, 23790, 16457, 23797, 16469, 8684, 8688, 23805, 16478,
+ 8689, 5738, 30871, 40760, 8424, 16002, 23522, 8644, 8645, 5739,
+ 12585, 21128, 6657, 13844, 22101, 22490, 14409, 14410, 14408,
+ 14874, 14873, 8008, 15238, 14875, 15237, 32361, 23033, 15573,
+ 8332, 8334, 15572, 23226, 32702, 8333, 23406, 15822, 15824, 15823,
+ 16003, 8508, 23525, 8612, 16347, 16405, 23798, 23812, 16482, 5740,
+ 18086, 13204, 30875, 7436, 22104, 22103, 22491, 14412, 14411,
+ 22795, 14876, 23035, 23034, 32711, 8335, 8425, 16157, 16474, 5741,
+ 7046, 21621, 7437, 15574, 23407, 16265, 6210, 20001, 22493, 22492,
+ 31926, 14877, 23037, 32365, 8664, 6211, 7438, 8009, 16266, 6212,
+ 20002, 13845, 7736, 14413, 14414, 22494, 7735, 31459, 14878, 8013,
+ 8011, 8012, 8010, 15239, 8185, 32715, 23227, 15826, 15825, 15828,
+ 15827, 8426, 16004, 33235, 16006, 16005, 8509, 16158, 23602, 16267,
+ 16268, 8613, 16406, 16432, 8681, 33780, 11896, 14415, 14879, 15575,
+ 12586, 18317, 14880, 15241, 15240, 23038, 23230, 23231, 23527,
+ 16269, 8646, 23750, 16407, 16433, 6658, 13846, 13847, 30885, 14416,
+ 6659, 21129, 8186, 15242, 23233, 16008, 8510, 16009, 16007, 16270,
+ 23751, 16348, 33691, 6660, 14883, 14882, 14881, 15243, 23040,
+ 23039, 15247, 15246, 15245, 15244, 8187, 15576, 15830, 8427, 15829,
+ 16010, 16161, 16160, 8569, 16159, 16273, 16272, 16271, 23670,
+ 33781, 7047, 31462, 14417, 8014, 31933, 15577, 15578, 16162, 16274,
+ 33523, 23714, 16349, 16408, 16458, 16484, 7048, 8015, 15248, 15579,
+ 16011, 16275, 17939, 7440, 22495, 14884, 15249, 15580, 15581,
+ 15582, 15835, 23409, 15831, 8511, 15834, 15833, 8428, 15832, 8430,
+ 8429, 16013, 16012, 8512, 8513, 33245, 23529, 8571, 16163, 8570,
+ 33528, 16278, 16279, 16277, 16276, 8648, 33625, 16350, 16351,
+ 16352, 8647, 16409, 16412, 16411, 16410, 23800, 33782, 16483,
+ 7737, 22800, 32724, 8195, 15836, 16014, 23604, 8572, 16164, 33798,
+ 23815, 16485, 7738, 23444, 33764, 14885, 23530, 16165, 23752,
+ 16434, 23774, 10, 21, 23, 31, 32, 35, 36, 39, 40, 43, 44, 47,
+ 48, 51, 52, 55, 56, 59, 60, 100, 101, 104, 105, 102, 103, 13,
+ 14, 15, 17, 18, 19, 20, 61, 62, 63, 64, 65, 66, 106, 107, 108,
+ 124, 125, 126, 128, 127, 159, 169, 170, 171, 9, 75, 160, 165,
+ 76, 29, 30, 77, 109, 1, 110, 4, 156, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 7, 6, 115, 117, 116, 8, 166, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 157, 98,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 33, 155, 34, 163, 164, 161, 35348, 44194, 44192, 44193, 44213,
+ 44214, 35362, 17707, 44284, 35388, 44399, 44397, 44398, 44532,
+ 44618, 35546, 44626, 44622, 44954, 44957, 44955, 45471, 36835,
+ 37038, 47764, 53016, 30923, 44191, 44181, 44336, 26561, 44400,
+ 44619, 44958, 35720, 35997, 45443, 46064, 46065, 47656, 47688,
+ 38727, 44197, 35356, 44286, 44401, 48645, 26508, 35349, 44183,
+ 44198, 44215, 35389, 44289, 44319, 44288, 44216, 44290, 44287,
+ 26607, 26606, 35441, 35442, 44402, 44961, 44522, 44609, 44620,
+ 44621, 45248, 44959, 46598, 45320, 44960, 45444, 36354, 46069,
+ 46066, 46503, 46068, 46808, 47657, 47689, 47690, 38029, 35346,
+ 35345, 44185, 44184, 35344, 35354, 44217, 35363, 44292, 44291,
+ 44283, 35390, 44405, 44403, 44404, 44962, 45319, 26981, 45446,
+ 45447, 45445, 46070, 46811, 36836, 46810, 48646, 38686, 49604,
+ 49603, 55072, 56500, 57177, 35347, 35350, 26515, 35351, 35355,
+ 44218, 44219, 44220, 44406, 35547, 44623, 44963, 36837, 47691,
+ 54077, 44186, 44187, 44188, 44221, 44624, 44407, 44408, 44627,
+ 26902, 35721, 26901, 45449, 35998, 45681, 46072, 46071, 46812,
+ 44409, 35548, 35722, 44964, 45451, 45450, 46074, 36447, 27510,
+ 46075, 46076, 47692, 46814, 46813, 27953, 36838, 47694, 47693,
+ 47695, 28496, 48234, 48647, 39372, 53017, 53574, 53019, 53018,
+ 53053, 54080, 40094, 54079, 54078, 56496, 56501, 44199, 44200,
+ 44223, 44222, 17750, 44294, 44293, 44295, 26563, 26613, 26612,
+ 26610, 44414, 26617, 44415, 35444, 44412, 44411, 26616, 44410,
+ 35445, 44416, 35443, 35549, 44629, 26721, 44630, 44639, 44635,
+ 44631, 26719, 44632, 44634, 44633, 44628, 35550, 44638, 44966,
+ 44968, 26909, 35727, 44969, 35728, 18281, 35729, 26906, 26904,
+ 44973, 44967, 44975, 44970, 44977, 35725, 44965, 44976, 44971,
+ 44972, 44974, 35723, 35726, 35999, 45469, 45458, 36365, 27187,
+ 45468, 45456, 45455, 36004, 27192, 45462, 36001, 36000, 36003,
+ 45467, 45454, 45453, 45470, 45461, 45452, 45457, 45460, 45463,
+ 45465, 45464, 36005, 27514, 36363, 27518, 46081, 36358, 46080,
+ 36367, 27517, 27519, 36362, 46077, 36356, 46082, 36361, 46060,
+ 46085, 46086, 46078, 46079, 36355, 46084, 36357, 36360, 36368,
+ 36364, 36366, 27511, 46822, 46824, 46823, 27958, 27957, 46827,
+ 46819, 36848, 46830, 36840, 46825, 46818, 36849, 36839, 27955,
+ 46821, 46828, 46834, 46829, 46820, 27960, 46831, 47680, 46835,
+ 46974, 46836, 46826, 36843, 47442, 36846, 36850, 46815, 46817,
+ 36842, 36847, 36841, 46816, 46833, 36845, 47698, 47704, 37371,
+ 37366, 47701, 37363, 37367, 37384, 37368, 47697, 37370, 37365,
+ 47711, 28502, 37369, 47707, 47705, 47700, 47703, 47708, 47713,
+ 37364, 37372, 47696, 47702, 28508, 47706, 47709, 37362, 47699,
+ 37130, 48655, 29633, 38033, 38031, 48648, 36844, 38037, 38035,
+ 48653, 38034, 48660, 48658, 29059, 48657, 48663, 48650, 29060,
+ 38039, 48649, 38030, 48652, 48659, 48662, 49207, 48654, 48651,
+ 47712, 38032, 38036, 38038, 29056, 48661, 49618, 38040, 53029,
+ 29629, 38687, 49605, 49610, 38041, 49612, 29634, 49621, 29626,
+ 49622, 49609, 49608, 49623, 53498, 38689, 49624, 49968, 49614,
+ 49616, 49606, 29625, 49607, 49611, 49615, 49617, 29631, 38201,
+ 30267, 30263, 49613, 53030, 53032, 53024, 53021, 53020, 39378,
+ 30265, 53026, 53027, 39374, 53025, 39380, 39379, 53022, 53023,
+ 39373, 53028, 30268, 39376, 53031, 39375, 39422, 40095, 40101,
+ 54081, 30887, 30894, 40099, 30891, 30893, 40096, 40097, 40102,
+ 40098, 55077, 39377, 40780, 40781, 31466, 31465, 55075, 55074,
+ 55076, 31467, 55073, 55827, 31940, 31938, 31939, 55829, 55828,
+ 55826, 41376, 31941, 41374, 41375, 41377, 41965, 41969, 32725,
+ 41968, 41970, 56666, 41967, 41966, 42203, 57706, 57179, 42374,
+ 57178, 57223, 33008, 33007, 42747, 58137, 42375, 33006, 58136,
+ 43068, 33401, 58504, 43305, 33701, 44224, 26567, 26619, 44418,
+ 44419, 44640, 44642, 44643, 35552, 44641, 44980, 44979, 44978,
+ 44982, 44981, 45472, 45473, 36369, 46087, 36851, 36852, 47714,
+ 37373, 48664, 38690, 53035, 53033, 39382, 39381, 53034, 40103,
+ 54082, 40782, 55830, 41378, 56502, 41971, 41972, 42376, 43478,
+ 44201, 35365, 35364, 44296, 44421, 44420, 35553, 44644, 35555,
+ 36006, 36007, 27521, 46088, 46837, 47715, 48665, 38042, 29062,
+ 49625, 40783, 44202, 44225, 35366, 44212, 44236, 35391, 44394,
+ 26622, 44422, 44647, 44649, 35556, 44645, 44983, 45476, 45474,
+ 36008, 45475, 45448, 45680, 46091, 46090, 46092, 46089, 46838,
+ 47718, 38043, 47716, 47717, 38044, 48666, 29635, 49626, 41379,
+ 56503, 56504, 26520, 44226, 44228, 44298, 26568, 44297, 35393,
+ 44299, 35392, 44425, 44423, 44594, 44652, 44650, 44651, 35557,
+ 44927, 35731, 44984, 44985, 45477, 46093, 46094, 36370, 36371,
+ 46840, 47720, 20014, 47719, 29064, 38045, 49628, 49627, 53036,
+ 40104, 54083, 31942, 58138, 35367, 44300, 44426, 26624, 35446,
+ 35732, 45478, 46841, 36854, 47721, 47722, 48667, 49629, 39660,
+ 54084, 55831, 56505, 57182, 42748, 43306, 44427, 26625, 35558,
+ 44653, 26723, 26916, 26917, 44987, 44988, 35734, 36010, 27198,
+ 27199, 36013, 36009, 36011, 45480, 45479, 36373, 27522, 36372,
+ 36012, 46096, 36374, 46097, 36855, 46842, 46843, 27963, 47723,
+ 37377, 37375, 37376, 37374, 28511, 38051, 38046, 38048, 38049,
+ 38047, 38050, 48668, 49630, 39386, 38691, 53038, 39385, 39384,
+ 39383, 53037, 54086, 31469, 54087, 40784, 41381, 41380, 41382,
+ 55832, 41973, 41974, 57707, 43069, 26516, 44229, 44239, 35394,
+ 44302, 26570, 44429, 44428, 44430, 44431, 44656, 44654, 44655,
+ 26921, 44989, 26919, 44990, 44991, 44992, 45483, 45481, 45482,
+ 46098, 46254, 46845, 46846, 46844, 47724, 47727, 47725, 54088,
+ 26521, 35368, 44230, 44231, 44304, 35395, 44303, 44436, 44432,
+ 44433, 44434, 35447, 44657, 44995, 44994, 45484, 45485, 46055,
+ 46099, 46847, 46848, 37378, 49631, 53095, 55080, 40787, 41975,
+ 57275, 44204, 26539, 44232, 35369, 35370, 44233, 26540, 44234,
+ 35396, 35397, 26573, 44309, 35398, 44308, 44305, 44310, 26627,
+ 44441, 35451, 35449, 35448, 26628, 26626, 44439, 44438, 35452,
+ 44442, 44440, 35450, 26630, 26631, 44437, 26728, 44660, 26730,
+ 35560, 26729, 35569, 35568, 35566, 35563, 44658, 35562, 35565,
+ 35564, 44659, 44661, 35561, 35567, 45004, 35738, 35740, 26924,
+ 26926, 18295, 45001, 26928, 44999, 45000, 45007, 45486, 45005,
+ 35735, 35741, 45006, 35737, 45002, 35739, 45003, 44997, 44996,
+ 35736, 44986, 27204, 36014, 27202, 45499, 45492, 45497, 27205,
+ 45496, 27201, 27203, 45489, 45495, 45498, 45491, 45494, 45493,
+ 45490, 36015, 45488, 46100, 27527, 27524, 36382, 36380, 27526,
+ 27530, 46105, 46109, 36379, 46110, 27523, 36383, 46108, 27528,
+ 46107, 46106, 46103, 46102, 27529, 36381, 46104, 46111, 46101,
+ 36384, 36376, 36378, 36377, 27965, 36858, 27966, 36857, 46849,
+ 27971, 28522, 27970, 46852, 46850, 37379, 27964, 36385, 46851,
+ 46853, 46854, 28516, 37380, 47734, 47730, 28519, 28520, 37381,
+ 37385, 28523, 28517, 28514, 28513, 47732, 47729, 47733, 37382,
+ 37383, 47731, 28521, 48259, 47735, 37386, 29070, 48676, 38058,
+ 48674, 29066, 38059, 48675, 38052, 29068, 29067, 38053, 29071,
+ 38054, 48672, 48671, 48669, 48677, 48670, 38057, 38056, 38692,
+ 29636, 49635, 38698, 49633, 49632, 29069, 29641, 38699, 38693,
+ 38696, 29638, 29645, 49642, 49640, 49639, 38695, 39387, 49637,
+ 38694, 49641, 38697, 49636, 49634, 49638, 39388, 39392, 30271,
+ 39389, 39391, 53043, 53044, 53041, 53045, 53042, 39390, 53039,
+ 53167, 53040, 30895, 54090, 40788, 54091, 54095, 54094, 54093,
+ 40106, 40108, 40107, 40105, 54089, 54092, 53046, 40562, 40791,
+ 31470, 40790, 40789, 55081, 31473, 55833, 41383, 41384, 55082,
+ 41385, 56508, 56507, 56506, 57183, 57184, 42749, 57708, 43307,
+ 33532, 59138, 59137, 44205, 35371, 44235, 26574, 35400, 35399,
+ 35454, 35455, 35456, 44663, 26732, 35570, 44662, 26736, 35748,
+ 35744, 45008, 35747, 45009, 36017, 27207, 45501, 36018, 36016,
+ 45503, 46112, 46116, 27531, 36390, 36386, 36388, 36389, 36387,
+ 46113, 46114, 36860, 46857, 46855, 46858, 46859, 46860, 46856,
+ 37390, 37387, 37389, 37392, 37388, 47736, 47737, 47738, 38061,
+ 38060, 29072, 48679, 48678, 38062, 29647, 38703, 38701, 38702,
+ 38706, 29646, 38705, 49645, 49643, 49644, 39396, 39393, 30273,
+ 39394, 39395, 54096, 40793, 40792, 40794, 55083, 55085, 55084,
+ 41387, 55835, 55836, 41977, 41976, 57185, 42750, 58505, 43308,
+ 33632, 59528, 35372, 44312, 44313, 35458, 35457, 35459, 44664,
+ 35571, 35572, 26933, 45012, 45011, 45505, 27209, 45506, 45507,
+ 45504, 27533, 46119, 46118, 46121, 46122, 46117, 46120, 36392,
+ 27978, 46861, 36391, 36861, 36862, 46862, 28527, 48680, 27976,
+ 38064, 49646, 29648, 38707, 38708, 30900, 54097, 54098, 55086,
+ 55087, 40795, 57186, 44189, 26541, 44315, 44665, 44668, 35573,
+ 44666, 44667, 27210, 45510, 45512, 45508, 45509, 45511, 46863,
+ 46123, 46063, 47739, 29074, 55837, 42505, 44190, 35460, 44445,
+ 26636, 44444, 44669, 26737, 44670, 45014, 35749, 35750, 27212,
+ 45515, 36020, 45514, 36019, 45513, 45518, 45516, 36393, 46125,
+ 46124, 36394, 46864, 28528, 48682, 47740, 46126, 38065, 29649,
+ 49648, 49647, 39397, 39398, 39399, 40111, 55088, 32378, 55838,
+ 57187, 59010, 59348, 35461, 44446, 35575, 44672, 45517, 36021,
+ 46127, 57188, 58139, 44237, 35401, 35402, 44316, 44447, 26637,
+ 26638, 44450, 44449, 35463, 35462, 44451, 44674, 35576, 44675,
+ 44452, 44676, 35751, 45015, 45018, 45019, 45017, 45016, 46128,
+ 46129, 27984, 27982, 27983, 48685, 48684, 48686, 48688, 39400,
+ 53047, 55089, 56509, 57709, 59011, 59139, 44317, 44454, 44453,
+ 44455, 26739, 35578, 35577, 44677, 26936, 26935, 45023, 45022,
+ 45024, 45021, 45025, 45020, 45027, 27215, 27214, 36024, 45520,
+ 46131, 27536, 36395, 46130, 46133, 46807, 46132, 46866, 46865,
+ 46134, 46867, 47742, 47743, 47744, 37442, 48689, 38710, 49649,
+ 53048, 59262, 35373, 26542, 44238, 26639, 45029, 44457, 44456,
+ 26741, 45522, 36025, 45521, 27216, 46135, 45523, 47745, 36396,
+ 38066, 48690, 38711, 55839, 35374, 35403, 44458, 44320, 44318,
+ 44321, 35404, 26640, 35464, 44459, 44460, 35468, 35469, 35466,
+ 35467, 44679, 35579, 44678, 35580, 44617, 45032, 45031, 45034,
+ 45033, 35752, 26939, 45030, 36026, 27217, 45533, 45528, 45531,
+ 45532, 45527, 45525, 45529, 45530, 27218, 45526, 46142, 46143,
+ 27538, 36397, 27539, 46138, 46136, 46139, 46141, 46140, 46137,
+ 36398, 46875, 46870, 27988, 46874, 46871, 46872, 36863, 46873,
+ 27987, 28531, 47749, 47747, 28532, 47748, 47746, 47750, 47751,
+ 38067, 38068, 48695, 48694, 48691, 48692, 29076, 29650, 49651,
+ 49654, 49650, 49655, 38712, 49653, 49656, 49658, 49657, 49652,
+ 53050, 30275, 39401, 53051, 53049, 53431, 40112, 54100, 54099,
+ 55504, 57252, 57710, 43479, 58797, 59426, 59520, 35357, 44207,
+ 44208, 44240, 44323, 44322, 26643, 44464, 44462, 26642, 44463,
+ 44681, 35559, 45037, 45036, 45038, 45039, 45534, 45535, 27219,
+ 46145, 46144, 46194, 46073, 37393, 47753, 47755, 48381, 47754,
+ 38070, 48696, 38069, 49659, 50183, 53052, 40113, 57037, 44243,
+ 35375, 44241, 35377, 44245, 44242, 44326, 26579, 35405, 44327,
+ 35406, 44324, 44325, 44466, 26644, 44465, 35471, 44467, 35470,
+ 44468, 44685, 44683, 35581, 26743, 45042, 45040, 45043, 45041,
+ 45540, 45537, 45539, 45538, 45536, 45859, 36023, 46150, 36399,
+ 46151, 46148, 46146, 46149, 46788, 46881, 46883, 36865, 36866,
+ 46880, 46878, 46886, 46879, 36400, 46877, 46884, 46885, 46809,
+ 46882, 28533, 37394, 47758, 47756, 47757, 29080, 29079, 48698,
+ 48699, 48697, 29078, 47759, 48750, 48700, 50008, 49661, 49660,
+ 38713, 48970, 39404, 39405, 39403, 54102, 22114, 40151, 54101,
+ 55092, 55091, 31944, 56511, 56510, 33010, 58140, 43309, 58798,
+ 58799, 35378, 44247, 26546, 26545, 44246, 35408, 44330, 44329,
+ 44335, 44331, 44334, 44328, 44307, 44333, 35476, 44474, 35474,
+ 44475, 26646, 35475, 26649, 44473, 26648, 26647, 35473, 44469,
+ 44471, 35472, 44470, 44472, 26749, 44696, 44687, 44694, 44693,
+ 35585, 26753, 26756, 35590, 35583, 44689, 26750, 26745, 26751,
+ 35587, 44690, 35588, 26748, 35584, 44688, 35591, 44692, 44691,
+ 44697, 44686, 35582, 35586, 35589, 26943, 26945, 45047, 35763,
+ 35755, 26942, 45045, 35764, 35756, 35758, 26948, 35767, 45044,
+ 35769, 36040, 45052, 35759, 35762, 35761, 35768, 35760, 35765,
+ 45054, 35766, 35757, 45046, 35754, 45049, 45048, 45051, 36401,
+ 36039, 36051, 36046, 36029, 36050, 45547, 45541, 36032, 27224,
+ 27223, 36048, 36038, 36044, 36043, 36047, 36041, 36042, 36030,
+ 36034, 36045, 26949, 45552, 45553, 36052, 45542, 36027, 45550,
+ 45549, 36049, 45543, 45551, 45545, 36033, 36035, 36036, 36037,
+ 27226, 45548, 45546, 27221, 36028, 36031, 45544, 46162, 27545,
+ 27552, 27553, 27548, 46155, 36423, 36410, 36408, 36421, 36406,
+ 36415, 36431, 36418, 27551, 36422, 36429, 36427, 27543, 46156,
+ 46157, 36426, 27544, 36409, 46160, 46161, 36432, 46159, 36428,
+ 36433, 36416, 36434, 36413, 36430, 46497, 46154, 36411, 36414,
+ 36417, 46158, 36425, 36420, 36402, 36403, 36404, 36419, 36424,
+ 36407, 36405, 36435, 36885, 27990, 46898, 46895, 28005, 46890,
+ 28002, 36896, 36888, 36891, 27995, 28006, 36883, 46897, 36869,
+ 36889, 36884, 36893, 36867, 36892, 36881, 36874, 46892, 46896,
+ 46904, 46901, 46905, 36873, 36875, 46887, 36871, 46893, 46902,
+ 36870, 46894, 36872, 46888, 36880, 36887, 46906, 36897, 46891,
+ 36879, 36868, 36886, 36877, 36882, 36876, 36895, 46900, 19521,
+ 36898, 36894, 46899, 46889, 36878, 36890, 28534, 28546, 47769,
+ 37415, 47774, 47781, 37404, 47772, 37409, 28535, 37419, 37396,
+ 37398, 28539, 37405, 28536, 37420, 37411, 28547, 28540, 37414,
+ 37418, 28551, 37427, 28542, 37423, 37425, 47765, 47779, 38071,
+ 47762, 47766, 47775, 37413, 47771, 47782, 47777, 28549, 37417,
+ 37400, 37401, 37402, 37408, 37416, 37412, 47778, 37422, 37426,
+ 47780, 37424, 37421, 37410, 47773, 48716, 38072, 29086, 38076,
+ 29091, 37399, 48724, 29085, 29081, 49665, 38082, 48710, 48712,
+ 38079, 38093, 48717, 48707, 38083, 38073, 38090, 38100, 48722,
+ 48714, 38089, 38092, 29090, 38095, 29082, 38088, 38081, 29092,
+ 38084, 29094, 38086, 38087, 48718, 48723, 48701, 48721, 48720,
+ 38096, 48715, 38077, 38085, 38080, 48703, 48727, 48705, 48702,
+ 48704, 38099, 48708, 48706, 48711, 48719, 48725, 38097, 38091,
+ 38074, 38078, 38075, 49669, 49663, 49674, 29654, 49678, 49668,
+ 49680, 49679, 29655, 49675, 38716, 38720, 38718, 38725, 49666,
+ 49670, 29653, 29661, 38724, 29657, 38719, 49664, 38714, 38715,
+ 38722, 49681, 49662, 49672, 49673, 38721, 49676, 49671, 38717,
+ 38723, 49677, 38728, 49667, 39406, 38726, 53064, 39412, 53068,
+ 53065, 39410, 53071, 53057, 39417, 39423, 39414, 53062, 39415,
+ 53070, 53063, 39407, 53058, 39416, 53069, 53072, 39418, 30282,
+ 53074, 39411, 53055, 39409, 40802, 53073, 30278, 53067, 38730,
+ 53066, 53056, 53054, 53081, 53075, 53077, 39419, 53080, 54114,
+ 39408, 30285, 39424, 39421, 53078, 53496, 53076, 53060, 53059,
+ 39413, 39420, 54123, 30909, 40127, 54109, 40125, 54121, 30913,
+ 40117, 40131, 54113, 30903, 30914, 30901, 40124, 30911, 40122,
+ 40115, 54124, 54108, 54117, 40121, 54112, 40119, 40114, 40128,
+ 40123, 40126, 54106, 40118, 40116, 54120, 54105, 54104, 30904,
+ 30915, 40130, 54119, 54111, 54110, 54115, 54122, 40120, 40129,
+ 31485, 40801, 40796, 55096, 55093, 55103, 55104, 40798, 40806,
+ 31476, 31481, 40803, 31482, 55094, 40804, 31484, 55100, 55098,
+ 55097, 40799, 31480, 55101, 55108, 55107, 55099, 55105, 55102,
+ 55095, 40805, 40797, 31949, 55844, 55850, 31948, 41389, 55846,
+ 31946, 31951, 41397, 31952, 41979, 41388, 41395, 41394, 31953,
+ 55845, 31950, 31954, 31947, 55849, 41392, 55842, 55848, 55843,
+ 55841, 55847, 41393, 55840, 41390, 56513, 32381, 40800, 56520,
+ 56518, 56516, 41981, 41982, 32383, 41978, 56521, 56519, 56512,
+ 56514, 56517, 32382, 41983, 56515, 56665, 56522, 42383, 42384,
+ 42378, 42380, 42379, 57190, 57192, 57194, 57191, 57189, 57193,
+ 57195, 42381, 57712, 42756, 42754, 33014, 42753, 57711, 42752,
+ 57715, 42755, 57714, 33012, 42751, 57713, 58148, 58149, 43070,
+ 58144, 58145, 58146, 58143, 58141, 58142, 33249, 58147, 58508,
+ 58509, 58507, 58506, 43480, 43481, 33533, 58800, 58802, 58801,
+ 58803, 43310, 43618, 33634, 59012, 59143, 59142, 59145, 59141,
+ 59144, 44248, 44249, 26585, 44479, 44477, 35478, 44478, 44476,
+ 35477, 44701, 45555, 45055, 44705, 44703, 44704, 44706, 44709,
+ 44707, 44698, 44702, 44699, 44700, 44708, 35772, 45060, 45057,
+ 45058, 45059, 45327, 45056, 35771, 36053, 36055, 45559, 45558,
+ 36054, 45554, 45557, 45556, 36437, 46166, 46163, 46165, 36436,
+ 46164, 36438, 36901, 46910, 36902, 46909, 46908, 46907, 36899,
+ 46911, 37430, 47783, 47784, 37428, 36900, 47785, 37429, 38101,
+ 48728, 38102, 48730, 48731, 38103, 48729, 49683, 49687, 38731,
+ 49684, 49689, 49685, 49686, 53084, 53085, 53083, 30916, 55111,
+ 55109, 55110, 32384, 57196, 57717, 57716, 26547, 35379, 44337,
+ 44338, 44482, 44481, 44723, 26759, 44719, 44715, 44711, 44722,
+ 44710, 44718, 44720, 44713, 44716, 44721, 44717, 44714, 44712,
+ 35593, 35592, 35594, 35595, 35596, 26957, 45072, 45064, 45069,
+ 45063, 26954, 45067, 26959, 45065, 35773, 45074, 44682, 45066,
+ 26958, 45073, 45068, 45070, 45071, 45062, 45061, 35774, 36060,
+ 45561, 36056, 45563, 45560, 36057, 27228, 45570, 45562, 45569,
+ 45571, 45982, 45566, 45567, 45565, 36062, 36059, 36063, 36061,
+ 36058, 36439, 27559, 46173, 27557, 27561, 46171, 46181, 46175,
+ 46182, 46183, 46170, 46167, 46179, 46168, 46185, 46169, 46184,
+ 46176, 46177, 46178, 36441, 46180, 46172, 36440, 36443, 28010,
+ 46912, 28009, 36908, 46925, 46918, 36906, 46915, 36442, 46924,
+ 46921, 36905, 28013, 28014, 46919, 46920, 36907, 46922, 46926,
+ 28011, 46913, 46914, 36903, 36904, 20068, 48737, 28563, 47790,
+ 28555, 47788, 28561, 28557, 47794, 47799, 28566, 47787, 47789,
+ 47796, 37431, 46923, 47798, 29103, 37436, 28564, 48580, 37435,
+ 47800, 47793, 47792, 28565, 47795, 37434, 37437, 47791, 37432,
+ 37433, 37438, 38107, 48745, 48734, 48744, 38114, 29097, 49697,
+ 48741, 38113, 48740, 38105, 38112, 38104, 48743, 48739, 38110,
+ 38111, 29098, 38108, 48732, 48735, 48742, 48736, 48738, 38115,
+ 38109, 38106, 38736, 38735, 38734, 49691, 29669, 49699, 49701,
+ 49696, 38737, 49695, 38733, 49702, 49692, 49706, 49698, 49682,
+ 29667, 49700, 49693, 38732, 38738, 53097, 30287, 30288, 53094,
+ 30289, 39428, 39429, 53090, 53103, 30290, 53102, 53099, 39430,
+ 39432, 53086, 53100, 53091, 53092, 53093, 39466, 53098, 53096,
+ 53088, 39431, 39427, 39425, 53087, 39426, 54128, 54130, 54125,
+ 30918, 30921, 30920, 54126, 54129, 40133, 54131, 40134, 40132,
+ 54880, 54132, 54127, 30917, 55118, 31488, 55112, 40809, 55114,
+ 55119, 55117, 55120, 40807, 54133, 55817, 55115, 55116, 31489,
+ 40810, 55855, 41398, 55113, 41400, 55854, 55852, 55853, 40811,
+ 41399, 41401, 56527, 56524, 41984, 56532, 56526, 56528, 56531,
+ 56896, 56525, 55856, 32730, 57197, 42386, 57723, 33015, 57719,
+ 57718, 57722, 57720, 42759, 57721, 42757, 42758, 58150, 43071,
+ 58152, 43072, 58510, 58151, 58804, 43482, 43866, 59465, 59535,
+ 59548, 44339, 45572, 44724, 45075, 36445, 46187, 45573, 46186,
+ 36444, 46927, 47801, 48748, 48747, 49705, 50567, 49703, 49704,
+ 53105, 53104, 54134, 55857, 56242, 55858, 56533, 56534, 56708,
+ 58153, 35358, 44340, 44484, 44483, 44725, 46188, 46928, 46929,
+ 48749, 44486, 44485, 35599, 35598, 26962, 45076, 36909, 46930,
+ 46933, 36446, 46932, 46931, 38116, 48751, 49707, 49708, 39433,
+ 54135, 54136, 55121, 56535, 55861, 55859, 55860, 56536, 57198,
+ 44341, 44342, 44487, 44727, 44726, 45077, 36064, 36449, 27562,
+ 36448, 46191, 46190, 46192, 36450, 28015, 36912, 46934, 36910,
+ 36911, 36913, 47803, 37441, 37445, 37443, 37444, 38117, 48752,
+ 38119, 38118, 48754, 29674, 49710, 49711, 49709, 38739, 38741,
+ 53106, 39434, 55862, 40812, 40813, 56537, 44250, 44251, 44343,
+ 35429, 44489, 26653, 44492, 44493, 44491, 44490, 26762, 26763,
+ 26765, 44729, 44728, 26969, 35777, 26967, 45078, 45079, 27232,
+ 45085, 45081, 45082, 45083, 45084, 45086, 26972, 45080, 44956,
+ 27233, 27231, 36066, 36067, 36065, 36453, 46193, 46196, 36451,
+ 36454, 46195, 27564, 36452, 36915, 27563, 46938, 46941, 19551,
+ 46935, 46940, 46937, 46942, 46936, 28018, 36914, 29107, 47807,
+ 47810, 47812, 47809, 47804, 47811, 37446, 47808, 28571, 28569,
+ 37447, 47806, 48755, 48756, 29106, 38120, 38121, 38122, 49713,
+ 29676, 38742, 29675, 49712, 38743, 30291, 53111, 53107, 53110,
+ 54141, 53109, 39436, 53108, 29677, 39435, 54142, 40135, 54137,
+ 54138, 31490, 54139, 55123, 55122, 40814, 31503, 31956, 42387,
+ 57724, 43311, 58805, 35409, 44494, 26657, 44495, 26656, 35480,
+ 44496, 35479, 44733, 26767, 26770, 44731, 44732, 44734, 44730,
+ 35601, 35602, 35600, 26975, 45090, 45089, 35783, 26973, 35781,
+ 26976, 35778, 35779, 26977, 45088, 45087, 35785, 35782, 35786,
+ 35784, 27237, 36069, 45581, 45583, 45584, 27234, 27240, 36071,
+ 27235, 36068, 45575, 45586, 45579, 36076, 45589, 45578, 45582,
+ 27241, 45580, 45585, 45574, 45588, 36074, 27239, 36075, 36072,
+ 45576, 45587, 36070, 36073, 45577, 19132, 36457, 46200, 36459,
+ 36462, 36456, 46206, 36455, 46207, 46201, 46202, 46205, 46199,
+ 36458, 46204, 46203, 36464, 36461, 36460, 36463, 36465, 46949,
+ 46955, 46943, 46944, 36921, 46945, 46946, 46952, 36920, 36924,
+ 46950, 28022, 46951, 36922, 46956, 46954, 28021, 46948, 46947,
+ 36917, 36918, 36919, 36916, 28572, 47817, 28573, 37469, 47814,
+ 28576, 37451, 37468, 47819, 47821, 37458, 47820, 47815, 37459,
+ 37452, 37466, 37463, 37450, 37454, 37465, 47818, 37467, 47813,
+ 37448, 38123, 37462, 37455, 37461, 37460, 37453, 37456, 37464,
+ 47822, 38132, 38127, 38130, 38124, 29114, 38126, 48758, 29111,
+ 29109, 48762, 48760, 49723, 38129, 38128, 48761, 48757, 48759,
+ 48763, 38125, 38131, 38133, 48765, 29689, 38745, 29683, 49722,
+ 29690, 49714, 38747, 53118, 29692, 49716, 29688, 38750, 29687,
+ 49715, 49719, 29691, 29678, 49717, 38746, 38749, 38748, 53115,
+ 38744, 49718, 39444, 39442, 30292, 39439, 53124, 39440, 30298,
+ 30294, 53121, 30297, 53114, 49720, 53113, 55132, 39437, 39445,
+ 49721, 53116, 53123, 53122, 53117, 53112, 39443, 39438, 30296,
+ 53119, 39441, 53120, 40145, 40140, 54148, 54143, 40146, 40143,
+ 54144, 30925, 54151, 40139, 54154, 40136, 54153, 54155, 40137,
+ 54149, 54150, 54146, 54145, 54147, 40144, 40138, 40142, 54152,
+ 55126, 55135, 55130, 30924, 55128, 31492, 55134, 55125, 40817,
+ 40815, 55127, 55129, 55131, 40816, 31494, 55133, 55136, 55124,
+ 41402, 31957, 55866, 41403, 41404, 55865, 55867, 55864, 55868,
+ 55863, 41986, 32386, 56538, 56543, 56541, 56539, 41988, 41987,
+ 57200, 42388, 42389, 42390, 57725, 42761, 57726, 42760, 58157,
+ 43073, 58156, 58158, 58154, 58155, 58159, 43312, 58511, 58807,
+ 58808, 58806, 58809, 43619, 59264, 43778, 26526, 44345, 35410,
+ 44346, 44498, 44497, 44735, 44736, 35605, 26771, 35604, 27244,
+ 45593, 45092, 45091, 45093, 45592, 45590, 45595, 45594, 45591,
+ 46210, 36466, 46209, 36467, 37471, 47824, 37470, 47825, 47823,
+ 29115, 29117, 48768, 38135, 48766, 48767, 38134, 29118, 49724,
+ 38751, 30300, 30301, 39446, 54158, 54157, 54160, 54161, 40147,
+ 54159, 55137, 57201, 42391, 44252, 35411, 44499, 44502, 44503,
+ 26659, 44500, 44743, 44742, 26773, 44740, 44741, 35788, 35787,
+ 45095, 35789, 45096, 45097, 45094, 36077, 45597, 45599, 36078,
+ 27246, 27247, 27248, 45600, 45596, 45598, 45601, 45602, 27583,
+ 46218, 27578, 27577, 27576, 27580, 46221, 46222, 46216, 46215,
+ 36470, 36473, 46212, 46219, 46217, 46220, 46211, 46213, 36472,
+ 36471, 28024, 36926, 46960, 46962, 46961, 46959, 46964, 36927,
+ 28026, 46965, 36925, 46958, 37473, 28581, 37476, 47831, 47826,
+ 28578, 37472, 37475, 47829, 28580, 37474, 47830, 47827, 47828,
+ 37477, 48775, 48771, 29120, 29125, 38136, 48778, 38137, 48773,
+ 48772, 48777, 29122, 48774, 48770, 48776, 48769, 49725, 49732,
+ 38755, 38753, 49729, 49737, 29695, 49739, 49736, 49731, 38752,
+ 53128, 49733, 49730, 49734, 49738, 49726, 49728, 38754, 49735,
+ 50360, 53125, 39447, 30306, 53132, 30307, 53130, 53127, 53133,
+ 53131, 39450, 39448, 53126, 39449, 54164, 54166, 40149, 30927,
+ 40150, 40148, 54165, 54162, 54163, 55140, 55138, 40819, 55139,
+ 55141, 53129, 40818, 56549, 41405, 55869, 32390, 56544, 56546,
+ 32389, 56548, 56547, 56545, 32733, 57202, 57727, 33017, 57728,
+ 57729, 43075, 33251, 58160, 43074, 58161, 33406, 33534, 59013,
+ 59350, 43620, 33703, 43716, 33732, 59265, 59427, 44253, 45099,
+ 45098, 36080, 45603, 45606, 45604, 28028, 47446, 46967, 46966,
+ 28582, 46968, 48781, 48779, 48780, 49741, 29803, 49742, 38756,
+ 53135, 53134, 54168, 40093, 54167, 55142, 55143, 41406, 56550,
+ 57203, 57730, 44254, 44505, 35481, 44747, 26777, 44746, 44745,
+ 35790, 45100, 45607, 45605, 45608, 36081, 27584, 46226, 46970,
+ 36928, 37478, 46972, 46969, 46971, 47832, 47834, 47833, 38138,
+ 38757, 49744, 49743, 39451, 53136, 40152, 54169, 41407, 42762,
+ 26549, 35412, 44348, 44347, 35482, 35607, 26778, 35791, 44748,
+ 35606, 35609, 35608, 45609, 35792, 45101, 35794, 45610, 35793,
+ 36082, 45612, 45613, 36083, 45614, 36474, 46229, 46227, 36475,
+ 46228, 46230, 46975, 36929, 28031, 36931, 47837, 47835, 47836,
+ 28585, 47838, 48782, 48784, 48783, 39015, 29699, 49745, 38759,
+ 38758, 49746, 38760, 54172, 53139, 53138, 53137, 54170, 40153,
+ 54171, 54173, 55144, 33018, 33252, 43621, 44209, 26592, 26591,
+ 44349, 44506, 26663, 35483, 44507, 44509, 44510, 44508, 44752,
+ 44750, 44749, 44751, 35610, 26989, 26988, 45102, 45103, 35795,
+ 45104, 35796, 27252, 45615, 45620, 27255, 27251, 36086, 45619,
+ 45618, 45617, 45616, 45621, 36085, 46235, 27589, 46232, 27588,
+ 46976, 46233, 46231, 36477, 36478, 46234, 46236, 36476, 46237,
+ 46982, 46978, 36935, 36937, 36934, 36936, 36933, 36938, 46985,
+ 46979, 46977, 46981, 46984, 46983, 47848, 47849, 47847, 28587,
+ 47845, 47841, 37479, 28588, 37480, 47840, 47839, 47850, 47846,
+ 47851, 47843, 47844, 28589, 48788, 38142, 38140, 48791, 38141,
+ 48790, 48794, 48786, 48785, 48792, 48789, 48787, 48793, 38139,
+ 29701, 29703, 29700, 49749, 49747, 49748, 49750, 38761, 53141,
+ 39455, 39454, 39453, 54175, 54174, 53140, 54438, 55145, 55870,
+ 32391, 41989, 42392, 43077, 35359, 44255, 44350, 44513, 44512,
+ 44511, 35484, 26780, 44753, 26990, 45106, 45105, 36088, 45623,
+ 45624, 36087, 45625, 46240, 46241, 46239, 46067, 46238, 46986,
+ 46987, 47853, 37482, 47854, 47852, 48795, 49751, 53142, 54176,
+ 53143, 53144, 57731, 58810, 35380, 35381, 44353, 44351, 44355,
+ 44354, 44356, 35413, 44352, 44516, 44514, 44518, 17916, 44515,
+ 35488, 44519, 44517, 35487, 44757, 35612, 35619, 35620, 44759,
+ 35617, 35616, 35618, 35613, 35614, 44760, 44755, 44761, 44756,
+ 44758, 26788, 44763, 44762, 26787, 44754, 35621, 26993, 35804,
+ 45110, 26996, 45107, 35802, 35803, 45115, 35800, 45112, 45117,
+ 35798, 45114, 35801, 35799, 45109, 44764, 45113, 45318, 45108,
+ 35805, 45637, 45631, 36089, 45632, 36090, 27259, 36091, 45627,
+ 45630, 45639, 45634, 45626, 45628, 45638, 45636, 45633, 45629,
+ 36092, 27257, 36483, 36480, 27591, 27598, 36481, 46248, 27597,
+ 36491, 36487, 36482, 46246, 36488, 36484, 36486, 46251, 46247,
+ 27607, 46242, 27608, 27595, 46252, 46249, 46250, 46244, 36479,
+ 36490, 27602, 36492, 36493, 36489, 46669, 28037, 47010, 47003,
+ 47005, 28039, 28041, 36941, 46994, 47001, 46996, 36949, 28035,
+ 47006, 47011, 47008, 46989, 47009, 28043, 28038, 36939, 36947,
+ 46988, 28033, 36940, 36945, 47007, 47002, 46992, 45787, 46998,
+ 46997, 46999, 47000, 47004, 28042, 36950, 36942, 36948, 36944,
+ 36943, 36946, 36951, 37484, 47864, 37489, 47855, 47865, 37490,
+ 37487, 37486, 28591, 37491, 37485, 37492, 37493, 37495, 47859,
+ 46995, 28592, 47860, 37488, 28594, 37483, 37494, 47858, 37496,
+ 47863, 47857, 47862, 47861, 38149, 48798, 38145, 29135, 38150,
+ 48799, 49752, 29138, 48806, 38143, 38152, 48796, 38148, 48797,
+ 48810, 48801, 48809, 38147, 48807, 49757, 38151, 48811, 48803,
+ 48808, 38144, 48800, 38762, 38770, 38768, 49758, 49753, 29714,
+ 29709, 29708, 38763, 38767, 38766, 38769, 38773, 49755, 49764,
+ 38772, 38764, 38765, 49759, 29712, 49763, 29710, 29706, 38771,
+ 49762, 49760, 49756, 29711, 48802, 30313, 53150, 30317, 53146,
+ 39458, 53157, 53151, 39463, 39456, 53148, 53158, 39464, 53156,
+ 53153, 53154, 39465, 39459, 39462, 54179, 53147, 53145, 53152,
+ 53155, 39460, 53149, 30316, 40156, 30928, 54185, 30929, 40158,
+ 54177, 40161, 40157, 40154, 54182, 54178, 40820, 40155, 54180,
+ 54184, 54183, 54186, 54181, 54188, 40160, 31498, 40822, 41412,
+ 55147, 40826, 55153, 40821, 55149, 55151, 55148, 40824, 55146,
+ 55152, 31499, 55150, 55154, 55278, 40827, 56551, 41411, 55874,
+ 31959, 41408, 41409, 55876, 41410, 55873, 55872, 55875, 41413,
+ 41414, 56553, 32394, 56555, 41992, 32392, 56554, 56556, 56557,
+ 56558, 56559, 56552, 32735, 57204, 32734, 42393, 57206, 57205,
+ 40825, 42763, 42765, 42764, 57733, 57732, 43078, 33254, 33255,
+ 58162, 58164, 58163, 58165, 43079, 58811, 33537, 33536, 58813,
+ 43483, 58812, 43622, 43717, 43779, 43831, 59266, 43917, 44256,
+ 26512, 26667, 35489, 44520, 44521, 35490, 44461, 26789, 35622,
+ 45118, 45642, 45641, 45643, 45640, 46253, 36952, 28044, 47012,
+ 37497, 49765, 53159, 40162, 55155, 55877, 56560, 41993, 58814,
+ 59428, 44258, 44260, 44259, 35415, 35414, 35623, 44766, 45644,
+ 46255, 47013, 53160, 56561, 44357, 35491, 45119, 45646, 45645,
+ 27610, 47014, 37286, 36954, 47015, 36953, 47867, 53161, 55878,
+ 26594, 44358, 44359, 35494, 35493, 26669, 35496, 44526, 44525,
+ 44523, 35492, 44524, 35495, 44776, 44770, 35627, 44767, 35625,
+ 35624, 35628, 44775, 35629, 44771, 44774, 35626, 44768, 44769,
+ 44772, 35630, 44773, 35810, 26998, 35808, 35812, 35809, 35811,
+ 35814, 45122, 35813, 35815, 45121, 35816, 45120, 35806, 35807,
+ 36095, 45655, 36094, 36097, 36093, 36098, 45652, 36100, 36099,
+ 45648, 36096, 45647, 45658, 45660, 27265, 45654, 45653, 45649,
+ 45650, 45659, 45657, 45651, 36495, 46265, 36494, 46261, 36496,
+ 36955, 46257, 27614, 27615, 46262, 36497, 46260, 46264, 46263,
+ 27612, 46266, 46267, 46256, 46258, 47020, 36962, 28049, 28046,
+ 28047, 36960, 36956, 47025, 36957, 36961, 47027, 36958, 36963,
+ 47021, 47026, 47017, 36959, 47019, 47024, 47016, 47028, 47022,
+ 47018, 47870, 28605, 47875, 37500, 37501, 28599, 37499, 47871,
+ 28598, 37506, 37507, 47023, 47877, 47874, 47872, 37504, 47869,
+ 47876, 37502, 37498, 47878, 37505, 38157, 29141, 38777, 29144,
+ 38154, 38153, 29143, 38156, 38159, 48815, 48812, 48814, 49768,
+ 38160, 48813, 38155, 38158, 49769, 49770, 38783, 29723, 38774,
+ 38780, 49767, 38779, 38782, 38784, 38775, 38781, 38776, 53164,
+ 53166, 39469, 39468, 39470, 30322, 39471, 39473, 30321, 53163,
+ 53162, 53165, 39472, 39474, 39467, 54191, 40167, 54193, 54199,
+ 40166, 30933, 54198, 54197, 40164, 54192, 40165, 54195, 40168,
+ 54190, 30935, 40828, 40829, 31501, 55158, 55156, 55157, 41417,
+ 41416, 41415, 56563, 32396, 41994, 32395, 56562, 56564, 41995,
+ 57207, 42394, 57734, 58167, 42766, 43080, 58166, 58815, 58816,
+ 43484, 59267, 59304, 26595, 44777, 35631, 26795, 45123, 45662,
+ 45661, 46268, 36964, 47879, 37508, 48816, 38785, 57208, 44261,
+ 44262, 44361, 35416, 44360, 26672, 26796, 35632, 44993, 45124,
+ 35817, 35818, 45663, 45622, 27830, 46269, 28053, 47880, 38161,
+ 38786, 53168, 49771, 53169, 53170, 31495, 58168, 26673, 35499,
+ 44529, 35498, 44528, 44527, 44531, 26674, 44530, 44780, 35635,
+ 35637, 35636, 35633, 35634, 44779, 44783, 45127, 44778, 44781,
+ 35638, 35825, 35821, 35820, 35824, 35823, 27002, 45125, 45128,
+ 45126, 27007, 45129, 35822, 35826, 45130, 36103, 36105, 27266,
+ 45665, 36104, 45666, 45664, 36500, 36503, 36501, 36504, 36498,
+ 46273, 46274, 27619, 36505, 36502, 46275, 36499, 46272, 46270,
+ 46271, 36468, 36977, 36968, 36966, 28056, 47034, 36975, 47039,
+ 47029, 36970, 36969, 36972, 36971, 47030, 47031, 36974, 36965,
+ 28059, 47035, 36976, 37513, 47032, 47038, 47686, 36967, 47033,
+ 36973, 47887, 28054, 37516, 37517, 37518, 47888, 47891, 37512,
+ 47890, 28609, 37515, 37511, 47886, 28610, 37510, 48821, 47883,
+ 47884, 37509, 47885, 47889, 29150, 38168, 29151, 48818, 48819,
+ 38165, 38166, 48824, 38162, 48822, 48820, 48825, 38167, 38163,
+ 48823, 29727, 38787, 29726, 38789, 49773, 38791, 38790, 49772,
+ 49774, 50118, 53171, 30325, 28606, 30323, 39475, 30324, 54200,
+ 53175, 39477, 39479, 53172, 53174, 53176, 53173, 39476, 40170,
+ 39478, 40172, 40169, 30938, 40173, 55161, 40831, 55159, 55160,
+ 40830, 55162, 40832, 55884, 55881, 41418, 55880, 55882, 55879,
+ 55883, 56565, 56566, 41419, 41996, 41997, 42397, 42396, 57212,
+ 57210, 42395, 57209, 57211, 57213, 33021, 57735, 57780, 43081,
+ 58169, 58170, 43313, 58512, 58817, 59147, 43781, 43780, 45131,
+ 45132, 45133, 36978, 47892, 38169, 44210, 44264, 44362, 44784,
+ 26799, 45669, 44788, 44786, 44789, 27008, 45135, 35827, 45136,
+ 18542, 27104, 46062, 45671, 45672, 45670, 45668, 45667, 46278,
+ 46277, 27620, 46276, 46279, 47040, 47041, 47042, 47043, 47044,
+ 47045, 28611, 47893, 47897, 47896, 47894, 47895, 48826, 38170,
+ 49776, 49777, 49775, 38792, 53177, 54201, 54203, 30940, 40174,
+ 55164, 55163, 58171, 59268, 59269, 59429, 44211, 44265, 26800,
+ 44791, 44790, 35639, 45137, 45675, 45674, 45676, 36637, 47046,
+ 37519, 48827, 49778, 53178, 54204, 35353, 35382, 44267, 44271,
+ 44266, 44269, 44270, 44368, 44369, 44365, 44363, 44370, 44364,
+ 44366, 44367, 35417, 35501, 35500, 44533, 44534, 44535, 44536,
+ 35640, 44792, 35642, 44794, 35641, 44793, 35643, 35828, 45141,
+ 45138, 45139, 45142, 45140, 45683, 36107, 45682, 27275, 45678,
+ 36106, 45677, 36507, 36506, 36508, 46282, 46280, 36509, 46281,
+ 36983, 36981, 36982, 47053, 47047, 27274, 47898, 47049, 47050,
+ 36980, 47048, 47051, 47054, 47052, 47899, 47902, 37520, 37523,
+ 37522, 47903, 37521, 47901, 47900, 38171, 29156, 48828, 48829,
+ 38793, 49779, 38794, 49780, 49782, 49783, 49781, 39480, 39481,
+ 30331, 53179, 53180, 54206, 40175, 30941, 54207, 54205, 55166,
+ 55165, 55167, 31961, 41421, 55885, 41420, 56570, 56568, 56572,
+ 56567, 56569, 41998, 42398, 57214, 32398, 57216, 57215, 42399,
+ 42767, 42768, 33022, 57736, 43082, 58965, 59016, 59351, 44539,
+ 44537, 44538, 35644, 45684, 45143, 45325, 45687, 46283, 45685,
+ 45686, 46285, 46284, 47055, 48504, 37524, 47905, 47904, 38173,
+ 49785, 49788, 49786, 49784, 49787, 54208, 54189, 30943, 55168,
+ 55888, 55887, 55886, 56575, 56573, 56574, 58172, 58513, 59148,
+ 44372, 44371, 44542, 44540, 44795, 35829, 45146, 45145, 46286,
+ 27625, 27624, 37287, 47060, 47056, 47057, 47059, 47058, 36984,
+ 47906, 47909, 47907, 47908, 48834, 48831, 48833, 48832, 29731,
+ 49789, 53184, 53185, 53182, 53183, 39482, 30944, 40176, 54211,
+ 55169, 55889, 57217, 57737, 43084, 44272, 35418, 26596, 35502,
+ 26679, 35503, 35645, 44799, 35646, 44798, 44800, 44802, 44797,
+ 35647, 44796, 44801, 35832, 45148, 35830, 45147, 35831, 36108,
+ 45150, 27278, 45689, 36111, 36109, 45691, 36113, 36112, 45690,
+ 46292, 27630, 27628, 27633, 27626, 36514, 36512, 27629, 27631,
+ 27627, 27632, 36513, 46288, 46294, 46291, 46290, 46295, 46293,
+ 46289, 28065, 36988, 47071, 47064, 36985, 36990, 36987, 47063,
+ 36989, 28067, 47070, 47068, 47065, 28068, 47069, 36986, 47067,
+ 47062, 47066, 47913, 28613, 37527, 37526, 37532, 37531, 37528,
+ 28614, 47910, 37525, 47912, 37529, 28064, 47911, 37530, 38175,
+ 38174, 48835, 48837, 48840, 48836, 48838, 48839, 49237, 38176,
+ 29157, 49795, 49792, 38797, 49791, 29733, 38796, 29736, 29735,
+ 49790, 38799, 38801, 38795, 49797, 49798, 49799, 38798, 49793,
+ 49794, 30335, 39483, 40835, 30334, 30333, 39484, 53186, 53188,
+ 53187, 53189, 54212, 40177, 40179, 54214, 54213, 54215, 40178,
+ 40834, 55170, 31505, 40833, 41423, 55890, 41422, 55891, 41424,
+ 56576, 56578, 56579, 57153, 56577, 42400, 32741, 32740, 57218,
+ 57738, 42769, 58173, 33408, 43623, 35360, 44274, 26680, 35419,
+ 44373, 44546, 35504, 44807, 35510, 44804, 35505, 44544, 44545,
+ 35506, 44803, 44805, 44808, 44543, 35509, 35648, 35650, 27014,
+ 44813, 44811, 45157, 44814, 45151, 44809, 44810, 45155, 44812,
+ 44815, 18141, 44816, 35651, 45156, 45152, 45153, 26802, 27013,
+ 35833, 45154, 27016, 45163, 27298, 45698, 27020, 45164, 45692,
+ 35834, 45695, 45166, 27019, 35836, 27283, 35835, 27294, 45160,
+ 35837, 27026, 27295, 45693, 45694, 45167, 45158, 45696, 27297,
+ 45697, 45159, 45161, 45165, 45162, 46306, 46304, 45701, 27300,
+ 36118, 27293, 27644, 36517, 36117, 45708, 46302, 45702, 27634,
+ 36515, 45704, 46298, 27636, 45707, 36115, 27635, 45709, 45700,
+ 45706, 46301, 46300, 27645, 45703, 46297, 46303, 36516, 46296,
+ 36521, 36527, 36530, 47076, 46314, 47078, 47074, 47079, 46315,
+ 36524, 47072, 27649, 47082, 36525, 27641, 37002, 36520, 36531,
+ 46313, 46308, 36993, 46310, 46312, 47075, 46311, 47080, 27642,
+ 36519, 46307, 36992, 47081, 47083, 36991, 36518, 47073, 46316,
+ 46317, 36523, 36528, 28633, 47926, 28620, 36998, 47091, 28618,
+ 47928, 47918, 37558, 47093, 47927, 47095, 28080, 36522, 28088,
+ 47086, 47923, 28076, 37536, 36996, 36999, 28619, 47088, 37001,
+ 47085, 47077, 28084, 37533, 47925, 37003, 28074, 47092, 47090,
+ 47089, 47915, 47921, 37535, 37538, 47929, 36994, 47920, 47931,
+ 47916, 47914, 47084, 37537, 47917, 36995, 47087, 47943, 47922,
+ 47094, 29170, 37547, 37550, 37555, 28622, 28630, 28624, 48846,
+ 47942, 37553, 47941, 28626, 37559, 37561, 37540, 48850, 37563,
+ 38182, 28634, 37556, 47940, 37543, 47936, 38183, 37541, 37557,
+ 37004, 48841, 37544, 29161, 28631, 37562, 37554, 37548, 38180,
+ 47932, 37552, 37534, 47939, 48851, 48852, 48843, 47938, 37560,
+ 48847, 48849, 38178, 29171, 28625, 37546, 47934, 48845, 48848,
+ 48844, 47935, 37551, 38177, 37549, 38191, 38185, 38184, 48860,
+ 39485, 38200, 49804, 38188, 38194, 38199, 49809, 48864, 38802,
+ 38190, 49801, 48854, 38187, 38192, 38189, 48842, 30345, 49811,
+ 49814, 38198, 48857, 49807, 29750, 49813, 49812, 38196, 38804,
+ 38193, 49806, 49803, 49802, 38186, 48856, 48862, 49805, 49810,
+ 38195, 49808, 48863, 49822, 49826, 29740, 29739, 39486, 49817,
+ 38814, 38813, 38810, 29160, 49816, 53191, 53194, 39488, 38807,
+ 38806, 38803, 38808, 38809, 38816, 49824, 49818, 49819, 48859,
+ 49821, 53193, 49820, 53196, 38811, 38815, 54217, 29754, 53192,
+ 53197, 49800, 38805, 49815, 39487, 38812, 54224, 30337, 29753,
+ 54218, 30348, 54220, 39494, 54226, 30341, 39493, 53198, 39498,
+ 30349, 54228, 37542, 39497, 39500, 30946, 30947, 53204, 39499,
+ 55175, 39495, 40183, 31509, 53199, 53205, 40189, 39490, 39492,
+ 40182, 39491, 54239, 54230, 54229, 53203, 30953, 54223, 54222,
+ 54225, 39496, 54219, 54227, 40180, 54473, 53202, 53472, 30347,
+ 40181, 40184, 40185, 40187, 54234, 54231, 40190, 40191, 40186,
+ 54237, 54235, 54236, 40192, 30954, 40836, 54238, 55174, 55176,
+ 55173, 55178, 40838, 54233, 55172, 54221, 40188, 55179, 40837,
+ 40193, 55171, 40844, 31510, 31506, 31969, 40841, 41427, 41425,
+ 55894, 55183, 31965, 40840, 40842, 55180, 55182, 40843, 41426,
+ 55893, 41428, 55892, 53195, 55895, 55181, 31966, 40845, 56582,
+ 55896, 41431, 57219, 32402, 32401, 56585, 41432, 57222, 31967,
+ 41433, 56592, 56588, 56581, 41430, 56587, 42000, 56583, 42003,
+ 56580, 56589, 55897, 56586, 42001, 42002, 56584, 41999, 56597,
+ 32747, 56594, 42007, 56591, 42403, 56596, 56593, 55898, 42008,
+ 32742, 42004, 42401, 56598, 56590, 57220, 42010, 57221, 41429,
+ 42005, 42009, 42402, 57740, 57225, 32744, 57224, 32748, 57739,
+ 57226, 58514, 33023, 42404, 58174, 58175, 58176, 57742, 57741,
+ 57743, 58177, 58515, 58517, 58518, 58516, 58520, 43485, 58519,
+ 58818, 43486, 58819, 43624, 58820, 33733, 43833, 43867, 35511,
+ 26683, 44547, 44818, 35652, 44817, 44820, 44819, 27027, 45168,
+ 45175, 45171, 45173, 27028, 45172, 45170, 45174, 45712, 45710,
+ 45713, 45715, 27303, 45716, 45714, 45711, 46318, 36534, 46320,
+ 36533, 46319, 37006, 28090, 47098, 47097, 37005, 47947, 47946,
+ 47944, 47945, 28635, 47948, 37564, 37565, 29175, 48866, 38202,
+ 38204, 29172, 48865, 38203, 49828, 49829, 38817, 38819, 38818,
+ 53207, 38820, 49827, 39501, 30350, 30351, 53211, 53210, 53208,
+ 49830, 53206, 53212, 53209, 53213, 54247, 54242, 54241, 54244,
+ 54243, 54246, 54245, 54116, 54599, 54240, 55184, 40846, 55899,
+ 56600, 32404, 56601, 42405, 42770, 57744, 44374, 35420, 44548,
+ 44549, 26809, 35838, 45176, 45177, 45718, 45717, 45719, 36120,
+ 45721, 45720, 36119, 46323, 46321, 46322, 36536, 36535, 47099,
+ 37566, 37568, 37569, 37567, 38205, 38821, 29756, 53214, 40847,
+ 42771, 44375, 35421, 44376, 44377, 35422, 35513, 26687, 44550,
+ 35519, 35517, 35516, 35512, 35514, 35518, 26812, 44826, 44829,
+ 44828, 27032, 35654, 44822, 26813, 26810, 44830, 35655, 26816,
+ 44825, 45180, 44824, 45188, 45178, 44823, 35653, 45179, 44827,
+ 45181, 45182, 45184, 35840, 36121, 45187, 45723, 35842, 45725,
+ 35841, 45724, 45722, 45185, 35843, 45733, 45735, 27315, 27306,
+ 27307, 45734, 46324, 36126, 36129, 36128, 45728, 36134, 27655,
+ 27319, 36125, 36124, 36538, 27310, 46325, 36135, 27317, 45731,
+ 36127, 36131, 45729, 45737, 45726, 36130, 36123, 45736, 45732,
+ 45727, 36122, 36537, 36539, 27664, 46332, 27659, 36548, 36546,
+ 27660, 27314, 27656, 36545, 46338, 46327, 46340, 46330, 36544,
+ 46329, 46334, 27657, 46335, 36547, 36540, 27658, 36542, 36543,
+ 27661, 46337, 36541, 45738, 46333, 47100, 46336, 46331, 36133,
+ 46339, 46341, 47101, 46326, 28093, 28094, 28637, 37014, 47110,
+ 36549, 47116, 37008, 28095, 28107, 28097, 37007, 28104, 37570,
+ 37009, 47113, 37012, 47114, 47105, 47102, 28109, 47954, 47949,
+ 47103, 37010, 47952, 28636, 47108, 47951, 47950, 37013, 47106,
+ 47953, 47112, 47109, 28096, 47107, 37011, 28111, 37580, 47959,
+ 28648, 47966, 47961, 37582, 47972, 37589, 47956, 29188, 28646,
+ 37571, 37579, 28638, 37577, 28642, 37578, 28649, 37575, 28652,
+ 37584, 28645, 47973, 47974, 47965, 37586, 47958, 47977, 47962,
+ 37585, 28651, 47978, 47957, 37581, 37583, 47975, 37573, 47967,
+ 47976, 47971, 47983, 47970, 47984, 47979, 47964, 37587, 47968,
+ 37588, 37576, 47963, 47982, 37574, 48868, 48869, 47969, 47980,
+ 47960, 37572, 38213, 48876, 29182, 29180, 38216, 29177, 48873,
+ 29184, 29190, 29178, 29189, 48879, 38212, 38822, 38206, 49831,
+ 48884, 48870, 48882, 48881, 38208, 38214, 38209, 48874, 48880,
+ 38211, 48883, 48877, 38207, 48875, 38210, 48872, 48878, 48871,
+ 38215, 49841, 39504, 38828, 38831, 29769, 29766, 49847, 49848,
+ 49833, 29758, 49850, 38827, 29770, 39503, 38830, 49840, 29760,
+ 53218, 29762, 29761, 53217, 53220, 38825, 29772, 49844, 49849,
+ 49845, 38829, 49842, 38832, 53215, 49846, 49838, 49836, 38823,
+ 29767, 49834, 49839, 49835, 53222, 53227, 39507, 30366, 53232,
+ 53226, 53228, 30358, 30355, 39508, 39506, 53240, 30360, 54252,
+ 30362, 39512, 30367, 30359, 40194, 54265, 53224, 53223, 54250,
+ 54248, 53239, 54249, 53231, 39511, 54251, 39510, 53230, 53237,
+ 53238, 53233, 53236, 30354, 53221, 53234, 53235, 31513, 30958,
+ 54258, 54253, 40195, 40196, 54267, 54263, 54255, 53225, 30955,
+ 30960, 30957, 40198, 30956, 54266, 30963, 54264, 30965, 30959,
+ 30964, 54262, 54254, 54269, 55186, 54261, 40200, 40197, 54260,
+ 55185, 54256, 54268, 54257, 54259, 30961, 40849, 55194, 40850,
+ 55199, 31516, 55192, 55198, 31515, 55197, 55189, 40851, 31512,
+ 40848, 55187, 55200, 55193, 55191, 55195, 55201, 55188, 55190,
+ 55196, 31978, 31983, 41437, 41434, 41435, 41436, 55907, 55906,
+ 31980, 31982, 42013, 42406, 55908, 55905, 31979, 55902, 55904,
+ 56602, 55900, 55903, 32405, 32407, 32406, 32408, 42408, 56605,
+ 56607, 56609, 42014, 56603, 42407, 56611, 32410, 56608, 56606,
+ 56604, 32409, 42012, 55909, 56610, 42411, 33024, 57228, 32751,
+ 57227, 32752, 57231, 32753, 57229, 42412, 42409, 42410, 57230,
+ 57751, 58178, 33026, 57746, 57750, 57749, 33027, 43088, 57748,
+ 57747, 58179, 58180, 43087, 43090, 42772, 58181, 43085, 43089,
+ 58183, 58522, 57745, 43086, 58182, 58523, 58823, 43488, 58822,
+ 33538, 58824, 43487, 58821, 59149, 33734, 59270, 59507, 26688,
+ 26818, 27035, 45739, 46343, 36719, 27665, 46342, 46189, 47118,
+ 47117, 47986, 47985, 37590, 48885, 48886, 38834, 49851, 53241,
+ 53242, 40201, 55204, 55203, 40852, 55205, 57232, 35656, 44832,
+ 35657, 44833, 35658, 44831, 45191, 27041, 35847, 35845, 27038,
+ 45195, 45189, 45193, 45192, 45190, 35844, 35846, 27037, 27323,
+ 45740, 36139, 36138, 45743, 45745, 45744, 36136, 36137, 27321,
+ 27322, 45742, 46344, 46345, 46347, 36553, 45746, 27672, 46349,
+ 36551, 46351, 36550, 36555, 46346, 36554, 36552, 46350, 46348,
+ 27668, 37018, 47125, 28119, 47119, 47120, 47122, 37020, 37021,
+ 28121, 47123, 47121, 37016, 47126, 28122, 28115, 28118, 28114,
+ 37019, 37015, 47124, 47995, 37601, 47992, 28665, 28666, 47996,
+ 47991, 47997, 37591, 37599, 37600, 37598, 37592, 47993, 37596,
+ 47988, 47987, 47990, 28657, 28658, 28659, 37593, 37594, 37017,
+ 47989, 48894, 37595, 38218, 38221, 38223, 29194, 29202, 48890,
+ 48893, 48888, 38222, 48895, 48892, 48887, 29203, 38217, 48896,
+ 38220, 29201, 29192, 29193, 29195, 38219, 48889, 48891, 37022,
+ 29197, 49131, 38841, 49860, 38839, 49852, 29775, 38838, 49853,
+ 38836, 49857, 38844, 38842, 49858, 49856, 49855, 49859, 49854,
+ 49861, 38840, 29774, 38843, 49862, 39014, 39513, 39518, 30373,
+ 53249, 53244, 53243, 39517, 53253, 53250, 53248, 39516, 53251,
+ 39514, 39515, 53246, 53247, 53245, 30968, 54271, 54275, 54277,
+ 40202, 54280, 54276, 54278, 54270, 54274, 54281, 40204, 54279,
+ 30967, 40205, 40206, 40207, 54273, 40203, 53252, 40208, 55207,
+ 55206, 40853, 40857, 40856, 31517, 31518, 40854, 55208, 40855,
+ 41439, 55911, 41438, 31986, 55912, 55913, 31984, 55910, 42018,
+ 42017, 42015, 42016, 42413, 32756, 42414, 57233, 32754, 57236,
+ 57235, 42415, 57237, 57238, 33029, 42774, 42775, 43091, 58524,
+ 43314, 33411, 58525, 33636, 45196, 46354, 46355, 47127, 47129,
+ 47128, 38224, 48897, 39519, 53255, 53254, 39520, 39521, 54282,
+ 58526, 44275, 45747, 27675, 36557, 36556, 46356, 37023, 47131,
+ 47130, 48000, 47998, 47999, 29204, 49863, 38225, 29777, 30374,
+ 53256, 55209, 32411, 44276, 45198, 45197, 45748, 28123, 47133,
+ 47132, 48003, 48007, 48006, 37602, 48009, 48002, 48001, 48005,
+ 28667, 48251, 48008, 29205, 48901, 48899, 48902, 38226, 49866,
+ 49865, 49867, 21260, 30376, 49864, 39523, 39524, 54286, 54285,
+ 54284, 54287, 54283, 30970, 55210, 55211, 55914, 31987, 55915,
+ 55916, 56612, 57239, 58184, 26823, 44834, 36140, 45751, 45750,
+ 45749, 27677, 36558, 46358, 46360, 46362, 46359, 28124, 28126,
+ 47135, 47134, 48012, 37604, 37603, 48011, 48013, 48010, 48903,
+ 38227, 48904, 38845, 38847, 49869, 38846, 53257, 54288, 40209,
+ 55212, 40858, 55918, 41440, 31988, 55919, 55917, 56613, 57752,
+ 33258, 58185, 58825, 59017, 35659, 36141, 36560, 36559, 28668,
+ 48014, 48905, 48906, 29209, 44379, 44378, 44552, 35520, 44551,
+ 44553, 44835, 44836, 44842, 35660, 44839, 44837, 44841, 44840,
+ 44838, 26825, 35853, 45203, 45202, 35854, 45212, 35849, 45208,
+ 35852, 45209, 45206, 35851, 35850, 45204, 45207, 45200, 45210,
+ 45211, 45201, 45205, 36144, 45752, 45753, 36143, 27329, 45755,
+ 45756, 27331, 45757, 45761, 45759, 45758, 36565, 46367, 36566,
+ 36567, 36562, 36568, 36563, 36561, 46371, 46365, 46369, 36564,
+ 46366, 46370, 46368, 46374, 46372, 37024, 28129, 28670, 47144,
+ 28134, 47139, 47136, 47137, 47141, 47138, 47146, 37026, 46373,
+ 47145, 47147, 47143, 37025, 48020, 48023, 28133, 38228, 37609,
+ 48018, 37606, 48019, 37608, 37605, 48015, 48016, 28672, 48025,
+ 37610, 28676, 48017, 48024, 48026, 28675, 28677, 48021, 37611,
+ 37607, 48914, 38230, 48912, 49870, 48913, 48910, 48915, 48909,
+ 38028, 48916, 48911, 38231, 38848, 38852, 38850, 38851, 49873,
+ 38853, 38856, 38857, 29779, 38855, 39525, 49871, 38849, 49874,
+ 49876, 49877, 49872, 49875, 53268, 53263, 53262, 53265, 39529,
+ 39532, 53261, 53258, 53259, 53269, 39531, 53267, 53264, 53266,
+ 53260, 39528, 40210, 40212, 54292, 30978, 54290, 54296, 54294,
+ 54298, 30977, 54297, 54289, 54293, 39526, 54209, 54272, 40211,
+ 54291, 55216, 40859, 40860, 55217, 40861, 55214, 55215, 55218,
+ 55213, 31989, 41441, 41442, 55920, 55923, 42020, 56616, 56615,
+ 42019, 42021, 56614, 56617, 42416, 42377, 57240, 57753, 58186,
+ 43076, 43092, 58527, 43489, 58826, 43626, 59352, 45213, 45214,
+ 36146, 36145, 45763, 45762, 46375, 48029, 48028, 38232, 29783,
+ 48917, 39534, 39533, 53270, 40862, 55925, 41443, 55924, 55922,
+ 32412, 57241, 57242, 43834, 59531, 44380, 44554, 35661, 44846,
+ 44844, 44845, 44843, 45215, 36147, 27332, 27333, 45764, 46376,
+ 37027, 47150, 47152, 48032, 48031, 47151, 37612, 48918, 38234,
+ 48919, 49880, 49881, 53271, 30381, 39536, 30380, 40215, 40213,
+ 40863, 40214, 55220, 55219, 41444, 55926, 42417, 43318, 43490,
+ 35383, 26553, 26600, 35522, 44557, 35521, 44555, 44556, 26692,
+ 26691, 44849, 26830, 44847, 44848, 35663, 44850, 35662, 26826,
+ 27052, 35857, 27047, 35856, 45224, 35861, 35863, 45221, 45220,
+ 45219, 35858, 35864, 35860, 35859, 45217, 45222, 35865, 45225,
+ 45226, 45223, 45218, 35866, 45367, 45767, 45766, 27334, 36149,
+ 45768, 45769, 36148, 36152, 45770, 36571, 36153, 36151, 36154,
+ 47153, 46388, 46392, 46384, 46386, 46379, 36572, 46381, 46378,
+ 46390, 27683, 47154, 36150, 36574, 36575, 46377, 46385, 46380,
+ 46382, 27686, 46387, 27693, 36577, 36573, 46391, 47165, 47166,
+ 47156, 37028, 37036, 37621, 28142, 28137, 37034, 47164, 48047,
+ 47160, 47161, 47163, 47162, 28144, 47159, 47157, 47158, 28141,
+ 37037, 37029, 37032, 37031, 37033, 47167, 47155, 28691, 48053,
+ 37620, 48920, 28683, 37623, 48035, 37617, 28680, 37615, 37619,
+ 28686, 48046, 48048, 37625, 48037, 48034, 37622, 48052, 37627,
+ 37626, 48039, 28685, 48040, 48043, 48050, 37631, 48921, 37628,
+ 48057, 48036, 48038, 48054, 28688, 28693, 48055, 48056, 48042,
+ 48044, 48045, 48051, 37633, 48049, 48058, 48041, 37629, 37632,
+ 37613, 37614, 37616, 48925, 48935, 29226, 48933, 29223, 48934,
+ 38242, 38237, 38241, 38238, 29213, 48938, 38246, 48944, 38235,
+ 29229, 38247, 38236, 48932, 38243, 38240, 48943, 29222, 48936,
+ 48937, 48940, 48927, 29219, 48939, 38239, 48946, 48926, 48928,
+ 48923, 48924, 48929, 48931, 29228, 48945, 48922, 48942, 37630,
+ 38245, 48930, 38867, 38869, 29794, 29785, 38866, 38868, 49892,
+ 38874, 38871, 53272, 48947, 38860, 49882, 38873, 38859, 38877,
+ 49885, 38863, 38872, 49886, 29789, 38861, 38862, 49888, 38865,
+ 38870, 21286, 49893, 49890, 49894, 49895, 38875, 38876, 49887,
+ 49889, 49883, 49896, 49884, 53275, 39550, 39541, 30388, 30400,
+ 39538, 30393, 53284, 53279, 53287, 39554, 39548, 53283, 30399,
+ 39542, 30392, 39547, 30396, 30391, 30382, 53286, 39539, 30403,
+ 39552, 53281, 39546, 39553, 53276, 30394, 39540, 53288, 30389,
+ 30398, 30402, 53273, 53277, 53278, 39555, 39551, 39549, 53274,
+ 53280, 39543, 39537, 39545, 30984, 40230, 54310, 30994, 30981,
+ 40864, 55221, 54301, 54304, 40228, 54309, 54319, 40227, 54316,
+ 54303, 30991, 31533, 30980, 54300, 30988, 40226, 54308, 54305,
+ 40218, 40224, 30985, 54315, 54321, 40225, 30986, 54307, 54312,
+ 30992, 40217, 54302, 41450, 40222, 40223, 40219, 30397, 54320,
+ 54313, 54306, 54299, 40229, 40216, 40220, 54317, 54318, 30990,
+ 40221, 54314, 31524, 55225, 55223, 31528, 55227, 55231, 40869,
+ 40870, 31531, 31527, 40873, 55228, 40871, 55226, 55232, 41451,
+ 40866, 31534, 31525, 55234, 31523, 40868, 55236, 40865, 55229,
+ 55233, 40872, 55235, 55222, 55224, 55090, 40874, 40875, 31998,
+ 41447, 55936, 55932, 31993, 55940, 41457, 41452, 41459, 55938,
+ 31996, 41449, 41455, 41460, 41453, 55237, 41464, 41448, 31994,
+ 32003, 31997, 55942, 55937, 41456, 56625, 41462, 55935, 32002,
+ 41461, 41458, 41445, 55927, 55928, 55930, 55934, 55941, 55939,
+ 41454, 41463, 41446, 55931, 55933, 42022, 56622, 42025, 42028,
+ 42026, 56621, 56619, 42030, 56620, 32419, 56627, 56628, 42024,
+ 42023, 56624, 42032, 56626, 55929, 42031, 56623, 56618, 42029,
+ 32762, 57243, 42424, 57245, 42427, 42033, 42419, 42418, 42422,
+ 57244, 42421, 42426, 42420, 42027, 42425, 42423, 57246, 32761,
+ 57756, 57755, 42780, 42782, 33031, 42778, 57760, 42777, 42779,
+ 42781, 57757, 33030, 42784, 57761, 42787, 57759, 42786, 42785,
+ 57758, 42783, 58191, 43097, 43098, 43095, 43093, 33260, 43094,
+ 43096, 58190, 58189, 58187, 43320, 43322, 43491, 43323, 58531,
+ 43321, 58532, 43324, 58530, 43492, 58528, 58529, 43325, 43319,
+ 33539, 58827, 43493, 59018, 58828, 58829, 59019, 43628, 59020,
+ 43627, 43629, 43718, 59271, 59021, 33704, 59263, 59272, 43835,
+ 59353, 59354, 59466, 59491, 44559, 26832, 44852, 45227, 44855,
+ 35664, 44854, 26831, 35873, 35872, 35869, 45228, 27056, 45229,
+ 35874, 27055, 35870, 35871, 35868, 36158, 45773, 46393, 45775,
+ 36161, 27344, 36160, 36157, 45772, 36155, 36159, 45774, 36156,
+ 46396, 46397, 46394, 36584, 36578, 46395, 47168, 36583, 27698,
+ 36580, 36585, 36582, 36581, 37040, 47169, 47170, 28698, 37638,
+ 38250, 28695, 37636, 48061, 37039, 37639, 48062, 37635, 37640,
+ 48063, 37637, 48060, 48059, 48957, 38249, 38248, 38253, 48954,
+ 38252, 48950, 48949, 48951, 48952, 48953, 48956, 38251, 49407,
+ 48955, 48948, 38881, 29808, 38883, 49898, 49897, 29809, 38882,
+ 29806, 49904, 49899, 38879, 49905, 49903, 38880, 49901, 49900,
+ 49902, 48958, 38878, 39557, 53296, 39559, 39560, 30406, 53292,
+ 53290, 53297, 53289, 53293, 53294, 39558, 53295, 40231, 54323,
+ 30997, 54322, 55239, 55241, 40876, 55240, 55238, 41465, 42035,
+ 42034, 42791, 57248, 42790, 42789, 33261, 42788, 43099, 58194,
+ 58192, 58193, 43494, 59022, 33637, 33705, 35361, 35423, 44381,
+ 44561, 35667, 44857, 45230, 35666, 35668, 44856, 45241, 45233,
+ 45240, 45239, 45235, 45232, 45237, 45231, 45236, 35875, 45238,
+ 45234, 35876, 27059, 27345, 36162, 36022, 46398, 46401, 36586,
+ 46399, 46403, 46402, 46400, 46287, 37041, 47173, 47172, 28701,
+ 28699, 37641, 37642, 48068, 28702, 48067, 48069, 48065, 48070,
+ 48071, 48066, 38255, 48959, 38254, 49602, 53299, 53302, 53300,
+ 53303, 53298, 53301, 54327, 54326, 54324, 54325, 55242, 31537,
+ 41466, 41467, 55943, 43100, 58533, 58534, 35424, 35384, 35523,
+ 44858, 26694, 44562, 35669, 26834, 44563, 44859, 44864, 44860,
+ 26833, 44865, 35670, 44862, 44861, 44863, 45244, 35877, 35883,
+ 35878, 35881, 27060, 27061, 35880, 27064, 45242, 45243, 45245,
+ 45776, 35882, 36167, 27347, 27348, 45783, 27346, 45777, 36163,
+ 36164, 36170, 36165, 36166, 45782, 27349, 45779, 45780, 36169,
+ 45781, 46404, 45778, 36171, 36587, 27702, 46407, 36592, 46410,
+ 36593, 36589, 36590, 46408, 46411, 36594, 36588, 36591, 36595,
+ 46405, 46406, 37046, 47177, 37045, 47176, 37042, 37043, 37044,
+ 47174, 28148, 37047, 48074, 47178, 47175, 48961, 48075, 37650,
+ 28709, 48076, 28704, 37645, 37644, 37646, 28708, 37649, 37651,
+ 37647, 37643, 37648, 48077, 48960, 48073, 48963, 48968, 38256,
+ 38257, 48965, 48967, 29238, 49907, 48969, 48964, 48962, 29817,
+ 29811, 49910, 49911, 29812, 49908, 49909, 49832, 53306, 30410,
+ 39561, 53304, 39564, 53305, 53308, 39563, 30998, 53309, 53307,
+ 39562, 54328, 54329, 40232, 31001, 40234, 40233, 54331, 55245,
+ 55243, 40878, 55246, 55244, 40879, 41469, 41468, 32004, 55945,
+ 54330, 40880, 55944, 42036, 42792, 42793, 57762, 58195, 43329,
+ 43328, 35885, 35884, 45784, 45785, 36596, 28149, 28150, 47181,
+ 47182, 47179, 47180, 47184, 47183, 37048, 48080, 48079, 48974,
+ 48975, 48972, 48973, 48977, 48976, 48971, 38258, 38348, 38886,
+ 29819, 49914, 29820, 49913, 49912, 39565, 49915, 53310, 30411,
+ 54336, 54334, 54337, 54332, 54335, 40235, 54333, 55247, 55248,
+ 32005, 55948, 41471, 41470, 55946, 55947, 32423, 56631, 57250,
+ 56632, 57763, 33414, 43330, 58535, 43101, 58832, 43496, 43495,
+ 59023, 59273, 35425, 44866, 45246, 45786, 46412, 38259, 30412,
+ 35672, 44867, 45250, 45249, 35886, 46413, 46415, 46414, 47185,
+ 47186, 38260, 29239, 38887, 38888, 49916, 53311, 54338, 54339,
+ 40236, 56633, 42428, 43631, 35385, 26695, 44869, 44868, 26835,
+ 35890, 35887, 35889, 35888, 45252, 45251, 35848, 45789, 36173,
+ 36174, 36172, 36175, 36176, 45790, 36178, 45792, 46418, 45791,
+ 36179, 45788, 36177, 46420, 36598, 46419, 27708, 36600, 27707,
+ 46417, 36599, 46416, 36597, 47193, 28159, 47188, 37052, 47189,
+ 47190, 37049, 47192, 37053, 37051, 37050, 47187, 47191, 37652,
+ 28714, 37653, 28717, 48082, 48084, 37656, 37655, 37657, 48087,
+ 48081, 48086, 37654, 48083, 48085, 37659, 48987, 48985, 29244,
+ 48980, 48984, 29243, 48981, 48978, 48982, 48979, 48986, 48983,
+ 48988, 38261, 48989, 49922, 38891, 38890, 49923, 49924, 49926,
+ 29826, 49917, 29827, 38892, 29824, 49927, 49928, 49919, 49920,
+ 49921, 38894, 49929, 49918, 49925, 30415, 53316, 53320, 53318,
+ 30414, 30413, 39568, 53317, 39566, 39567, 53314, 53315, 53313,
+ 53312, 53319, 53321, 54340, 40238, 54341, 31005, 40237, 31008,
+ 54343, 54342, 53322, 55251, 31542, 31541, 55250, 40881, 55249,
+ 55253, 55252, 41474, 41473, 41475, 55952, 56634, 55950, 41476,
+ 55949, 55951, 41472, 56637, 42037, 56635, 56636, 57251, 33032,
+ 42794, 57764, 58196, 43102, 43331, 58536, 59355, 45253, 45793,
+ 36180, 36181, 45915, 47194, 47195, 48990, 29829, 54344, 55254,
+ 32008, 44565, 44564, 45256, 45255, 45254, 45794, 45795, 36182,
+ 36601, 37660, 48991, 53324, 53323, 55953, 57765, 44277, 44566,
+ 35426, 44567, 26698, 44568, 35673, 44570, 44572, 17957, 44571,
+ 45258, 35675, 44871, 35674, 35676, 26837, 44875, 44876, 45257,
+ 44872, 44870, 44874, 44877, 27074, 35892, 45796, 35895, 35896,
+ 27072, 45268, 27076, 45261, 27075, 45259, 35891, 35893, 45269,
+ 35894, 45271, 45797, 45267, 45273, 27069, 45264, 45263, 45265,
+ 45266, 45270, 45260, 36183, 27351, 45799, 36191, 45804, 45807,
+ 36184, 27355, 27716, 36190, 36189, 45803, 45809, 36185, 45810,
+ 36188, 46421, 45806, 45805, 27356, 27352, 45808, 45801, 27357,
+ 45798, 45800, 36192, 27713, 36606, 46451, 46449, 36605, 36604,
+ 46433, 36607, 46422, 46432, 27712, 27714, 46440, 46427, 46441,
+ 46445, 46428, 46444, 46435, 46443, 47197, 47196, 28175, 46439,
+ 46447, 36602, 46438, 46424, 46446, 46429, 46450, 46453, 47225,
+ 46430, 46437, 46452, 27717, 46442, 46434, 46426, 36603, 28166,
+ 37067, 28164, 28180, 47207, 47211, 47215, 28179, 47222, 28170,
+ 47209, 28174, 47208, 47224, 28178, 37054, 47204, 28169, 28176,
+ 48101, 37066, 47221, 37065, 47218, 28162, 28168, 47199, 26898,
+ 47214, 47203, 48103, 37059, 37068, 48089, 48090, 47217, 47223,
+ 37057, 28171, 47219, 37062, 47202, 47205, 37061, 37056, 28181,
+ 28183, 37058, 47216, 48088, 47206, 47210, 37060, 47213, 47212,
+ 47226, 47200, 47201, 37055, 37063, 46431, 48099, 48113, 28721,
+ 37666, 28722, 48094, 48096, 37670, 37673, 37665, 49013, 37675,
+ 48091, 28720, 37069, 28725, 48109, 48093, 37671, 48114, 48994,
+ 48104, 48105, 48111, 37663, 48993, 48112, 29245, 37662, 37669,
+ 37668, 37667, 48107, 37664, 48992, 48115, 37676, 48098, 48106,
+ 37672, 48108, 28730, 48092, 48097, 48095, 37674, 49006, 38262,
+ 29266, 48997, 29253, 49000, 49008, 29260, 29268, 29263, 29247,
+ 49015, 38266, 38263, 29265, 49930, 49007, 29259, 38272, 38270,
+ 29250, 49931, 29267, 38269, 38271, 49003, 49017, 53325, 49012,
+ 29840, 49004, 49011, 48996, 48995, 38268, 38265, 29262, 49001,
+ 49002, 49005, 49010, 38267, 49009, 29254, 49018, 48999, 49016,
+ 48998, 53326, 29849, 29836, 29837, 29841, 38896, 29843, 38895,
+ 38905, 38907, 29834, 29848, 49949, 38900, 49946, 49939, 29846,
+ 29845, 38906, 38903, 38898, 53329, 53328, 38908, 49950, 29844,
+ 49938, 49947, 38901, 38902, 29830, 49942, 39569, 53327, 49933,
+ 38899, 49944, 38904, 53181, 29831, 49941, 49948, 49934, 38897,
+ 49932, 49936, 49937, 49935, 53363, 53347, 53342, 30425, 53355,
+ 53349, 53341, 30430, 30432, 39578, 53364, 53343, 53345, 53351,
+ 30421, 53352, 53338, 39574, 53366, 53336, 53333, 30431, 39570,
+ 39577, 53365, 30420, 53356, 30419, 53354, 39573, 53332, 53368,
+ 39576, 39572, 53348, 53331, 55438, 53334, 53369, 39575, 53330,
+ 53359, 53367, 39579, 39581, 39571, 30423, 53360, 53340, 53346,
+ 39580, 53357, 53350, 53361, 54347, 30428, 53335, 53358, 53337,
+ 53339, 31017, 40252, 40251, 40239, 40240, 40242, 54350, 40247,
+ 54370, 54363, 54357, 31014, 54356, 31019, 40250, 54360, 54348,
+ 54354, 54369, 54358, 54355, 54366, 54353, 54349, 40248, 40241,
+ 40882, 54359, 54372, 40243, 40884, 40249, 54346, 54351, 54361,
+ 54364, 40246, 54362, 54368, 54371, 54373, 54345, 54367, 31020,
+ 40163, 40887, 31547, 31552, 40885, 55267, 55255, 32009, 40886,
+ 40883, 55257, 55263, 55256, 55266, 55261, 55260, 41477, 55262,
+ 55268, 40888, 55264, 40254, 22585, 55265, 55259, 40889, 55269,
+ 55258, 54352, 41484, 41491, 41490, 32020, 41482, 41478, 41487,
+ 55961, 55967, 32016, 41496, 41489, 55957, 41486, 41495, 32015,
+ 41488, 55968, 41480, 55962, 41485, 55969, 55955, 32022, 32012,
+ 55966, 55965, 55959, 41479, 32010, 41481, 41483, 41494, 41497,
+ 41492, 55960, 32019, 55963, 56650, 41498, 56649, 55958, 55954,
+ 55964, 55956, 41493, 56656, 56647, 56653, 32427, 32425, 56638,
+ 42039, 56641, 56639, 56646, 56645, 56640, 42038, 56644, 56648,
+ 42430, 56652, 56642, 56651, 56657, 56655, 56654, 56643, 42432,
+ 42435, 42436, 57256, 32768, 32772, 57255, 57254, 42433, 32771,
+ 57259, 32766, 32767, 32765, 57258, 42796, 42434, 42437, 57260,
+ 57257, 33033, 42801, 57769, 42800, 42798, 33036, 57767, 42797,
+ 57772, 57766, 33038, 57778, 42802, 57768, 57773, 57774, 57775,
+ 57776, 57777, 42795, 58199, 57770, 58200, 43103, 42803, 58198,
+ 43104, 58202, 33263, 58203, 58204, 58201, 58197, 43334, 43335,
+ 58540, 58539, 43333, 58538, 43332, 58541, 58537, 58835, 43498,
+ 58836, 33638, 58833, 43497, 58834, 33639, 59026, 59025, 59024,
+ 59150, 33707, 43720, 43719, 33708, 33735, 43782, 43783, 59274,
+ 59356, 43836, 59467, 43925, 44382, 44574, 26699, 26700, 44573,
+ 44575, 26840, 26841, 35677, 44881, 35678, 35680, 44880, 35897,
+ 27079, 35898, 45276, 45275, 27081, 35679, 36194, 45821, 36195,
+ 45813, 36196, 45820, 45815, 27362, 45814, 45812, 45816, 46461,
+ 36197, 45819, 45818, 36612, 36611, 46457, 46460, 28184, 46458,
+ 27719, 46455, 36608, 36609, 46456, 46462, 46463, 46459, 36610,
+ 47230, 28189, 37071, 47234, 28188, 28190, 47233, 47239, 47236,
+ 47232, 47231, 48116, 47237, 47235, 47238, 47228, 47227, 37070,
+ 37072, 47240, 28742, 48121, 47229, 37680, 37678, 48127, 48128,
+ 37677, 48118, 28739, 48123, 48117, 48126, 28736, 37679, 48120,
+ 48122, 48125, 28740, 48119, 48124, 37681, 38277, 49031, 49029,
+ 38273, 49027, 49034, 29272, 49028, 29269, 49032, 49035, 29270,
+ 38275, 49024, 49040, 49036, 49041, 38278, 49033, 49039, 49022,
+ 49023, 49026, 49043, 29275, 49038, 49042, 49589, 38276, 38274,
+ 49962, 49961, 38915, 49955, 38917, 29850, 38913, 38912, 38911,
+ 53377, 53371, 49951, 38916, 49952, 49953, 38910, 49956, 49960,
+ 29858, 38914, 49957, 49963, 49954, 49958, 49037, 30436, 39585,
+ 53381, 53374, 53370, 39583, 53373, 53378, 53379, 53382, 53372,
+ 39582, 39584, 53380, 53375, 53942, 39587, 39586, 49959, 31029,
+ 54381, 54401, 54379, 54395, 54393, 40258, 31026, 54396, 54398,
+ 54384, 53376, 31027, 54385, 54399, 54400, 31025, 54387, 54383,
+ 31028, 54402, 40257, 40259, 54397, 54388, 54392, 54389, 54374,
+ 54382, 54391, 40255, 54376, 54377, 54390, 54394, 54609, 54380,
+ 54140, 40260, 40256, 54375, 53383, 54386, 55274, 31554, 55276,
+ 40261, 55280, 55279, 31556, 54403, 40890, 55270, 40893, 40891,
+ 55271, 55275, 55273, 40892, 55272, 55976, 32025, 55975, 41499,
+ 55972, 55980, 55978, 55973, 32026, 41500, 41501, 32024, 55981,
+ 55971, 55979, 55977, 56119, 55982, 55974, 55970, 55281, 56663,
+ 42040, 32430, 56664, 32431, 56661, 56660, 56658, 56662, 56659,
+ 42440, 57261, 57264, 57272, 42439, 42438, 42442, 32432, 57263,
+ 57269, 32777, 32775, 57273, 57262, 57266, 57268, 57265, 57270,
+ 57267, 57271, 42441, 57783, 32776, 57785, 42804, 33040, 57786,
+ 57781, 57782, 57784, 58207, 43105, 33416, 58208, 58209, 58205,
+ 58206, 58471, 58545, 58547, 58544, 58597, 58546, 58543, 58542,
+ 43336, 58837, 43499, 59032, 59029, 59031, 59055, 59028, 59030,
+ 59151, 43784, 59358, 59357, 59359, 59430, 59521, 35386, 44383,
+ 44882, 44883, 35681, 45279, 45278, 45280, 45823, 36200, 36198,
+ 45824, 36199, 45826, 45822, 45825, 36614, 36613, 47242, 47241,
+ 47243, 28743, 48129, 47786, 48376, 49045, 49046, 49964, 38918,
+ 49967, 49966, 49965, 53387, 39588, 53384, 53386, 53385, 54404,
+ 54405, 40262, 31558, 55983, 42041, 57274, 57787, 58548, 58838,
+ 59033, 45281, 45282, 47244, 47245, 49047, 38919, 40263, 45194,
+ 36201, 27364, 27722, 36923, 48130, 49049, 49048, 40264, 53388,
+ 53389, 40265, 44278, 44384, 44576, 44884, 27084, 45284, 45283,
+ 45827, 27366, 45828, 45829, 46465, 27723, 46464, 47246, 47249,
+ 47248, 28193, 47247, 48135, 48131, 48133, 48134, 48136, 48132,
+ 48371, 49050, 49051, 49969, 49970, 53390, 53391, 40266, 41502,
+ 31031, 54406, 53392, 40267, 55282, 55283, 40894, 56667, 42443,
+ 58210, 58549, 59275, 43837, 59360, 44886, 35682, 44885, 27085,
+ 45288, 45287, 45286, 45285, 45831, 45830, 36202, 45832, 36203,
+ 36615, 27724, 27726, 46468, 46466, 37073, 37074, 47250, 47253,
+ 47251, 48138, 28746, 48141, 48137, 48139, 48140, 37682, 37685,
+ 37683, 37684, 28747, 38281, 49052, 29278, 38279, 38280, 49053,
+ 38920, 49972, 49973, 49971, 39591, 53396, 39590, 39589, 39592,
+ 53395, 53393, 39593, 53394, 40269, 40270, 40271, 54408, 40268,
+ 54407, 40895, 31559, 41504, 41503, 42444, 57788, 35603, 46470,
+ 46469, 28748, 48142, 49054, 49974, 35428, 44577, 44888, 44887,
+ 44889, 35902, 35909, 35901, 35904, 35899, 35906, 45291, 27087,
+ 35908, 45289, 35907, 35910, 35905, 45290, 35903, 45292, 45293,
+ 36207, 36205, 36204, 45840, 45837, 36208, 36206, 27369, 45835,
+ 45834, 45836, 45839, 45833, 45838, 36209, 36621, 36617, 36619,
+ 36620, 36618, 46471, 36622, 28196, 47258, 47259, 37076, 37686,
+ 28198, 28197, 37078, 37079, 47256, 47260, 47255, 37075, 28750,
+ 28753, 37692, 48147, 37688, 37690, 37687, 48145, 48148, 48146,
+ 48143, 48144, 37689, 37691, 37077, 48149, 38926, 38287, 38285,
+ 29281, 49981, 49056, 38921, 49055, 49058, 49057, 38286, 49060,
+ 38284, 29862, 38928, 38923, 38929, 38927, 49976, 49980, 38922,
+ 38925, 49984, 49979, 49978, 38283, 49983, 38930, 38924, 49977,
+ 49059, 49982, 38931, 39595, 53397, 30445, 39598, 39599, 39597,
+ 30441, 39594, 53399, 53398, 54411, 40272, 40277, 54412, 40274,
+ 40276, 40273, 40275, 54410, 55287, 55285, 40896, 31561, 31562,
+ 54409, 55286, 55984, 55985, 42043, 57789, 56669, 56670, 56668,
+ 42042, 57276, 42445, 42446, 42806, 57791, 42805, 42807, 58211,
+ 43108, 58551, 43107, 58552, 58550, 43500, 59034, 59361, 44385,
+ 35430, 35431, 35525, 35528, 35524, 26703, 35527, 44578, 35526,
+ 35687, 35688, 26848, 27094, 44893, 26847, 35683, 44899, 35684,
+ 44896, 35922, 45295, 26844, 35686, 35685, 44895, 44894, 45296,
+ 44892, 44897, 44898, 44891, 26845, 45303, 35915, 45304, 35919,
+ 45302, 45305, 35914, 35917, 45301, 35920, 35912, 35916, 35911,
+ 45300, 27095, 36211, 44890, 45841, 35918, 45299, 45306, 45297,
+ 27092, 36210, 36219, 45849, 36214, 46478, 36218, 45842, 46479,
+ 47263, 36217, 27370, 36216, 45845, 36215, 45847, 27372, 36221,
+ 45844, 35913, 36212, 36213, 45846, 36220, 46481, 36627, 28200,
+ 46476, 46480, 27734, 36624, 36629, 36626, 27732, 46472, 46477,
+ 46475, 36623, 27733, 46474, 46482, 36628, 46473, 37081, 28203,
+ 47265, 37088, 37693, 37085, 47267, 47270, 37082, 47266, 48154,
+ 28205, 37086, 48151, 48150, 37083, 48152, 47268, 47269, 47271,
+ 48153, 37701, 49064, 37699, 38288, 28754, 37695, 48163, 38289,
+ 37700, 28755, 37698, 37697, 28757, 48158, 29282, 37694, 48155,
+ 48157, 29288, 49062, 48867, 49063, 48159, 48160, 48164, 48156,
+ 37696, 29287, 38297, 49069, 38296, 29286, 49074, 38300, 49071,
+ 49067, 49066, 49073, 38295, 38293, 38292, 49068, 38291, 49075,
+ 38299, 38290, 29289, 38298, 49072, 38294, 49070, 38301, 49990,
+ 38941, 49986, 53400, 38938, 29872, 38936, 38934, 49989, 38942,
+ 38937, 38935, 49993, 29873, 38932, 53401, 49988, 49985, 49987,
+ 49992, 30454, 38944, 38943, 38940, 38939, 49994, 38933, 53408,
+ 30449, 30450, 53407, 39601, 53411, 54414, 39606, 53406, 53402,
+ 39603, 39610, 39600, 39609, 39608, 39602, 40278, 54413, 39604,
+ 39605, 39611, 53403, 53404, 40279, 53405, 53410, 31038, 39607,
+ 40286, 31040, 40284, 40280, 40281, 54420, 31036, 54419, 54418,
+ 40897, 31041, 40282, 40285, 54416, 55289, 31566, 55288, 54417,
+ 53409, 53412, 40283, 40899, 55290, 40898, 56674, 55292, 55291,
+ 55990, 41506, 41505, 55987, 55986, 55989, 32031, 55988, 41507,
+ 32779, 56675, 57277, 56673, 56671, 57278, 42447, 57279, 42809,
+ 57792, 42808, 33265, 42810, 58212, 58553, 58555, 58554, 43501,
+ 58839, 59035, 59276, 48165, 49995, 35387, 44579, 44386, 44900,
+ 35690, 26850, 26849, 44902, 44901, 35689, 35923, 45312, 27099,
+ 36222, 45310, 45309, 45850, 36226, 36223, 27375, 45852, 45568,
+ 45851, 45853, 36225, 36224, 46486, 37089, 36630, 27738, 46484,
+ 27737, 46485, 46487, 46483, 28216, 46488, 47277, 37090, 47278,
+ 28217, 47274, 47275, 47276, 47279, 37091, 47273, 48170, 37704,
+ 37703, 37705, 49076, 29291, 38302, 28761, 48168, 48171, 48173,
+ 49085, 48172, 48167, 48169, 49077, 37702, 49078, 49083, 29292,
+ 49084, 49082, 49081, 38945, 49079, 38304, 37707, 38946, 49080,
+ 53415, 49997, 38948, 53413, 29874, 38947, 49998, 50000, 49999,
+ 49996, 38949, 21343, 53416, 53423, 30455, 39612, 54422, 53417,
+ 54421, 53419, 53422, 53424, 53425, 53420, 39613, 53418, 39614,
+ 54427, 53421, 40287, 40290, 40288, 31046, 54429, 54424, 54425,
+ 54423, 31047, 54426, 54430, 54428, 55293, 40291, 40289, 55298,
+ 55300, 40902, 40900, 55991, 55296, 32033, 31567, 31569, 55295,
+ 40901, 55297, 55299, 55294, 55992, 42045, 32034, 41508, 32435,
+ 55993, 32437, 55994, 55995, 56679, 56678, 42047, 56677, 57280,
+ 42046, 56676, 32438, 57794, 42448, 33043, 57281, 57793, 33042,
+ 57995, 33044, 58213, 58556, 33419, 43337, 43632, 59037, 59036,
+ 43721, 33765, 45313, 36228, 36227, 45854, 45855, 46489, 36632,
+ 36633, 46490, 46491, 28221, 37092, 37093, 37708, 37709, 48174,
+ 48175, 29293, 38305, 38306, 53428, 50001, 38950, 38951, 53427,
+ 54431, 31048, 39615, 53426, 31049, 55301, 41509, 32036, 33045,
+ 57795, 42811, 43338, 58557, 58840, 59152, 59153, 35691, 35924,
+ 27100, 45314, 36229, 36230, 45856, 27380, 27383, 36634, 36636,
+ 46495, 36635, 46494, 46492, 46493, 37096, 47283, 47281, 47285,
+ 37097, 47284, 37095, 28765, 37710, 49089, 28770, 37713, 37712,
+ 37098, 48177, 37711, 37094, 48176, 48178, 29301, 38307, 49090,
+ 29295, 38308, 49086, 49088, 29296, 49091, 49087, 38954, 50005,
+ 38952, 50003, 29879, 50002, 50004, 38953, 30463, 53433, 39617,
+ 39618, 39619, 53429, 53430, 53432, 54432, 31573, 54433, 40294,
+ 40296, 31051, 40295, 40293, 31575, 40903, 31576, 55303, 55302,
+ 39616, 32039, 41512, 41511, 55997, 41510, 55998, 42048, 57282,
+ 57796, 57797, 33047, 42812, 33046, 57798, 33267, 58214, 43109,
+ 43341, 43340, 58558, 43339, 58636, 43785, 59431, 44387, 45315,
+ 35926, 27101, 45857, 38309, 50006, 54436, 54434, 54435, 31578,
+ 55999, 42813, 44388, 44580, 45316, 35927, 45317, 36231, 27384,
+ 45858, 46054, 36638, 47287, 37099, 47286, 47288, 49092, 48179,
+ 49094, 49093, 50007, 53434, 31579, 56571, 57799, 44581, 35928,
+ 45321, 46496, 37100, 56680, 43110, 26852, 44904, 27105, 26934,
+ 27102, 35929, 45324, 45323, 45326, 45322, 27387, 36234, 45861,
+ 36233, 45860, 36232, 45863, 45867, 45864, 46504, 36235, 45865,
+ 45862, 36643, 36236, 36639, 27743, 36640, 46500, 46499, 46501,
+ 46498, 46502, 27745, 36642, 36641, 28229, 47289, 37102, 37101,
+ 28228, 47293, 47296, 47291, 47294, 47295, 47292, 47290, 47262,
+ 28774, 28772, 28773, 48182, 48184, 48183, 28776, 48180, 49099,
+ 29307, 29304, 49097, 49098, 29303, 38311, 49095, 49101, 38310,
+ 49102, 49103, 49100, 38312, 49096, 50010, 29887, 38957, 50009,
+ 50012, 50015, 50013, 50011, 50014, 53439, 30467, 53435, 53437,
+ 53436, 53438, 39620, 53440, 30466, 31056, 31054, 31057, 54437,
+ 40297, 54076, 55304, 40908, 55306, 40906, 31580, 55305, 40909,
+ 55639, 40905, 40907, 32040, 56681, 42050, 56684, 57283, 56682,
+ 56685, 32442, 56683, 57285, 57284, 57802, 57800, 57801, 58215,
+ 33268, 57803, 58560, 58559, 58841, 59155, 59154, 59277, 59279,
+ 59278, 59510, 59522, 59539, 44389, 44582, 27747, 36237, 28777,
+ 49105, 49104, 50016, 40298, 54439, 53441, 58216, 35529, 35693,
+ 35694, 26853, 44907, 44908, 44906, 44909, 27108, 45328, 27107,
+ 35931, 45329, 45870, 27396, 45869, 45868, 36239, 36243, 27392,
+ 27393, 36240, 27390, 36241, 36238, 36242, 45875, 45871, 45873,
+ 45874, 45872, 46508, 36644, 36648, 46514, 36646, 46515, 46509,
+ 36651, 36647, 36650, 46512, 46516, 46505, 27758, 36649, 46507,
+ 27759, 36645, 46513, 46506, 46511, 47298, 47304, 37107, 47302,
+ 37110, 28232, 37109, 37105, 47300, 28235, 37108, 47303, 47306,
+ 47301, 47305, 47297, 37106, 37111, 37715, 37724, 48192, 37714,
+ 48196, 37718, 37719, 37721, 37716, 48194, 48190, 37725, 48193,
+ 48186, 48197, 37723, 48189, 28788, 48188, 48191, 48195, 28786,
+ 48187, 28780, 37717, 49111, 29315, 29313, 29324, 38314, 29314,
+ 29318, 29890, 29322, 49108, 38315, 38317, 38323, 29325, 49106,
+ 38322, 49112, 38326, 38324, 38316, 37722, 38320, 38319, 49110,
+ 49109, 29326, 49107, 49113, 38313, 38327, 38318, 38971, 38963,
+ 29896, 29902, 38958, 38962, 29897, 50022, 50017, 29905, 29901,
+ 50018, 50027, 38960, 38961, 38966, 29903, 50030, 50028, 38973,
+ 50021, 29898, 29893, 38964, 38965, 50026, 38959, 38969, 50024,
+ 50023, 50031, 50019, 29904, 50025, 50029, 38968, 30481, 30477,
+ 30468, 30480, 39624, 30475, 53452, 30473, 39626, 39628, 39625,
+ 30472, 53444, 30471, 39622, 39623, 53442, 38970, 39629, 53443,
+ 53450, 53448, 53445, 53449, 53453, 39627, 39621, 31062, 40300,
+ 54440, 54441, 40307, 40308, 31063, 31058, 40303, 54446, 40301,
+ 40302, 40306, 54442, 54448, 40309, 54445, 54444, 40305, 54443,
+ 54449, 54450, 40299, 53446, 31581, 40914, 40311, 55319, 31068,
+ 29900, 31583, 55310, 40910, 55311, 40917, 40915, 40918, 55318,
+ 56003, 40310, 40912, 31582, 40913, 31586, 55312, 55316, 55320,
+ 55314, 55309, 55315, 55307, 55308, 55317, 40916, 41513, 40919,
+ 55313, 32047, 40921, 41517, 56001, 41522, 56002, 41518, 41521,
+ 32045, 40920, 41514, 41519, 41515, 41516, 32049, 56006, 41520,
+ 56692, 32448, 56688, 32449, 42053, 32450, 56687, 42052, 42051,
+ 32451, 32446, 56689, 56690, 56686, 56691, 56005, 32785, 32786,
+ 57286, 57290, 57289, 42449, 42450, 57291, 57288, 57287, 42818,
+ 42817, 42815, 33048, 57805, 42816, 57804, 43114, 43113, 43112,
+ 58563, 58561, 33423, 58562, 43342, 43502, 58842, 58843, 59065,
+ 59038, 59156, 59157, 59158, 43786, 59362, 59432, 26856, 45876,
+ 46518, 46517, 47307, 48200, 48198, 37726, 48199, 53454, 31070,
+ 31069, 54451, 44583, 44584, 35695, 35933, 35934, 35932, 35935,
+ 27398, 36246, 36245, 36244, 45878, 45879, 45877, 45880, 36247,
+ 46519, 27763, 46520, 47309, 28237, 37113, 47308, 48202, 48203,
+ 48201, 38329, 38328, 49115, 29327, 49114, 38330, 29906, 50032,
+ 50033, 30483, 53455, 53456, 40313, 54453, 40312, 54452, 31590,
+ 31591, 40923, 40925, 56007, 40922, 55321, 41523, 56008, 56009,
+ 42054, 42055, 42056, 42057, 56693, 57293, 57292, 41524, 58217,
+ 58218, 58564, 33546, 58844, 59433, 35696, 35697, 45332, 45330,
+ 45331, 35936, 45882, 36248, 27400, 45611, 45881, 36652, 36653,
+ 46521, 46525, 37114, 27765, 46522, 46523, 46524, 28240, 37115,
+ 47311, 47310, 28791, 48204, 37727, 48206, 28790, 48205, 38331,
+ 38334, 38332, 38333, 38335, 49118, 49116, 29328, 29908, 29910,
+ 50037, 50036, 38975, 50038, 50034, 50035, 53458, 39631, 39632,
+ 39633, 53457, 40317, 40319, 40315, 31075, 40318, 40316, 40314,
+ 54454, 54455, 55322, 54456, 31592, 41525, 56011, 56012, 56013,
+ 56010, 42059, 42058, 56694, 32788, 42452, 42451, 57294, 57807,
+ 33053, 58219, 43503, 43504, 59255, 59463, 44910, 27112, 35937,
+ 27110, 45334, 35938, 36251, 36249, 36250, 45884, 45883, 36654,
+ 46530, 46532, 27769, 36655, 46529, 46526, 27771, 46531, 46533,
+ 46527, 46528, 28243, 37117, 28241, 47312, 47313, 47314, 46534,
+ 48211, 48207, 37728, 28792, 48209, 48210, 48208, 49119, 49121,
+ 38337, 49123, 49122, 49120, 50040, 50039, 50050, 39634, 53459,
+ 53460, 31076, 54461, 31078, 54457, 54462, 40321, 40320, 54460,
+ 54458, 31594, 32056, 31593, 55323, 40928, 56014, 40927, 55324,
+ 55325, 55078, 40926, 54459, 55326, 32055, 32054, 56015, 56017,
+ 56016, 56018, 56695, 42060, 56696, 42454, 57296, 42453, 57298,
+ 57295, 57297, 58221, 43115, 58220, 58222, 58845, 43343, 58846,
+ 59159, 35530, 44911, 26857, 35699, 26859, 35700, 35698, 27119,
+ 45335, 35940, 27114, 45339, 45341, 45337, 35941, 35942, 45340,
+ 45338, 35939, 45342, 45343, 45896, 45892, 45885, 45889, 27415,
+ 45893, 27413, 45899, 36258, 45890, 36262, 27412, 45886, 45898,
+ 36253, 36260, 36264, 36254, 36263, 36261, 36256, 36265, 45887,
+ 36252, 36259, 36255, 36257, 45894, 45897, 45891, 27777, 36663,
+ 18951, 27773, 36656, 46535, 27775, 36661, 36657, 46537, 27772,
+ 46538, 36662, 46539, 27780, 46541, 36659, 36664, 46540, 46536,
+ 36660, 36658, 27781, 28252, 47332, 47319, 47326, 37119, 37118,
+ 37128, 28251, 47320, 47317, 47315, 37125, 37126, 37120, 47323,
+ 37123, 47333, 37124, 47316, 47328, 47324, 47329, 47331, 47325,
+ 47322, 47330, 37129, 47318, 47327, 37122, 37127, 37734, 37737,
+ 48216, 48224, 28250, 48215, 37736, 48220, 48222, 37731, 48227,
+ 48214, 28810, 37735, 37733, 37729, 28809, 38338, 48226, 38351,
+ 28795, 48221, 37738, 48218, 37739, 48229, 37730, 37732, 48219,
+ 48228, 48213, 48225, 48223, 28799, 28811, 37740, 28793, 49126,
+ 49129, 49125, 29337, 38345, 49127, 38344, 49130, 38342, 49124,
+ 29330, 29335, 29344, 29341, 38347, 49133, 38343, 29342, 29331,
+ 49135, 38346, 38339, 38349, 49137, 49128, 48212, 49134, 48900,
+ 38340, 38350, 38341, 49136, 38979, 29928, 50043, 29921, 38982,
+ 50047, 38984, 38985, 50048, 30502, 50053, 50045, 50054, 53467,
+ 50046, 38986, 38983, 50042, 50049, 50044, 38981, 50041, 38978,
+ 38977, 38976, 53461, 29917, 50052, 50051, 38988, 29918, 30503,
+ 30499, 30485, 39639, 39644, 30501, 53466, 39649, 39642, 30488,
+ 53471, 30487, 31088, 54470, 39641, 40326, 39643, 53468, 39647,
+ 53473, 30496, 30498, 30493, 39636, 39648, 53462, 53463, 53465,
+ 30497, 39640, 53469, 39635, 39638, 40322, 39646, 39645, 53464,
+ 53470, 30495, 40335, 40336, 31081, 40330, 40328, 40332, 40324,
+ 31086, 40334, 40325, 40331, 40329, 31085, 54463, 54471, 54472,
+ 54468, 54464, 39650, 31090, 40323, 54466, 54474, 54469, 40337,
+ 31089, 38987, 40333, 32064, 40929, 40932, 31604, 31605, 54475,
+ 55333, 55328, 40931, 55329, 40933, 55339, 40930, 56025, 55334,
+ 55335, 55332, 31606, 55338, 40936, 54465, 40935, 55336, 55331,
+ 55330, 55337, 55327, 32061, 56026, 56023, 41531, 32065, 41528,
+ 56020, 56021, 41533, 32057, 41529, 41532, 41534, 41527, 56027,
+ 56028, 56022, 41530, 56019, 56024, 42064, 42061, 42066, 32459,
+ 42065, 32456, 42069, 42063, 56699, 32455, 56701, 32457, 32458,
+ 56697, 42062, 56698, 42068, 42067, 57024, 56702, 56700, 42457,
+ 42459, 42455, 57301, 42458, 42460, 57300, 32793, 42456, 32794,
+ 57299, 57811, 42819, 42821, 42820, 42822, 57809, 57812, 57808,
+ 33270, 43118, 58223, 43116, 43117, 58224, 43120, 33426, 57810,
+ 43119, 58298, 43121, 43344, 58567, 33425, 58566, 58847, 33641,
+ 59160, 59162, 59161, 43838, 35943, 27417, 27418, 27783, 36667,
+ 36666, 46544, 46545, 28255, 37131, 37743, 28812, 37744, 37742,
+ 37746, 37741, 48230, 37745, 38354, 38353, 38352, 50056, 50057,
+ 29930, 29931, 38991, 38989, 38990, 29932, 50055, 29934, 39651,
+ 30505, 53476, 39652, 30504, 53475, 30506, 31092, 31091, 31093,
+ 40338, 41538, 55340, 40786, 40937, 41537, 41536, 41535, 42072,
+ 42071, 42070, 42073, 56703, 56704, 33427, 59532, 59542, 44680,
+ 44912, 44913, 45904, 45902, 45903, 36267, 36669, 36670, 46548,
+ 46546, 46547, 36668, 37132, 37133, 28259, 47338, 47336, 37134,
+ 47334, 47340, 47335, 47339, 47337, 28813, 48233, 48231, 38355,
+ 29345, 49140, 29348, 29347, 49138, 37747, 29349, 49139, 38992,
+ 38993, 50058, 38994, 38995, 53479, 30507, 53477, 53478, 53480,
+ 54477, 31094, 54476, 40938, 40939, 55341, 55342, 43122, 43345,
+ 35531, 44585, 26860, 44914, 35702, 35701, 35944, 27123, 45346,
+ 27422, 27420, 45908, 36269, 45906, 45907, 45905, 36268, 36270,
+ 27793, 36678, 46549, 45909, 46550, 36674, 46554, 36671, 36676,
+ 36675, 27788, 27790, 36681, 36677, 36680, 27786, 36682, 46553,
+ 27787, 36672, 46552, 37135, 36673, 46551, 37141, 37137, 47346,
+ 47344, 37146, 37145, 37139, 47345, 37149, 37147, 36683, 37143,
+ 37136, 37138, 37142, 47343, 47341, 48235, 37140, 47347, 37144,
+ 37148, 47342, 37749, 37755, 37748, 37752, 28817, 48242, 28818,
+ 28816, 37753, 37754, 48238, 37751, 37756, 48241, 48237, 48239,
+ 37758, 37757, 38359, 49148, 29350, 38360, 49141, 49143, 38356,
+ 49145, 29360, 29362, 49146, 49149, 38357, 38358, 49144, 49147,
+ 49150, 50066, 39003, 50059, 53485, 39005, 50061, 29941, 38998,
+ 38997, 50062, 39006, 50064, 50065, 39000, 50060, 38996, 39008,
+ 50063, 29943, 39002, 39007, 39004, 38999, 30513, 39655, 39656,
+ 53486, 39653, 29939, 53490, 39658, 53484, 53487, 53481, 53488,
+ 39654, 39657, 53483, 54481, 40342, 40339, 40343, 54478, 31100,
+ 31102, 40345, 31101, 54479, 54483, 31098, 54480, 40341, 40340,
+ 40943, 55343, 40941, 55350, 55345, 40940, 31609, 55344, 40942,
+ 31612, 55347, 31611, 40346, 40945, 40944, 40946, 55346, 55349,
+ 56032, 41539, 41541, 56029, 56031, 41540, 32069, 41543, 56030,
+ 41542, 56033, 32461, 42075, 42074, 56707, 56705, 56706, 42462,
+ 42463, 57302, 57303, 42461, 42464, 32462, 57304, 57306, 42823,
+ 42824, 57813, 33059, 43123, 58225, 43124, 58226, 43125, 43347,
+ 33428, 43346, 43348, 58569, 58568, 58849, 58848, 58850, 59163,
+ 43722, 43787, 33736, 59364, 59434, 43932, 44280, 44587, 44915,
+ 45347, 45910, 45912, 45741, 36684, 46555, 27796, 36685, 46556,
+ 45914, 46559, 46560, 46558, 46561, 46557, 27425, 37151, 46562,
+ 47348, 37150, 48245, 37759, 48246, 48247, 48249, 37760, 48250,
+ 48248, 48243, 48244, 49152, 38362, 38361, 38363, 48252, 29367,
+ 49151, 39012, 50070, 50071, 29945, 50074, 50072, 50068, 50073,
+ 39010, 50069, 30518, 53491, 50067, 50075, 53493, 40349, 54485,
+ 40347, 54486, 31106, 40350, 40348, 40351, 53495, 54484, 31618,
+ 40947, 55354, 31619, 55357, 55355, 54487, 55352, 55356, 55353,
+ 55351, 32073, 41544, 56035, 56034, 32072, 42076, 56709, 56710,
+ 42465, 32798, 57307, 57815, 57814, 33274, 58227, 58228, 58570,
+ 58571, 58572, 43505, 58573, 43506, 43633, 59166, 59164, 59280,
+ 45916, 47349, 28822, 48253, 49153, 50076, 53497, 54488, 54489,
+ 56036, 43126, 59039, 26601, 44588, 44916, 44917, 27124, 35947,
+ 27126, 35946, 45349, 45920, 45923, 36273, 36271, 27433, 36274,
+ 45925, 45919, 45921, 27430, 45918, 36272, 45926, 45924, 45922,
+ 45917, 36687, 36686, 46566, 36688, 46567, 36689, 36275, 37157,
+ 46568, 46563, 46565, 37155, 47354, 37160, 28271, 37158, 47353,
+ 37152, 28275, 47350, 47355, 28826, 37761, 28827, 28823, 48254,
+ 48255, 48258, 48260, 28824, 48257, 29376, 37159, 38373, 38366,
+ 49156, 49154, 49157, 38367, 38364, 38369, 38371, 38375, 38370,
+ 29373, 49162, 38365, 49158, 49161, 49159, 49155, 49160, 38374,
+ 38372, 39017, 50080, 38740, 39022, 50079, 50077, 50081, 29951,
+ 39023, 39018, 50085, 50086, 39020, 39016, 39021, 50087, 39019,
+ 50078, 50084, 50083, 39664, 39661, 39663, 53504, 53501, 39662,
+ 30528, 53505, 53502, 53509, 39024, 53500, 40362, 39665, 39666,
+ 30526, 30529, 53506, 53499, 53507, 53508, 31110, 54502, 40354,
+ 40357, 54498, 40353, 40356, 40355, 31113, 40352, 40360, 54492,
+ 54493, 40359, 54491, 40363, 40948, 40364, 54500, 54499, 54501,
+ 54490, 54494, 54496, 54497, 40361, 40358, 40951, 40954, 40955,
+ 40952, 40949, 40950, 31625, 55358, 40957, 31621, 40953, 55361,
+ 55359, 40365, 55360, 40956, 41546, 41553, 41551, 41548, 41549,
+ 41552, 56039, 41547, 56038, 41550, 41545, 42079, 32464, 42077,
+ 32465, 32468, 56712, 32467, 42078, 57311, 56714, 56711, 56713,
+ 42468, 32801, 32799, 42467, 57309, 32077, 42466, 42469, 57308,
+ 57310, 57312, 42470, 57817, 57816, 42825, 57818, 58230, 43127,
+ 58231, 43349, 43350, 58232, 43507, 58574, 58575, 58851, 58830,
+ 33644, 43634, 33645, 43723, 43868, 43869, 44390, 35704, 35705,
+ 27128, 27129, 27127, 45352, 45351, 45354, 18554, 45350, 27437,
+ 45928, 45930, 45927, 36276, 27436, 36278, 36277, 45929, 45931,
+ 45932, 36279, 36690, 27799, 27804, 27801, 36694, 36693, 36692,
+ 46573, 27802, 27803, 27800, 46571, 46569, 36691, 36695, 46572,
+ 46570, 37165, 37164, 47357, 47356, 47358, 37162, 28277, 37163,
+ 37161, 47359, 37775, 28833, 37777, 48267, 48263, 28836, 48271,
+ 37766, 37772, 37774, 48269, 37764, 48270, 37765, 48264, 37767,
+ 28835, 37776, 48265, 37773, 48262, 37763, 37770, 48268, 37771,
+ 37768, 48266, 38377, 49170, 38379, 38378, 38381, 49163, 49165,
+ 37769, 38380, 38382, 49169, 49172, 38383, 49167, 49166, 49164,
+ 49171, 49261, 29956, 50094, 39027, 50093, 50089, 50091, 50090,
+ 39026, 50096, 39028, 50088, 53512, 39668, 39674, 39677, 39025,
+ 53511, 39678, 39673, 39669, 39679, 39672, 53510, 39667, 39675,
+ 39671, 39676, 53593, 30532, 40372, 40374, 31116, 40373, 31119,
+ 40366, 31121, 54505, 40367, 40369, 40368, 40376, 40370, 40377,
+ 54503, 40371, 40958, 40378, 54506, 40963, 40960, 55366, 31629,
+ 40962, 55363, 55364, 55362, 40959, 55365, 54507, 40961, 41555,
+ 41554, 32471, 56717, 56716, 42080, 56715, 57313, 57315, 42081,
+ 32802, 42471, 57822, 57316, 57314, 42828, 57820, 33064, 33063,
+ 42826, 57821, 42827, 43351, 58576, 43508, 59041, 58852, 43635,
+ 59167, 43870, 44919, 44918, 35948, 35949, 27438, 27808, 36698,
+ 36699, 27805, 36697, 36696, 27807, 46574, 46575, 47363, 28282,
+ 47362, 47364, 47361, 28283, 37168, 28838, 48274, 37778, 37780,
+ 37779, 37781, 48273, 29381, 29383, 38385, 29384, 49173, 38384,
+ 49174, 49175, 38386, 39029, 50097, 39030, 29957, 53516, 30533,
+ 39680, 53514, 31632, 54509, 40379, 40965, 41050, 55367, 40964,
+ 41557, 55368, 56040, 41556, 57317, 57823, 56718, 42829, 58233,
+ 59042, 35950, 45355, 35952, 35951, 36281, 36282, 36280, 45934,
+ 45933, 36283, 36705, 36700, 27813, 36701, 36703, 36704, 46577,
+ 36708, 36706, 36702, 46576, 46578, 36707, 36709, 27815, 47365,
+ 47371, 37171, 28288, 37174, 47368, 37173, 47373, 28284, 37175,
+ 47366, 36710, 37170, 47370, 47372, 37177, 37178, 47369, 37785,
+ 37789, 37784, 37787, 28839, 28841, 48279, 37172, 28846, 37788,
+ 37783, 28852, 28850, 28843, 48282, 28851, 48276, 37792, 48278,
+ 48281, 37176, 37786, 37790, 38403, 38391, 38398, 29387, 38396,
+ 38388, 29395, 29396, 38399, 29390, 37782, 49177, 38389, 38404,
+ 38394, 38401, 38387, 38392, 38395, 49181, 49179, 49184, 49187,
+ 49180, 49183, 49185, 50098, 38402, 38400, 38397, 38390, 49178,
+ 48277, 49182, 49186, 49176, 39046, 38405, 29967, 39044, 50108,
+ 29962, 50099, 50100, 39037, 39036, 39043, 29970, 50109, 39041,
+ 50107, 39033, 39034, 50106, 50102, 39035, 39042, 39032, 39038,
+ 50103, 38393, 39048, 50101, 39039, 50105, 39040, 29972, 39045,
+ 39693, 53526, 53528, 39703, 30564, 39686, 53534, 53527, 39697,
+ 30536, 30534, 39700, 39682, 39687, 39702, 53519, 39699, 39684,
+ 31145, 39692, 39701, 30537, 30558, 30552, 30548, 39691, 39690,
+ 39695, 53531, 39049, 39688, 53533, 53524, 53521, 39698, 53517,
+ 53536, 30553, 53532, 30547, 53529, 39696, 53522, 53520, 39681,
+ 53525, 53523, 39705, 53535, 40393, 31146, 31143, 40381, 40387,
+ 40395, 54529, 40385, 31127, 40386, 31125, 40397, 53518, 54524,
+ 31131, 40396, 31130, 54528, 31141, 54519, 54525, 31129, 40389,
+ 54516, 31144, 40388, 40382, 54515, 54527, 31123, 40380, 54523,
+ 31134, 40394, 54518, 40391, 31132, 54530, 54510, 54526, 39683,
+ 40392, 40383, 54513, 54522, 54511, 40390, 40384, 54517, 54512,
+ 54521, 54514, 40987, 40984, 31644, 40974, 40996, 40978, 31643,
+ 31650, 31654, 55377, 40994, 31647, 40985, 40969, 40986, 40971,
+ 41000, 40980, 40993, 40976, 41003, 55369, 40975, 40981, 40989,
+ 31651, 40990, 55374, 41581, 40995, 40979, 55380, 55373, 40968,
+ 41001, 40992, 40972, 55376, 40997, 40970, 40967, 40991, 31653,
+ 32081, 41002, 40977, 40998, 40988, 54520, 40973, 55372, 55371,
+ 55370, 55378, 55375, 55379, 31655, 31648, 41590, 41586, 41004,
+ 32103, 41584, 41571, 41566, 32092, 41589, 41579, 22888, 41561,
+ 32099, 32090, 41582, 41572, 41591, 32082, 56050, 41585, 41563,
+ 41570, 32083, 32084, 41587, 56048, 41568, 41565, 41578, 56044,
+ 41559, 56045, 32086, 56042, 32104, 41577, 56047, 41576, 56049,
+ 56053, 56043, 41564, 32098, 41569, 41573, 41583, 41588, 41575,
+ 41560, 56057, 56056, 41574, 41558, 41562, 56041, 56046, 56055,
+ 56052, 42091, 42096, 56727, 32486, 56725, 42084, 32481, 32482,
+ 32478, 42090, 32476, 32477, 56721, 32479, 42083, 32485, 32474,
+ 56720, 42094, 42089, 42097, 42093, 42092, 42086, 42085, 42088,
+ 56719, 56723, 42082, 42098, 56722, 56724, 56726, 42485, 42484,
+ 42479, 32484, 42477, 57321, 42483, 32804, 57329, 32807, 42481,
+ 42476, 33073, 57319, 42472, 42478, 42474, 57318, 57330, 42480,
+ 57322, 57323, 42475, 57324, 57833, 57326, 57325, 57327, 57328,
+ 57320, 42837, 42841, 42842, 33074, 33068, 42839, 42844, 57824,
+ 42831, 42836, 42833, 32806, 42840, 42832, 42473, 57830, 42843,
+ 42830, 57826, 42838, 33282, 42845, 57831, 57825, 57829, 57828,
+ 57834, 57827, 58238, 33279, 33278, 43131, 43129, 42835, 43132,
+ 58235, 42846, 58234, 43135, 33280, 43128, 58237, 57832, 43137,
+ 43134, 43130, 43136, 43133, 58239, 58236, 58299, 33431, 43352,
+ 58578, 43353, 33432, 33433, 33435, 58577, 43355, 58579, 43354,
+ 58583, 58582, 58580, 58584, 58581, 43509, 58854, 58857, 43511,
+ 43512, 58856, 43356, 58855, 58853, 43510, 58860, 33550, 58858,
+ 43636, 59043, 59045, 59048, 33646, 59046, 58859, 59044, 43726,
+ 43724, 43725, 59047, 59281, 59282, 59283, 43839, 43871, 59365,
+ 33791, 43895, 43908, 35706, 35953, 45356, 45936, 36285, 45935,
+ 36286, 46579, 36711, 46583, 36712, 46581, 36713, 46580, 46582,
+ 28293, 37182, 28297, 37181, 28294, 37185, 37180, 37183, 37184,
+ 28296, 37187, 37179, 47374, 48288, 47376, 47375, 37793, 28853,
+ 48286, 48283, 48290, 37795, 28858, 48289, 48284, 48287, 38406,
+ 29399, 49190, 38408, 38409, 37794, 38407, 49192, 49191, 28857,
+ 38410, 38412, 38411, 49194, 49188, 49193, 50114, 39051, 50112,
+ 50115, 39053, 29974, 49189, 50120, 50119, 39052, 50117, 39050,
+ 39054, 50116, 50110, 50111, 53541, 53537, 30571, 39710, 53538,
+ 53542, 30568, 39709, 39711, 39715, 39055, 39714, 39712, 53544,
+ 53539, 39708, 30569, 39713, 30567, 53543, 39707, 39706, 40403,
+ 40401, 41011, 31148, 40400, 31147, 54534, 54535, 40404, 54531,
+ 40399, 40402, 40405, 54533, 41005, 41007, 55381, 41008, 41006,
+ 41009, 41010, 55383, 55385, 55386, 55382, 31659, 41597, 56060,
+ 32108, 41598, 41594, 56735, 41596, 41012, 56061, 41595, 57333,
+ 41592, 56058, 42101, 56728, 56729, 32491, 32489, 42100, 42847,
+ 56731, 56732, 56063, 32492, 32109, 42102, 56062, 42099, 56730,
+ 56733, 56734, 57332, 42487, 57331, 33076, 33075, 42848, 57838,
+ 57837, 57836, 43138, 58240, 43139, 33436, 33437, 58585, 43357,
+ 58586, 58861, 43514, 43513, 43639, 59050, 43638, 43637, 59049,
+ 59169, 33712, 43727, 59168, 43728, 59285, 59284, 43896, 59523,
+ 35954, 45357, 35955, 35956, 36289, 45937, 45940, 36287, 36288,
+ 45942, 45938, 36290, 45943, 46588, 46584, 27818, 46596, 27820,
+ 46590, 46589, 46592, 36717, 27819, 27827, 46597, 46586, 27826,
+ 46591, 27825, 46593, 46585, 36716, 46594, 36715, 36714, 46587,
+ 27829, 46595, 37192, 37190, 28311, 28301, 28303, 47383, 28308,
+ 37191, 28310, 47384, 37188, 28305, 47386, 47385, 47380, 47378,
+ 47379, 37189, 47382, 47387, 37804, 37803, 37801, 37805, 48298,
+ 28860, 48291, 48297, 28859, 28861, 48299, 47381, 48292, 48301,
+ 48293, 37800, 48295, 48294, 48300, 37797, 37796, 37798, 48296,
+ 37802, 49204, 49195, 38414, 38413, 29403, 49197, 29404, 49201,
+ 49198, 29400, 38416, 38415, 49196, 49202, 28862, 29402, 49199,
+ 38417, 49205, 49206, 29409, 49203, 49200, 29407, 29979, 39057,
+ 29977, 39059, 50132, 50131, 39063, 29981, 39062, 29978, 50126,
+ 50136, 50135, 50123, 29984, 39056, 38418, 50134, 39058, 50129,
+ 50121, 39060, 39064, 50133, 50128, 29987, 50125, 50122, 50124,
+ 50130, 30573, 30584, 53549, 30583, 30576, 39726, 39724, 31153,
+ 39723, 39728, 39720, 30587, 39725, 53561, 53547, 53553, 39727,
+ 39717, 53550, 53555, 39722, 30582, 30574, 53546, 53554, 53545,
+ 53556, 50127, 53562, 53560, 39716, 39721, 39729, 53551, 53557,
+ 53548, 53552, 54557, 31151, 54554, 54555, 31155, 54551, 54548,
+ 40409, 40411, 54536, 54553, 54537, 55387, 54538, 54541, 40410,
+ 40412, 40408, 41020, 31150, 40406, 40407, 31156, 54545, 54542,
+ 54543, 54552, 31158, 54540, 40414, 54539, 54556, 54546, 40413,
+ 54550, 54549, 54544, 54547, 55401, 55400, 41018, 41015, 31664,
+ 55388, 41016, 55399, 31662, 55391, 41019, 41013, 55395, 55392,
+ 55393, 55397, 41017, 55398, 55394, 41022, 55396, 55389, 32121,
+ 32113, 56069, 32120, 32114, 56068, 56075, 32118, 31663, 56064,
+ 41600, 41603, 41602, 56066, 56072, 41601, 56065, 56070, 56073,
+ 56067, 56078, 56076, 56071, 56082, 41605, 56077, 41604, 56083,
+ 56081, 56079, 56074, 32497, 32498, 56744, 32502, 56752, 42103,
+ 56749, 32500, 56751, 32504, 42106, 32493, 42107, 56746, 56630,
+ 32494, 56742, 42104, 56748, 56740, 56747, 42105, 56738, 56739,
+ 56745, 56743, 56952, 56741, 56750, 32503, 57338, 57337, 42490,
+ 42488, 32810, 57339, 57342, 57336, 57843, 56737, 42491, 57343,
+ 57345, 57335, 33082, 57341, 57334, 57344, 57340, 42851, 33078,
+ 57844, 42852, 33081, 33079, 33080, 58247, 57346, 57840, 57839,
+ 57842, 33077, 57841, 42850, 57845, 43142, 58242, 43143, 43140,
+ 33284, 43359, 58246, 43141, 58244, 58243, 58245, 33318, 33440,
+ 58248, 58587, 58588, 33441, 33442, 33553, 43515, 58866, 58864,
+ 58865, 58867, 43641, 58863, 43640, 59051, 59172, 59171, 59286,
+ 59288, 59287, 59366, 43872, 59492, 44589, 27441, 36291, 27831,
+ 46599, 36718, 37194, 47388, 37807, 47390, 47389, 48305, 28866,
+ 48304, 37806, 49209, 49208, 29411, 29989, 50138, 39065, 50137,
+ 53563, 53565, 30588, 53564, 40416, 40415, 41024, 55402, 41023,
+ 56084, 56085, 56753, 32505, 42853, 32812, 33083, 57846, 33443,
+ 58589, 58869, 58868, 43729, 59511, 44282, 44281, 26863, 44591,
+ 44592, 44920, 44590, 45358, 45945, 27132, 45944, 45359, 27133,
+ 44921, 26864, 45946, 27443, 27445, 36292, 35957, 46600, 46601,
+ 46602, 36722, 46605, 46603, 27835, 27834, 45949, 45947, 45950,
+ 47396, 36720, 47391, 47392, 47393, 47395, 47397, 45948, 46243,
+ 36293, 27446, 47394, 48308, 47398, 46606, 48307, 47399, 36721,
+ 37195, 48306, 37809, 37808, 28869, 48309, 49211, 38422, 49213,
+ 48311, 38419, 38421, 49212, 49214, 48310, 49215, 49210, 50139,
+ 50141, 50142, 50143, 50144, 50145, 50146, 50149, 39068, 53570,
+ 50147, 39067, 49216, 39066, 50148, 50140, 53566, 53567, 53568,
+ 53569, 39733, 39730, 50151, 53571, 39731, 39732, 50150, 53474,
+ 54558, 54559, 54563, 54560, 40417, 54562, 31162, 55411, 54561,
+ 54564, 39734, 40418, 31161, 53572, 53573, 55404, 55405, 55408,
+ 41025, 54565, 31667, 41606, 55409, 55410, 56086, 56087, 56089,
+ 56091, 32124, 32123, 41607, 56090, 56754, 55407, 41609, 42108,
+ 56757, 32507, 56755, 56756, 57347, 57348, 57349, 57350, 42492,
+ 42494, 57351, 42493, 42495, 57847, 57352, 43517, 33555, 58870,
+ 43518, 43516, 59052, 59173, 59289, 59367, 59435, 26865, 26707,
+ 45361, 35958, 45360, 45952, 45951, 27447, 46607, 46608, 47402,
+ 46612, 46611, 46610, 46609, 47401, 47404, 37197, 28871, 47405,
+ 28318, 37198, 37196, 47400, 47406, 37812, 37810, 48314, 28872,
+ 48316, 37811, 48315, 48313, 48317, 47752, 49219, 38423, 49220,
+ 49217, 38424, 49218, 49221, 38425, 39069, 50152, 50154, 39070,
+ 50153, 39735, 30591, 53576, 53577, 30592, 54566, 53575, 30589,
+ 40420, 40419, 31163, 54567, 31671, 31669, 41026, 55413, 55412,
+ 55415, 31165, 55414, 41608, 32126, 41610, 56096, 56097, 32130,
+ 56094, 56095, 56093, 32129, 42109, 56761, 43360, 56760, 57353,
+ 56759, 42496, 57354, 57355, 57356, 57357, 56092, 42854, 57848,
+ 57849, 43144, 58249, 58591, 58590, 59053, 59290, 59469, 45362,
+ 45956, 45953, 45957, 36294, 27449, 27448, 27451, 45955, 27450,
+ 45954, 27842, 46615, 36724, 36726, 36723, 27840, 27845, 27844,
+ 46614, 36725, 27843, 27841, 46616, 27846, 37199, 47408, 47407,
+ 47409, 47410, 47411, 47413, 47414, 28324, 47412, 37814, 28875,
+ 48321, 48322, 48328, 37816, 28879, 48329, 48323, 48320, 48330,
+ 48331, 37815, 48325, 48327, 48326, 48324, 38429, 38426, 29416,
+ 49222, 49223, 49224, 38428, 38427, 48319, 39078, 39071, 50156,
+ 39072, 39076, 39073, 39077, 39074, 39075, 50155, 39079, 39741,
+ 39742, 53579, 39739, 30593, 39743, 39736, 53578, 39738, 50158,
+ 39737, 53583, 53584, 53580, 30595, 53581, 30594, 53582, 54568,
+ 54570, 40424, 54573, 54569, 54571, 31168, 40422, 40425, 40423,
+ 39740, 40421, 54572, 40426, 31672, 55417, 41027, 55418, 56762,
+ 41028, 55416, 41611, 32131, 56104, 41029, 32132, 56100, 56102,
+ 56099, 56103, 56101, 56098, 32509, 42111, 42110, 56763, 57360,
+ 57361, 57358, 33085, 57850, 57852, 57359, 57851, 58251, 58252,
+ 58250, 44593, 45363, 44922, 27134, 27135, 46617, 28325, 36295,
+ 47415, 48332, 53585, 54575, 54574, 45364, 45365, 35432, 27848,
+ 37200, 37817, 38430, 50159, 53586, 53588, 39080, 54577, 54576,
+ 55419, 35532, 45366, 45958, 45959, 37201, 47416, 28880, 37820,
+ 37819, 29418, 49225, 50161, 39085, 39081, 39086, 39083, 39082,
+ 39084, 30002, 50160, 39746, 39747, 39748, 39744, 39745, 53589,
+ 40428, 40427, 31169, 31170, 54579, 54580, 54578, 41030, 31675,
+ 55423, 55420, 55421, 41612, 31677, 56105, 55422, 56766, 41613,
+ 56107, 56106, 56765, 42112, 56764, 33087, 57853, 33445, 43519,
+ 43642, 35960, 35959, 45369, 45368, 36298, 36296, 36297, 27851,
+ 46623, 27850, 46619, 36727, 46625, 46620, 46622, 46621, 46626,
+ 46618, 36728, 47418, 28328, 28327, 28329, 47420, 37202, 47422,
+ 47421, 47419, 47417, 37821, 48334, 48335, 37822, 48336, 48333,
+ 49227, 49231, 38432, 38433, 49226, 49236, 49234, 49232, 38434,
+ 49233, 49229, 49235, 49228, 49230, 39089, 39090, 39087, 30597,
+ 50163, 39091, 39088, 39092, 50164, 39749, 53591, 39752, 53594,
+ 39751, 39750, 30598, 39754, 53590, 53595, 39753, 53592, 40431,
+ 40434, 40430, 40432, 40433, 54584, 54582, 54581, 54583, 40429,
+ 41031, 41032, 41033, 55424, 31682, 31683, 41035, 41034, 55426,
+ 55425, 22908, 56110, 41617, 41614, 32135, 56112, 41036, 56111,
+ 41615, 41616, 56108, 56109, 56767, 42113, 42114, 56769, 56768,
+ 57364, 57363, 57362, 42855, 57854, 57855, 43145, 58253, 33446,
+ 35433, 45370, 36299, 47423, 48337, 47919, 49239, 50167, 50166,
+ 53596, 54585, 57365, 35536, 35534, 45371, 45372, 44595, 35535,
+ 35533, 35708, 35707, 44926, 44925, 44924, 44923, 45962, 45961,
+ 45960, 35965, 35969, 45375, 27858, 45384, 45385, 45373, 35968,
+ 45377, 35964, 35962, 45382, 35966, 27146, 45379, 45386, 45383,
+ 27045, 45376, 45378, 35967, 45381, 45374, 46630, 46628, 27852,
+ 35961, 46629, 45978, 27460, 36303, 45973, 36300, 36307, 45974,
+ 27461, 47427, 45972, 27458, 45976, 27463, 45970, 36305, 45971,
+ 36306, 36301, 27863, 36304, 45963, 45966, 45967, 45969, 45965,
+ 45980, 45977, 45975, 45981, 45979, 47426, 47425, 47428, 47429,
+ 46639, 47424, 36730, 27853, 28330, 27860, 46641, 36735, 27859,
+ 46637, 36737, 46633, 36739, 37823, 36738, 46632, 36729, 46634,
+ 27855, 48342, 36732, 36731, 36569, 46638, 46636, 46635, 46642,
+ 48341, 48339, 48340, 48338, 45968, 36734, 36740, 36733, 37213,
+ 47434, 47432, 37204, 28339, 37205, 27857, 37210, 28331, 28346,
+ 38435, 28345, 47430, 37207, 47438, 28334, 37214, 37215, 47439,
+ 47437, 28340, 37211, 47440, 47441, 47435, 47436, 49240, 49241,
+ 49242, 37212, 37208, 37209, 48350, 37827, 48344, 37824, 48358,
+ 48349, 28885, 37829, 48362, 48343, 50170, 37826, 48363, 49246,
+ 28897, 37831, 48368, 48361, 48359, 48366, 37825, 39094, 48345,
+ 48354, 48357, 48351, 48356, 48360, 48348, 48365, 48346, 48347,
+ 50168, 50172, 50169, 37828, 48353, 37206, 37830, 37833, 37834,
+ 48364, 37836, 48352, 50173, 50171, 38444, 29422, 38451, 38446,
+ 38436, 38440, 38452, 49254, 29421, 49243, 28895, 38447, 38439,
+ 49248, 29425, 49250, 29423, 49256, 49244, 38454, 49245, 49249,
+ 38448, 49253, 38442, 38441, 38450, 38449, 49251, 38437, 49255,
+ 29432, 49258, 49257, 53597, 53598, 49252, 38445, 38443, 30021,
+ 39100, 30029, 30020, 39106, 50175, 39099, 30027, 39107, 39104,
+ 30026, 39096, 39102, 30011, 30028, 39097, 50182, 50177, 39095,
+ 50179, 39098, 50178, 39101, 54586, 39105, 30025, 50176, 50181,
+ 49879, 38438, 39103, 30600, 39758, 53599, 30604, 53606, 39757,
+ 30606, 55429, 53602, 39759, 53600, 30607, 55427, 39755, 53603,
+ 53601, 53604, 53605, 55428, 50174, 39756, 54595, 40442, 40437,
+ 31185, 31174, 40436, 31176, 54590, 54597, 40440, 40441, 31182,
+ 39760, 40439, 54588, 54596, 40444, 54593, 42115, 31177, 54598,
+ 53607, 54591, 54592, 54587, 54589, 54594, 56113, 56770, 56114,
+ 40445, 40435, 40446, 40443, 40438, 56118, 41041, 41040, 55431,
+ 31691, 31687, 31686, 41039, 41037, 32510, 56772, 41045, 55434,
+ 55177, 55432, 56771, 56774, 41044, 55430, 41043, 41038, 55433,
+ 56775, 32138, 41621, 41618, 41620, 41623, 56115, 41625, 56117,
+ 41622, 56120, 41619, 42497, 41626, 56116, 56194, 32136, 32511,
+ 56778, 56784, 42116, 42117, 41624, 56779, 56783, 56785, 56777,
+ 56781, 56780, 56782, 56776, 56786, 57368, 42501, 42500, 32816,
+ 32814, 42498, 57367, 57366, 33093, 57856, 42856, 58593, 57929,
+ 58592, 33292, 33290, 58254, 58594, 43362, 58596, 58598, 58599,
+ 43361, 58595, 33447, 58600, 58601, 58872, 43520, 58873, 43643,
+ 59368, 43788, 43840, 44929, 26870, 46643, 48369, 48370, 50184,
+ 56122, 42858, 59436, 43909, 44597, 44931, 26871, 44930, 45387,
+ 36309, 45983, 36741, 46645, 27864, 46646, 46644, 47445, 47444,
+ 48372, 48373, 49259, 39108, 30613, 30614, 39761, 53608, 31186,
+ 40447, 55435, 41047, 41046, 42118, 32514, 42504, 56787, 42502,
+ 42503, 59174, 44932, 45388, 45389, 46649, 46647, 46648, 37216,
+ 28347, 48374, 38455, 39109, 39762, 53609, 39763, 54600, 31187,
+ 40448, 31692, 41627, 41628, 26873, 44598, 44435, 45390, 45391,
+ 27866, 45984, 46650, 46656, 46652, 46651, 27867, 46654, 46655,
+ 47448, 37217, 46653, 47447, 47450, 47449, 37837, 48375, 37838,
+ 39110, 49263, 49262, 49260, 50185, 50191, 50186, 50187, 39764,
+ 53610, 50188, 50192, 50189, 53611, 53612, 53613, 50190, 39111,
+ 39765, 39766, 53614, 53615, 54601, 53616, 53617, 54603, 54602,
+ 41049, 54606, 54605, 54604, 41048, 41051, 55436, 56125, 56124,
+ 41052, 32140, 56123, 56788, 41630, 41629, 56789, 57370, 42119,
+ 42506, 42507, 42508, 57369, 56790, 42120, 57371, 57372, 42859,
+ 58255, 58256, 58602, 43521, 59054, 43644, 43646, 43645, 59437,
+ 59438, 59552, 43945, 45985, 27869, 27868, 46657, 46658, 46659,
+ 36742, 36743, 47451, 47452, 47280, 48379, 48378, 48380, 39112,
+ 30030, 38778, 30031, 49264, 50193, 50195, 50194, 53618, 53620,
+ 53619, 54607, 40449, 54608, 55437, 41631, 56127, 56126, 42509,
+ 42860, 58603, 43363, 39767, 39768, 57373, 58604, 58874, 59056,
+ 43789, 35709, 27152, 27151, 45394, 45393, 45392, 35970, 27464,
+ 27468, 27467, 45986, 45988, 45987, 46665, 36744, 46664, 46660,
+ 36745, 27873, 27872, 46661, 46662, 46663, 37219, 28350, 28352,
+ 47457, 37220, 47453, 47454, 37218, 37839, 48384, 48383, 28351,
+ 28907, 28905, 28906, 28908, 48385, 38456, 49267, 38457, 49265,
+ 49266, 49268, 49269, 38459, 50202, 39116, 39114, 30035, 50197,
+ 50201, 50198, 39113, 39776, 30620, 30619, 39775, 39772, 39773,
+ 39777, 39769, 53626, 53624, 39778, 53621, 53623, 53625, 53622,
+ 39774, 39770, 39771, 40453, 40450, 40454, 54611, 40451, 54614,
+ 54612, 54616, 40452, 54615, 54613, 54610, 55439, 31694, 41059,
+ 41053, 41056, 41055, 41057, 41058, 32142, 41638, 56129, 41632,
+ 41637, 41640, 41636, 32143, 32144, 41633, 41634, 41639, 32141,
+ 56130, 56128, 41635, 56791, 42124, 42123, 42122, 42121, 56792,
+ 56793, 42510, 57374, 42862, 42861, 57859, 43146, 43147, 33293,
+ 58257, 57857, 57858, 33448, 58605, 59058, 59057, 59175, 43790,
+ 33792, 45989, 37818, 57375, 37221, 37222, 47458, 37223, 49270,
+ 49271, 49272, 50204, 50205, 50203, 53628, 53627, 53629, 40455,
+ 40456, 54618, 54617, 42512, 42511, 57376, 35434, 44391, 26709,
+ 44603, 44604, 45395, 44601, 35537, 44600, 44599, 26876, 26877,
+ 26881, 44933, 26879, 44936, 44934, 44935, 44937, 45398, 27163,
+ 27158, 27160, 35973, 27164, 27159, 27156, 35971, 45399, 35972,
+ 27155, 46666, 44787, 45402, 35975, 27157, 45397, 45401, 46668,
+ 46667, 45396, 27474, 27470, 27471, 27472, 36314, 46000, 45992,
+ 27475, 45998, 45994, 36312, 45990, 45997, 45995, 45999, 46002,
+ 46003, 36310, 36313, 36311, 45901, 45996, 45400, 48387, 36751,
+ 27877, 27878, 27889, 36747, 36749, 36753, 27875, 36746, 36756,
+ 27882, 36760, 27879, 27892, 36757, 27887, 46685, 46686, 36758,
+ 46688, 36755, 27893, 46680, 46679, 48386, 47471, 46676, 36752,
+ 46675, 46672, 46670, 46681, 46683, 36750, 46678, 36759, 36748,
+ 46674, 46682, 46684, 46689, 46671, 37234, 37237, 37230, 28373,
+ 37235, 28358, 28371, 28365, 47487, 28375, 28378, 47475, 47466,
+ 47472, 37226, 47464, 47460, 28357, 37241, 47459, 47470, 47493,
+ 28361, 47491, 48435, 47489, 46687, 48403, 28356, 37224, 28368,
+ 47462, 47473, 37239, 47484, 47490, 47483, 47478, 37238, 47488,
+ 47463, 47476, 37240, 38460, 49273, 49274, 47485, 47486, 47469,
+ 37225, 37242, 47479, 37232, 37236, 37229, 48432, 47494, 47495,
+ 47467, 47465, 37848, 47468, 37231, 47474, 47482, 47492, 37228,
+ 37840, 28910, 37860, 37861, 37853, 37863, 37864, 37854, 28918,
+ 48405, 48397, 48420, 48395, 48390, 37850, 37858, 37859, 48406,
+ 48404, 37849, 37865, 37862, 28367, 28912, 28915, 28913, 28923,
+ 37845, 28909, 48388, 48430, 28924, 48389, 37855, 48407, 48431,
+ 48408, 48424, 48425, 28932, 48415, 28930, 48412, 37847, 48417,
+ 48400, 48422, 48399, 48411, 48426, 48418, 37856, 50213, 50208,
+ 50209, 37842, 48413, 48394, 48423, 39117, 48398, 48421, 48402,
+ 48414, 48392, 48419, 28931, 37851, 37846, 48401, 48433, 50206,
+ 37857, 50210, 37852, 48429, 50212, 50211, 48391, 48409, 48312,
+ 37843, 48393, 48396, 48428, 48434, 50207, 37844, 48410, 29456,
+ 49275, 49293, 38491, 49281, 49282, 38465, 29450, 49296, 49313,
+ 29453, 29455, 38482, 49317, 38471, 29444, 29441, 49288, 49322,
+ 38464, 49304, 49308, 38480, 49297, 29445, 29448, 38467, 49290,
+ 29449, 29458, 38478, 29466, 38492, 29451, 38483, 49316, 38476,
+ 29440, 29438, 49324, 29452, 49289, 38485, 38479, 38469, 38475,
+ 49279, 49306, 49302, 49287, 49326, 38474, 49280, 49323, 49278,
+ 38493, 49301, 49292, 49283, 38486, 38490, 38472, 38484, 49305,
+ 49319, 49315, 49295, 49309, 38470, 29446, 49310, 38461, 38477,
+ 38463, 38487, 49286, 29442, 29464, 49299, 38466, 38462, 49294,
+ 49311, 53630, 49320, 38473, 49291, 49307, 49277, 49321, 49325,
+ 49312, 29467, 38481, 38488, 49276, 49285, 49298, 49300, 49314,
+ 49318, 38489, 29463, 49284, 48427, 38468, 30055, 50259, 39140,
+ 50214, 50230, 39146, 30052, 50249, 30039, 50232, 30042, 50223,
+ 39136, 50237, 30038, 50245, 39132, 50227, 50252, 39144, 39141,
+ 50239, 39129, 30043, 50220, 50248, 50240, 50226, 39139, 39128,
+ 39119, 30051, 50228, 30047, 50217, 30046, 30060, 30044, 39134,
+ 53635, 50218, 39121, 39126, 39120, 39143, 39788, 30048, 39138,
+ 50219, 30057, 50243, 39127, 50250, 50233, 50222, 39135, 39125,
+ 54620, 39118, 39123, 50234, 50236, 50238, 50241, 50253, 50256,
+ 50257, 50235, 39137, 50246, 50244, 49327, 39145, 50255, 50258,
+ 50254, 50221, 50216, 50229, 50224, 49303, 50247, 30059, 30037,
+ 39124, 39148, 54619, 39122, 50260, 39142, 39147, 40457, 39133,
+ 53655, 30643, 39779, 30622, 30641, 53674, 39782, 53677, 53666,
+ 53639, 39786, 53652, 53667, 53668, 53653, 53662, 39787, 53658,
+ 30634, 39790, 39795, 53643, 53675, 39793, 39792, 40458, 39794,
+ 39804, 53654, 53665, 53636, 53661, 53648, 39801, 39784, 30640,
+ 53631, 53638, 53647, 53646, 53650, 39780, 53649, 53672, 53641,
+ 39791, 53633, 39781, 39803, 53671, 53645, 53640, 53657, 30635,
+ 39802, 39798, 53663, 40475, 30645, 39796, 53632, 53637, 53642,
+ 53659, 53660, 53676, 30646, 53669, 39797, 53673, 53664, 53651,
+ 39783, 53634, 39800, 39789, 50215, 56131, 54662, 31220, 54631,
+ 31217, 31227, 54664, 40460, 31218, 40480, 54648, 40471, 31194,
+ 31223, 40468, 40478, 54641, 31198, 40477, 40462, 40482, 54632,
+ 40484, 31222, 54621, 40464, 40466, 54657, 40472, 40485, 54642,
+ 54640, 39805, 31193, 40459, 40481, 54650, 54656, 54646, 40487,
+ 40483, 53678, 53670, 54663, 41073, 31213, 54627, 31216, 54635,
+ 40470, 31215, 31197, 39785, 54628, 40469, 54637, 40473, 40463,
+ 54626, 54668, 54659, 31221, 40479, 54623, 31201, 54638, 56132,
+ 54624, 54666, 31225, 54647, 54634, 54644, 40461, 40467, 40474,
+ 54625, 54633, 54636, 54643, 54645, 54652, 54654, 54658, 54660,
+ 54665, 54670, 54671, 54630, 31206, 54639, 54669, 54661, 40488,
+ 40465, 54629, 54622, 54653, 54667, 40486, 40476, 54651, 55451,
+ 31703, 31708, 55443, 56144, 55453, 31717, 31718, 40489, 41068,
+ 41076, 41066, 55470, 55474, 41062, 31719, 31700, 55456, 31714,
+ 41078, 55457, 55462, 55478, 41077, 41082, 55476, 41079, 41061,
+ 41071, 55459, 41075, 55448, 55463, 55469, 41074, 31720, 41060,
+ 41080, 31710, 55475, 41070, 31715, 41064, 41081, 55464, 41069,
+ 55445, 55450, 56142, 55440, 55441, 55480, 55458, 31716, 55473,
+ 55447, 55452, 56795, 55446, 55461, 55468, 54655, 55454, 55460,
+ 55482, 41067, 39806, 31712, 56796, 41063, 41065, 55442, 55466,
+ 55467, 55471, 55479, 31702, 55455, 55472, 55481, 55449, 41653,
+ 56160, 32151, 56161, 41643, 32152, 41083, 41656, 56157, 41646,
+ 41641, 56133, 41642, 41650, 41663, 41666, 56139, 41660, 56155,
+ 32149, 41084, 41665, 41647, 41657, 56146, 41645, 41655, 56162,
+ 32163, 41658, 32161, 32153, 32157, 41661, 41659, 56147, 57377,
+ 56143, 56140, 32162, 56811, 41652, 56136, 56154, 56158, 32160,
+ 55465, 56135, 56137, 56138, 56148, 56151, 56153, 56159, 56163,
+ 56164, 32154, 56149, 41648, 56150, 56794, 41662, 41651, 32156,
+ 56156, 41644, 41649, 41664, 56152, 56134, 42141, 42126, 57400,
+ 42127, 42137, 42133, 32522, 32518, 42142, 42134, 56799, 56812,
+ 42138, 42132, 32521, 42125, 42521, 56810, 42135, 56813, 42136,
+ 56808, 56827, 56824, 56803, 42130, 42140, 56818, 56821, 56805,
+ 56804, 56809, 56814, 57391, 56820, 56800, 56819, 56817, 57378,
+ 42131, 42129, 32515, 42139, 56816, 56807, 56806, 56797, 56798,
+ 56801, 56815, 56823, 56825, 56822, 57401, 57392, 57385, 42519,
+ 42526, 57404, 42520, 42523, 32830, 57395, 42525, 32826, 42518,
+ 42863, 57402, 42514, 57388, 57387, 57383, 42517, 42524, 57384,
+ 32822, 57410, 42515, 57382, 57390, 57405, 57398, 56802, 57408,
+ 42522, 32819, 57396, 42516, 57409, 57397, 42128, 57880, 58258,
+ 57380, 42513, 42527, 57389, 57393, 57394, 57399, 57406, 57407,
+ 57381, 57379, 57403, 57876, 33296, 42871, 57879, 57872, 42867,
+ 33099, 33097, 57866, 33101, 42865, 57877, 42868, 57878, 33096,
+ 42528, 42870, 57868, 57860, 42869, 57875, 57864, 57862, 57873,
+ 33100, 42866, 42872, 42873, 57861, 57869, 57386, 57867, 58271,
+ 42864, 57863, 57870, 57874, 57865, 43149, 33297, 43150, 43152,
+ 43153, 58265, 43154, 33302, 33301, 58272, 58270, 58262, 58612,
+ 43148, 43151, 58264, 33299, 33300, 58263, 33295, 58268, 58260,
+ 58273, 58259, 58261, 58266, 58269, 58608, 58619, 33454, 43365,
+ 33453, 43364, 33450, 33452, 33451, 33449, 43368, 58610, 58620,
+ 43367, 43647, 58614, 43369, 58616, 58617, 58606, 58609, 43366,
+ 58615, 58613, 58611, 58618, 58607, 43524, 43523, 43522, 58875,
+ 43525, 58877, 58881, 58878, 58879, 58884, 58876, 58882, 43649,
+ 58880, 58883, 43650, 59178, 43648, 59176, 59061, 59060, 59059,
+ 59062, 43730, 43731, 59182, 59180, 59179, 59181, 59177, 59165,
+ 33741, 59291, 43791, 33714, 33743, 43841, 33766, 59369, 59370,
+ 43938, 59439, 43873, 59471, 59493, 43944, 43926, 59470, 27478,
+ 46006, 46005, 37245, 37243, 28380, 28379, 47502, 28381, 47503,
+ 47501, 47500, 46690, 48437, 37868, 48438, 38498, 38494, 38495,
+ 49330, 49329, 49328, 39150, 50261, 50265, 30064, 50264, 50266,
+ 50262, 50263, 39151, 30063, 53682, 53680, 54676, 39807, 53679,
+ 53681, 53494, 40493, 40494, 40491, 40492, 31228, 40490, 54677,
+ 54673, 54674, 31231, 31230, 40496, 54675, 40495, 54672, 31721,
+ 55484, 56166, 41670, 32166, 56165, 32164, 56167, 41669, 56829,
+ 56828, 32523, 56830, 57412, 42529, 57413, 57063, 42875, 57411,
+ 42874, 42814, 57883, 57882, 43155, 58565, 33769, 35710, 44940,
+ 27167, 45406, 27482, 46008, 27479, 27481, 46007, 36315, 46010,
+ 46009, 46011, 27480, 36769, 46695, 36765, 36772, 46694, 36766,
+ 36771, 46693, 27899, 27897, 27901, 36767, 46703, 36762, 46698,
+ 36770, 36761, 46697, 36768, 36773, 46701, 46691, 36764, 46692,
+ 46699, 46700, 36763, 46702, 37246, 28386, 47506, 37247, 37248,
+ 37249, 37255, 28389, 28390, 47513, 37251, 28388, 37252, 47507,
+ 37256, 47510, 28391, 28387, 47508, 47511, 47505, 47512, 47514,
+ 37253, 47515, 28392, 47504, 37254, 37250, 37870, 48441, 28940,
+ 48449, 37889, 37875, 37872, 37874, 37877, 37884, 37880, 48450,
+ 48439, 48444, 37873, 37888, 48443, 48452, 48451, 37879, 48440,
+ 37876, 37882, 48454, 48445, 48446, 49333, 37886, 37881, 49343,
+ 37885, 48453, 48448, 37883, 37869, 48442, 28944, 49335, 49334,
+ 29479, 29481, 49339, 29473, 38501, 38504, 38499, 29470, 29472,
+ 38505, 38507, 38503, 38500, 29483, 29469, 49337, 49338, 49331,
+ 49332, 50267, 49336, 49340, 38502, 49341, 56850, 49342, 49344,
+ 39152, 39157, 39162, 39158, 39163, 30080, 39156, 30078, 50292,
+ 39166, 30072, 39160, 30069, 50281, 50269, 50280, 30081, 39165,
+ 50270, 50276, 39155, 50287, 39164, 39159, 50286, 50290, 39167,
+ 50279, 50288, 50272, 39168, 39169, 50277, 50291, 39161, 50271,
+ 50284, 50285, 50275, 39153, 50273, 39154, 50278, 50283, 29477,
+ 50289, 50274, 30656, 53708, 39812, 30657, 30654, 53697, 30663,
+ 39824, 53696, 53685, 39810, 53684, 53694, 53704, 39816, 30661,
+ 30653, 53705, 53693, 39815, 53700, 53690, 53703, 40497, 30655,
+ 30652, 39821, 39819, 39809, 39818, 39817, 53683, 39820, 30075,
+ 39811, 39823, 39822, 30664, 53711, 53689, 53686, 53709, 53698,
+ 53710, 53701, 53688, 50282, 53695, 53702, 39813, 30650, 39808,
+ 53692, 53706, 53699, 53691, 40499, 31244, 40505, 40504, 31233,
+ 40503, 40500, 54691, 54706, 40506, 31247, 40510, 31248, 31239,
+ 31241, 40511, 54690, 31234, 54684, 31238, 54705, 40508, 40498,
+ 40514, 40501, 55485, 40507, 54686, 31245, 40509, 54693, 54709,
+ 40502, 54681, 40513, 54697, 31246, 39825, 54688, 54682, 40512,
+ 54699, 31242, 54704, 54711, 54679, 54700, 54680, 54701, 54692,
+ 54707, 54695, 54685, 54710, 54702, 54687, 54703, 54694, 54683,
+ 54689, 31734, 41086, 41089, 31730, 55509, 55495, 31741, 31737,
+ 55499, 55493, 55512, 31739, 55497, 53712, 31725, 41094, 55507,
+ 55490, 31738, 55506, 41088, 41092, 55510, 31735, 55498, 55492,
+ 41096, 31728, 55491, 31726, 55489, 55511, 41087, 55487, 55486,
+ 55500, 31736, 41090, 41091, 55496, 55494, 55502, 55505, 55508,
+ 55488, 41085, 55501, 55503, 41093, 32176, 32170, 56170, 56182,
+ 56173, 56189, 41676, 41677, 41097, 32171, 41689, 56174, 32169,
+ 41678, 32168, 32173, 41672, 41675, 41686, 32167, 41683, 56171,
+ 41671, 41674, 41684, 56172, 56177, 56176, 41673, 56196, 56192,
+ 41688, 56195, 41682, 41685, 56190, 41679, 56193, 41680, 56186,
+ 56183, 56178, 56184, 56169, 56175, 56168, 56179, 56191, 56187,
+ 56185, 32175, 56188, 41687, 32531, 56849, 56832, 56839, 56851,
+ 56833, 56848, 56852, 32526, 42145, 42143, 56841, 56846, 56844,
+ 42147, 56836, 56847, 56843, 56845, 57414, 56840, 56853, 56854,
+ 56842, 42148, 56835, 56838, 56831, 56834, 32525, 32530, 56837,
+ 56197, 57424, 57429, 42532, 57415, 32839, 42531, 42536, 57427,
+ 57419, 42535, 57423, 42537, 42538, 57422, 42533, 57421, 57426,
+ 57420, 57416, 42534, 57418, 57896, 57417, 57430, 57425, 33102,
+ 33107, 57884, 57889, 42878, 57894, 57887, 57890, 42877, 57892,
+ 42876, 42879, 57885, 33106, 57888, 33108, 33104, 57891, 42881,
+ 57897, 57428, 57893, 33105, 57898, 42880, 42882, 57895, 57886,
+ 43159, 33303, 43157, 43156, 58282, 58277, 43158, 43162, 43161,
+ 58275, 43164, 43166, 43163, 58274, 33304, 58285, 58287, 58286,
+ 58279, 58280, 43165, 43167, 58283, 58288, 43160, 58278, 58276,
+ 43371, 33455, 33456, 58622, 43372, 33458, 58624, 58621, 43373,
+ 58627, 43370, 58885, 58625, 33459, 58626, 43375, 58281, 43374,
+ 43533, 58886, 33557, 43532, 43530, 58887, 43527, 33559, 58888,
+ 43531, 43529, 33561, 43534, 43528, 43651, 33651, 43655, 43657,
+ 33558, 59063, 43653, 59067, 59066, 59068, 43654, 43656, 59064,
+ 43652, 59186, 59184, 59187, 59185, 59188, 59297, 59295, 43792,
+ 59294, 59298, 59183, 59292, 59300, 59293, 59299, 59296, 59373,
+ 33771, 59374, 43842, 43843, 59371, 59372, 43874, 59440, 59441,
+ 43875, 33793, 59473, 59472, 59512, 35976, 45408, 45407, 27483,
+ 46705, 36774, 46708, 46707, 48455, 48457, 38508, 49347, 49345,
+ 49348, 49346, 39172, 39170, 39171, 50295, 50293, 53713, 39826,
+ 53714, 53715, 50294, 40516, 40517, 40515, 54712, 54713, 41100,
+ 41099, 32177, 32178, 56198, 56200, 32179, 56199, 42149, 42539,
+ 57431, 57899, 58290, 58289, 58889, 59474, 27168, 45409, 27169,
+ 46012, 46013, 36316, 36775, 46710, 46709, 36776, 47516, 37890,
+ 48460, 48459, 48458, 49352, 49350, 29484, 49351, 49349, 30083,
+ 39827, 50296, 50297, 31742, 55513, 32180, 56201, 56855, 57900,
+ 58629, 35977, 45410, 45411, 45412, 36318, 46014, 27484, 27486,
+ 36320, 46016, 36319, 46015, 36317, 36321, 46716, 36781, 27904,
+ 46718, 46722, 36784, 46723, 46724, 27903, 46712, 36785, 46714,
+ 36777, 46719, 46715, 46720, 46717, 36780, 46713, 46711, 36779,
+ 46721, 46725, 46726, 28395, 37899, 28398, 28949, 37261, 28396,
+ 47525, 37262, 37265, 37259, 37260, 37258, 47526, 47527, 37257,
+ 47520, 47522, 47521, 47518, 47517, 47524, 47519, 37263, 47523,
+ 37264, 37898, 48468, 48466, 37895, 48464, 37896, 37900, 28951,
+ 48465, 48461, 28950, 48463, 37897, 37894, 37892, 38513, 37891,
+ 48462, 48467, 48469, 37893, 38519, 38511, 38515, 29490, 38520,
+ 38512, 38516, 29488, 38514, 38518, 49364, 29489, 49359, 49357,
+ 49365, 38517, 38509, 49353, 49356, 49362, 49355, 49366, 49354,
+ 49358, 38510, 30095, 30091, 50302, 50308, 30088, 39173, 39176,
+ 30087, 39175, 37901, 50309, 39177, 50300, 50298, 50299, 50307,
+ 50306, 39174, 50304, 39178, 50305, 50301, 30098, 50310, 50303,
+ 30094, 39831, 53725, 30676, 39834, 53728, 30097, 53727, 39830,
+ 30667, 53726, 54715, 39832, 53731, 53716, 30680, 30670, 30672,
+ 53724, 30679, 30678, 39828, 53729, 53723, 53717, 39829, 53720,
+ 39833, 53722, 53721, 53718, 53719, 53730, 40525, 40524, 54718,
+ 40520, 40523, 54714, 31256, 54716, 31259, 55525, 40522, 40521,
+ 54717, 31253, 54719, 54722, 31252, 40518, 54723, 40519, 54721,
+ 54720, 41107, 41108, 55514, 41104, 55520, 55527, 31747, 41101,
+ 41102, 41106, 41105, 55522, 55518, 55526, 56208, 55519, 53732,
+ 55521, 55523, 41109, 55515, 55517, 41103, 56202, 32184, 56209,
+ 56211, 41700, 41696, 56210, 32190, 41693, 41694, 41704, 32192,
+ 32181, 56207, 41692, 32186, 32191, 41702, 56206, 56204, 41690,
+ 32182, 41111, 41691, 56205, 56214, 56203, 41698, 41699, 41110,
+ 41701, 41703, 41697, 56861, 42152, 42153, 32532, 56866, 56867,
+ 42150, 42151, 56857, 56858, 56860, 56864, 56865, 56859, 56863,
+ 32534, 56862, 56212, 57432, 42543, 57439, 42546, 42883, 42540,
+ 32842, 57436, 42541, 57435, 57901, 57433, 42544, 56856, 42545,
+ 42547, 57437, 57434, 42548, 57905, 57907, 42885, 33109, 57909,
+ 57908, 42884, 57903, 57904, 33110, 57906, 58296, 57902, 33308,
+ 58293, 33307, 33306, 43168, 58291, 58292, 58295, 58294, 43535,
+ 58892, 58891, 58890, 43658, 59071, 59070, 59069, 59190, 43732,
+ 59191, 59189, 59376, 59302, 59301, 59375, 43897, 59475, 59513,
+ 43940, 59546, 35711, 45413, 27487, 36786, 27907, 46727, 47528,
+ 49367, 30099, 50311, 50312, 50313, 53733, 54724, 54725, 55528,
+ 42154, 57440, 57910, 35978, 45414, 27910, 36787, 37268, 37269,
+ 47529, 47530, 37271, 37266, 28405, 28409, 37267, 37270, 48472,
+ 28956, 48475, 48474, 37903, 48471, 28955, 48470, 49371, 38522,
+ 38524, 38523, 49368, 49372, 38525, 49370, 50314, 39184, 39181,
+ 39185, 30102, 50315, 39182, 50316, 39183, 30684, 53736, 39837,
+ 30686, 39836, 53740, 39838, 49369, 53739, 39835, 39839, 53737,
+ 53735, 53734, 53738, 40529, 40528, 40527, 31262, 54727, 40533,
+ 55530, 31263, 31269, 31268, 40530, 40534, 54726, 40526, 40532,
+ 55529, 41705, 41114, 41113, 55533, 55532, 55534, 55531, 41707,
+ 32196, 32194, 56215, 41706, 56216, 56868, 56869, 42550, 57442,
+ 57441, 42549, 57911, 33310, 43170, 33309, 43536, 58894, 58893,
+ 43660, 43659, 59072, 33652, 43793, 43933, 59553, 45415, 45416,
+ 46017, 36323, 27911, 46729, 27912, 46728, 47540, 28414, 37274,
+ 37273, 47532, 47536, 28410, 47537, 37272, 47533, 28415, 47539,
+ 47531, 47535, 47538, 47534, 37904, 28957, 48477, 48480, 37905,
+ 48476, 48479, 48482, 48478, 28958, 28959, 48481, 38528, 38526,
+ 38527, 49373, 50319, 39188, 30104, 50321, 39186, 39187, 50318,
+ 50322, 50317, 50320, 53743, 39846, 53744, 39845, 39841, 39840,
+ 30691, 30693, 30688, 53746, 30695, 39843, 53745, 53747, 39842,
+ 53741, 53742, 39844, 54731, 54730, 31270, 40535, 31274, 40538,
+ 40540, 31271, 54729, 54728, 40536, 40537, 40539, 54732, 41115,
+ 55536, 55542, 55535, 41119, 41118, 55537, 54733, 41117, 55538,
+ 55539, 55540, 31753, 55543, 55541, 41116, 56218, 56219, 32197,
+ 56217, 56220, 32544, 42155, 32541, 32542, 56870, 56871, 56872,
+ 56873, 32545, 57443, 42886, 57912, 43171, 33311, 58630, 43537,
+ 59192, 33715, 59377, 59378, 43876, 59442, 35538, 35539, 45417,
+ 46736, 27918, 27914, 27913, 27919, 36788, 46733, 46734, 46732,
+ 46735, 46731, 28419, 47543, 47552, 28417, 47548, 37283, 37280,
+ 47550, 28421, 37275, 28425, 47558, 37276, 47556, 47544, 47557,
+ 37279, 47553, 47554, 47547, 47559, 47551, 47542, 47541, 47555,
+ 47545, 37281, 48493, 28969, 28965, 37908, 48488, 48487, 48490,
+ 48483, 28964, 48497, 28975, 28976, 37909, 48486, 48495, 48489,
+ 48496, 28974, 37906, 37907, 48491, 48494, 48485, 48498, 48492,
+ 38530, 29493, 29495, 49387, 38531, 37910, 38534, 29502, 29501,
+ 49381, 49392, 49378, 49390, 29494, 29496, 38537, 38529, 29504,
+ 49384, 49377, 49388, 49383, 49380, 29503, 38535, 49389, 38533,
+ 38532, 49385, 49391, 38536, 49374, 49376, 29500, 49375, 49386,
+ 49379, 50335, 30110, 39193, 30106, 39191, 39194, 30109, 30119,
+ 50323, 50333, 30112, 50340, 30115, 50336, 30118, 50327, 39192,
+ 50338, 50326, 30120, 50337, 50325, 39189, 39190, 50329, 30122,
+ 50331, 38538, 50332, 50334, 50324, 50339, 50330, 53768, 39865,
+ 53748, 39851, 39857, 53754, 53757, 53769, 53765, 53753, 39862,
+ 30698, 39864, 39858, 39852, 39855, 53761, 39859, 30704, 39861,
+ 30709, 53771, 53760, 53752, 39849, 39853, 53766, 53750, 39860,
+ 39854, 39848, 39850, 39847, 53759, 53758, 53749, 53755, 39856,
+ 53764, 53751, 39863, 53770, 53767, 53763, 53756, 54745, 40545,
+ 31288, 54757, 31279, 31276, 31283, 54748, 54756, 54742, 40542,
+ 54741, 40541, 54735, 31287, 31278, 54744, 31286, 54736, 31285,
+ 54746, 54753, 31277, 54755, 54737, 31280, 54734, 54758, 54739,
+ 54738, 54747, 54749, 40544, 54751, 31284, 54743, 40543, 54759,
+ 54740, 54750, 31755, 41127, 41126, 55552, 31756, 41129, 31758,
+ 55548, 31754, 41122, 41128, 41123, 55545, 55558, 31759, 56221,
+ 41124, 55554, 55546, 41131, 55560, 55551, 55547, 41125, 31761,
+ 55550, 55553, 55555, 55556, 31760, 41120, 55559, 41121, 55557,
+ 55544, 55561, 55562, 55549, 32209, 32201, 56234, 32203, 56232,
+ 41713, 56237, 56222, 32211, 41711, 40546, 32204, 41712, 56235,
+ 56229, 41709, 32198, 56238, 32200, 41710, 32208, 56236, 56226,
+ 56230, 56879, 56227, 32207, 56231, 56228, 56239, 56223, 56224,
+ 56233, 32210, 56225, 42156, 42158, 56884, 32553, 56881, 56883,
+ 32558, 32548, 42159, 32556, 56889, 32557, 42157, 32554, 56875,
+ 56878, 56240, 56877, 56890, 57452, 56888, 32551, 42551, 56876,
+ 32559, 56880, 57454, 56885, 56886, 56882, 56887, 32547, 32847,
+ 32848, 42553, 42552, 57446, 42554, 57448, 32846, 57444, 42162,
+ 57451, 57447, 57453, 57455, 57445, 57449, 57457, 57456, 57458,
+ 57913, 33121, 57923, 57916, 57922, 33111, 57917, 42892, 57915,
+ 57918, 33115, 42889, 42888, 33122, 58306, 58300, 33113, 42891,
+ 42890, 57920, 57914, 57919, 42887, 57924, 43172, 43174, 43177,
+ 43376, 33314, 58304, 33317, 43176, 33316, 43175, 58302, 58311,
+ 57925, 43173, 58301, 58305, 58310, 33313, 58309, 58307, 58308,
+ 33462, 33463, 58631, 43379, 43378, 43538, 58633, 58634, 58635,
+ 58632, 58313, 58898, 58899, 58896, 33564, 58897, 58901, 58895,
+ 58900, 58902, 33654, 59074, 43661, 59075, 59073, 43794, 59194,
+ 59193, 43734, 33745, 59303, 59379, 33773, 59349, 59443, 59549,
+ 35712, 27921, 36789, 36790, 28427, 28428, 28426, 47560, 28977,
+ 38539, 38540, 49393, 30124, 39867, 30710, 39868, 39866, 40547,
+ 54761, 54760, 55563, 41132, 56241, 56891, 56894, 42163, 56892,
+ 42164, 56893, 57459, 56895, 42893, 43795, 59494, 46018, 46738,
+ 46737, 28978, 37911, 48500, 38541, 29506, 49694, 30127, 50341,
+ 30128, 53775, 53774, 53772, 39870, 39869, 53773, 40548, 31291,
+ 54762, 40549, 54103, 41135, 55566, 41133, 55565, 41134, 55564,
+ 41714, 32214, 56243, 32213, 41136, 56897, 42166, 56898, 56244,
+ 56245, 42165, 42557, 42556, 42558, 42555, 42894, 43178, 43539,
+ 43662, 43796, 59444, 44607, 35540, 36325, 36793, 36792, 46740,
+ 46739, 47563, 47561, 37288, 47564, 47562, 28979, 48501, 28980,
+ 37913, 37912, 48503, 37914, 48506, 48502, 29508, 38544, 29507,
+ 49395, 49396, 38546, 38542, 38545, 49394, 48505, 38543, 38547,
+ 50342, 50343, 30130, 30129, 50346, 39196, 39195, 50348, 50347,
+ 50344, 50345, 39873, 30713, 53776, 53778, 39872, 39874, 53780,
+ 53779, 39197, 39871, 53777, 39198, 53781, 40552, 40553, 40551,
+ 54764, 31293, 54765, 54767, 54766, 40550, 54763, 41138, 41139,
+ 41140, 41137, 55569, 55567, 55568, 32216, 41715, 41716, 56246,
+ 56247, 56248, 32562, 42167, 40554, 56899, 32564, 42562, 42559,
+ 57460, 42561, 42560, 33125, 42895, 57926, 57927, 58314, 58637,
+ 58315, 58316, 58638, 58639, 43179, 58903, 59076, 58904, 43663,
+ 43735, 59445, 59536, 36326, 46741, 37291, 37290, 28434, 37289,
+ 28433, 47568, 47566, 48508, 37915, 37919, 37917, 37921, 37918,
+ 48511, 48509, 37920, 37916, 48510, 48507, 29513, 29514, 29511,
+ 49399, 38550, 49398, 38549, 29510, 29512, 49400, 38548, 50354,
+ 50349, 39202, 39200, 39199, 50352, 39201, 50351, 50353, 50350,
+ 50355, 39876, 39875, 30716, 39878, 39877, 39879, 30717, 53782,
+ 53783, 30718, 53784, 54775, 40556, 54769, 54771, 54772, 31295,
+ 40555, 54773, 40557, 54770, 54768, 54774, 31766, 41144, 55570,
+ 41143, 31765, 41141, 41145, 41142, 56249, 32218, 56250, 32217,
+ 41717, 56900, 41718, 42170, 56901, 42169, 56904, 57462, 56903,
+ 42168, 42564, 42563, 57461, 42897, 42565, 42896, 57928, 58317,
+ 58641, 58640, 43797, 36327, 27489, 46019, 27923, 46742, 36794,
+ 36795, 46743, 47573, 47575, 47570, 47571, 47569, 47574, 37292,
+ 47576, 28438, 47572, 28437, 48514, 28983, 37922, 37924, 48517,
+ 48515, 48516, 49404, 37923, 48518, 48513, 37926, 29517, 49401,
+ 49406, 49403, 38555, 38551, 49411, 49402, 38554, 38556, 38557,
+ 49405, 49413, 49415, 38558, 49412, 49414, 49408, 38553, 50358,
+ 30132, 39203, 50357, 50359, 50365, 50356, 50362, 39204, 30134,
+ 50364, 49410, 53786, 53788, 39205, 30722, 53787, 39881, 30723,
+ 39882, 53792, 53791, 53785, 53790, 54781, 40559, 54778, 54777,
+ 40560, 54782, 54785, 31299, 54779, 40558, 50361, 54784, 54783,
+ 54776, 54780, 40561, 55571, 41146, 40808, 41148, 40563, 41147,
+ 31768, 55577, 55573, 55575, 55576, 55574, 56254, 41724, 56257,
+ 41720, 56252, 56253, 56260, 41722, 41719, 41723, 56256, 56255,
+ 56251, 56259, 41721, 56908, 56912, 42172, 41725, 56911, 56258,
+ 42171, 32566, 56909, 42173, 56914, 56913, 42175, 56905, 56910,
+ 56907, 56915, 56906, 42174, 32854, 42567, 32853, 42566, 57463,
+ 57465, 57464, 42898, 33126, 42899, 42900, 57930, 58318, 43182,
+ 43181, 58321, 58319, 58320, 58642, 33465, 43180, 58643, 58644,
+ 58905, 58907, 58906, 59195, 45418, 46020, 46021, 37293, 48519,
+ 28987, 49416, 39207, 53793, 40565, 40564, 54786, 41150, 41151,
+ 41149, 41726, 56262, 56917, 56916, 42901, 58645, 45419, 45420,
+ 46022, 27490, 36798, 46747, 46746, 36799, 46745, 27926, 37300,
+ 47579, 37294, 28442, 37297, 37302, 37301, 28443, 47577, 47578,
+ 37298, 37295, 37299, 37296, 37930, 37929, 37933, 37928, 48523,
+ 48520, 38564, 37932, 37927, 48522, 28989, 37934, 49417, 48524,
+ 48521, 49419, 38561, 29518, 49421, 29520, 38566, 38560, 38568,
+ 38562, 29519, 49423, 49422, 38565, 49418, 49420, 50366, 50367,
+ 30139, 39209, 39213, 50371, 39208, 39211, 39214, 50370, 50368,
+ 39216, 30140, 39212, 50375, 39210, 50372, 50369, 39889, 39883,
+ 30725, 39886, 39885, 39884, 39887, 53798, 39893, 39890, 53800,
+ 39888, 53795, 53799, 53797, 50373, 53801, 54789, 39892, 39891,
+ 53802, 53794, 31304, 31305, 31309, 54791, 40570, 31302, 31303,
+ 31308, 54792, 31306, 54788, 54787, 40569, 40571, 54793, 54795,
+ 54794, 40572, 40567, 40568, 41156, 41158, 31773, 41157, 31775,
+ 31772, 41159, 31771, 41153, 31774, 41155, 41152, 55579, 41160,
+ 55578, 41730, 41733, 32222, 56266, 56265, 41727, 41731, 41729,
+ 41728, 41734, 41735, 56270, 56269, 41732, 56267, 56264, 56268,
+ 56263, 40574, 42177, 42181, 42183, 32569, 32567, 42178, 42182,
+ 42180, 42176, 56919, 42184, 42179, 56918, 56920, 32855, 32857,
+ 32861, 32860, 42568, 57466, 57468, 42569, 57467, 33128, 42903,
+ 42904, 57934, 57932, 57931, 57933, 42902, 43183, 43186, 33320,
+ 43185, 43184, 43380, 43381, 58322, 58646, 58647, 43540, 43541,
+ 43542, 33657, 59077, 43798, 43844, 45422, 45421, 46024, 36328,
+ 46023, 46750, 27928, 46751, 46749, 36801, 36800, 46748, 46752,
+ 28450, 47582, 28445, 37306, 47586, 37310, 47589, 37304, 37308,
+ 47591, 47592, 37307, 47590, 47581, 47585, 47580, 47584, 47588,
+ 37309, 37303, 47583, 37945, 37936, 37937, 37940, 48530, 37935,
+ 48527, 28997, 37942, 37938, 37946, 37939, 48528, 49438, 37947,
+ 48526, 48529, 37943, 38572, 38570, 49430, 38571, 38573, 49433,
+ 49429, 38578, 38576, 49427, 49426, 38569, 49428, 49431, 49435,
+ 38581, 49425, 49436, 38574, 38583, 38579, 49432, 38580, 38577,
+ 49434, 39218, 49437, 49424, 50385, 39232, 30143, 39220, 39228,
+ 39219, 39901, 39224, 50376, 50380, 39231, 39225, 39222, 39229,
+ 39230, 39226, 38575, 39221, 39233, 50383, 39235, 50378, 39236,
+ 50377, 50379, 50382, 50384, 50381, 39223, 53805, 30733, 39899,
+ 39894, 39897, 39902, 53804, 53808, 30735, 53812, 30734, 39898,
+ 39900, 30741, 39904, 39905, 30146, 53814, 39896, 53810, 53807,
+ 53811, 53806, 53809, 39903, 39907, 39908, 39234, 54802, 40577,
+ 39237, 40586, 31311, 54797, 40580, 54801, 54804, 54799, 40576,
+ 54798, 54806, 39906, 54807, 40584, 40585, 40575, 40578, 54800,
+ 40582, 40581, 54805, 31312, 40583, 31313, 54803, 41167, 41170,
+ 41162, 55585, 41163, 41169, 41165, 31780, 55583, 56282, 55588,
+ 41171, 31785, 55580, 55587, 55589, 41166, 31778, 55586, 54808,
+ 55584, 31786, 55582, 41164, 41161, 56277, 32227, 56281, 32226,
+ 41736, 41737, 41748, 41741, 32228, 41747, 41743, 56274, 42191,
+ 56280, 56271, 41749, 56273, 41739, 56276, 41738, 41744, 32354,
+ 32233, 41740, 56286, 41742, 56275, 56284, 56283, 56285, 56272,
+ 41746, 56278, 55581, 41750, 42185, 56938, 42190, 42192, 56941,
+ 42195, 56928, 41745, 42189, 56925, 42188, 42193, 32576, 56921,
+ 32230, 56926, 56279, 56931, 42194, 56927, 56939, 56922, 56929,
+ 42186, 42187, 56934, 56935, 56936, 56932, 42197, 42196, 56933,
+ 56930, 56940, 56923, 56937, 32574, 32862, 42580, 42574, 57469,
+ 42578, 42573, 42576, 57473, 57471, 32865, 42570, 32866, 57472,
+ 42575, 42572, 42571, 57474, 57470, 57475, 57476, 42579, 42581,
+ 42577, 33133, 57937, 33134, 42906, 57936, 57939, 33132, 33130,
+ 42907, 57938, 57935, 42905, 43187, 57940, 58323, 43190, 43192,
+ 43191, 43189, 58324, 43194, 58325, 58326, 43193, 43385, 43383,
+ 43386, 58650, 58649, 43384, 43382, 33568, 58908, 43544, 43543,
+ 33567, 43545, 58909, 59078, 58910, 59081, 33659, 59083, 59196,
+ 59082, 59080, 59079, 43737, 43736, 43738, 59305, 43845, 59380,
+ 43877, 59476, 44392, 44393, 44608, 36803, 46753, 36802, 37313,
+ 37312, 37311, 47593, 47596, 47595, 47597, 47594, 47598, 47599,
+ 28451, 37950, 48534, 37949, 48536, 48533, 37951, 48532, 48535,
+ 49442, 38584, 49439, 49443, 49444, 49440, 49441, 49445, 39239,
+ 50386, 50387, 39238, 50388, 50389, 53816, 39909, 30742, 53815,
+ 40587, 31318, 40588, 54809, 55591, 55593, 55592, 55590, 41172,
+ 41751, 56287, 56945, 56946, 56943, 56944, 56942, 32867, 57478,
+ 57479, 57941, 42908, 57942, 57943, 57944, 58327, 43387, 43664,
+ 46025, 36329, 46027, 46754, 36805, 46756, 46755, 36804, 37314,
+ 47609, 47608, 47601, 28455, 37319, 37318, 47605, 37316, 47602,
+ 47607, 47606, 37315, 37317, 47603, 47604, 28456, 48541, 48542,
+ 37961, 37959, 48540, 48539, 48537, 37320, 37958, 37953, 37956,
+ 37955, 48538, 37954, 37962, 37957, 37960, 49446, 49451, 38590,
+ 49449, 49452, 38588, 29526, 38589, 38586, 49450, 38585, 49448,
+ 29528, 38591, 50396, 50398, 39245, 30151, 50391, 50394, 39242,
+ 50395, 50390, 50399, 39240, 39243, 50400, 50397, 39244, 39241,
+ 53824, 50393, 39919, 53822, 53829, 53833, 53821, 39912, 53825,
+ 53820, 53827, 39911, 39914, 39917, 30749, 50392, 53823, 53828,
+ 53826, 39916, 39918, 53817, 39910, 53819, 53834, 53818, 53830,
+ 53831, 53832, 39915, 39913, 54810, 40596, 54816, 40597, 54814,
+ 40593, 54812, 54821, 40591, 40594, 40590, 54822, 54817, 54823,
+ 40589, 54820, 54813, 54815, 54811, 31322, 40592, 55595, 55603,
+ 41176, 55598, 55597, 55596, 55604, 31790, 55601, 31791, 55602,
+ 41173, 41182, 31793, 41179, 41178, 55605, 41175, 41181, 55594,
+ 55599, 55600, 41177, 41174, 41180, 32236, 56291, 32242, 41753,
+ 41755, 56290, 56293, 56292, 56289, 56288, 41752, 41754, 42199,
+ 56947, 56950, 56948, 56949, 42201, 32581, 32582, 42200, 42198,
+ 42202, 56951, 56953, 32871, 42586, 42584, 57484, 42585, 42583,
+ 57482, 42582, 57483, 57481, 57480, 42587, 57485, 33138, 42909,
+ 33139, 57947, 57946, 57945, 58333, 33323, 58329, 58328, 33324,
+ 58334, 58330, 58331, 58332, 58655, 58656, 43388, 58652, 58651,
+ 58653, 58654, 43390, 43389, 43549, 43548, 43547, 58914, 58912,
+ 58911, 43546, 58913, 43666, 43665, 43739, 43740, 59197, 43799,
+ 59381, 59198, 59306, 43878, 59477, 44942, 45423, 46757, 47610,
+ 37322, 37321, 29529, 49453, 39246, 39247, 53835, 53836, 53837,
+ 39921, 54824, 40598, 54825, 41184, 41183, 41185, 41758, 41757,
+ 56294, 56954, 32583, 56955, 57486, 58335, 58915, 59446, 59478,
+ 44943, 45424, 49456, 49455, 49454, 54708, 32584, 57948, 44612,
+ 44611, 44610, 26883, 44944, 26887, 46758, 44945, 46759, 44946,
+ 35713, 46760, 47611, 35981, 35982, 35987, 45425, 45430, 35986,
+ 27170, 35988, 35984, 27173, 45428, 45427, 45432, 35985, 35979,
+ 45429, 35983, 45426, 45431, 36330, 36337, 36333, 46028, 36332,
+ 46031, 36336, 36334, 27494, 27496, 36331, 46033, 46032, 27497,
+ 46034, 46030, 48072, 36338, 36335, 46769, 46773, 36812, 46768,
+ 36807, 36811, 27934, 36808, 36810, 46767, 46761, 46771, 27935,
+ 46772, 46762, 38592, 46770, 36809, 46765, 46763, 36813, 37324,
+ 37323, 46764, 47622, 37329, 28461, 47623, 37328, 46766, 37326,
+ 47618, 47621, 47617, 47615, 47616, 47613, 47624, 47619, 47614,
+ 37327, 28458, 47620, 37330, 37325, 47612, 37967, 37963, 37969,
+ 37968, 29005, 48554, 29009, 29007, 37970, 48553, 53838, 48548,
+ 48547, 48551, 48550, 29010, 48544, 48546, 48552, 48555, 48556,
+ 48545, 37966, 48549, 37965, 37964, 29008, 48557, 49475, 49463,
+ 49472, 49459, 29532, 29531, 49457, 38596, 49460, 49476, 49470,
+ 49474, 49466, 49464, 49478, 49477, 37971, 29533, 49462, 49473,
+ 49461, 49465, 49471, 49468, 49467, 49469, 49458, 38595, 38594,
+ 38593, 50404, 50403, 50406, 50401, 50409, 39249, 50405, 50407,
+ 50411, 39248, 39251, 50402, 50410, 55606, 50408, 55607, 55608,
+ 55609, 39250, 53845, 53843, 53849, 53840, 53842, 30752, 39923,
+ 30753, 39927, 39924, 30757, 53847, 39932, 53841, 53846, 53851,
+ 53852, 53848, 53850, 56295, 53839, 56296, 53844, 39928, 39926,
+ 39931, 39925, 39929, 39930, 39922, 54839, 40605, 40604, 40602,
+ 54834, 40600, 54838, 54831, 54840, 31323, 54835, 54837, 54826,
+ 54843, 56956, 54829, 54833, 54845, 54830, 54107, 54841, 54828,
+ 54827, 54836, 54844, 40601, 40606, 40603, 54832, 40599, 41186,
+ 31797, 55617, 41190, 55614, 41191, 55612, 57488, 54842, 55619,
+ 55615, 41189, 41192, 55610, 55613, 55616, 55620, 41193, 41194,
+ 41188, 41187, 55611, 41764, 56303, 32243, 56301, 41761, 56299,
+ 56306, 56305, 41760, 56304, 56297, 56300, 41763, 41762, 41759,
+ 56302, 56964, 56965, 56963, 56958, 56959, 56962, 56960, 56961,
+ 56957, 42206, 42205, 57491, 42590, 57490, 42588, 57489, 42589,
+ 58657, 33140, 57950, 42912, 57951, 57949, 42910, 42911, 42204,
+ 57952, 42913, 43195, 33468, 58338, 58337, 58336, 58658, 58660,
+ 58659, 59199, 58917, 58916, 43550, 59084, 59200, 59479, 44947,
+ 35435, 35543, 35542, 35544, 35541, 26712, 44613, 44615, 26714,
+ 26890, 35714, 26889, 26891, 26888, 44950, 26893, 35715, 28468,
+ 44949, 47628, 47626, 47627, 44948, 26892, 27179, 47625, 27175,
+ 27178, 27177, 46038, 27180, 35989, 35990, 48559, 45436, 48561,
+ 45434, 45435, 45433, 48558, 48560, 35991, 36341, 36340, 36339,
+ 27502, 27500, 36346, 29534, 36342, 49480, 49479, 49481, 46041,
+ 46035, 46036, 46037, 46040, 46039, 36345, 36343, 36344, 36818,
+ 36814, 27939, 46776, 36822, 36823, 36815, 36820, 36816, 27938,
+ 46778, 27940, 46780, 50412, 50414, 50415, 46777, 46779, 46775,
+ 36819, 36821, 36817, 36824, 50413, 46774, 39933, 30759, 28466,
+ 37334, 37333, 37338, 37331, 37335, 28464, 47633, 37337, 53857,
+ 53856, 47635, 53853, 53854, 53858, 53855, 47630, 47632, 47631,
+ 47629, 47634, 37332, 37336, 36825, 29014, 37978, 37975, 37977,
+ 29012, 37979, 48571, 37976, 38610, 37974, 37973, 48569, 48562,
+ 29011, 54847, 48564, 48563, 48565, 48566, 48567, 48568, 48570,
+ 54846, 37972, 55621, 38598, 38603, 38606, 38601, 38600, 29536,
+ 50416, 38599, 38605, 38602, 38607, 38609, 29538, 38608, 49484,
+ 38597, 49483, 49486, 38604, 30158, 39258, 39257, 39254, 39253,
+ 39264, 39260, 39256, 50421, 50418, 50417, 39262, 39263, 56307,
+ 56309, 56308, 56310, 50420, 39252, 30161, 50419, 41765, 39255,
+ 39259, 39265, 30761, 56966, 39937, 53862, 30760, 39938, 30762,
+ 40615, 39934, 39935, 53861, 53863, 30763, 56969, 56967, 53864,
+ 53866, 53867, 53865, 53859, 53860, 39939, 54849, 39936, 56968,
+ 42591, 40612, 40613, 57493, 31325, 54848, 40608, 40611, 54851,
+ 40609, 40610, 31326, 54850, 57494, 57492, 42592, 55622, 55626,
+ 41195, 31798, 41196, 57953, 57954, 57955, 55624, 55627, 55623,
+ 41198, 41197, 57956, 55625, 41767, 56311, 56312, 41768, 42210,
+ 41771, 56314, 56313, 41769, 41770, 58339, 41766, 56315, 56971,
+ 56316, 42209, 56970, 42208, 56973, 56972, 32587, 40614, 42207,
+ 32873, 42593, 57496, 57498, 57495, 57497, 33141, 57957, 57958,
+ 58340, 57959, 58661, 58918, 58919, 43846, 59307, 27942, 46781,
+ 37341, 37340, 47645, 47641, 37342, 28473, 47639, 47646, 47636,
+ 28474, 37343, 47643, 47642, 47637, 47638, 47644, 28476, 47640,
+ 47647, 48578, 37980, 37981, 29020, 48576, 38613, 29017, 29018,
+ 48577, 48573, 48572, 29016, 48574, 48575, 48579, 38612, 38615,
+ 38611, 49489, 49488, 38614, 50425, 39267, 39266, 50424, 50423,
+ 50422, 53869, 39943, 53873, 39944, 39940, 53877, 39941, 53876,
+ 53875, 53874, 53870, 53868, 39942, 53871, 53872, 53879, 53878,
+ 54855, 54854, 40616, 54857, 40619, 54859, 31334, 54864, 31331,
+ 31332, 54863, 40617, 54856, 54862, 54861, 40618, 54858, 54860,
+ 54852, 54865, 41204, 41202, 41203, 41206, 31803, 55629, 41205,
+ 31801, 55631, 41201, 55637, 41207, 55630, 55636, 55632, 55634,
+ 55635, 41200, 41773, 41774, 41776, 56324, 56320, 32244, 56317,
+ 41775, 32247, 41777, 55638, 32246, 56323, 41778, 56326, 56327,
+ 56318, 56322, 56319, 41779, 56321, 56978, 56975, 42219, 42216,
+ 42212, 42215, 42214, 42220, 42217, 42213, 42218, 56976, 56977,
+ 56979, 56974, 56325, 42221, 42211, 57499, 42598, 42595, 42596,
+ 42594, 42597, 57500, 57501, 57502, 57504, 57503, 33144, 33142,
+ 33143, 42914, 57961, 57960, 58341, 58342, 58345, 43196, 58344,
+ 58343, 58662, 58664, 43391, 58666, 58665, 43392, 58663, 43552,
+ 33572, 58920, 58921, 43551, 59201, 43800, 59309, 59308, 59383,
+ 59382, 59495, 59496, 46043, 37982, 37344, 50426, 50427, 39945,
+ 53881, 53880, 40620, 54866, 41208, 56328, 43197, 37345, 46782,
+ 47648, 48581, 37984, 37983, 50428, 53882, 41209, 41780, 42915,
+ 57962, 46785, 46783, 37346, 47649, 47650, 48586, 48587, 48588,
+ 48584, 48585, 48591, 48589, 48583, 48592, 48590, 29554, 38617,
+ 29552, 29551, 49494, 49490, 49496, 49492, 49493, 49495, 49491,
+ 39268, 39269, 50433, 39270, 50429, 30169, 50431, 50432, 50435,
+ 50436, 53887, 30771, 39949, 53894, 53888, 53893, 53886, 39948,
+ 53896, 53897, 53890, 39946, 53884, 53895, 53889, 53892, 53898,
+ 53883, 39947, 40627, 40630, 40625, 31340, 40621, 40623, 54870,
+ 54869, 54876, 54874, 54872, 40629, 31337, 54867, 54875, 54873,
+ 40622, 54871, 40626, 40631, 40624, 41211, 41212, 55642, 31806,
+ 41215, 41214, 55645, 40628, 41210, 55643, 41213, 41218, 55647,
+ 55651, 55648, 55652, 55646, 55649, 55641, 55650, 31811, 41217,
+ 41216, 41784, 32254, 32255, 41785, 32249, 32251, 56329, 41783,
+ 41781, 42222, 56331, 41786, 32257, 56337, 56336, 41787, 41788,
+ 56338, 56332, 56333, 56335, 56334, 32598, 56982, 56986, 42223,
+ 56983, 42225, 56981, 56989, 56985, 56988, 56990, 56991, 56984,
+ 56987, 32597, 56980, 41789, 32877, 57510, 57511, 42605, 57515,
+ 42600, 32879, 42603, 42599, 57513, 57505, 57506, 42604, 32883,
+ 57514, 42601, 57509, 57512, 57507, 57969, 33149, 57974, 57968,
+ 57963, 33151, 33148, 57967, 57970, 57976, 57965, 57966, 57971,
+ 57972, 57973, 57964, 43200, 58354, 58353, 58671, 58349, 58347,
+ 58346, 58348, 43199, 43395, 33471, 43393, 58670, 58668, 58352,
+ 58667, 58669, 58672, 43553, 58923, 58924, 58925, 58922, 58926,
+ 33718, 59086, 59087, 59085, 59207, 59202, 59203, 59209, 59205,
+ 59204, 43741, 59208, 59206, 59210, 43742, 43801, 59312, 59310,
+ 59311, 59385, 59384, 59386, 59447, 59448, 43898, 45437, 44951,
+ 36347, 37348, 47654, 37347, 37349, 47653, 47652, 47651, 37985,
+ 37986, 29023, 48593, 48594, 49500, 49499, 29557, 49497, 49498,
+ 38619, 38618, 39271, 30171, 50437, 50438, 39272, 39950, 39952,
+ 40632, 39951, 39953, 39954, 40634, 54879, 40633, 55653, 54878,
+ 54881, 54877, 55656, 31813, 41219, 31814, 55657, 55655, 55654,
+ 56340, 41791, 56339, 41790, 42229, 42227, 42226, 42228, 42606,
+ 57516, 57517, 33155, 57977, 58356, 58357, 58355, 43398, 43397,
+ 43554, 58927, 59211, 59387, 36348, 36827, 36828, 36826, 46787,
+ 37351, 37350, 47655, 37994, 37992, 37990, 29025, 37991, 29027,
+ 20568, 37987, 37988, 37989, 48597, 48598, 37993, 48595, 48596,
+ 29024, 29559, 49505, 29565, 29560, 29558, 49504, 38623, 38620,
+ 38622, 38621, 49502, 29564, 29562, 49503, 49501, 39280, 39276,
+ 39278, 30173, 39274, 30174, 39281, 50441, 39277, 39282, 30172,
+ 39279, 39283, 50440, 50442, 50443, 39273, 53901, 39962, 39957,
+ 53906, 39959, 39956, 53907, 30778, 39961, 39958, 53905, 53900,
+ 53902, 53903, 53904, 39955, 39960, 39963, 31349, 31346, 40636,
+ 40639, 54883, 40635, 40637, 40638, 54886, 54888, 54890, 54885,
+ 54889, 54887, 31347, 31822, 31820, 41223, 55658, 41220, 41222,
+ 41224, 41221, 55660, 31819, 55659, 31815, 55661, 55662, 55663,
+ 55664, 41798, 41797, 41793, 32260, 56341, 41794, 41800, 41799,
+ 56343, 41796, 41792, 41795, 56342, 56344, 42230, 56993, 56994,
+ 32600, 42231, 56992, 32601, 32885, 42612, 42607, 42610, 42609,
+ 42611, 42613, 32887, 57521, 42232, 57518, 57519, 42608, 57520,
+ 42921, 42614, 33156, 42920, 42918, 42923, 42919, 43201, 57978,
+ 58358, 58673, 43555, 58929, 58928, 43667, 33660, 33661, 59088,
+ 59212, 59213, 43802, 45438, 35439, 35437, 26604, 35440, 26603,
+ 35438, 35545, 26715, 44616, 35718, 26895, 26896, 35719, 35717,
+ 35992, 45440, 35993, 35995, 35996, 27181, 35994, 45439, 45441,
+ 36349, 46045, 46048, 27507, 36352, 46046, 50444, 46050, 46051,
+ 46052, 46047, 36350, 46053, 46049, 46044, 46790, 36832, 36353,
+ 46789, 36829, 36831, 46795, 46792, 46796, 36830, 46791, 46794,
+ 46793, 37352, 47665, 47658, 28481, 28483, 28482, 37353, 47660,
+ 47661, 47668, 47667, 50445, 47663, 47659, 47666, 47664, 54892,
+ 47662, 37999, 38004, 38000, 38001, 38003, 48602, 48600, 37995,
+ 37996, 37998, 48601, 48606, 55667, 48604, 38002, 48605, 48603,
+ 55665, 37997, 49517, 38630, 38627, 49509, 49516, 49514, 38631,
+ 38628, 38626, 50446, 49510, 49512, 38632, 38629, 49513, 56346,
+ 49511, 56345, 38625, 49506, 49518, 49507, 38624, 49508, 49515,
+ 49519, 55666, 50451, 50449, 50453, 30180, 30179, 39964, 30181,
+ 30182, 39285, 50450, 50447, 30178, 39286, 39287, 50452, 50454,
+ 56996, 50448, 39284, 39971, 39969, 39970, 53914, 39973, 39967,
+ 39966, 53908, 39968, 39972, 39965, 57523, 53912, 53910, 53909,
+ 53911, 53915, 40640, 40641, 31353, 54893, 40643, 40642, 54895,
+ 57522, 42233, 54894, 41225, 41226, 55669, 55670, 55668, 43202,
+ 41801, 56349, 32261, 56347, 56348, 42234, 56998, 57979, 57000,
+ 43556, 56997, 56999, 58930, 57609, 42924, 57981, 57980, 59214,
+ 59215, 58359, 58696, 58931, 43803, 43804, 59524, 59509, 49520,
+ 30780, 53916, 40644, 54896, 31825, 56350, 56351, 42235, 57524,
+ 46797, 46798, 46799, 47669, 37354, 28484, 47671, 47670, 47673,
+ 47672, 29031, 48609, 29029, 48607, 49526, 48613, 48611, 48608,
+ 29032, 29030, 48612, 48610, 49534, 38633, 49521, 49524, 49530,
+ 49528, 49533, 49525, 49523, 49527, 49532, 49531, 49522, 49529,
+ 50467, 50465, 39288, 50458, 50459, 50469, 50455, 50470, 50463,
+ 30183, 50468, 50462, 39289, 50464, 50456, 39290, 30184, 50457,
+ 50466, 50471, 50460, 53922, 53920, 53929, 53924, 53921, 39975,
+ 53923, 53931, 53927, 53925, 53926, 53928, 53919, 53917, 39974,
+ 53930, 53932, 31826, 31354, 40646, 54904, 54899, 54910, 54897,
+ 54908, 54903, 54900, 54907, 54905, 54901, 40645, 54911, 31355,
+ 54906, 54914, 54902, 53918, 54915, 54912, 54898, 54913, 54909,
+ 31828, 55676, 55674, 55684, 55675, 55677, 55688, 55673, 55681,
+ 55672, 55671, 55678, 41227, 55686, 55680, 55679, 55682, 55687,
+ 54917, 55683, 55685, 56353, 56359, 56355, 56356, 56352, 41802,
+ 56360, 56358, 41803, 56354, 56357, 57005, 57002, 57006, 57003,
+ 42236, 57009, 32602, 42237, 57001, 57007, 57008, 32603, 57004,
+ 57010, 57530, 57534, 57526, 57537, 57531, 57538, 57535, 57525,
+ 42615, 57532, 57533, 42616, 57529, 57527, 57539, 57536, 57987,
+ 33159, 57985, 57982, 57989, 57983, 57988, 57986, 57990, 57528,
+ 57984, 58360, 58361, 33330, 58364, 58365, 58363, 58362, 58679,
+ 58680, 58681, 33474, 58678, 58674, 58675, 58676, 58677, 58935,
+ 58933, 58934, 58932, 59089, 59313, 59388, 59533, 36833, 47675,
+ 47676, 28486, 47674, 38007, 38005, 38008, 38006, 29034, 48616,
+ 29033, 48615, 29571, 38638, 38635, 38634, 38637, 38636, 49535,
+ 38639, 39293, 30189, 39294, 39292, 39291, 30185, 30188, 50476,
+ 30191, 50475, 50477, 50473, 50472, 53935, 53934, 39986, 39981,
+ 39982, 39980, 39979, 39984, 39978, 31356, 39977, 53936, 53937,
+ 53933, 39985, 39983, 41228, 54922, 31360, 40653, 40650, 31359,
+ 54919, 40652, 40649, 54921, 40648, 54920, 54918, 40647, 54923,
+ 40651, 31831, 31829, 31830, 41229, 31836, 41231, 31833, 55689,
+ 41807, 55690, 55692, 41230, 55691, 55693, 41232, 41811, 41814,
+ 56368, 56372, 41808, 56367, 41805, 56374, 56371, 32264, 41804,
+ 41806, 56370, 56363, 56366, 41813, 56364, 56373, 56362, 56365,
+ 41810, 41812, 41809, 42244, 42238, 42242, 42239, 42240, 32605,
+ 42243, 42241, 42246, 32604, 57011, 57016, 57012, 42245, 57014,
+ 57018, 57017, 57015, 57013, 57019, 57541, 32889, 57549, 32891,
+ 42617, 33164, 32893, 57547, 57546, 42618, 32895, 32892, 32894,
+ 57542, 57544, 57545, 57548, 57550, 57543, 57540, 33161, 33160,
+ 57991, 42925, 42926, 33162, 33163, 57993, 42927, 42928, 57996,
+ 57992, 57997, 57994, 43205, 43208, 33332, 58367, 43206, 58368,
+ 58369, 43203, 43207, 43204, 58366, 43399, 58682, 58683, 43400,
+ 43557, 33575, 33574, 58936, 58937, 58938, 33663, 43669, 33662,
+ 43668, 59090, 43670, 43745, 59216, 43744, 59217, 59222, 43743,
+ 59389, 33775, 59450, 59449, 59451, 43879, 59514, 59547, 59550,
+ 33805, 28487, 48617, 49536, 30195, 54085, 54924, 40785, 56375,
+ 42929, 46801, 45442, 46800, 28488, 47677, 28490, 48618, 38009,
+ 29036, 48620, 48619, 49538, 49537, 30782, 53939, 53938, 54925,
+ 57551, 57552, 48622, 48623, 48621, 29572, 29574, 38641, 38640,
+ 49540, 49539, 50479, 39296, 30198, 50478, 39295, 50480, 30783,
+ 39987, 39989, 39988, 53941, 53940, 40655, 40654, 40659, 40656,
+ 40657, 40658, 54926, 55694, 41234, 41235, 41237, 41236, 55696,
+ 41817, 56376, 41815, 41816, 32266, 42248, 42247, 42620, 42619,
+ 57199, 57553, 42431, 42931, 57999, 42933, 42932, 57998, 58001,
+ 58000, 58370, 58371, 58684, 43401, 58939, 43746, 59314, 59391,
+ 59390, 38010, 29039, 48624, 38645, 38644, 49543, 49546, 38643,
+ 49544, 38642, 49542, 49548, 49547, 29575, 29577, 39298, 30201,
+ 39297, 50484, 50482, 39299, 39300, 30203, 39303, 39301, 39304,
+ 39302, 50486, 30204, 50485, 50481, 50483, 53944, 39990, 53948,
+ 53947, 30786, 53950, 39991, 30787, 53946, 30788, 39994, 30785,
+ 39993, 39995, 53945, 39992, 53949, 53943, 54931, 40660, 40663,
+ 31371, 31363, 31370, 40661, 40662, 54930, 54934, 54927, 54928,
+ 54932, 54933, 55703, 55705, 41238, 41244, 31841, 41240, 55698,
+ 31842, 54929, 41248, 55702, 31840, 55704, 41242, 41245, 55700,
+ 41246, 55706, 54935, 41243, 55699, 55707, 55697, 41247, 41241,
+ 32277, 41827, 41819, 32267, 41821, 41831, 56379, 56377, 32272,
+ 41822, 32273, 56382, 56385, 41830, 56384, 32270, 41832, 56386,
+ 56387, 56383, 41239, 56381, 56380, 41823, 41833, 56378, 41820,
+ 41825, 41824, 41828, 32613, 42254, 42257, 42252, 32612, 42250,
+ 57021, 42258, 57030, 42251, 32611, 57028, 32609, 57025, 32608,
+ 57029, 42253, 57027, 57022, 57023, 42256, 42255, 57020, 42249,
+ 32903, 42627, 32898, 42628, 42623, 57554, 42621, 57556, 32900,
+ 42625, 32901, 32904, 42626, 57560, 57555, 57557, 57562, 57559,
+ 42624, 57558, 42629, 32905, 57561, 42940, 58005, 33166, 58007,
+ 58008, 42937, 42938, 42939, 42934, 42935, 58006, 43209, 58379,
+ 58372, 33336, 43210, 58378, 58376, 58373, 58377, 43212, 43213,
+ 58374, 58375, 43214, 43402, 43405, 43403, 58685, 43406, 43404,
+ 58688, 58686, 58689, 58687, 43559, 43671, 58940, 43558, 43560,
+ 59093, 59091, 59092, 43747, 59219, 59221, 43672, 59220, 59218,
+ 43805, 59393, 59392, 43847, 59480, 43918, 59515, 59526, 59525,
+ 43941, 38011, 29579, 29581, 49549, 38646, 50488, 39306, 39308,
+ 39305, 39307, 50487, 39309, 30790, 39997, 30789, 30791, 53952,
+ 53951, 53953, 53954, 53955, 39996, 39998, 40664, 54936, 54937,
+ 40667, 40668, 40666, 54938, 40665, 31844, 55709, 41249, 55710,
+ 31847, 31845, 41250, 41251, 55708, 55711, 56391, 56388, 32279,
+ 56389, 55712, 41834, 56393, 56390, 57031, 57033, 57036, 57032,
+ 57035, 57034, 57563, 42259, 42260, 57564, 57565, 32907, 42631,
+ 42630, 42941, 42943, 42945, 33171, 58009, 42942, 42944, 58380,
+ 33338, 43215, 58381, 58382, 43216, 58690, 58693, 58692, 58691,
+ 33578, 59094, 43748, 59317, 59315, 59316, 43848, 43880, 43899,
+ 38647, 49550, 39999, 54939, 31848, 55713, 57039, 57567, 32910,
+ 42946, 57566, 58010, 58383, 58695, 58694, 59095, 38649, 38648,
+ 39310, 30210, 39311, 40007, 53956, 40001, 40004, 53957, 40002,
+ 40003, 40006, 40000, 31376, 40005, 40669, 54940, 55714, 41252,
+ 41253, 41835, 41836, 41837, 32618, 42261, 42262, 57568, 57569,
+ 42633, 42632, 42634, 58011, 42947, 41838, 43217, 43218, 33340,
+ 58697, 33579, 43806, 43928, 46056, 47678, 37355, 38017, 38015,
+ 38016, 38013, 29044, 38012, 29043, 48625, 29041, 29591, 38659,
+ 29590, 38650, 38658, 49552, 29588, 39318, 38656, 29585, 29586,
+ 29589, 49555, 38655, 38651, 49553, 49554, 49551, 38652, 38657,
+ 39320, 50494, 50495, 39314, 39327, 39315, 30214, 30213, 39317,
+ 39313, 30220, 39325, 39316, 53966, 39326, 50498, 50496, 50491,
+ 39319, 39324, 50490, 39323, 50489, 50499, 39312, 50492, 50497,
+ 40010, 30796, 53960, 53971, 40009, 40008, 30793, 53959, 53965,
+ 30215, 53969, 40011, 30799, 53968, 53964, 54942, 53967, 53962,
+ 53963, 53970, 53972, 53958, 53961, 40012, 31377, 40672, 31379,
+ 40680, 54951, 40679, 40677, 54952, 54950, 40676, 40674, 54954,
+ 54943, 40681, 40673, 40682, 40675, 40678, 31382, 54941, 40671,
+ 54953, 31383, 54949, 54955, 54945, 54946, 54947, 54948, 40683,
+ 40670, 40684, 31856, 31852, 31849, 55716, 41258, 31860, 41259,
+ 31855, 41257, 41254, 41256, 31850, 41262, 55721, 31853, 55723,
+ 41255, 55718, 31859, 55722, 55715, 55717, 41260, 41261, 55719,
+ 55724, 41839, 32283, 41845, 41843, 32621, 41842, 41840, 56396,
+ 41841, 32281, 41846, 41844, 56397, 56394, 56395, 57049, 42266,
+ 57043, 57040, 42267, 32631, 57045, 42265, 42635, 42264, 42263,
+ 57047, 57042, 32627, 57041, 57048, 57044, 57050, 57046, 32913,
+ 32912, 42640, 42638, 57573, 42639, 32917, 57572, 32918, 42637,
+ 57570, 57574, 32919, 57575, 57571, 42636, 57477, 42948, 42949,
+ 58012, 42951, 58021, 58390, 33177, 33175, 58016, 58014, 58019,
+ 42950, 42952, 42953, 58013, 58017, 58020, 58018, 58389, 43221,
+ 43220, 58386, 58388, 43219, 58384, 58387, 58385, 58705, 58704,
+ 58702, 43409, 43410, 33477, 43407, 58700, 33478, 58701, 58703,
+ 58699, 58698, 33581, 58941, 43408, 33580, 58942, 33665, 43673,
+ 43749, 59223, 43750, 59224, 59225, 33748, 59318, 59452, 47679,
+ 48628, 29046, 48626, 38018, 48627, 38660, 38665, 29594, 38662,
+ 38663, 49557, 49559, 38661, 29595, 49558, 48898, 38664, 49560,
+ 30229, 39331, 30226, 39330, 39329, 39328, 30224, 50500, 30223,
+ 50504, 50502, 50501, 30800, 40015, 30803, 53975, 53974, 53973,
+ 40014, 53976, 40686, 40694, 40687, 54956, 54959, 40685, 40690,
+ 40693, 54958, 54960, 40691, 40692, 54957, 40689, 40688, 55728,
+ 31870, 41270, 41271, 31862, 41263, 55727, 31869, 41847, 41267,
+ 31868, 41265, 41266, 41269, 41264, 41268, 55725, 55729, 55726,
+ 32292, 56401, 56403, 41852, 56405, 41849, 41853, 32293, 41855,
+ 32634, 41850, 56404, 41851, 41854, 41848, 56407, 56402, 56400,
+ 56406, 56398, 42268, 32636, 32637, 32638, 42269, 57052, 57051,
+ 57053, 57054, 57055, 42643, 42646, 42645, 32920, 42641, 32922,
+ 42644, 42647, 42642, 32923, 58029, 33180, 33182, 42954, 58022,
+ 42955, 58025, 58023, 58028, 58030, 58031, 58026, 58027, 58024,
+ 58391, 58392, 58706, 43562, 33584, 58943, 58944, 43674, 59096,
+ 43675, 33666, 33721, 43751, 43807, 59319, 43936, 59554, 46802,
+ 38282, 53977, 57056, 42270, 58032, 33343, 43222, 46057, 46058,
+ 46061, 46059, 36834, 46803, 46805, 38019, 37359, 37356, 47683,
+ 47681, 37358, 47682, 47684, 48629, 37357, 48630, 48635, 29047,
+ 38020, 48633, 48634, 29051, 38021, 49561, 38022, 48631, 48632,
+ 29048, 49571, 49562, 38667, 38669, 38666, 38672, 29601, 38668,
+ 50512, 38670, 49565, 49564, 50506, 29598, 49563, 50507, 49567,
+ 38673, 49570, 40016, 49569, 49568, 50505, 29603, 38671, 50508,
+ 53978, 50513, 39336, 39332, 50514, 39333, 30231, 50511, 39334,
+ 53980, 50510, 53981, 30812, 53987, 30811, 40022, 40017, 40696,
+ 30809, 40019, 40024, 40021, 30813, 40023, 53983, 40018, 53982,
+ 55730, 40020, 53985, 53984, 40695, 53986, 40704, 31871, 40705,
+ 31392, 54965, 54969, 41272, 40698, 54968, 40701, 54966, 40699,
+ 54974, 31390, 54970, 54975, 40706, 54967, 54962, 40697, 54964,
+ 54963, 54971, 41274, 54973, 55732, 54961, 40703, 54972, 40700,
+ 40702, 55731, 41273, 41285, 55734, 41278, 41280, 41284, 41276,
+ 55733, 41283, 41286, 31876, 41287, 55735, 55740, 56409, 55737,
+ 41275, 56410, 55742, 41279, 55736, 55741, 55738, 41281, 55739,
+ 56414, 41860, 41856, 32295, 32301, 41289, 32302, 41858, 41288,
+ 41857, 56413, 56412, 57057, 32303, 41859, 57059, 57579, 56411,
+ 56408, 56416, 57062, 57058, 32294, 56417, 56415, 42273, 57060,
+ 42271, 32644, 32928, 57578, 42278, 42275, 42277, 42279, 57576,
+ 32640, 42276, 41290, 42272, 57577, 32642, 57583, 57061, 57582,
+ 32643, 42274, 57581, 42280, 32929, 57580, 57584, 57590, 58033,
+ 42956, 57591, 42650, 32930, 42957, 42649, 57589, 57593, 42648,
+ 57064, 57592, 57586, 57587, 57588, 58034, 57594, 57585, 42965,
+ 42959, 58035, 33186, 42961, 42958, 58036, 42968, 58037, 42967,
+ 42960, 42964, 42962, 58038, 42963, 42966, 33345, 43223, 43224,
+ 58396, 58707, 58395, 43225, 58394, 58393, 43411, 58709, 43412,
+ 43413, 43563, 58708, 43564, 43565, 33585, 58945, 58947, 58946,
+ 43676, 59320, 43808, 46806, 47685, 50515, 53988, 50517, 50516,
+ 40025, 31399, 31400, 55743, 55744, 54976, 54978, 54977, 57066,
+ 57065, 56418, 57234, 57595, 58948, 33751, 29607, 49572, 38967,
+ 50518, 50519, 50520, 53989, 54979, 55745, 56421, 41862, 41861,
+ 41863, 56420, 56419, 42281, 32646, 32647, 57067, 57596, 42969,
+ 58039, 58710, 43752, 37360, 37361, 38023, 48637, 48636, 38674,
+ 49574, 49573, 49576, 49575, 39340, 50522, 50523, 39339, 30238,
+ 50521, 50527, 39338, 53990, 53993, 50524, 50526, 39341, 53997,
+ 40031, 54001, 53994, 40719, 40033, 40036, 40026, 40029, 40027,
+ 40034, 53991, 40035, 53995, 40032, 53998, 53996, 40028, 53992,
+ 53999, 40030, 54000, 54985, 31407, 54984, 40716, 31405, 31402,
+ 31406, 31403, 54980, 40710, 31404, 40717, 40714, 54993, 40720,
+ 40708, 40718, 40721, 40712, 54987, 54986, 54995, 54990, 54983,
+ 54992, 40711, 54991, 40709, 54988, 54989, 54996, 54994, 54981,
+ 54982, 41291, 55753, 41292, 55747, 31880, 55748, 55746, 41293,
+ 31877, 55751, 55752, 39342, 55749, 41295, 41294, 56427, 41873,
+ 41872, 41868, 32309, 41870, 41869, 32306, 41866, 41875, 32318,
+ 32314, 32315, 32311, 41876, 41864, 32317, 56426, 56425, 56422,
+ 41871, 32316, 56423, 41865, 56424, 41874, 42282, 42288, 42284,
+ 32652, 57074, 41877, 57069, 41867, 42286, 42285, 42289, 57068,
+ 42287, 42291, 32651, 42292, 57075, 57077, 42290, 57076, 57070,
+ 57071, 57072, 57073, 22769, 57078, 32936, 57601, 57600, 42659,
+ 42654, 42656, 42653, 32933, 42661, 32934, 32935, 32939, 42662,
+ 42663, 42652, 57599, 33187, 42655, 42660, 42657, 57602, 57606,
+ 57607, 57608, 57604, 57603, 57598, 57605, 57628, 57597, 42972,
+ 42971, 42974, 33188, 42975, 42973, 33193, 58042, 58041, 58043,
+ 58040, 58044, 58045, 43233, 58402, 42977, 58406, 58397, 43226,
+ 58400, 42976, 43229, 43232, 43228, 58405, 33351, 43230, 58398,
+ 58399, 58401, 43227, 43234, 58404, 58718, 58716, 43414, 43567,
+ 58715, 58712, 43415, 58713, 58717, 58714, 58719, 58711, 43568,
+ 58954, 58957, 43566, 58956, 58959, 58958, 58952, 58953, 58949,
+ 58955, 43681, 59098, 43682, 43678, 33668, 43679, 59097, 43677,
+ 43680, 33669, 59099, 43753, 43754, 33752, 59322, 59321, 33777,
+ 59395, 59396, 59394, 59453, 43900, 59481, 59497, 59498, 59537,
+ 38024, 29052, 49578, 49579, 49577, 49580, 30240, 30242, 39344,
+ 50533, 39343, 30241, 50531, 50528, 50529, 50530, 50532, 30819,
+ 30818, 40039, 40038, 54005, 55001, 40037, 40040, 30824, 54003,
+ 54007, 54004, 30825, 54006, 40723, 40722, 31414, 55000, 54002,
+ 54999, 54998, 55755, 31885, 55759, 31883, 55760, 41296, 55758,
+ 55754, 55756, 55757, 41886, 56429, 32320, 56428, 41884, 56430,
+ 41879, 42293, 41882, 41880, 41883, 41885, 55761, 41881, 57084,
+ 42295, 42294, 57083, 57080, 42297, 42298, 42296, 57086, 57087,
+ 57082, 57081, 57085, 57079, 32941, 42666, 42665, 42664, 57610,
+ 57611, 57612, 33196, 42979, 58052, 33195, 42978, 42980, 58048,
+ 58049, 42981, 58050, 58051, 58047, 33352, 58407, 33355, 58408,
+ 33354, 58409, 58724, 58725, 43416, 33485, 43418, 33486, 58721,
+ 43417, 58726, 58720, 58722, 58723, 33588, 43569, 33671, 59100,
+ 59226, 43755, 59227, 59323, 59397, 43881, 29612, 30243, 38889,
+ 39345, 50535, 50534, 54009, 55003, 55002, 31887, 41297, 56431,
+ 57088, 42667, 33198, 58053, 58410, 58727, 58728, 58729, 58960,
+ 59101, 59102, 59228, 59324, 33753, 59499, 48638, 48639, 49582,
+ 49581, 30245, 39347, 50541, 50540, 50538, 50542, 50536, 50537,
+ 39346, 39349, 40043, 54010, 54013, 30831, 54011, 40047, 30833,
+ 54014, 40046, 30829, 30830, 40041, 30827, 40042, 40045, 40044,
+ 54015, 54012, 55004, 31418, 55006, 40727, 55005, 31420, 31415,
+ 31422, 40724, 40726, 31421, 31419, 55008, 40725, 55007, 31891,
+ 31893, 55767, 41298, 41301, 41299, 55765, 41302, 41303, 41300,
+ 55762, 31890, 55763, 55764, 55766, 55768, 56433, 41891, 32322,
+ 41889, 41893, 41892, 56435, 41894, 57089, 56434, 32323, 41887,
+ 32329, 41888, 41890, 56432, 32662, 57092, 57096, 42299, 42300,
+ 42302, 32665, 57097, 57095, 57090, 42303, 42301, 57094, 57091,
+ 32660, 57093, 42673, 57613, 42668, 42672, 42671, 42670, 32947,
+ 32943, 42675, 42669, 32942, 57614, 57615, 57618, 57619, 42674,
+ 42984, 42987, 42983, 58054, 33199, 33201, 42982, 33200, 42986,
+ 58055, 42985, 58059, 58056, 58057, 43240, 43237, 58411, 43241,
+ 43239, 43236, 43244, 43243, 43242, 43238, 43245, 58058, 33358,
+ 58412, 58413, 43420, 33487, 33488, 43419, 58731, 58732, 58730,
+ 33589, 58961, 43570, 33593, 33591, 43684, 59103, 43683, 33673,
+ 59104, 43756, 59229, 59230, 59325, 33754, 43809, 59400, 59399,
+ 43849, 33797, 44396, 44395, 38676, 39350, 39351, 50543, 54016,
+ 55009, 55769, 56436, 32330, 57621, 58060, 42989, 58414, 58963,
+ 58962, 43572, 43850, 54017, 30834, 31423, 56437, 57622, 58062,
+ 58061, 58415, 58733, 43851, 29613, 49583, 50545, 50544, 54018,
+ 55013, 31425, 40728, 55011, 55010, 31424, 55012, 41304, 55770,
+ 32331, 56439, 56440, 56438, 57098, 42304, 57099, 32948, 57625,
+ 57624, 57623, 57626, 58063, 33202, 58065, 42991, 58064, 58066,
+ 58067, 43246, 58417, 58736, 58737, 43421, 33360, 33489, 58735,
+ 43422, 58734, 58738, 33595, 33594, 58739, 58964, 59106, 59107,
+ 43757, 59231, 59232, 59233, 33755, 59326, 59402, 59401, 59403,
+ 59454, 43901, 33794, 43910, 59500, 59543, 59544, 48640, 38026,
+ 49587, 38679, 49586, 29615, 38677, 49585, 38678, 29614, 49584,
+ 49588, 39354, 39355, 39356, 39353, 39352, 39357, 50549, 50546,
+ 50550, 50552, 50547, 50555, 50553, 50554, 50551, 50548, 30838,
+ 40052, 54020, 54019, 40051, 40054, 40734, 40053, 30837, 54022,
+ 40048, 40050, 54021, 40049, 40729, 55015, 40738, 40736, 55014,
+ 31427, 40737, 55016, 40731, 40730, 40732, 40735, 55017, 40733,
+ 31894, 41306, 41309, 41313, 31895, 55771, 41305, 41307, 41312,
+ 41310, 55773, 55774, 55776, 41311, 55772, 55775, 41308, 41896,
+ 56442, 32332, 41902, 56445, 41900, 41898, 56446, 56443, 56441,
+ 56448, 41895, 56444, 56447, 41899, 42305, 42308, 57100, 42306,
+ 57101, 57102, 41897, 42307, 57632, 32949, 57631, 42676, 57630,
+ 57629, 42677, 57627, 42993, 42995, 42997, 33204, 58068, 58069,
+ 42994, 42992, 58070, 42996, 43249, 32666, 58421, 33363, 43247,
+ 58419, 33364, 43250, 43251, 43248, 33365, 58418, 43424, 43423,
+ 43573, 43574, 33596, 58968, 58967, 58969, 58966, 43686, 43685,
+ 59234, 33756, 59327, 59328, 33778, 43852, 43882, 43902, 43929,
+ 27952, 29619, 29616, 49590, 29617, 49591, 38680, 50556, 39360,
+ 30249, 39358, 39361, 30846, 30850, 30848, 30844, 54027, 40060,
+ 40059, 54024, 54023, 40057, 30855, 40062, 40055, 40056, 54031,
+ 54025, 30853, 40061, 54030, 54026, 54028, 30845, 40058, 40741,
+ 40739, 55018, 40742, 31433, 31903, 40747, 40746, 31436, 55024,
+ 55019, 55022, 55021, 40745, 55025, 40744, 55023, 40740, 55020,
+ 41319, 31905, 41320, 41317, 41315, 31904, 55784, 41318, 55779,
+ 55786, 55778, 31908, 55785, 41323, 41321, 55777, 31907, 55781,
+ 41324, 41316, 55783, 41314, 41322, 41916, 41913, 41909, 41904,
+ 56450, 32343, 41906, 56449, 41903, 41910, 41914, 41911, 41908,
+ 41905, 56451, 56452, 55780, 41915, 41912, 57116, 57113, 32679,
+ 57107, 42312, 32667, 42314, 57104, 57106, 32680, 41917, 32684,
+ 42317, 32676, 57103, 32675, 32686, 57115, 57108, 57114, 32673,
+ 57110, 42321, 42313, 57105, 42319, 42315, 57109, 57112, 32668,
+ 42322, 42309, 42311, 57111, 42682, 57635, 42681, 42323, 42684,
+ 57633, 32955, 42686, 57636, 57634, 42683, 32953, 42679, 57639,
+ 32961, 42680, 42678, 32963, 57637, 42687, 57641, 42685, 42999,
+ 33212, 43004, 43008, 43430, 42998, 43007, 33205, 58078, 43001,
+ 58079, 43012, 58074, 43009, 43002, 58080, 58082, 58071, 58081,
+ 43011, 58075, 58076, 58072, 58073, 43010, 58077, 43005, 58425,
+ 58423, 43257, 33371, 43253, 43254, 58431, 58428, 43255, 58433,
+ 58430, 43259, 58427, 58432, 58424, 58426, 58422, 58435, 58436,
+ 43258, 58429, 58434, 43256, 43427, 58743, 43429, 33493, 33494,
+ 43425, 58742, 32959, 58975, 58740, 58751, 58741, 43426, 58750,
+ 58747, 43428, 58744, 58745, 58748, 58749, 58746, 58972, 43581,
+ 43585, 43579, 58970, 33604, 33601, 43578, 43586, 33600, 43584,
+ 43583, 43576, 58980, 58976, 43577, 58977, 58971, 58973, 58974,
+ 43582, 58979, 58978, 59114, 43687, 33675, 43688, 59109, 59027,
+ 59112, 59110, 43690, 59113, 59111, 43689, 59108, 59240, 59235,
+ 59237, 59238, 59239, 43758, 43759, 59236, 43811, 43810, 59329,
+ 43812, 59330, 43813, 59331, 59407, 43854, 43853, 43856, 59405,
+ 59408, 59404, 43855, 59406, 43886, 43885, 43884, 43883, 59455,
+ 43903, 43904, 59482, 43911, 43920, 59516, 43919, 48641, 48642,
+ 29620, 49592, 38682, 38683, 49597, 49593, 49594, 38681, 49595,
+ 49596, 50557, 39365, 50558, 39364, 30251, 30252, 50559, 50560,
+ 50561, 30253, 39363, 39362, 30868, 54037, 54048, 54034, 54038,
+ 54044, 40066, 40070, 40072, 40068, 54041, 54047, 40074, 40063,
+ 30860, 40076, 40073, 40064, 30861, 40077, 54045, 30859, 54040,
+ 30866, 30857, 40078, 30869, 54035, 54046, 54033, 54042, 54043,
+ 40065, 40069, 40075, 54036, 54039, 40071, 55032, 40753, 40755,
+ 40750, 40748, 31439, 40752, 40758, 40751, 55044, 55039, 40756,
+ 31449, 55041, 40757, 55037, 40754, 55040, 55033, 55026, 55035,
+ 55034, 55036, 55045, 55043, 55028, 55029, 55042, 31446, 31444,
+ 48643, 55030, 40749, 55027, 55790, 31909, 41327, 41338, 55793,
+ 31916, 41336, 55794, 41326, 41330, 55787, 41333, 41340, 41329,
+ 41331, 31917, 55796, 41325, 41332, 31921, 55788, 31924, 41341,
+ 55797, 55792, 41337, 41339, 55789, 41328, 31923, 55795, 41334,
+ 41335, 55791, 31920, 56458, 41342, 56462, 41922, 41928, 41930,
+ 32349, 41933, 41919, 41924, 41923, 41920, 56460, 56455, 32348,
+ 56461, 41921, 41934, 32351, 56470, 41925, 56467, 56459, 41931,
+ 56464, 56465, 56469, 41927, 56456, 41926, 56471, 56453, 56463,
+ 56454, 41932, 56466, 42324, 57118, 42325, 57123, 42329, 42341,
+ 42331, 57131, 57125, 42326, 57129, 57132, 57124, 42343, 42328,
+ 42342, 32692, 42333, 42336, 57121, 57119, 42339, 42335, 57117,
+ 57127, 57133, 42332, 32694, 57130, 42337, 57122, 42338, 57136,
+ 42340, 56472, 57126, 57128, 57134, 42334, 57135, 57120, 32690,
+ 42699, 42691, 57647, 32968, 42705, 57656, 42693, 42709, 32697,
+ 57643, 42690, 32966, 42692, 32977, 32971, 42694, 42688, 42698,
+ 42711, 42700, 32976, 32969, 42701, 42703, 42707, 32970, 42689,
+ 42702, 42697, 42706, 57652, 57648, 57653, 57642, 57644, 42704,
+ 42696, 42695, 42710, 57645, 57651, 57650, 57646, 57657, 57654,
+ 57649, 42708, 56457, 43019, 58086, 43027, 58091, 43018, 43021,
+ 43016, 43026, 43025, 58092, 58090, 58087, 43029, 58098, 58097,
+ 58095, 43017, 43022, 42712, 43015, 43023, 58093, 58089, 43030,
+ 43031, 43020, 58094, 58084, 58099, 58083, 58088, 43013, 58085,
+ 43014, 43273, 43268, 33373, 33382, 43267, 33377, 43274, 43264,
+ 42713, 43275, 43271, 43270, 33380, 58439, 58449, 58447, 58453,
+ 33379, 58448, 58451, 43266, 33378, 58446, 43262, 58445, 43263,
+ 43277, 43028, 58454, 43272, 58452, 58444, 58096, 43269, 58443,
+ 58441, 58438, 58440, 43265, 58760, 58756, 58766, 43446, 58764,
+ 43441, 43436, 33498, 58767, 58771, 43432, 43443, 43437, 43435,
+ 43442, 58761, 43434, 43433, 43451, 43438, 33504, 33497, 58770,
+ 43444, 58765, 58768, 43440, 58442, 43448, 58450, 58769, 43449,
+ 58762, 58753, 58755, 58763, 58758, 58757, 43445, 58759, 58754,
+ 33496, 58772, 58982, 43592, 43594, 43598, 43590, 43450, 43593,
+ 58983, 43595, 43596, 58984, 58985, 58989, 43597, 58988, 58981,
+ 58986, 43588, 43591, 43587, 58987, 33610, 43589, 33608, 43696,
+ 43692, 43695, 59117, 33678, 43693, 43691, 33679, 59115, 43694,
+ 59119, 59116, 59118, 33681, 43765, 59244, 43763, 33726, 43767,
+ 43766, 43762, 43764, 33725, 59243, 43761, 59246, 43768, 59248,
+ 59245, 59241, 59247, 43817, 59333, 59335, 43818, 43815, 43814,
+ 43820, 43819, 43816, 59336, 33759, 59332, 59334, 43857, 59409,
+ 59458, 59411, 59413, 59410, 59414, 43858, 59412, 33779, 43887,
+ 59459, 59460, 43888, 59457, 59461, 59456, 59484, 59483, 43906,
+ 43905, 43912, 59502, 59501, 43921, 59517, 43922, 59527, 43930,
+ 43937, 59538, 30254, 30255, 40079, 54051, 54050, 54049, 40759,
+ 40761, 55047, 55048, 55046, 41935, 55798, 32698, 57137, 42344,
+ 57138, 57659, 42715, 42716, 57660, 42714, 57662, 57661, 33218,
+ 58102, 58101, 43032, 58456, 58455, 33507, 58773, 58774, 43452,
+ 58990, 33612, 43697, 33682, 59249, 43821, 49598, 39367, 54057,
+ 40080, 54056, 54055, 54053, 40081, 54054, 40082, 54058, 54052,
+ 55050, 40762, 41344, 41347, 41345, 31925, 41348, 41346, 55800,
+ 55799, 55803, 55802, 41343, 56477, 41940, 41937, 41936, 56474,
+ 56476, 56473, 41939, 56475, 41938, 42346, 42345, 42348, 32700,
+ 57140, 42347, 57139, 42049, 57664, 32701, 32978, 57141, 57663,
+ 57665, 42717, 33220, 58103, 58104, 33219, 43278, 33383, 43453,
+ 43455, 43454, 58775, 58776, 58991, 33613, 58992, 43700, 43699,
+ 43599, 33683, 33727, 59415, 59462, 43935, 59540, 49600, 49599,
+ 38684, 30258, 50562, 40086, 40085, 30878, 40084, 40083, 54060,
+ 54064, 54059, 30877, 54061, 40087, 54063, 54062, 55054, 55052,
+ 55051, 55056, 31454, 55055, 47802, 40763, 55053, 41349, 41350,
+ 55805, 55806, 55807, 55804, 56479, 41941, 56481, 41942, 41944,
+ 56482, 41943, 56480, 56478, 32707, 32705, 57146, 57148, 57142,
+ 42351, 42349, 57147, 42352, 42350, 57145, 32708, 57144, 57143,
+ 42718, 57672, 57671, 42719, 57669, 32979, 57668, 42721, 42720,
+ 57670, 57667, 57666, 43033, 58106, 43036, 58107, 43035, 58108,
+ 58105, 43034, 43282, 43283, 58457, 43280, 43285, 58464, 58459,
+ 58460, 58465, 58462, 43281, 58458, 58461, 58463, 43458, 33510,
+ 43457, 43459, 43456, 43600, 43602, 43601, 58994, 58777, 33614,
+ 58993, 33728, 59250, 59338, 59337, 43859, 59416, 33795, 43913,
+ 39371, 39369, 39370, 40089, 30879, 40088, 54065, 40766, 55057,
+ 40764, 40765, 41353, 41351, 41352, 41945, 57149, 42353, 57150,
+ 32982, 58109, 43037, 58467, 33511, 58521, 58778, 33512, 43914,
+ 54067, 40767, 40769, 40768, 41355, 41947, 41354, 41948, 41946,
+ 42354, 32713, 32984, 32983, 42723, 42722, 32986, 57673, 57674,
+ 57675, 57676, 43040, 43039, 43038, 58110, 58111, 43286, 33384,
+ 33385, 58470, 58469, 58468, 58779, 43603, 58995, 43604, 59120,
+ 43701, 59508, 30259, 40090, 30880, 55061, 55059, 40771, 40770,
+ 40772, 41359, 55809, 41357, 55808, 41356, 31927, 41358, 55810,
+ 55811, 41950, 41949, 32987, 42724, 42726, 43041, 58113, 58112,
+ 43287, 33515, 43461, 43460, 33514, 59251, 59121, 33729, 43861,
+ 59417, 43860, 50563, 38685, 50565, 50564, 54069, 30884, 30883,
+ 40091, 54070, 54071, 55063, 40775, 40773, 40774, 55062, 55064,
+ 55065, 31929, 55813, 41360, 55812, 41953, 41951, 56483, 42355,
+ 41361, 41954, 42357, 42356, 42358, 42360, 42359, 57152, 57151,
+ 42729, 42730, 57680, 42734, 42732, 42728, 57677, 32993, 32990,
+ 57681, 42733, 32989, 57679, 57678, 58115, 33232, 33230, 43045,
+ 33229, 43048, 58114, 43042, 43046, 43044, 33233, 43043, 33234,
+ 33389, 58116, 58117, 43047, 43288, 33388, 33390, 58477, 58474,
+ 58473, 33387, 58476, 58475, 43289, 58472, 43466, 58782, 43465,
+ 43463, 43464, 43462, 43467, 58780, 43607, 43608, 58998, 33617,
+ 33621, 43606, 58997, 43605, 33620, 33619, 33618, 58781, 58996,
+ 43703, 43704, 43705, 43702, 33688, 59122, 59123, 33689, 43769,
+ 59339, 59418, 33761, 59340, 43822, 33760, 43862, 43863, 59419,
+ 33787, 43889, 59485, 43939, 59551, 56484, 32995, 43049, 33236,
+ 43468, 50566, 54073, 54072, 41363, 55066, 31930, 55814, 55815,
+ 56487, 41957, 56488, 56486, 56485, 32368, 57155, 57156, 55816,
+ 57154, 57683, 57684, 57682, 43050, 58118, 33391, 58479, 58484,
+ 58485, 58481, 58483, 58480, 58478, 58482, 43469, 58783, 43609,
+ 43706, 43770, 33690, 59252, 43823, 59253, 59420, 48644, 55067,
+ 55068, 40776, 56540, 59421, 40777, 41364, 55818, 41958, 56489,
+ 41959, 57158, 42363, 57157, 42361, 42362, 32716, 32996, 57685,
+ 33394, 33237, 58119, 58120, 43290, 58487, 58488, 43292, 33393,
+ 58486, 43291, 58784, 58999, 43610, 59000, 43707, 59254, 43824,
+ 43890, 54074, 40778, 55819, 40779, 41367, 41369, 41370, 41368,
+ 41366, 55821, 41365, 55820, 41371, 31931, 56491, 57163, 41962,
+ 41963, 41961, 41960, 56490, 57161, 42364, 42366, 42365, 57164,
+ 57165, 57160, 57687, 57689, 57688, 42736, 42737, 57162, 57690,
+ 42735, 57686, 43052, 43051, 58121, 43294, 58489, 43295, 43296,
+ 43293, 33395, 58785, 43470, 33520, 58789, 33518, 33521, 58788,
+ 58787, 58786, 43614, 33624, 43612, 43611, 59001, 59125, 59124,
+ 33692, 43708, 43825, 43892, 43891, 59486, 59503, 30886, 55069,
+ 55070, 55823, 55822, 41964, 56493, 56494, 56492, 42367, 42368,
+ 57691, 42738, 42739, 57693, 33240, 43053, 58122, 58123, 43054,
+ 43055, 58490, 43471, 58790, 43613, 59002, 43709, 43710, 59257,
+ 43771, 59256, 59341, 33796, 43915, 31463, 31934, 56495, 32719,
+ 57166, 42542, 32997, 33396, 43712, 43711, 59126, 59422, 41373,
+ 55824, 56498, 32374, 56497, 57167, 42369, 32721, 57168, 57171,
+ 57169, 57170, 57172, 57173, 42370, 57696, 42742, 42741, 33001,
+ 57694, 33003, 57698, 33002, 57699, 57695, 30261, 57697, 58129,
+ 43061, 43058, 58126, 58125, 33243, 43059, 33244, 33242, 58127,
+ 43056, 43062, 58128, 58130, 43060, 58124, 43057, 58491, 33399,
+ 43299, 43298, 43301, 58499, 58498, 43302, 58493, 43303, 33400,
+ 58492, 43297, 58494, 58496, 58497, 58495, 43300, 43474, 43473,
+ 33525, 33529, 33530, 33526, 33527, 43475, 58795, 58793, 33524,
+ 58791, 58792, 58796, 33531, 33628, 43615, 59008, 33629, 59006,
+ 43616, 59128, 33626, 59004, 59007, 59005, 59003, 59009, 43617,
+ 33697, 33693, 59130, 43715, 33699, 33696, 43713, 59132, 33698,
+ 59129, 59131, 59133, 59134, 59127, 43714, 59259, 43773, 59258,
+ 43775, 43772, 43774, 59343, 33763, 59342, 43826, 43828, 43827,
+ 59345, 59346, 59344, 33783, 59425, 43864, 59424, 59423, 59464,
+ 59488, 59489, 43907, 59487, 59490, 43916, 59505, 59504, 43924,
+ 59519, 43923, 59518, 59530, 59529, 43934, 59534, 59541, 43943,
+ 43942, 42371, 57174, 32723, 57701, 57700, 57249, 42743, 58131,
+ 58501, 58500, 58502, 58503, 43476, 43946, 55071, 55825, 56499,
+ 58132, 42744, 33004, 42746, 42745, 33005, 57704, 57702, 57703,
+ 43063, 43065, 58134, 43066, 42373, 43064, 57819, 58133, 57176,
+ 57175, 43865, 59040, 43829, 43477, 59347, 43931, 43067, 59136,
+ 59135, 43777, 43776, 59261, 59260, 43830, 33784, 59506, 33799,
+ 59545, 44953, 44196, 44180, 44625, 44637, 26912, 45466, 46832,
+ 48656, 29061, 49619, 44417, 18003, 18286, 18287, 46839, 57181,
+ 44227, 17856, 44424, 17718, 46095, 26538, 44301, 17986, 55079,
+ 35352, 44203, 44998, 45487, 47728, 20620, 45500, 46115, 28525,
+ 26522, 44311, 17770, 44314, 17868, 45519, 47741, 45028, 45524,
+ 46868, 46869, 20027, 17962, 44244, 44684, 36864, 44332, 35407,
+ 17887, 26755, 44695, 26754, 45053, 19084, 46153, 28003, 46903,
+ 47761, 47763, 47767, 47768, 47770, 29093, 49690, 48713, 49688,
+ 53079, 54118, 17763, 44480, 46174, 46917, 46916, 19537, 28567,
+ 48733, 53101, 56523, 48746, 35597, 44488, 48753, 47805, 44344,
+ 46197, 46198, 46957, 46953, 47816, 48764, 23048, 56542, 44501,
+ 28027, 49727, 23051, 59014, 44744, 46224, 44504, 26527, 36084,
+ 47842, 26528, 18737, 45635, 47856, 47866, 20679, 48804, 49754,
+ 44765, 49766, 47868, 46259, 47873, 54194, 54196, 59015, 36102,
+ 47037, 47036, 19614, 48817, 38788, 44263, 44785, 45134, 45673,
+ 45144, 54210, 43083, 18754, 47061, 36511, 19620, 44806, 35649,
+ 45705, 45699, 27301, 47937, 47933, 21229, 48861, 48855, 49825,
+ 49823, 29752, 54216, 54232, 53200, 22529, 31971, 56595, 18148,
+ 47096, 35515, 45186, 45183, 45730, 46328, 19653, 47115, 47104,
+ 47981, 47955, 53219, 49843, 38833, 53216, 30368, 55202, 27673,
+ 47994, 19677, 46363, 48907, 38854, 45760, 47148, 48027, 49878,
+ 45216, 35855, 28135, 47149, 38233, 26828, 44851, 27049, 18820,
+ 46383, 19235, 27695, 46389, 37035, 20235, 48941, 38244, 20757,
+ 49891, 53285, 54311, 32421, 58188, 44558, 48064, 53291, 58831,
+ 48966, 27704, 48078, 45247, 44569, 45272, 45262, 18849, 45802,
+ 45811, 27358, 27715, 46448, 46425, 46436, 19730, 48102, 48100,
+ 29252, 49014, 49020, 49943, 53344, 53353, 54365, 31550, 57253,
+ 57779, 57771, 45277, 45274, 45817, 28741, 49030, 43894, 22596,
+ 47252, 47254, 47261, 49975, 45843, 48161, 56672, 44279, 45311,
+ 48166, 29875, 55996, 47282, 20334, 45866, 27389, 37104, 48181,
+ 29309, 47299, 57806, 45333, 37116, 45344, 45336, 45900, 45888,
+ 36665, 46542, 46543, 47321, 48217, 54467, 44586, 45345, 20886,
+ 49142, 53482, 55348, 45913, 30519, 53492, 46564, 47352, 29954,
+ 31114, 54495, 50092, 53515, 53513, 54508, 50104, 53530, 56051,
+ 42486, 54532, 55384, 32110, 56059, 18947, 45941, 21411, 53559,
+ 53558, 32811, 59170, 48303, 55403, 55406, 56758, 58871, 48318,
+ 27453, 53587, 50162, 39093, 44928, 27143, 45380, 19411, 37835,
+ 48355, 30603, 31690, 28348, 48377, 20966, 50200, 18245, 44605,
+ 44938, 44939, 45403, 45404, 46001, 45405, 46673, 28376, 47480,
+ 28377, 47461, 47496, 28927, 47499, 47497, 47498, 48436, 50225,
+ 50242, 30638, 53644, 53656, 54649, 55444, 56145, 57871, 33098,
+ 46004, 29468, 55483, 23129, 46704, 28942, 48447, 30077, 30662,
+ 53687, 56181, 56180, 23136, 32836, 31251, 44606, 36783, 49363,
+ 49361, 55524, 43733, 46730, 28424, 50328, 54754, 58312, 44941,
+ 49397, 49409, 23685, 46744, 54796, 54790, 21038, 53803, 46026,
+ 27929, 54818, 31324, 55618, 44614, 28469, 49482, 49485, 55628,
+ 50434, 50430, 31343, 57508, 50439, 54891, 54882, 48599, 50461,
+ 54916, 22741, 41233, 55695, 57026, 32909, 57038, 38014, 38654,
+ 49556, 50493, 31857, 50503, 46804, 49566, 31398, 32305, 50525,
+ 55750, 54008, 57617, 58437, 31922, 56468, 32358, 32695, 57658,
+ 43261, 43260, 55801, 47687, 42727, 49601, 27185, 23232, 40092,
+ 57159, 30260, 58794
+};
+
+#define cns11643_forward(index) \
+( cns11643_forward_16[index] | \
+ (((cns11643_forward_2[(index)/16] >> (((index)&15)*2)) & 3) << 16) )
+
+/* This returns ERROR if the code point doesn't exist. */
+long int cns11643_to_unicode(int p, int r, int c)
+{
+ assert(p >= 0 && p < 7);
+ assert(r >= 0 && r < 94);
+ assert(c >= 0 && c < 94);
+ return cns11643_forward((p*94+r)*94+c);
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_cns11643(long int unicode, int *p, int *r, int *c)
+{
+ int index, pp, rr, cc;
+ long int uu;
+ int i, j, k;
+
+ i = -1;
+ j = lenof(cns11643_backward);
+ while (j - i > 1) {
+ k = (i + j) / 2;
+ index = cns11643_backward[k];
+ uu = cns11643_forward(index);
+ if (unicode > uu)
+ i = k;
+ else if (unicode < uu)
+ j = k;
+ else {
+ cc = index % 94;
+ rr = index / 94;
+ pp = rr / 94;
+ rr %= 94;
+ *p = pp;
+ *r = rr;
+ *c = cc;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+
+int main(void)
+{
+ int i, p, r, c, pp, rr, cc, index, ret;
+ long int u, uu;
+
+ u = 0;
+ for (i = 0; i < lenof(cns11643_backward); i++) {
+ index = cns11643_backward[i];
+ uu = cns11643_forward(index);
+ if (uu <= u)
+ printf("%d out of order [U+%04lX,U+%04lX]\n",index,u,uu);
+ u = uu;
+ }
+
+ for (p = 0; p < 7; p++) {
+ for (r = 0; r < 94; r++) {
+ for (c = 0; c < 94; c++) {
+ u = cns11643_to_unicode(p, r, c);
+ if (u != ERROR) {
+ ret = unicode_to_cns11643(u, &pp, &rr, &cc);
+ if (!ret)
+ printf("(%d,%d,%d) -> U-%08lx but didn't convert back\n",
+ p, r, c, u);
+ else if (rr != r || cc != c)
+ printf("(%d,%d,%d) -> U-%08lx -> (%d,%d,%d)\n",
+ p, r, c, u, pp, rr, cc);
+ }
+ }
+ }
+ }
+
+ for (u = 0; u < 0x30000L; u++) {
+ ret = unicode_to_cns11643(u, &p, &r, &c);
+ if (ret) {
+ uu = cns11643_to_unicode(p, r, c);
+ if (uu == ERROR)
+ printf("U-%08lx -> (%d,%d,%d) but didn't convert back\n",
+ u, p, r, c);
+ else if (uu != u)
+ printf("U-%08lx -> (%d,%d,%d) -> U-%08lx\n", u, p, r, c, uu);
+ }
+ }
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/charset/cp949.c b/app/tools/halibut/charset/cp949.c
new file mode 100644
index 0000000..28cd63a
--- /dev/null
+++ b/app/tools/halibut/charset/cp949.c
@@ -0,0 +1,94 @@
+/*
+ * cp949.c - CP949 / KS_C_5601_1987 multibyte encoding
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * CP949 has no associated data, so `charset' may be ignored.
+ */
+
+static void read_cp949(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ UNUSEDARG(charset);
+
+ /*
+ * For reading CP949, state->s0 simply contains the single
+ * stored lead byte when we are half way through a double-byte
+ * character, or 0 if we aren't.
+ */
+
+ if (state->s0 == 0) {
+ if (input_chr >= 0x81 && input_chr <= 0xFE) {
+ /*
+ * Lead byte. Just store it.
+ */
+ state->s0 = input_chr;
+ } else {
+ /*
+ * Anything else we pass straight through unchanged.
+ */
+ emit(emitctx, input_chr);
+ }
+ } else {
+ /*
+ * We have a stored lead byte. We expect a valid followup
+ * byte.
+ */
+ if ((input_chr >= 0x40 && input_chr <= 0xFF)) {
+ emit(emitctx, cp949_to_unicode(state->s0 - 0x80,
+ input_chr - 0x40));
+ } else {
+ emit(emitctx, ERROR);
+ }
+ state->s0 = 0;
+ }
+}
+
+/*
+ * CP949 is a stateless multi-byte encoding (in the sense that just
+ * after any character has been completed, the state is always the
+ * same); hence when writing it, there is no need to use the
+ * charset_state.
+ */
+
+static int write_cp949(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ UNUSEDARG(charset);
+ UNUSEDARG(state);
+
+ if (input_chr == -1)
+ return TRUE; /* stateless; no cleanup required */
+
+ if (input_chr < 0x80) {
+ emit(emitctx, input_chr);
+ return TRUE;
+ } else {
+ int r, c;
+ if (unicode_to_cp949(input_chr, &r, &c)) {
+ emit(emitctx, r + 0x80);
+ emit(emitctx, c + 0x40);
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+}
+
+const charset_spec charset_CS_CP949 = {
+ CS_CP949, read_cp949, write_cp949, NULL
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_CP949)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/cstable.c b/app/tools/halibut/charset/cstable.c
new file mode 100644
index 0000000..509923a
--- /dev/null
+++ b/app/tools/halibut/charset/cstable.c
@@ -0,0 +1,120 @@
+/*
+ * cstable.c - libcharset supporting utility which draws up a map
+ * of the whole Unicode BMP and annotates it with details of which
+ * other character sets each character appears in.
+ *
+ * Note this is not a libcharset _client_; it is part of the
+ * libcharset _package_, using libcharset internals.
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "charset.h"
+#include "internal.h"
+#include "sbcsdat.h"
+
+#define ENUM_CHARSET(x) extern charset_spec const charset_##x;
+#include "enum.c"
+#undef ENUM_CHARSET
+static charset_spec const *const cs_table[] = {
+#define ENUM_CHARSET(x) &charset_##x,
+#include "enum.c"
+#undef ENUM_CHARSET
+};
+static const char *const cs_names[] = {
+#define ENUM_CHARSET(x) #x,
+#include "enum.c"
+#undef ENUM_CHARSET
+};
+
+int main(int argc, char **argv)
+{
+ long int c;
+ int internal_names = FALSE;
+ int verbose = FALSE;
+
+ while (--argc) {
+ char *p = *++argv;
+ if (!strcmp(p, "-i"))
+ internal_names = TRUE;
+ else if (!strcmp(p, "-v"))
+ verbose = TRUE;
+ }
+
+ for (c = 0; c < 0x30000; c++) {
+ int i, plane, row, col, chr;
+ char const *sep = "";
+
+ printf("U+%04x:", c);
+
+ /*
+ * Look up in SBCSes.
+ */
+ for (i = 0; i < lenof(cs_table); i++)
+ if (cs_table[i]->read == read_sbcs &&
+ (chr = sbcs_from_unicode(cs_table[i]->data, c)) != ERROR) {
+ printf("%s %s", sep,
+ (internal_names ? cs_names[i] :
+ charset_to_localenc(cs_table[i]->charset)));
+ if (verbose)
+ printf("[%d]", chr);
+ sep = ";";
+ }
+
+ /*
+ * Look up individually in MBCS base charsets. The
+ * `internal_names' flag does not affect these, because
+ * MBCS base charsets aren't directly encoded by CS_*
+ * constants.
+ */
+ if (unicode_to_big5(c, &row, &col)) {
+ printf("%s Big5", sep);
+ if (verbose)
+ printf("[%d,%d]", row, col);
+ sep = ";";
+ }
+
+ if (unicode_to_gb2312(c, &row, &col)) {
+ printf("%s GB2312", sep);
+ if (verbose)
+ printf("[%d,%d]", row, col);
+ sep = ";";
+ }
+
+ if (unicode_to_jisx0208(c, &row, &col)) {
+ printf("%s JIS X 0208", sep);
+ if (verbose)
+ printf("[%d,%d]", row, col);
+ sep = ";";
+ }
+
+ if (unicode_to_ksx1001(c, &row, &col)) {
+ printf("%s KS X 1001", sep);
+ if (verbose)
+ printf("[%d,%d]", row, col);
+ sep = ";";
+ }
+
+ if (unicode_to_cp949(c, &row, &col)) {
+ printf("%s CP949", sep);
+ if (verbose)
+ printf("[%d,%d]", row, col);
+ sep = ";";
+ }
+
+ if (unicode_to_cns11643(c, &plane, &row, &col)) {
+ printf("%s CNS11643", sep);
+ if (verbose)
+ printf("[%d,%d,%d]", plane, row, col);
+ sep = ";";
+ }
+
+ if (!*sep)
+ printf(" unicode-only");
+
+ printf("\n");
+ }
+
+ return 0;
+}
diff --git a/app/tools/halibut/charset/enum.c b/app/tools/halibut/charset/enum.c
new file mode 100644
index 0000000..5a7f0f0
--- /dev/null
+++ b/app/tools/halibut/charset/enum.c
@@ -0,0 +1,28 @@
+/*
+ * enum.c - enumerate all charsets defined by the library.
+ *
+ * This file maintains a list of every other source file which
+ * contains ENUM_CHARSET definitions. It #includes each one with
+ * ENUM_CHARSETS defined, which causes those source files to do
+ * nothing at all except call the ENUM_CHARSET macro on each
+ * charset they define.
+ *
+ * This file in turn is included from various other places, with
+ * the ENUM_CHARSET macro defined to various different things. This
+ * allows us to have multiple implementations of the master charset
+ * lookup table (a static one and a dynamic one).
+ */
+
+#define ENUM_CHARSETS
+#include "sbcsdat.c"
+#include "utf8.c"
+#include "utf7.c"
+#include "utf16.c"
+#include "euc.c"
+#include "iso2022.c"
+#include "iso2022s.c"
+#include "big5enc.c"
+#include "shiftjis.c"
+#include "hz.c"
+#include "cp949.c"
+#undef ENUM_CHARSETS
diff --git a/app/tools/halibut/charset/euc.c b/app/tools/halibut/charset/euc.c
new file mode 100644
index 0000000..b3d43ff
--- /dev/null
+++ b/app/tools/halibut/charset/euc.c
@@ -0,0 +1,272 @@
+/*
+ * euc.c - routines to handle the various EUC multibyte encodings.
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+struct euc {
+ int nchars[3]; /* GR, SS2+GR, SS3+GR */
+ long int (*to_ucs)(unsigned long state);
+ unsigned long (*from_ucs)(long int ucs);
+};
+
+static void read_euc(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ struct euc const *euc = (struct euc *)charset->data;
+
+ /*
+ * For EUC input, our state variable divides into three parts:
+ *
+ * - Topmost nibble (bits 31:28) is nonzero if we're
+ * accumulating a multibyte character, and it indicates
+ * which section we're in: 1 for GR chars, 2 for things
+ * beginning with SS2, 3 for things beginning with SS3.
+ *
+ * - Next nibble (bits 27:24) indicates how many bytes of the
+ * character we've accumulated so far.
+ *
+ * - The rest (bits 23:0) are those bytes in full, accumulated
+ * as a large integer (so that seeing A1 A2 A3, in a
+ * hypothetical EUC whose GR encoding is three-byte, runs
+ * our state variable from 0 -> 0x110000A1 -> 0x1200A1A2 ->
+ * 0x13A1A2A3, at which point it gets translated and output
+ * and resets to zero).
+ */
+
+ if (state->s0 != 0) {
+
+ /*
+ * At this point, no matter whether we had an SS2 or SS3
+ * introducer or not, we _always_ expect a GR character.
+ * Anything else causes us to emit ERROR for an incomplete
+ * character, and then reset to state 0 to process the
+ * character in its own way.
+ */
+ if (input_chr < 0xA1 || input_chr == 0xFF) {
+ emit(emitctx, ERROR);
+ state->s0 = 0;
+ } else
+ state->s0 = (((state->s0 & 0xFF000000) + 0x01000000) |
+ ((state->s0 & 0x0000FFFF) << 8) | input_chr);
+
+ }
+
+ if (state->s0 == 0) {
+ /*
+ * The input character determines which of the four
+ * possible charsets we're going to be in.
+ */
+ if (input_chr < 0x80) { /* this is always ASCII */
+ emit(emitctx, input_chr);
+ } else if (input_chr == 0x8E) {/* SS2 means charset 2 */
+ state->s0 = 0x20000000;
+ } else if (input_chr == 0x8F) {/* SS3 means charset 3 */
+ state->s0 = 0x30000000;
+ } else if (input_chr < 0xA1 || input_chr == 0xFF) { /* errors */
+ emit(emitctx, ERROR);
+ } else { /* A1-FE means charset 1 */
+ state->s0 = 0x11000000 | input_chr;
+ }
+ }
+
+ /*
+ * Finally, if we have accumulated a complete character, output
+ * it.
+ */
+ if (state->s0 != 0 &&
+ ((state->s0 & 0x0F000000) >> 24) >=
+ (unsigned)euc->nchars[(state->s0 >> 28)-1]) {
+ emit(emitctx, euc->to_ucs(state->s0));
+ state->s0 = 0;
+ }
+}
+
+/*
+ * All EUCs are stateless multi-byte encodings (in the sense that
+ * just after any character has been completed, the state is always
+ * the same); hence when writing them, there is no need to use the
+ * charset_state.
+ */
+
+static int write_euc(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ struct euc const *euc = (struct euc *)charset->data;
+ unsigned long c;
+ int cset, len;
+
+ UNUSEDARG(state);
+
+ if (input_chr == -1)
+ return TRUE; /* stateless; no cleanup required */
+
+ /* ASCII is the easy bit, and is always the same. */
+ if (input_chr < 0x80) {
+ emit(emitctx, input_chr);
+ return TRUE;
+ }
+
+ c = euc->from_ucs(input_chr);
+ if (!c) {
+ return FALSE;
+ }
+
+ cset = c >> 28;
+ len = euc->nchars[cset-1];
+ c &= 0xFFFFFF;
+
+ if (cset > 1)
+ emit(emitctx, 0x8C + cset); /* SS2/SS3 */
+
+ while (len--)
+ emit(emitctx, (c >> (8*len)) & 0xFF);
+ return TRUE;
+}
+
+/*
+ * EUC-CN encodes GB2312 only.
+ */
+static long int euc_cn_to_ucs(unsigned long state)
+{
+ switch (state >> 28) {
+ case 1: return gb2312_to_unicode(((state >> 8) & 0xFF) - 0xA1,
+ ((state ) & 0xFF) - 0xA1);
+ default: return ERROR;
+ }
+}
+static unsigned long euc_cn_from_ucs(long int ucs)
+{
+ int r, c;
+ if (unicode_to_gb2312(ucs, &r, &c))
+ return 0x10000000 | ((r+0xA1) << 8) | (c+0xA1);
+ else
+ return 0;
+}
+static const struct euc euc_cn = {
+ {2,0,0}, euc_cn_to_ucs, euc_cn_from_ucs
+};
+const charset_spec charset_CS_EUC_CN = {
+ CS_EUC_CN, read_euc, write_euc, &euc_cn
+};
+
+/*
+ * EUC-KR encodes KS X 1001 only.
+ */
+static long int euc_kr_to_ucs(unsigned long state)
+{
+ switch (state >> 28) {
+ case 1: return ksx1001_to_unicode(((state >> 8) & 0xFF) - 0xA1,
+ ((state ) & 0xFF) - 0xA1);
+ default: return ERROR;
+ }
+}
+static unsigned long euc_kr_from_ucs(long int ucs)
+{
+ int r, c;
+ if (unicode_to_ksx1001(ucs, &r, &c))
+ return 0x10000000 | ((r+0xA1) << 8) | (c+0xA1);
+ else
+ return 0;
+}
+static const struct euc euc_kr = {
+ {2,0,0}, euc_kr_to_ucs, euc_kr_from_ucs
+};
+const charset_spec charset_CS_EUC_KR = {
+ CS_EUC_KR, read_euc, write_euc, &euc_kr
+};
+
+/*
+ * EUC-JP encodes several character sets.
+ */
+static long int euc_jp_to_ucs(unsigned long state)
+{
+ switch (state >> 28) {
+ case 1: return jisx0208_to_unicode(((state >> 8) & 0xFF) - 0xA1,
+ ((state ) & 0xFF) - 0xA1);
+ case 2:
+ /*
+ * This is the top half of JIS X 0201. That means A1-DF map
+ * to FF61-FF9F, and nothing else is valid.
+ */
+ {
+ int c = state & 0xFF;
+ if (c >= 0xA1 && c <= 0xDF)
+ return c + (0xFF61 - 0xA1);
+ else
+ return ERROR;
+ }
+ /* (no break needed since all control paths have returned) */
+ case 3: return jisx0212_to_unicode(((state >> 8) & 0xFF) - 0xA1,
+ ((state ) & 0xFF) - 0xA1);
+ default: return ERROR; /* placate optimisers */
+ }
+}
+static unsigned long euc_jp_from_ucs(long int ucs)
+{
+ int r, c;
+ if (ucs >= 0xFF61 && ucs <= 0xFF9F)
+ return 0x20000000 | (ucs - (0xFF61 - 0xA1));
+ else if (unicode_to_jisx0208(ucs, &r, &c))
+ return 0x10000000 | ((r+0xA1) << 8) | (c+0xA1);
+ else if (unicode_to_jisx0212(ucs, &r, &c))
+ return 0x30000000 | ((r+0xA1) << 8) | (c+0xA1);
+ else
+ return 0;
+}
+static const struct euc euc_jp = {
+ {2,1,2}, euc_jp_to_ucs, euc_jp_from_ucs
+};
+const charset_spec charset_CS_EUC_JP = {
+ CS_EUC_JP, read_euc, write_euc, &euc_jp
+};
+
+/*
+ * EUC-TW encodes CNS 11643 (all planes).
+ */
+static long int euc_tw_to_ucs(unsigned long state)
+{
+ int plane;
+ switch (state >> 28) {
+ case 1: return cns11643_to_unicode(0, ((state >> 8) & 0xFF) - 0xA1,
+ ((state ) & 0xFF) - 0xA1);
+ case 2:
+ plane = ((state >> 8) & 0xFF) - 0xA1;
+ if (plane >= 7) return ERROR;
+ return cns11643_to_unicode(plane, ((state >> 8) & 0xFF) - 0xA1,
+ ((state ) & 0xFF) - 0xA1);
+ default: return ERROR;
+ }
+}
+static unsigned long euc_tw_from_ucs(long int ucs)
+{
+ int p, r, c;
+ if (unicode_to_cns11643(ucs, &p, &r, &c)) {
+ if (p == 0)
+ return 0x10000000 | ((r+0xA1) << 8) | (c+0xA1);
+ else
+ return 0x20000000 |
+ ((p + 0xA1) << 16) | ((r+0xA1) << 8) | (c+0xA1);
+ } else
+ return 0;
+}
+static const struct euc euc_tw = {
+ {2,3,0}, euc_tw_to_ucs, euc_tw_from_ucs
+};
+const charset_spec charset_CS_EUC_TW = {
+ CS_EUC_TW, read_euc, write_euc, &euc_tw
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_EUC_CN)
+ENUM_CHARSET(CS_EUC_KR)
+ENUM_CHARSET(CS_EUC_JP)
+ENUM_CHARSET(CS_EUC_TW)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/fromucs.c b/app/tools/halibut/charset/fromucs.c
new file mode 100644
index 0000000..8090c19
--- /dev/null
+++ b/app/tools/halibut/charset/fromucs.c
@@ -0,0 +1,82 @@
+/*
+ * fromucs.c - convert Unicode to other character sets.
+ */
+
+#include "charset.h"
+#include "internal.h"
+
+struct charset_emit_param {
+ char *output;
+ int outlen;
+ int stopped;
+};
+
+static void charset_emit(void *ctx, long int output)
+{
+ struct charset_emit_param *param = (struct charset_emit_param *)ctx;
+
+ if (param->outlen > 0) {
+ *param->output++ = output;
+ param->outlen--;
+ } else {
+ param->stopped = 1;
+ }
+}
+
+int charset_from_unicode(const wchar_t **input, int *inlen,
+ char *output, int outlen,
+ int charset, charset_state *state, int *error)
+{
+ charset_spec const *spec = charset_find_spec(charset);
+ charset_state localstate = CHARSET_INIT_STATE;
+ struct charset_emit_param param;
+ int locallen;
+
+ if (!input) {
+ locallen = 1;
+ inlen = &locallen;
+ }
+
+ param.output = output;
+ param.outlen = outlen;
+ param.stopped = 0;
+
+ if (state)
+ localstate = *state; /* structure copy */
+ if (error)
+ *error = FALSE;
+
+ while (*inlen > 0) {
+ int lenbefore = param.output - output;
+ int ret;
+
+ if (input)
+ ret = spec->write(spec, **input, &localstate,
+ charset_emit, &param);
+ else
+ ret = spec->write(spec, -1, &localstate, charset_emit, &param);
+ if (error && !ret) {
+ /*
+ * We have hit a difficult character, which the user
+ * wants to know about. Leave now.
+ */
+ *error = TRUE;
+ return lenbefore;
+ }
+ if (param.stopped) {
+ /*
+ * The emit function has _tried_ to output some
+ * characters, but ran up against the end of the
+ * buffer. Leave immediately, and return what happened
+ * _before_ attempting to process this character.
+ */
+ return lenbefore;
+ }
+ if (state)
+ *state = localstate; /* structure copy */
+ if (input)
+ (*input)++;
+ (*inlen)--;
+ }
+ return param.output - output;
+}
diff --git a/app/tools/halibut/charset/gb2312.c b/app/tools/halibut/charset/gb2312.c
new file mode 100644
index 0000000..463c15b
--- /dev/null
+++ b/app/tools/halibut/charset/gb2312.c
@@ -0,0 +1,2089 @@
+/*
+ * GB2312 implementation for libcharset. (This is the character set
+ * itself, not any particular multibyte encoding of it. Multibyte
+ * encodings of this character set are handled separately.)
+ */
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * These tables are generated from the GB2312 <-> Unicode character
+ * mapping found at
+ *
+ * http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/GB/GB2312.TXT
+ */
+
+/*
+ * Mapping from GB2312 to Unicode. For these purposes GB2312 is
+ * considered to be a 94x94 square array, with coordinates running
+ * from (0,0) to (93,93).
+ *
+ * Generated by running the following sh+Perl over GB2312.TXT:
+
+cat GB2312.TXT | \
+perl -ne '$a{hex$1,hex$2}=$3 if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {for $r (0..93) { $o=" {"; for $c (0..93) {' \
+ -e '$k=$a{$r+33,$c+33}; $k=" ERROR" unless defined $k;' \
+ -e '$o .= ", " if $c > 0; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= $k; } print "$o},\n"; }}'
+
+ */
+
+static const unsigned short gb2312_forward[94][94] = {
+ {0x3000, 0x3001, 0x3002, 0x30FB, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005,
+ 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014,
+ 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F,
+ 0x3016, 0x3017, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227,
+ 0x2228, 0x2211, 0x220F, 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5,
+ 0x2225, 0x2220, 0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248,
+ 0x223D, 0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235,
+ 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4,
+ 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF,
+ 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192,
+ 0x2190, 0x2191, 0x2193, 0x3013},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x2488, 0x2489,
+ 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2491, 0x2492,
+ 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x249A, 0x249B,
+ 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C,
+ 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485,
+ 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, ERROR, ERROR, 0x3220, 0x3221, 0x3222, 0x3223,
+ 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, ERROR, ERROR, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+ 0x216A, 0x216B, ERROR, ERROR},
+ {0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09,
+ 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12,
+ 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B,
+ 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24,
+ 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D,
+ 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36,
+ 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F,
+ 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48,
+ 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51,
+ 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A,
+ 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3},
+ {0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
+ 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052,
+ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B,
+ 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064,
+ 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D,
+ 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091,
+ 0x3092, 0x3093, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9,
+ 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2,
+ 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB,
+ 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4,
+ 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD,
+ 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6,
+ 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
+ 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1,
+ 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
+ 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3,
+ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x03B1, 0x03B2, 0x03B3, 0x03B4,
+ 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD,
+ 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
+ 0x03C8, 0x03C9, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420,
+ 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
+ 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B,
+ 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA,
+ 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D,
+ 0x310E, 0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+ 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F,
+ 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505,
+ 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E,
+ 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517,
+ 0x2518, 0x2519, 0x251A, 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520,
+ 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529,
+ 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532,
+ 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B,
+ 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+ 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0, 0x7691, 0x764C,
+ 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698, 0x978D, 0x6C28, 0x5B89,
+ 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, 0x6848, 0x80AE, 0x6602, 0x76CE,
+ 0x51F9, 0x6556, 0x71AC, 0x7FF1, 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3,
+ 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4,
+ 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238,
+ 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591,
+ 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E, 0x62CC,
+ 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E, 0x6886, 0x699C,
+ 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551, 0x508D, 0x8C24, 0x82DE,
+ 0x80DE, 0x5305, 0x8912, 0x5265},
+ {0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4,
+ 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88,
+ 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB,
+ 0x5954, 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66,
+ 0x8FF8, 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6,
+ 0x853D, 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D,
+ 0x5F0A, 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9,
+ 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB,
+ 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A,
+ 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4,
+ 0x4E19, 0x79C9, 0x997C, 0x70B3},
+ {0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5, 0x6CE2, 0x535A,
+ 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, 0x8236, 0x8116, 0x818A,
+ 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, 0x8865, 0x57E0, 0x4E0D,
+ 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750,
+ 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910,
+ 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3,
+ 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56,
+ 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C, 0x8336,
+ 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7, 0x62C6, 0x67F4,
+ 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, 0x7F20, 0x94F2, 0x4EA7,
+ 0x9610, 0x98A4, 0x660C, 0x7316},
+ {0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545,
+ 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2,
+ 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4,
+ 0x81E3, 0x8FB0, 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C,
+ 0x6491, 0x79F0, 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9,
+ 0x6F84, 0x8BDA, 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301,
+ 0x5319, 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A,
+ 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 0x5BA0,
+ 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8,
+ 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504,
+ 0x96CF, 0x6EC1, 0x9664, 0x695A},
+ {0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, 0x5DDD, 0x7A7F,
+ 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97, 0x5E62, 0x5E8A,
+ 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, 0x6625, 0x693F,
+ 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328,
+ 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50,
+ 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97,
+ 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC,
+ 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8, 0x78CB,
+ 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, 0x7B54, 0x7629,
+ 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26, 0x6B86, 0x4EE3,
+ 0x8D37, 0x888B, 0x5F85, 0x902E},
+ {0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6,
+ 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321,
+ 0x515A, 0x8361, 0x6863, 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977,
+ 0x5BFC, 0x5230, 0x7A3B, 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684,
+ 0x8E6C, 0x706F, 0x767B, 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E,
+ 0x6EF4, 0x8FEA, 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5,
+ 0x5E95, 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0,
+ 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43,
+ 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5,
+ 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F,
+ 0x8776, 0x8FED, 0x8C0D, 0x53E0},
+ {0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, 0x8BA2,
+ 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, 0x606B,
+ 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, 0x75D8,
+ 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C,
+ 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B,
+ 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428,
+ 0x8E72, 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6,
+ 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, 0x60F0,
+ 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, 0x6076,
+ 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, 0x8033,
+ 0x5C14, 0x9975, 0x6D31, 0x4E8C},
+ {0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0,
+ 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1,
+ 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A,
+ 0x82B3, 0x65B9, 0x80AA, 0x623F, 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA,
+ 0x653E, 0x83F2, 0x975E, 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420,
+ 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206,
+ 0x7EB7, 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124,
+ 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF,
+ 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426,
+ 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F,
+ 0x7B26, 0x4F0F, 0x4FD8, 0x670D},
+ {0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF,
+ 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986,
+ 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC,
+ 0x8BA3, 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539,
+ 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF,
+ 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2,
+ 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8,
+ 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 0x6B4C,
+ 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 0x845B, 0x683C,
+ 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF,
+ 0x8015, 0x66F4, 0x5E9A, 0x7FB9},
+ {0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D, 0x9F9A, 0x4F9B,
+ 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E, 0x62F1, 0x8D21, 0x5171,
+ 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, 0x57A2, 0x6784, 0x8D2D, 0x591F,
+ 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13,
+ 0x53E4, 0x86CA, 0x9AA8, 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7,
+ 0x522E, 0x74DC, 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A,
+ 0x68FA, 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF,
+ 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D, 0x7845,
+ 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678, 0x6842, 0x67DC,
+ 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD, 0x9505, 0x90ED, 0x56FD,
+ 0x679C, 0x88F9, 0x8FC7, 0x54C8},
+ {0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8,
+ 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0,
+ 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F,
+ 0x676D, 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017,
+ 0x53F7, 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C,
+ 0x4F55, 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910,
+ 0x9E64, 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC,
+ 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F,
+ 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A,
+ 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1,
+ 0x8774, 0x72D0, 0x7CCA, 0x6E56},
+ {0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237, 0x82B1, 0x54D7,
+ 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, 0x8BDD, 0x69D0, 0x5F8A,
+ 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 0x6853, 0x8FD8, 0x7F13, 0x6362,
+ 0x60A3, 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352,
+ 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C,
+ 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062,
+ 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F,
+ 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364, 0x660F,
+ 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19, 0x706B, 0x83B7,
+ 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, 0x573E, 0x57FA, 0x673A,
+ 0x7578, 0x7A3D, 0x79EF, 0x7B95},
+ {0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 0x7EE9, 0x7F09,
+ 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE,
+ 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF,
+ 0x6280, 0x5180, 0x5B63, 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4,
+ 0x5BC2, 0x8BA1, 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA,
+ 0x5609, 0x67B7, 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E,
+ 0x7532, 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C,
+ 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 0x8270,
+ 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 0x62E3, 0x6361,
+ 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB, 0x9274, 0x8DF5, 0x8D31,
+ 0x89C1, 0x952E, 0x7BAD, 0x4EF6},
+ {0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, 0x5EFA, 0x50F5,
+ 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, 0x5956, 0x8BB2,
+ 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126, 0x80F6, 0x4EA4,
+ 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5,
+ 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175,
+ 0x8F7F, 0x8F83, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857,
+ 0x9636, 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED,
+ 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C, 0x501F,
+ 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, 0x91D1, 0x4ECA,
+ 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, 0x9773, 0x664B,
+ 0x7981, 0x8FD1, 0x70EC, 0x6D78},
+ {0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC,
+ 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759,
+ 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0,
+ 0x70AF, 0x7A98, 0x63EA, 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078,
+ 0x4E5D, 0x9152, 0x53A9, 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31,
+ 0x759A, 0x97A0, 0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40,
+ 0x5480, 0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177,
+ 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350,
+ 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289,
+ 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC,
+ 0x94A7, 0x519B, 0x541B, 0x5CFB},
+ {0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, 0x54AF,
+ 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, 0x574E,
+ 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, 0x7095,
+ 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5,
+ 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2,
+ 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050,
+ 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F,
+ 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, 0x80EF,
+ 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, 0x72C2,
+ 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, 0x7AA5,
+ 0x8475, 0x594E, 0x9B41, 0x5080},
+ {0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0, 0x62EC, 0x6269,
+ 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721, 0x814A, 0x8FA3, 0x5566,
+ 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611,
+ 0x5170, 0x6F9C, 0x8C30, 0x63FD, 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5,
+ 0x7405, 0x6994, 0x72FC, 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3,
+ 0x7262, 0x8001, 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50,
+ 0x96F7, 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B,
+ 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281, 0x9ECE,
+ 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC, 0x9CA4, 0x793C,
+ 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389, 0x52B1, 0x783E, 0x5386,
+ 0x5229, 0x5088, 0x4F8B, 0x4FD0},
+ {0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, 0x4FE9,
+ 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, 0x5E18, 0x655B,
+ 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, 0x51C9, 0x6881, 0x7CB1,
+ 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A,
+ 0x50DA, 0x7597, 0x71CE, 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563,
+ 0x5ED6, 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797,
+ 0x78F7, 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D,
+ 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC,
+ 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, 0x69B4,
+ 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, 0x516D, 0x9F99,
+ 0x804B, 0x5499, 0x7B3C, 0x7ABF},
+ {0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402, 0x7BD3, 0x6F0F,
+ 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089, 0x63B3, 0x5364, 0x864F,
+ 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, 0x8D42, 0x9E7F, 0x6F5E, 0x7984,
+ 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65,
+ 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6,
+ 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E,
+ 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B,
+ 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC, 0x5988,
+ 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B, 0x5417, 0x57CB,
+ 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792, 0x9992, 0x86EE, 0x6EE1,
+ 0x8513, 0x66FC, 0x6162, 0x6F2B},
+ {0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305,
+ 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C,
+ 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1,
+ 0x7709, 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A,
+ 0x95E8, 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B,
+ 0x68A6, 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25,
+ 0x7C73, 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720,
+ 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 0x63CF,
+ 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11,
+ 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED,
+ 0x540D, 0x547D, 0x8C2C, 0x6478},
+ {0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54, 0x62B9, 0x672B,
+ 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, 0x964C, 0x8C0B, 0x725F,
+ 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 0x6BCD, 0x5893, 0x66AE, 0x5E55,
+ 0x52DF, 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA,
+ 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010,
+ 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9,
+ 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A,
+ 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA, 0x852B,
+ 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18, 0x917F, 0x9E1F,
+ 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, 0x954D, 0x6D85, 0x60A8,
+ 0x67E0, 0x72DE, 0x51DD, 0x5B81},
+ {0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C,
+ 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A,
+ 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455,
+ 0x5076, 0x6CA4, 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD,
+ 0x6392, 0x724C, 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0,
+ 0x76FC, 0x7554, 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6,
+ 0x629B, 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA,
+ 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6,
+ 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7,
+ 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279,
+ 0x62AB, 0x5288, 0x7435, 0x6BD7},
+ {0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, 0x5C41, 0x8B6C,
+ 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, 0x7968, 0x6487,
+ 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, 0x576A, 0x82F9,
+ 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887,
+ 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6,
+ 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66,
+ 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03,
+ 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67, 0x7566,
+ 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, 0x8D77, 0x5C82,
+ 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, 0x8FC4, 0x5F03,
+ 0x6C7D, 0x6CE3, 0x8BAB, 0x6390},
+ {0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E,
+ 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063,
+ 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154,
+ 0x7F8C, 0x5899, 0x8537, 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084,
+ 0x6865, 0x77A7, 0x4E54, 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED,
+ 0x4FCF, 0x7A8D, 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5,
+ 0x4EB2, 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81,
+ 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30,
+ 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1,
+ 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2,
+ 0x8EAF, 0x5C48, 0x9A71, 0x6E20},
+ {0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743, 0x919B,
+ 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, 0x7094,
+ 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, 0x7136,
+ 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976,
+ 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7,
+ 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E,
+ 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197,
+ 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, 0x8FB1,
+ 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E, 0x9510,
+ 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, 0x9CC3,
+ 0x585E, 0x8D5B, 0x4E09, 0x53C1},
+ {0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2,
+ 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239,
+ 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB,
+ 0x6749, 0x5C71, 0x5220, 0x717D, 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61,
+ 0x81B3, 0x5584, 0x6C55, 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F,
+ 0x664C, 0x4E0A, 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D,
+ 0x52FA, 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7,
+ 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE,
+ 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E,
+ 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F,
+ 0x7525, 0x7272, 0x5347, 0x7EF3},
+ {0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD,
+ 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0,
+ 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76,
+ 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93,
+ 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA,
+ 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B,
+ 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C,
+ 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F,
+ 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700,
+ 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6,
+ 0x5885, 0x5EB6, 0x6570, 0x6F31},
+ {0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05, 0x6813, 0x62F4,
+ 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761, 0x7A0E, 0x542E, 0x77AC,
+ 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, 0x70C1, 0x65AF, 0x6495, 0x5636,
+ 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB,
+ 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001,
+ 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165,
+ 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9,
+ 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5, 0x9AD3,
+ 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59, 0x635F, 0x7B0B,
+ 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22, 0x9501, 0x6240, 0x584C,
+ 0x4ED6, 0x5B83, 0x5979, 0x5854},
+ {0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0,
+ 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, 0x6EE9,
+ 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892,
+ 0x78B3, 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0,
+ 0x819B, 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F,
+ 0x6D9B, 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8,
+ 0x5957, 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22,
+ 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5,
+ 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C,
+ 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, 0x94C1,
+ 0x5E16, 0x5385, 0x542C, 0x70C3},
+ {0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247, 0x901A, 0x6850,
+ 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, 0x6876, 0x6345, 0x7B52,
+ 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, 0x51F8, 0x79C3, 0x7A81,
+ 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D,
+ 0x56E2, 0x63A8, 0x9893, 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F,
+ 0x81C0, 0x62D6, 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D,
+ 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6,
+ 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D, 0x4E38,
+ 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB, 0x5B9B, 0x5A49,
+ 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, 0x7F51, 0x5F80, 0x65FA,
+ 0x671B, 0x5FD8, 0x5984, 0x5A01},
+ {0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF,
+ 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E,
+ 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, 0x4F4D,
+ 0x6E2D, 0x8C13, 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587,
+ 0x95FB, 0x7EB9, 0x543B, 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE,
+ 0x631D, 0x8717, 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83,
+ 0x5DEB, 0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C,
+ 0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E,
+ 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1,
+ 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670,
+ 0x563B, 0x5438, 0x9521, 0x727A},
+ {0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, 0x7184, 0x70EF,
+ 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, 0x5AB3, 0x559C,
+ 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, 0x867E, 0x5323,
+ 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F,
+ 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24,
+ 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0,
+ 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF,
+ 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61, 0x7FD4,
+ 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, 0x6A61, 0x50CF,
+ 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, 0x56A3, 0x9500,
+ 0x6D88, 0x5BB5, 0x6DC6, 0x6653},
+ {0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B,
+ 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1,
+ 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22,
+ 0x5C51, 0x85AA, 0x82AF, 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3,
+ 0x4FE1, 0x8845, 0x661F, 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B,
+ 0x5F62, 0x90A2, 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144,
+ 0x51F6, 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E,
+ 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 0x9700,
+ 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED,
+ 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7,
+ 0x5BA3, 0x60AC, 0x65CB, 0x7384},
+ {0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74, 0x96EA,
+ 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F, 0x5DE1,
+ 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC, 0x9E26,
+ 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF,
+ 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9,
+ 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E,
+ 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830,
+ 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, 0x8C1A,
+ 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F, 0x75A1,
+ 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, 0x6837, 0x6F3E,
+ 0x9080, 0x8170, 0x5996, 0x7476},
+ {0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F,
+ 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F,
+ 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00,
+ 0x58F9, 0x533B, 0x63D6, 0x94F1, 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937,
+ 0x9057, 0x79FB, 0x4EEA, 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D,
+ 0x6905, 0x8681, 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291,
+ 0x6613, 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB,
+ 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3,
+ 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B,
+ 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5,
+ 0x996E, 0x5C39, 0x5F15, 0x9690},
+ {0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424,
+ 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C,
+ 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A,
+ 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D,
+ 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9,
+ 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8,
+ 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206,
+ 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88,
+ 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389,
+ 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108,
+ 0x6B32, 0x72F1, 0x80B2, 0x8A89},
+ {0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33, 0x6E0A, 0x51A4,
+ 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95, 0x56ED, 0x5458, 0x5706,
+ 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, 0x613F, 0x6028, 0x9662, 0x66F0,
+ 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605,
+ 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D,
+ 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E,
+ 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43,
+ 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9, 0x6FA1,
+ 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5, 0x8D23, 0x62E9,
+ 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E, 0x66FE, 0x8D60, 0x624E,
+ 0x55B3, 0x6E23, 0x672D, 0x8F67},
+ {0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, 0x8BC8,
+ 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79,
+ 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808,
+ 0x5360, 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33,
+ 0x5F20, 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0,
+ 0x7634, 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69,
+ 0x5146, 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005,
+ 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827,
+ 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, 0x632F,
+ 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014,
+ 0x6574, 0x62EF, 0x6B63, 0x653F},
+ {0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F, 0x5431, 0x8718,
+ 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, 0x804C, 0x76F4, 0x690D,
+ 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, 0x6B62, 0x8DBE, 0x53EA,
+ 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C,
+ 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE,
+ 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD,
+ 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC,
+ 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C, 0x9AA4,
+ 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB, 0x9010, 0x7AF9,
+ 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, 0x8457, 0x67F1, 0x52A9,
+ 0x86C0, 0x8D2E, 0x94F8, 0x7B51},
+ {0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816,
+ 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E,
+ 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06,
+ 0x51C6, 0x6349, 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544,
+ 0x7740, 0x707C, 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4,
+ 0x5B5C, 0x7D2B, 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57,
+ 0x9B03, 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70,
+ 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B,
+ 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075,
+ 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E,
+ 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D,
+ 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17,
+ 0x4E36, 0x4E9F, 0x9F10, 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C,
+ 0x560F, 0x4EC4, 0x538D, 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D,
+ 0x531A, 0x53F5, 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202,
+ 0x5208, 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261,
+ 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54,
+ 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B,
+ 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E,
+ 0x4F67, 0x6538, 0x4F5A, 0x4F5D},
+ {0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, 0x4F83,
+ 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, 0x4FE8,
+ 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, 0x5029,
+ 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C,
+ 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B,
+ 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6,
+ 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0,
+ 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, 0x52F9,
+ 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, 0x4EB3,
+ 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, 0x7FB8,
+ 0x51AB, 0x51B1, 0x51BD, 0x51BC},
+ {0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4,
+ 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3,
+ 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8,
+ 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00,
+ 0x8C02, 0x8C04, 0x8C07, 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15,
+ 0x8C16, 0x8C19, 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25,
+ 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36,
+ 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D, 0x963C,
+ 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672, 0x9674, 0x9688,
+ 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1,
+ 0x90B4, 0x90B3, 0x90B6, 0x90BA},
+ {0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3,
+ 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104,
+ 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D,
+ 0x5942, 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0,
+ 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01,
+ 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1,
+ 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B,
+ 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 0x576D,
+ 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4,
+ 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4,
+ 0x57EF, 0x57F8, 0x57E4, 0x57DD},
+ {0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819, 0x5844, 0x5820,
+ 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880, 0x99A8, 0x9F19, 0x61FF,
+ 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, 0x82A8, 0x8284, 0x828E, 0x8291,
+ 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3,
+ 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1,
+ 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4,
+ 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3,
+ 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C, 0x8351,
+ 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331, 0x839B, 0x835E,
+ 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340, 0x8317, 0x8360, 0x832D,
+ 0x833A, 0x8333, 0x8366, 0x8365},
+ {0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378,
+ 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6,
+ 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC,
+ 0x83C1, 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD,
+ 0x83D6, 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403,
+ 0x83F8, 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C,
+ 0x8451, 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478,
+ 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1,
+ 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0,
+ 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538,
+ 0x84F0, 0x8539, 0x851F, 0x853A},
+ {0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568, 0x8564, 0x855E,
+ 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, 0x85A8, 0x8587, 0x858F,
+ 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, 0x85B0, 0x85D3, 0x85C1,
+ 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08,
+ 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25,
+ 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7,
+ 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371,
+ 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE, 0x63BC,
+ 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE, 0x6452, 0x63C6,
+ 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, 0x640C, 0x6426, 0x6421,
+ 0x645E, 0x6484, 0x646D, 0x6496},
+ {0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4,
+ 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F,
+ 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B,
+ 0x5452, 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423,
+ 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484,
+ 0x5476, 0x5466, 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7,
+ 0x54A6, 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC,
+ 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 0x54DE,
+ 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F,
+ 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541,
+ 0x5555, 0x553F, 0x5550, 0x553C},
+ {0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555C, 0x558B,
+ 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, 0x557E, 0x55D6,
+ 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, 0x5599, 0x55EA, 0x55F7,
+ 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4,
+ 0x55EF, 0x55E5, 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4,
+ 0x8F94, 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600,
+ 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659,
+ 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B, 0x567C,
+ 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, 0x56F5, 0x56EB,
+ 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, 0x5E19, 0x5E14,
+ 0x5E11, 0x5E31, 0x5E3B, 0x5E3C},
+ {0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D,
+ 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5,
+ 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4,
+ 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E,
+ 0x5D24, 0x5D1E, 0x5D06, 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C,
+ 0x5D5B, 0x5D6F, 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82,
+ 0x5D99, 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87,
+ 0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC,
+ 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1,
+ 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7,
+ 0x7301, 0x72F3, 0x7303, 0x72FA},
+ {0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, 0x7322,
+ 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, 0x7360,
+ 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, 0x9963,
+ 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, 0x9977, 0x997D,
+ 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994,
+ 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5,
+ 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA,
+ 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, 0x5FE4,
+ 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, 0x6026,
+ 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, 0x6078,
+ 0x6079, 0x607B, 0x607A, 0x6042},
+ {0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C,
+ 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4,
+ 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A,
+ 0x6175, 0x61AC, 0x6194, 0x61A7, 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3,
+ 0x95E9, 0x95EB, 0x95F1, 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603,
+ 0x9604, 0x9606, 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612,
+ 0x9615, 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35,
+ 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 0x6C68,
+ 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7,
+ 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE,
+ 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE},
+ {0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E,
+ 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, 0x6D33,
+ 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60,
+ 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0,
+ 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B,
+ 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32,
+ 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5,
+ 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2,
+ 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36,
+ 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, 0x6F78,
+ 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1},
+ {0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0,
+ 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035, 0x704F, 0x705E, 0x5B80,
+ 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, 0x752F, 0x9A9E, 0x6434, 0x5BE4,
+ 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5,
+ 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B,
+ 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F,
+ 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9,
+ 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57, 0x5F56,
+ 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63, 0x5C66, 0x7FBC,
+ 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B, 0x5C6E, 0x5981, 0x5983,
+ 0x598D, 0x59A9, 0x59AA, 0x59A3},
+ {0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7,
+ 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C,
+ 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A,
+ 0x5A55, 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A,
+ 0x5ABE, 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1,
+ 0x5AD6, 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37,
+ 0x5B40, 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62,
+ 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85,
+ 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C,
+ 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1,
+ 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9},
+ {0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9, 0x7ECB, 0x7ECC,
+ 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, 0x7EE8, 0x7EEB, 0x7EEE,
+ 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01,
+ 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12,
+ 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24,
+ 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30,
+ 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095,
+ 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1, 0x73B7,
+ 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C, 0x740A, 0x73E9,
+ 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, 0x745B, 0x7426, 0x7425,
+ 0x7428, 0x7430, 0x742E, 0x742C},
+ {0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x7477, 0x746D,
+ 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8,
+ 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C,
+ 0x6753, 0x675E, 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798,
+ 0x67A7, 0x6775, 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0,
+ 0x6809, 0x67D8, 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA,
+ 0x67B3, 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD,
+ 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 0x6883,
+ 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 0x684A, 0x6849,
+ 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E,
+ 0x68FC, 0x691F, 0x6920, 0x68F9},
+ {0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, 0x6971, 0x6939,
+ 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, 0x6978, 0x6934,
+ 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, 0x6979, 0x699B,
+ 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF,
+ 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65,
+ 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79,
+ 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB,
+ 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93, 0x6B8D,
+ 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, 0x8F72, 0x8F73,
+ 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, 0x8F7E, 0x8F81,
+ 0x8F82, 0x8F84, 0x8F87, 0x8F8B},
+ {0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B,
+ 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4,
+ 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A,
+ 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634,
+ 0x6631, 0x6636, 0x6635, 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656,
+ 0x6661, 0x6657, 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB,
+ 0x66DC, 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40,
+ 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7,
+ 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F,
+ 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F,
+ 0x7292, 0x6308, 0x6332, 0x63B0},
+ {0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, 0x6C05,
+ 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, 0x6C29,
+ 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, 0x7256,
+ 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD,
+ 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA,
+ 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB,
+ 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112,
+ 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, 0x8153,
+ 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D, 0x816D,
+ 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, 0x81AA,
+ 0x81CC, 0x6726, 0x81CA, 0x81BB},
+ {0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98D1,
+ 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3, 0x5F40, 0x6BC2, 0x89F3,
+ 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE,
+ 0x65D2, 0x65D6, 0x7080, 0x709C, 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7,
+ 0x70AB, 0x70B1, 0x70E8, 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131,
+ 0x7173, 0x715C, 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198,
+ 0x71B3, 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D,
+ 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248,
+ 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C, 0x7953, 0x795A,
+ 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A, 0x7985, 0x798A, 0x799A,
+ 0x79A7, 0x79B3, 0x5FD1, 0x5FD0},
+ {0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, 0x6106,
+ 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, 0x8080, 0x807F,
+ 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, 0x7809, 0x7817, 0x7818,
+ 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, 0x7839, 0x783A, 0x783B, 0x781F,
+ 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857,
+ 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887,
+ 0x789C, 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9,
+ 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B,
+ 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, 0x7708,
+ 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751,
+ 0x7747, 0x7743, 0x775A, 0x7768},
+ {0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C, 0x7791, 0x779F,
+ 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540, 0x754E, 0x754B, 0x7548,
+ 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, 0x7F61, 0x7F5F, 0x8A48, 0x7F68,
+ 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485,
+ 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494,
+ 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA,
+ 0x94AD, 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8,
+ 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9, 0x94CA,
+ 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2, 0x94D5, 0x94D6,
+ 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF, 0x94E0, 0x94E2, 0x94E4,
+ 0x94E5, 0x94E7, 0x94E8, 0x94EA},
+ {0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9,
+ 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A,
+ 0x950D, 0x950E, 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518,
+ 0x951B, 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C,
+ 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F,
+ 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F,
+ 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E,
+ 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
+ 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 0x9573, 0x953A,
+ 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47,
+ 0x7A03, 0x7A02, 0x7A1E, 0x7A14},
+ {0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688, 0x768E, 0x7693,
+ 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, 0x9E22, 0x9E28, 0x9E29,
+ 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 0x9E36, 0x9E38, 0x9E37, 0x9E39,
+ 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49,
+ 0x9E4B, 0x9E4C, 0x9E4E, 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C,
+ 0x9E5E, 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C,
+ 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC,
+ 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3, 0x75C2,
+ 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB, 0x75E7, 0x7603,
+ 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, 0x760C, 0x7617, 0x760A,
+ 0x7625, 0x7618, 0x7615, 0x7619},
+ {0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, 0x7635,
+ 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B,
+ 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95,
+ 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872,
+ 0x887D, 0x887F, 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2,
+ 0x88CE, 0x88E3, 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0,
+ 0x8921, 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941,
+ 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014,
+ 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028,
+ 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071,
+ 0x8983, 0x9878, 0x9880, 0x9883},
+ {0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, 0x989E, 0x989F,
+ 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, 0x866E, 0x867F,
+ 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, 0x869D, 0x86A7,
+ 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0,
+ 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2,
+ 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1,
+ 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B,
+ 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731, 0x8729,
+ 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, 0x8760, 0x8770,
+ 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, 0x8759, 0x8765,
+ 0x8793, 0x87AF, 0x87A8, 0x87D2},
+ {0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC,
+ 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB,
+ 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821,
+ 0x8839, 0x883C, 0x7F36, 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD,
+ 0x7B08, 0x7B03, 0x7B04, 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38,
+ 0x7B2A, 0x7B19, 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E,
+ 0x7B1E, 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E,
+ 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC,
+ 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1,
+ 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE,
+ 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B},
+ {0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, 0x8202,
+ 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, 0x822F, 0x8228,
+ 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, 0x8244, 0x8249, 0x824B,
+ 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF,
+ 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549,
+ 0x7C91, 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1,
+ 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8,
+ 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, 0x7FF3,
+ 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, 0x8D73,
+ 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, 0x8C49, 0x914A,
+ 0x9150, 0x914E, 0x914F, 0x9164},
+ {0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E, 0x9172, 0x9174,
+ 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA,
+ 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4, 0x91BA, 0x8C55, 0x9E7E, 0x8DB8,
+ 0x8DEB, 0x8E05, 0x8E59, 0x8E69, 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4,
+ 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC,
+ 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14,
+ 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39,
+ 0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A,
+ 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90,
+ 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B,
+ 0x89D6, 0x89DE, 0x89DA, 0x89DC},
+ {0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF,
+ 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E,
+ 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8C,
+ 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF,
+ 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E,
+ 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B,
+ 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E,
+ 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8,
+ 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4,
+ 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5,
+ 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB},
+ {0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7,
+ 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2, 0x977C, 0x9785, 0x9791,
+ 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, 0x97B2, 0x97B4, 0x9AB1, 0x9AB0,
+ 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2,
+ 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D,
+ 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6,
+ 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F,
+ 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B, 0x9E92,
+ 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2,
+ 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22, 0x9F2C, 0x9F2F, 0x9F39,
+ 0x9F37, 0x9F3D, 0x9F3E, 0x9F44},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+};
+
+/*
+ * Mapping from Unicode back to GB2312.
+ *
+ * This inverse is done the same way the SBCS ones are done: I
+ * provide a list of GB2312 positions, sorted into ascending
+ * order of their Unicode values. Then we can binary-search through
+ * this list, referring to the above table for each comparison, to
+ * find the coordinates for a given code point.
+ *
+ * Generated by running the following sh+Perl over GB2312.TXT:
+
+cat GB2312.TXT | \
+perl -ne '$a{$3}=[hex$1,hex$2] if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {$o=" ";for $k (sort keys %a) { ($r,$c) = @{$a{$k}}; ' \
+ -e '$o .= $C; $C = ", "; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= sprintf "{%d,%d}", $r-33,$c-33; } print "$o\n"; }'
+
+ */
+
+static const struct { unsigned char r, c; } gb2312_backward[] = {
+ {0,71}, {0,75}, {0,6}, {0,66}, {0,31}, {0,32}, {7,3}, {7,1}, {7,7},
+ {7,5}, {7,25}, {7,11}, {7,9}, {7,15}, {7,13}, {0,33}, {7,19}, {7,17},
+ {7,24}, {7,0}, {7,4}, {7,6}, {7,8}, {7,12}, {7,16}, {7,2}, {7,10},
+ {7,14}, {7,18}, {7,20}, {7,21}, {7,22}, {7,23}, {0,5}, {0,4}, {5,0},
+ {5,1}, {5,2}, {5,3}, {5,4}, {5,5}, {5,6}, {5,7}, {5,8}, {5,9}, {5,10},
+ {5,11}, {5,12}, {5,13}, {5,14}, {5,15}, {5,16}, {5,17}, {5,18}, {5,19},
+ {5,20}, {5,21}, {5,22}, {5,23}, {5,32}, {5,33}, {5,34}, {5,35}, {5,36},
+ {5,37}, {5,38}, {5,39}, {5,40}, {5,41}, {5,42}, {5,43}, {5,44}, {5,45},
+ {5,46}, {5,47}, {5,48}, {5,49}, {5,50}, {5,51}, {5,52}, {5,53}, {5,54},
+ {5,55}, {6,6}, {6,0}, {6,1}, {6,2}, {6,3}, {6,4}, {6,5}, {6,7}, {6,8},
+ {6,9}, {6,10}, {6,11}, {6,12}, {6,13}, {6,14}, {6,15}, {6,16}, {6,17},
+ {6,18}, {6,19}, {6,20}, {6,21}, {6,22}, {6,23}, {6,24}, {6,25}, {6,26},
+ {6,27}, {6,28}, {6,29}, {6,30}, {6,31}, {6,32}, {6,48}, {6,49}, {6,50},
+ {6,51}, {6,52}, {6,53}, {6,55}, {6,56}, {6,57}, {6,58}, {6,59}, {6,60},
+ {6,61}, {6,62}, {6,63}, {6,64}, {6,65}, {6,66}, {6,67}, {6,68}, {6,69},
+ {6,70}, {6,71}, {6,72}, {6,73}, {6,74}, {6,75}, {6,76}, {6,77}, {6,78},
+ {6,79}, {6,80}, {6,54}, {0,9}, {0,11}, {0,13}, {0,14}, {0,15}, {0,16},
+ {0,12}, {0,74}, {0,67}, {0,68}, {0,88}, {0,69}, {0,76}, {1,80}, {1,81},
+ {1,82}, {1,83}, {1,84}, {1,85}, {1,86}, {1,87}, {1,88}, {1,89}, {1,90},
+ {1,91}, {0,90}, {0,91}, {0,89}, {0,92}, {0,41}, {0,38}, {0,37}, {0,43},
+ {0,55}, {0,61}, {0,46}, {0,45}, {0,35}, {0,36}, {0,40}, {0,39}, {0,49},
+ {0,50}, {0,63}, {0,62}, {0,34}, {0,42}, {0,54}, {0,53}, {0,52}, {0,56},
+ {0,51}, {0,59}, {0,60}, {0,57}, {0,58}, {0,48}, {0,44}, {0,47}, {1,56},
+ {1,57}, {1,58}, {1,59}, {1,60}, {1,61}, {1,62}, {1,63}, {1,64}, {1,65},
+ {1,36}, {1,37}, {1,38}, {1,39}, {1,40}, {1,41}, {1,42}, {1,43}, {1,44},
+ {1,45}, {1,46}, {1,47}, {1,48}, {1,49}, {1,50}, {1,51}, {1,52}, {1,53},
+ {1,54}, {1,55}, {1,16}, {1,17}, {1,18}, {1,19}, {1,20}, {1,21}, {1,22},
+ {1,23}, {1,24}, {1,25}, {1,26}, {1,27}, {1,28}, {1,29}, {1,30}, {1,31},
+ {1,32}, {1,33}, {1,34}, {1,35}, {8,3}, {8,4}, {8,5}, {8,6}, {8,7},
+ {8,8}, {8,9}, {8,10}, {8,11}, {8,12}, {8,13}, {8,14}, {8,15}, {8,16},
+ {8,17}, {8,18}, {8,19}, {8,20}, {8,21}, {8,22}, {8,23}, {8,24}, {8,25},
+ {8,26}, {8,27}, {8,28}, {8,29}, {8,30}, {8,31}, {8,32}, {8,33}, {8,34},
+ {8,35}, {8,36}, {8,37}, {8,38}, {8,39}, {8,40}, {8,41}, {8,42}, {8,43},
+ {8,44}, {8,45}, {8,46}, {8,47}, {8,48}, {8,49}, {8,50}, {8,51}, {8,52},
+ {8,53}, {8,54}, {8,55}, {8,56}, {8,57}, {8,58}, {8,59}, {8,60}, {8,61},
+ {8,62}, {8,63}, {8,64}, {8,65}, {8,66}, {8,67}, {8,68}, {8,69}, {8,70},
+ {8,71}, {8,72}, {8,73}, {8,74}, {8,75}, {8,76}, {8,77}, {8,78}, {0,85},
+ {0,84}, {0,87}, {0,86}, {0,83}, {0,82}, {0,79}, {0,81}, {0,80}, {0,78},
+ {0,77}, {0,65}, {0,64}, {0,0}, {0,1}, {0,2}, {0,7}, {0,8}, {0,19},
+ {0,20}, {0,21}, {0,22}, {0,23}, {0,24}, {0,25}, {0,26}, {0,29}, {0,30},
+ {0,93}, {0,17}, {0,18}, {0,27}, {0,28}, {3,0}, {3,1}, {3,2}, {3,3},
+ {3,4}, {3,5}, {3,6}, {3,7}, {3,8}, {3,9}, {3,10}, {3,11}, {3,12}, {3,13},
+ {3,14}, {3,15}, {3,16}, {3,17}, {3,18}, {3,19}, {3,20}, {3,21}, {3,22},
+ {3,23}, {3,24}, {3,25}, {3,26}, {3,27}, {3,28}, {3,29}, {3,30}, {3,31},
+ {3,32}, {3,33}, {3,34}, {3,35}, {3,36}, {3,37}, {3,38}, {3,39}, {3,40},
+ {3,41}, {3,42}, {3,43}, {3,44}, {3,45}, {3,46}, {3,47}, {3,48}, {3,49},
+ {3,50}, {3,51}, {3,52}, {3,53}, {3,54}, {3,55}, {3,56}, {3,57}, {3,58},
+ {3,59}, {3,60}, {3,61}, {3,62}, {3,63}, {3,64}, {3,65}, {3,66}, {3,67},
+ {3,68}, {3,69}, {3,70}, {3,71}, {3,72}, {3,73}, {3,74}, {3,75}, {3,76},
+ {3,77}, {3,78}, {3,79}, {3,80}, {3,81}, {3,82}, {4,0}, {4,1}, {4,2},
+ {4,3}, {4,4}, {4,5}, {4,6}, {4,7}, {4,8}, {4,9}, {4,10}, {4,11}, {4,12},
+ {4,13}, {4,14}, {4,15}, {4,16}, {4,17}, {4,18}, {4,19}, {4,20}, {4,21},
+ {4,22}, {4,23}, {4,24}, {4,25}, {4,26}, {4,27}, {4,28}, {4,29}, {4,30},
+ {4,31}, {4,32}, {4,33}, {4,34}, {4,35}, {4,36}, {4,37}, {4,38}, {4,39},
+ {4,40}, {4,41}, {4,42}, {4,43}, {4,44}, {4,45}, {4,46}, {4,47}, {4,48},
+ {4,49}, {4,50}, {4,51}, {4,52}, {4,53}, {4,54}, {4,55}, {4,56}, {4,57},
+ {4,58}, {4,59}, {4,60}, {4,61}, {4,62}, {4,63}, {4,64}, {4,65}, {4,66},
+ {4,67}, {4,68}, {4,69}, {4,70}, {4,71}, {4,72}, {4,73}, {4,74}, {4,75},
+ {4,76}, {4,77}, {4,78}, {4,79}, {4,80}, {4,81}, {4,82}, {4,83}, {4,84},
+ {4,85}, {0,3}, {7,36}, {7,37}, {7,38}, {7,39}, {7,40}, {7,41}, {7,42},
+ {7,43}, {7,44}, {7,45}, {7,46}, {7,47}, {7,48}, {7,49}, {7,50}, {7,51},
+ {7,52}, {7,53}, {7,54}, {7,55}, {7,56}, {7,57}, {7,58}, {7,59}, {7,60},
+ {7,61}, {7,62}, {7,63}, {7,64}, {7,65}, {7,66}, {7,67}, {7,68}, {7,69},
+ {7,70}, {7,71}, {7,72}, {1,68}, {1,69}, {1,70}, {1,71}, {1,72}, {1,73},
+ {1,74}, {1,75}, {1,76}, {1,77}, {49,26}, {21,0}, {37,62}, {44,81},
+ {52,40}, {39,92}, {40,46}, {46,33}, {55,1}, {17,26}, {50,74}, {55,3},
+ {18,82}, {54,7}, {38,49}, {55,6}, {41,31}, {38,79}, {16,90}, {49,20},
+ {19,51}, {21,10}, {42,30}, {55,8}, {21,9}, {32,28}, {48,46}, {40,4},
+ {55,12}, {23,85}, {48,29}, {66,59}, {53,47}, {22,64}, {19,13}, {32,56},
+ {55,27}, {44,71}, {20,3}, {45,9}, {53,86}, {31,85}, {29,56}, {55,14},
+ {35,42}, {29,34}, {55,16}, {34,19}, {49,68}, {53,13}, {45,57}, {52,6},
+ {25,84}, {22,5}, {31,53}, {37,24}, {36,49}, {38,38}, {24,51}, {18,42},
+ {49,49}, {55,30}, {29,36}, {37,81}, {49,17}, {46,15}, {46,70}, {41,72},
+ {55,31}, {33,81}, {33,49}, {39,72}, {38,11}, {32,42}, {50,71}, {52,88},
+ {41,33}, {21,93}, {55,0}, {50,57}, {30,86}, {51,37}, {26,4}, {55,32},
+ {45,68}, {29,13}, {55,7}, {48,38}, {47,8}, {55,28}, {56,78}, {44,85},
+ {30,25}, {28,26}, {25,4}, {49,63}, {17,89}, {25,63}, {35,21}, {46,76},
+ {29,8}, {44,3}, {32,32}, {38,54}, {56,80}, {56,83}, {39,42}, {55,72},
+ {49,57}, {41,17}, {39,41}, {55,75}, {55,73}, {55,37}, {28,85}, {37,44},
+ {18,79}, {55,74}, {28,80}, {28,72}, {39,51}, {19,50}, {33,55}, {17,53},
+ {54,47}, {41,42}, {42,90}, {52,43}, {23,21}, {46,40}, {56,57}, {55,79},
+ {38,9}, {55,77}, {19,89}, {32,77}, {49,51}, {55,76}, {49,38}, {55,78},
+ {34,38}, {48,85}, {53,56}, {55,81}, {55,84}, {27,93}, {27,58}, {39,45},
+ {22,60}, {22,33}, {37,82}, {55,87}, {49,32}, {45,72}, {27,30}, {22,91},
+ {22,4}, {47,60}, {53,57}, {50,36}, {26,78}, {26,64}, {55,80}, {40,0},
+ {45,15}, {19,10}, {55,82}, {40,42}, {55,85}, {33,54}, {55,86}, {45,16},
+ {55,88}, {17,13}, {24,31}, {56,2}, {15,72}, {32,69}, {40,75}, {42,36},
+ {42,37}, {56,3}, {20,71}, {20,10}, {45,26}, {20,44}, {54,0}, {54,83},
+ {50,50}, {43,68}, {25,45}, {56,1}, {56,59}, {50,63}, {55,92}, {22,79},
+ {54,86}, {55,93}, {55,89}, {56,0}, {35,66}, {50,21}, {55,83}, {56,60},
+ {55,90}, {36,68}, {31,47}, {48,79}, {15,58}, {27,48}, {56,5}, {56,4},
+ {56,11}, {56,13}, {56,10}, {41,24}, {56,8}, {53,21}, {18,61}, {56,7},
+ {31,92}, {41,43}, {56,9}, {56,6}, {56,15}, {21,16}, {24,8}, {49,31},
+ {46,31}, {33,33}, {28,35}, {52,75}, {17,63}, {38,39}, {30,74}, {56,12},
+ {56,14}, {45,73}, {25,77}, {38,53}, {16,66}, {19,56}, {21,76}, {56,19},
+ {30,0}, {56,61}, {38,45}, {31,93}, {56,23}, {42,54}, {22,92}, {56,20},
+ {56,22}, {16,2}, {50,64}, {56,24}, {47,36}, {56,21}, {56,16}, {56,17},
+ {32,8}, {56,18}, {27,82}, {47,61}, {23,8}, {29,66}, {56,28}, {56,25},
+ {15,18}, {56,33}, {56,35}, {16,21}, {56,30}, {20,24}, {29,82}, {43,39},
+ {25,81}, {49,47}, {56,34}, {28,71}, {18,10}, {56,36}, {29,74}, {56,37},
+ {56,26}, {35,62}, {56,29}, {56,32}, {56,31}, {52,13}, {53,20}, {38,66},
+ {56,39}, {27,56}, {56,41}, {56,27}, {56,42}, {37,10}, {56,40}, {54,85},
+ {44,2}, {28,0}, {56,43}, {36,27}, {44,20}, {56,44}, {56,38}, {18,4},
+ {30,93}, {23,20}, {31,91}, {15,87}, {19,85}, {56,45}, {56,46}, {19,1},
+ {56,47}, {19,62}, {15,32}, {56,48}, {40,20}, {46,80}, {56,49}, {32,36},
+ {56,53}, {40,13}, {56,52}, {56,51}, {56,54}, {42,58}, {28,8}, {37,6},
+ {56,50}, {56,55}, {56,56}, {39,68}, {31,59}, {21,88}, {55,2}, {51,41},
+ {51,9}, {47,53}, {18,67}, {52,54}, {46,39}, {24,65}, {30,42}, {34,65},
+ {21,49}, {44,34}, {56,77}, {56,79}, {20,18}, {21,20}, {29,3}, {39,74},
+ {39,10}, {15,42}, {24,10}, {32,88}, {56,65}, {31,27}, {24,17}, {24,55},
+ {47,42}, {16,87}, {37,67}, {29,62}, {20,67}, {54,39}, {48,87}, {27,69},
+ {41,61}, {27,28}, {56,69}, {55,70}, {35,57}, {23,51}, {39,28}, {17,64},
+ {51,56}, {34,15}, {34,64}, {57,1}, {39,62}, {47,19}, {29,91}, {36,8},
+ {24,57}, {57,2}, {51,8}, {57,3}, {56,90}, {21,11}, {22,74}, {16,88},
+ {56,91}, {18,68}, {29,85}, {30,85}, {49,16}, {31,67}, {21,18}, {56,93},
+ {56,92}, {29,26}, {37,63}, {54,27}, {57,0}, {32,24}, {20,81}, {32,71},
+ {27,84}, {19,52}, {32,60}, {35,92}, {27,23}, {22,17}, {22,78}, {56,75},
+ {37,29}, {30,12}, {26,42}, {20,41}, {58,40}, {47,54}, {44,24}, {15,27},
+ {18,85}, {26,86}, {58,41}, {25,14}, {51,67}, {20,21}, {20,82}, {55,53},
+ {39,47}, {22,53}, {38,47}, {55,54}, {30,14}, {58,26}, {55,55}, {47,43},
+ {26,13}, {74,29}, {32,47}, {32,84}, {51,81}, {23,52}, {19,19}, {18,84},
+ {40,29}, {36,47}, {36,56}, {31,90}, {16,79}, {55,56}, {24,45}, {20,28},
+ {55,57}, {53,37}, {42,1}, {39,14}, {40,17}, {19,43}, {30,43}, {24,83},
+ {55,58}, {55,59}, {21,70}, {27,32}, {43,73}, {46,86}, {55,60}, {38,15},
+ {24,47}, {28,2}, {43,61}, {37,41}, {55,63}, {55,61}, {55,62}, {15,93},
+ {29,70}, {41,2}, {27,83}, {23,16}, {23,77}, {55,65}, {28,42}, {55,67},
+ {55,66}, {36,91}, {55,68}, {55,69}, {32,5}, {39,15}, {15,75}, {24,5},
+ {27,50}, {45,80}, {58,28}, {32,50}, {21,14}, {53,89}, {36,11}, {28,56},
+ {58,29}, {58,30}, {31,87}, {29,1}, {31,44}, {58,31}, {41,37}, {17,9},
+ {50,33}, {34,66}, {48,10}, {58,33}, {31,52}, {58,34}, {30,16}, {35,27},
+ {38,57}, {58,35}, {56,71}, {40,54}, {24,19}, {45,79}, {51,39}, {15,91},
+ {19,49}, {47,56}, {56,72}, {61,42}, {56,74}, {55,15}, {26,14}, {16,16},
+ {18,54}, {55,45}, {51,48}, {28,18}, {30,78}, {46,26}, {55,47}, {22,42},
+ {55,48}, {37,4}, {38,87}, {49,28}, {55,49}, {35,67}, {41,13}, {38,6},
+ {55,5}, {40,92}, {45,70}, {26,59}, {15,74}, {26,9}, {47,12}, {16,15},
+ {54,67}, {54,30}, {20,4}, {33,83}, {35,46}, {17,8}, {17,22}, {16,68},
+ {62,17}, {52,27}, {30,7}, {33,11}, {55,52}, {33,16}, {55,51}, {45,51},
+ {57,63}, {45,31}, {55,19}, {34,13}, {50,0}, {45,2}, {27,19}, {39,19},
+ {33,48}, {29,76}, {47,21}, {57,64}, {38,67}, {18,6}, {21,81}, {43,91},
+ {31,89}, {31,86}, {48,24}, {48,64}, {55,38}, {17,61}, {31,68}, {25,80},
+ {55,39}, {51,12}, {46,64}, {55,40}, {55,41}, {46,34}, {18,87}, {29,38},
+ {55,42}, {58,43}, {39,4}, {46,55}, {39,93}, {17,45}, {50,53}, {17,69},
+ {27,15}, {50,48}, {42,10}, {22,19}, {22,1}, {41,68}, {39,0}, {41,59},
+ {16,67}, {47,79}, {36,48}, {58,36}, {20,93}, {30,57}, {24,36}, {29,67},
+ {32,76}, {62,21}, {62,20}, {53,26}, {28,47}, {52,56}, {15,39}, {21,2},
+ {30,40}, {43,7}, {62,18}, {41,22}, {50,49}, {55,46}, {49,21}, {25,36},
+ {42,29}, {43,29}, {62,22}, {20,79}, {62,19}, {50,84}, {18,51}, {23,86},
+ {62,25}, {25,46}, {27,9}, {20,84}, {44,11}, {34,90}, {25,82}, {31,83},
+ {44,33}, {46,81}, {62,23}, {46,36}, {33,31}, {62,24}, {33,79}, {29,92},
+ {32,62}, {44,43}, {49,86}, {22,44}, {62,32}, {62,35}, {22,80}, {15,40},
+ {21,53}, {22,51}, {25,11}, {43,92}, {30,51}, {42,16}, {37,83}, {53,7},
+ {62,36}, {45,65}, {18,18}, {45,91}, {19,20}, {45,38}, {25,79}, {45,64},
+ {48,28}, {62,31}, {19,83}, {18,41}, {23,69}, {62,26}, {35,36}, {62,27},
+ {62,28}, {62,29}, {36,26}, {62,30}, {62,33}, {51,16}, {62,34}, {38,25},
+ {45,55}, {35,55}, {62,41}, {62,46}, {53,59}, {62,40}, {62,57}, {45,21},
+ {25,38}, {62,45}, {62,39}, {36,61}, {40,74}, {25,83}, {34,91}, {29,54},
+ {62,37}, {62,44}, {36,55}, {52,5}, {25,44}, {29,43}, {50,28}, {23,31},
+ {53,67}, {62,38}, {24,29}, {30,6}, {32,91}, {62,42}, {62,43}, {62,47},
+ {62,58}, {62,68}, {62,54}, {62,53}, {54,40}, {62,66}, {62,67}, {68,74},
+ {49,6}, {62,49}, {30,8}, {51,58}, {30,39}, {62,51}, {46,43}, {62,60},
+ {48,41}, {62,61}, {15,6}, {37,22}, {62,50}, {25,68}, {21,62}, {44,58},
+ {24,93}, {51,52}, {62,62}, {46,75}, {15,4}, {62,70}, {62,48}, {48,37},
+ {62,52}, {62,55}, {62,56}, {62,59}, {26,8}, {62,63}, {62,64}, {62,65},
+ {62,69}, {62,71}, {50,19}, {23,70}, {36,21}, {62,73}, {40,57}, {32,7},
+ {35,35}, {30,61}, {46,87}, {52,59}, {62,77}, {17,23}, {25,62}, {62,75},
+ {58,32}, {48,67}, {42,83}, {19,28}, {15,5}, {62,80}, {43,37}, {62,81},
+ {62,76}, {62,72}, {62,74}, {62,78}, {62,79}, {26,28}, {62,82}, {62,83},
+ {26,2}, {41,58}, {45,7}, {63,6}, {18,9}, {63,5}, {63,0}, {62,93}, {44,56},
+ {62,91}, {62,89}, {30,47}, {54,35}, {40,43}, {62,87}, {15,0}, {62,92},
+ {62,90}, {63,1}, {63,7}, {22,39}, {37,0}, {40,21}, {31,17}, {62,84},
+ {36,29}, {55,35}, {62,88}, {35,85}, {63,2}, {63,3}, {63,4}, {47,4},
+ {63,19}, {43,67}, {63,16}, {30,5}, {63,14}, {45,24}, {63,10}, {40,37},
+ {31,13}, {63,13}, {25,76}, {25,15}, {63,8}, {62,85}, {63,18}, {63,23},
+ {19,12}, {63,24}, {46,17}, {25,39}, {63,15}, {47,89}, {63,11}, {51,90},
+ {62,86}, {36,70}, {63,12}, {50,86}, {63,21}, {63,22}, {63,35}, {47,64},
+ {63,27}, {63,40}, {63,41}, {63,29}, {63,9}, {40,3}, {63,32}, {63,17},
+ {41,39}, {63,34}, {63,20}, {45,42}, {42,34}, {63,44}, {63,37}, {63,33},
+ {63,42}, {63,25}, {63,30}, {63,31}, {63,36}, {63,38}, {63,39}, {63,43},
+ {63,26}, {42,51}, {63,52}, {63,53}, {63,49}, {63,47}, {27,45}, {63,48},
+ {23,33}, {55,36}, {47,73}, {33,78}, {63,46}, {63,28}, {63,51}, {63,50},
+ {63,54}, {63,59}, {63,55}, {53,85}, {18,15}, {54,75}, {42,26}, {63,57},
+ {45,90}, {25,56}, {63,64}, {63,60}, {49,12}, {63,65}, {63,58}, {63,56},
+ {63,62}, {63,63}, {63,61}, {63,67}, {37,86}, {55,11}, {51,74}, {63,69},
+ {41,40}, {63,68}, {23,32}, {63,70}, {63,71}, {63,72}, {63,66}, {25,30},
+ {43,70}, {63,73}, {46,88}, {63,74}, {39,33}, {28,31}, {35,49}, {63,75},
+ {63,76}, {38,83}, {42,35}, {63,77}, {26,55}, {55,21}, {49,81}, {63,78},
+ {44,36}, {21,57}, {63,80}, {51,15}, {31,6}, {19,48}, {45,6}, {63,79},
+ {63,81}, {24,43}, {24,89}, {44,27}, {63,82}, {37,51}, {63,83}, {51,17},
+ {39,5}, {63,85}, {63,84}, {63,86}, {44,32}, {41,4}, {51,57}, {58,54},
+ {58,56}, {58,55}, {24,70}, {58,59}, {58,60}, {20,55}, {58,57}, {58,58},
+ {18,0}, {58,62}, {26,87}, {53,22}, {58,63}, {29,88}, {22,26}, {58,47},
+ {43,13}, {30,17}, {26,20}, {54,87}, {30,50}, {30,72}, {27,64}, {43,18},
+ {58,61}, {15,50}, {45,74}, {22,55}, {54,24}, {37,33}, {31,3}, {43,24},
+ {58,70}, {58,64}, {37,25}, {58,66}, {58,71}, {36,86}, {58,73}, {58,72},
+ {30,31}, {58,69}, {58,68}, {19,24}, {31,11}, {33,1}, {58,65}, {58,67},
+ {47,44}, {58,76}, {31,60}, {58,81}, {21,65}, {58,82}, {58,49}, {24,23},
+ {51,10}, {58,75}, {30,48}, {58,79}, {58,48}, {20,69}, {58,74}, {30,68},
+ {58,77}, {58,80}, {58,88}, {24,0}, {15,2}, {33,80}, {18,38}, {58,78},
+ {58,87}, {37,49}, {58,83}, {58,84}, {58,86}, {58,85}, {58,93}, {50,81},
+ {17,25}, {58,92}, {59,3}, {58,90}, {58,89}, {58,91}, {36,63}, {26,88},
+ {59,2}, {59,4}, {43,34}, {21,48}, {60,31}, {59,0}, {59,1}, {38,20},
+ {21,72}, {59,6}, {59,5}, {59,8}, {16,3}, {20,43}, {30,15}, {48,62},
+ {21,33}, {59,7}, {42,89}, {74,82}, {42,59}, {42,93}, {43,32}, {39,90},
+ {59,9}, {43,77}, {59,10}, {58,50}, {59,14}, {59,11}, {29,18}, {41,90},
+ {59,12}, {40,41}, {35,24}, {38,28}, {59,13}, {51,85}, {47,69}, {35,10},
+ {21,52}, {58,51}, {16,57}, {58,52}, {58,53}, {25,29}, {39,31}, {41,30},
+ {39,40}, {54,18}, {40,88}, {30,38}, {25,87}, {49,27}, {65,25}, {19,5},
+ {16,23}, {23,19}, {46,35}, {56,70}, {46,5}, {44,65}, {56,76}, {21,63},
+ {49,24}, {24,26}, {65,24}, {65,22}, {19,82}, {43,75}, {43,10}, {22,81},
+ {55,17}, {48,74}, {25,26}, {41,6}, {44,22}, {49,35}, {30,67}, {27,47},
+ {21,64}, {61,36}, {61,37}, {58,27}, {48,56}, {37,69}, {35,45}, {22,77},
+ {22,59}, {30,91}, {54,63}, {37,84}, {16,27}, {61,39}, {28,16}, {43,54},
+ {61,41}, {61,40}, {20,75}, {40,60}, {15,33}, {36,13}, {36,10}, {35,43},
+ {27,72}, {42,92}, {25,34}, {68,88}, {39,70}, {68,89}, {44,92}, {54,16},
+ {23,29}, {33,71}, {39,48}, {68,90}, {21,41}, {27,42}, {48,92}, {69,0},
+ {34,77}, {69,3}, {68,93}, {69,4}, {44,54}, {22,32}, {68,91}, {68,92},
+ {69,2}, {35,60}, {69,7}, {69,6}, {34,34}, {37,61}, {69,9}, {35,22},
+ {69,1}, {41,27}, {28,66}, {24,34}, {69,5}, {47,52}, {45,14}, {69,8},
+ {69,15}, {49,5}, {28,9}, {69,12}, {69,14}, {31,48}, {49,43}, {27,6},
+ {69,16}, {49,85}, {54,42}, {44,93}, {44,61}, {33,5}, {69,10}, {69,11},
+ {28,30}, {69,13}, {69,18}, {69,17}, {69,21}, {69,23}, {35,78}, {35,39},
+ {29,73}, {40,78}, {69,22}, {21,79}, {34,67}, {50,72}, {69,19}, {69,20},
+ {39,1}, {69,28}, {69,24}, {37,36}, {44,80}, {69,26}, {69,27}, {26,72},
+ {69,29}, {69,25}, {31,22}, {50,3}, {69,30}, {40,83}, {69,34}, {69,35},
+ {47,85}, {34,28}, {34,35}, {69,33}, {69,32}, {69,38}, {46,16}, {74,83},
+ {69,41}, {69,36}, {27,61}, {40,8}, {27,20}, {46,50}, {69,39}, {69,40},
+ {69,45}, {69,47}, {69,48}, {69,42}, {20,52}, {69,43}, {69,46}, {35,58},
+ {69,37}, {69,44}, {69,49}, {69,51}, {69,50}, {69,52}, {56,87}, {69,53},
+ {69,54}, {54,50}, {69,60}, {69,61}, {30,54}, {51,47}, {54,53}, {19,69},
+ {42,78}, {69,57}, {55,34}, {54,45}, {47,1}, {34,46}, {69,62}, {27,29},
+ {24,33}, {69,58}, {48,6}, {25,1}, {33,46}, {55,10}, {41,74}, {68,77},
+ {69,59}, {22,84}, {39,69}, {35,84}, {68,17}, {35,93}, {42,91}, {68,18},
+ {52,11}, {50,77}, {41,55}, {15,17}, {42,45}, {44,73}, {25,73}, {68,20},
+ {68,19}, {54,57}, {24,56}, {53,69}, {21,7}, {44,79}, {49,42}, {16,5},
+ {41,20}, {18,71}, {40,82}, {30,44}, {47,90}, {41,49}, {68,21}, {26,33},
+ {46,59}, {24,11}, {51,54}, {25,5}, {48,70}, {46,91}, {27,49}, {68,22},
+ {39,60}, {30,76}, {16,85}, {42,61}, {27,36}, {27,35}, {49,89}, {34,59},
+ {30,59}, {23,26}, {34,33}, {25,13}, {51,1}, {38,61}, {35,14}, {17,75},
+ {24,48}, {68,26}, {32,39}, {52,14}, {68,27}, {68,29}, {19,70}, {21,51},
+ {42,33}, {48,15}, {20,27}, {41,56}, {22,65}, {40,67}, {28,10}, {45,29},
+ {54,79}, {47,0}, {40,56}, {21,90}, {69,55}, {27,65}, {18,29}, {40,47},
+ {69,56}, {18,1}, {61,43}, {50,39}, {61,44}, {49,1}, {61,45}, {29,44},
+ {61,46}, {41,11}, {49,91}, {18,62}, {68,73}, {35,64}, {29,0}, {45,17},
+ {35,81}, {29,53}, {37,7}, {17,66}, {29,50}, {38,91}, {43,74}, {28,75},
+ {45,60}, {41,25}, {37,32}, {68,75}, {47,27}, {52,24}, {68,76}, {41,83},
+ {44,31}, {33,36}, {68,78}, {33,35}, {68,79}, {68,87}, {44,44}, {40,28},
+ {49,56}, {64,7}, {50,75}, {42,73}, {37,80}, {64,11}, {64,6}, {64,8},
+ {64,9}, {64,14}, {17,76}, {64,10}, {23,57}, {64,12}, {64,13}, {64,15},
+ {20,25}, {64,16}, {64,18}, {64,23}, {48,49}, {64,21}, {64,20}, {32,74},
+ {64,22}, {51,31}, {64,17}, {64,25}, {15,21}, {64,19}, {30,88}, {64,24},
+ {64,26}, {64,29}, {64,27}, {53,36}, {46,30}, {64,28}, {64,30}, {33,44},
+ {21,74}, {50,87}, {38,44}, {22,68}, {29,93}, {64,31}, {64,32}, {64,38},
+ {18,70}, {37,72}, {19,61}, {48,33}, {64,39}, {64,37}, {64,36}, {64,34},
+ {64,33}, {16,31}, {52,23}, {64,35}, {64,42}, {64,43}, {64,41}, {78,89},
+ {64,50}, {64,49}, {38,21}, {64,40}, {64,45}, {64,47}, {64,51}, {64,48},
+ {64,44}, {64,46}, {64,52}, {64,53}, {64,54}, {64,55}, {64,57}, {64,58},
+ {45,0}, {70,60}, {19,7}, {53,60}, {48,17}, {18,17}, {24,3}, {54,82},
+ {38,40}, {29,61}, {24,13}, {45,54}, {17,77}, {58,46}, {27,25}, {49,48},
+ {42,39}, {15,44}, {46,78}, {56,66}, {28,76}, {16,49}, {41,47}, {17,27},
+ {42,6}, {22,10}, {41,5}, {46,2}, {63,87}, {52,41}, {63,90}, {63,89},
+ {36,32}, {43,90}, {32,16}, {63,88}, {53,66}, {17,14}, {53,35}, {20,58},
+ {19,87}, {53,0}, {46,14}, {15,78}, {63,91}, {64,0}, {18,2}, {63,92},
+ {63,93}, {34,16}, {34,60}, {64,1}, {22,88}, {26,46}, {64,2}, {35,26},
+ {64,3}, {64,4}, {64,5}, {19,16}, {23,40}, {37,28}, {35,73}, {17,1},
+ {47,49}, {70,58}, {26,34}, {50,54}, {50,35}, {24,66}, {65,46}, {54,14},
+ {38,75}, {16,50}, {19,17}, {65,48}, {47,81}, {33,13}, {65,47}, {30,65},
+ {50,5}, {20,54}, {65,49}, {20,73}, {34,76}, {23,92}, {23,13}, {36,50},
+ {22,46}, {65,51}, {65,50}, {21,39}, {54,88}, {44,4}, {65,55}, {65,53},
+ {41,91}, {30,20}, {50,24}, {65,52}, {65,54}, {32,13}, {31,39}, {65,58},
+ {65,57}, {31,9}, {32,45}, {65,59}, {65,60}, {65,61}, {58,39}, {48,50},
+ {44,1}, {28,7}, {61,34}, {55,4}, {30,9}, {58,44}, {49,75}, {37,89},
+ {36,9}, {61,35}, {16,54}, {62,13}, {41,28}, {62,16}, {24,12}, {49,92},
+ {23,4}, {25,74}, {18,57}, {20,59}, {52,36}, {34,53}, {46,49}, {26,0},
+ {68,82}, {68,81}, {68,83}, {44,67}, {39,84}, {20,14}, {38,30}, {68,85},
+ {75,15}, {68,69}, {24,72}, {20,16}, {33,27}, {68,71}, {68,70}, {68,72},
+ {49,44}, {64,73}, {47,45}, {44,13}, {48,68}, {17,41}, {16,74}, {16,81},
+ {36,76}, {52,34}, {50,15}, {64,59}, {64,60}, {49,58}, {18,24}, {16,42},
+ {44,88}, {52,86}, {64,61}, {29,21}, {19,92}, {64,62}, {25,59}, {64,63},
+ {26,17}, {33,40}, {64,64}, {47,75}, {44,28}, {64,65}, {20,34}, {36,38},
+ {64,66}, {64,67}, {50,88}, {64,68}, {48,12}, {64,69}, {45,1}, {64,70},
+ {20,33}, {64,71}, {26,52}, {47,35}, {65,63}, {16,55}, {49,67}, {65,64},
+ {27,40}, {39,43}, {65,66}, {75,93}, {75,92}, {62,14}, {65,65}, {53,29},
+ {44,91}, {34,5}, {66,34}, {53,49}, {65,70}, {65,71}, {50,38}, {65,75},
+ {30,75}, {65,76}, {65,68}, {18,31}, {35,77}, {65,77}, {47,34}, {25,85},
+ {65,72}, {22,61}, {26,18}, {43,11}, {42,42}, {65,67}, {65,69}, {65,73},
+ {65,74}, {65,86}, {65,83}, {51,84}, {65,82}, {36,12}, {52,89}, {36,33},
+ {17,31}, {65,78}, {65,81}, {32,14}, {42,27}, {20,0}, {65,88}, {27,16},
+ {65,80}, {47,51}, {51,24}, {65,84}, {24,53}, {65,85}, {38,50}, {65,79},
+ {54,59}, {76,0}, {65,87}, {76,4}, {65,93}, {41,48}, {32,20}, {26,47},
+ {30,53}, {25,66}, {42,0}, {76,5}, {76,2}, {76,1}, {26,53}, {76,6},
+ {47,83}, {76,3}, {25,61}, {21,86}, {66,0}, {21,17}, {43,80}, {24,6},
+ {46,1}, {38,0}, {30,49}, {21,80}, {65,89}, {65,90}, {65,92}, {65,91},
+ {35,52}, {66,1}, {50,32}, {66,6}, {38,35}, {46,3}, {66,8}, {25,22},
+ {66,7}, {26,57}, {66,2}, {66,3}, {66,9}, {66,5}, {45,81}, {50,37},
+ {26,27}, {51,34}, {35,89}, {76,7}, {47,91}, {66,4}, {34,84}, {66,12},
+ {16,14}, {66,17}, {27,33}, {66,11}, {20,30}, {38,72}, {66,15}, {29,9},
+ {44,78}, {26,82}, {43,71}, {66,14}, {66,16}, {46,6}, {66,13}, {45,8},
+ {26,60}, {20,74}, {29,68}, {17,49}, {18,44}, {16,24}, {66,10}, {17,48},
+ {20,11}, {24,62}, {21,71}, {46,74}, {66,22}, {26,43}, {39,38}, {47,41},
+ {66,23}, {18,77}, {76,8}, {50,89}, {50,67}, {76,9}, {66,24}, {49,65},
+ {66,20}, {50,61}, {23,47}, {66,18}, {66,21}, {22,62}, {66,19}, {31,1},
+ {66,25}, {51,23}, {19,39}, {66,26}, {26,36}, {40,86}, {40,68}, {35,28},
+ {76,10}, {33,92}, {26,58}, {30,13}, {45,30}, {66,27}, {30,21}, {16,78},
+ {51,86}, {66,29}, {76,12}, {66,30}, {25,8}, {76,11}, {66,28}, {66,31},
+ {25,21}, {21,13}, {47,23}, {15,34}, {76,13}, {76,14}, {31,32}, {66,32},
+ {36,18}, {66,33}, {59,17}, {76,15}, {23,73}, {45,75}, {73,6}, {47,70},
+ {41,88}, {39,53}, {46,22}, {18,40}, {45,49}, {28,67}, {66,61}, {26,81},
+ {73,7}, {52,28}, {37,60}, {73,8}, {73,9}, {73,11}, {73,10}, {73,13},
+ {73,12}, {28,55}, {73,14}, {33,29}, {19,32}, {19,86}, {26,6}, {75,69},
+ {75,68}, {22,30}, {42,88}, {16,65}, {75,70}, {40,39}, {75,71}, {75,72},
+ {41,53}, {61,47}, {17,36}, {51,89}, {37,42}, {15,38}, {19,81}, {39,50},
+ {44,47}, {30,23}, {30,58}, {38,3}, {53,19}, {31,8}, {61,48}, {40,7},
+ {48,78}, {36,3}, {15,70}, {18,21}, {39,36}, {15,65}, {22,85}, {36,89},
+ {21,82}, {52,49}, {18,47}, {27,27}, {18,12}, {29,80}, {15,48}, {49,53},
+ {41,66}, {54,4}, {44,21}, {21,21}, {30,24}, {52,58}, {23,6}, {36,54},
+ {61,49}, {30,56}, {33,52}, {38,31}, {26,3}, {16,7}, {36,73}, {36,90},
+ {43,6}, {16,6}, {20,53}, {35,7}, {61,50}, {48,25}, {18,72}, {34,81},
+ {22,86}, {53,83}, {20,2}, {17,79}, {35,19}, {35,72}, {31,12}, {61,51},
+ {15,71}, {36,35}, {32,63}, {24,52}, {29,59}, {44,55}, {15,45}, {44,46},
+ {61,53}, {29,47}, {54,29}, {61,52}, {52,47}, {15,60}, {35,65}, {33,2},
+ {27,79}, {50,20}, {31,24}, {36,0}, {17,5}, {51,80}, {31,7}, {41,34},
+ {61,54}, {52,91}, {24,15}, {39,12}, {42,8}, {61,56}, {30,28}, {37,19},
+ {54,6}, {41,15}, {35,34}, {18,53}, {24,49}, {53,23}, {73,91}, {15,19},
+ {30,69}, {43,83}, {44,57}, {53,30}, {33,45}, {45,45}, {43,1}, {47,13},
+ {35,50}, {20,17}, {61,55}, {52,84}, {27,22}, {26,50}, {15,3}, {36,17},
+ {19,75}, {52,80}, {73,92}, {61,57}, {44,5}, {44,75}, {45,69}, {61,59},
+ {44,16}, {31,5}, {54,28}, {61,58}, {15,37}, {25,19}, {40,50}, {35,82},
+ {29,71}, {17,21}, {31,43}, {42,79}, {27,80}, {26,26}, {20,22}, {36,84},
+ {61,69}, {61,66}, {29,60}, {61,62}, {19,22}, {28,60}, {61,63}, {35,76},
+ {46,37}, {20,63}, {21,61}, {41,57}, {20,83}, {61,68}, {52,37}, {61,64},
+ {43,44}, {37,93}, {36,36}, {49,19}, {29,81}, {33,50}, {43,28}, {18,23},
+ {28,50}, {30,55}, {44,37}, {48,57}, {19,74}, {61,67}, {61,60}, {61,70},
+ {73,93}, {33,15}, {61,65}, {53,31}, {20,6}, {17,83}, {61,71}, {61,81},
+ {61,76}, {61,80}, {39,63}, {54,64}, {61,78}, {34,71}, {43,64}, {17,68},
+ {49,29}, {61,77}, {61,74}, {45,52}, {19,6}, {30,10}, {29,29}, {28,49},
+ {61,72}, {51,13}, {61,61}, {61,73}, {31,30}, {61,75}, {17,82}, {23,72},
+ {33,6}, {28,32}, {61,84}, {61,87}, {17,10}, {19,3}, {19,73}, {40,5},
+ {61,85}, {42,48}, {23,66}, {61,86}, {61,89}, {61,88}, {43,33}, {15,64},
+ {19,77}, {68,25}, {47,14}, {17,74}, {74,0}, {61,83}, {40,66}, {61,82},
+ {15,57}, {49,0}, {16,86}, {43,14}, {61,79}, {42,3}, {52,9}, {61,90},
+ {19,60}, {35,5}, {61,92}, {34,93}, {35,0}, {62,0}, {32,43}, {61,91},
+ {29,78}, {37,17}, {18,36}, {39,85}, {42,25}, {61,93}, {62,3}, {54,17},
+ {18,22}, {32,34}, {38,42}, {17,4}, {19,72}, {54,10}, {35,75}, {62,1},
+ {62,2}, {62,4}, {25,18}, {62,5}, {31,61}, {40,34}, {17,56}, {38,69},
+ {62,6}, {38,59}, {62,7}, {74,1}, {42,50}, {62,9}, {62,8}, {17,32},
+ {36,41}, {62,10}, {51,59}, {39,32}, {62,11}, {29,79}, {62,12}, {53,6},
+ {73,22}, {74,21}, {41,52}, {55,91}, {23,35}, {24,4}, {22,36}, {52,93},
+ {24,41}, {47,6}, {83,44}, {20,47}, {34,83}, {29,39}, {74,22}, {15,28},
+ {28,43}, {32,17}, {16,53}, {18,7}, {23,49}, {40,1}, {21,55}, {74,23},
+ {29,19}, {41,92}, {38,34}, {52,90}, {22,82}, {45,35}, {52,10}, {16,82},
+ {75,18}, {15,62}, {75,20}, {21,22}, {32,46}, {84,89}, {47,16}, {52,68},
+ {45,50}, {28,78}, {18,65}, {23,10}, {52,21}, {76,28}, {21,46}, {42,24},
+ {47,33}, {22,28}, {75,21}, {41,8}, {36,51}, {75,24}, {75,23}, {33,34},
+ {75,22}, {47,92}, {75,25}, {75,26}, {54,68}, {75,27}, {75,28}, {37,75},
+ {45,61}, {27,39}, {39,52}, {20,8}, {29,40}, {53,27}, {51,70}, {48,13},
+ {47,80}, {73,23}, {73,24}, {73,25}, {25,20}, {41,16}, {30,84}, {44,89},
+ {73,31}, {15,25}, {73,29}, {31,4}, {73,26}, {17,92}, {34,86}, {26,71},
+ {49,54}, {45,83}, {73,30}, {73,27}, {73,34}, {47,38}, {50,18}, {19,25},
+ {34,32}, {54,81}, {52,48}, {41,38}, {73,36}, {73,35}, {73,38}, {73,37},
+ {53,70}, {46,51}, {73,42}, {26,45}, {28,89}, {40,45}, {73,43}, {40,24},
+ {46,93}, {73,41}, {51,45}, {73,44}, {73,46}, {44,76}, {73,40}, {73,45},
+ {45,77}, {26,61}, {18,30}, {37,52}, {29,15}, {45,89}, {38,70}, {29,6},
+ {73,47}, {53,38}, {32,31}, {51,60}, {73,48}, {46,29}, {73,49}, {41,77},
+ {36,14}, {15,20}, {73,51}, {73,50}, {83,62}, {35,25}, {16,8}, {68,62},
+ {73,52}, {41,78}, {73,53}, {73,54}, {37,55}, {73,55}, {73,56}, {51,26},
+ {38,89}, {49,22}, {23,91}, {73,33}, {17,59}, {33,91}, {51,87}, {43,69},
+ {54,77}, {51,33}, {50,47}, {74,34}, {36,82}, {22,93}, {74,51}, {42,22},
+ {74,61}, {31,41}, {44,90}, {18,14}, {37,57}, {74,91}, {35,29}, {45,19},
+ {35,8}, {16,29}, {51,92}, {41,84}, {53,75}, {37,50}, {21,67}, {26,89},
+ {47,63}, {40,16}, {51,50}, {39,7}, {23,42}, {71,29}, {40,27}, {71,26},
+ {31,77}, {47,50}, {17,35}, {19,68}, {71,27}, {52,39}, {21,36}, {71,28},
+ {41,87}, {23,59}, {43,84}, {31,19}, {48,77}, {71,30}, {71,33}, {25,27},
+ {16,12}, {28,59}, {73,28}, {71,34}, {71,37}, {71,42}, {71,43}, {42,40},
+ {15,68}, {27,10}, {24,24}, {71,32}, {44,86}, {71,41}, {45,85}, {52,76},
+ {32,53}, {71,35}, {34,21}, {24,90}, {53,5}, {71,39}, {41,63}, {51,69},
+ {71,31}, {71,36}, {71,38}, {38,24}, {22,66}, {71,40}, {30,60}, {71,49},
+ {71,54}, {71,52}, {27,59}, {27,46}, {71,58}, {71,61}, {71,57}, {16,89},
+ {15,55}, {35,18}, {23,43}, {37,65}, {39,29}, {39,64}, {71,46}, {71,51},
+ {71,53}, {24,80}, {71,55}, {54,84}, {35,90}, {71,59}, {17,72}, {71,48},
+ {27,76}, {30,33}, {71,44}, {53,88}, {32,87}, {17,80}, {71,62}, {41,32},
+ {71,56}, {52,3}, {16,73}, {52,26}, {71,45}, {71,47}, {21,15}, {71,50},
+ {71,60}, {31,23}, {41,86}, {42,7}, {37,59}, {31,84}, {71,72}, {47,2},
+ {71,81}, {53,73}, {71,63}, {71,64}, {48,88}, {25,42}, {23,88}, {23,80},
+ {51,51}, {71,78}, {71,77}, {71,75}, {24,79}, {43,49}, {71,69}, {45,5},
+ {30,81}, {15,23}, {71,80}, {71,79}, {54,31}, {71,67}, {44,8}, {40,2},
+ {26,23}, {28,58}, {71,73}, {71,65}, {71,66}, {71,68}, {20,20}, {71,70},
+ {38,36}, {71,74}, {71,76}, {28,15}, {54,13}, {71,87}, {71,84}, {44,15},
+ {71,85}, {32,25}, {71,71}, {34,22}, {15,79}, {71,83}, {71,86}, {24,2},
+ {40,49}, {34,45}, {45,63}, {31,69}, {42,82}, {43,60}, {47,20}, {41,64},
+ {71,82}, {27,75}, {71,88}, {34,61}, {37,68}, {24,86}, {15,83}, {54,55},
+ {27,11}, {36,78}, {43,35}, {72,5}, {40,12}, {72,1}, {31,65}, {30,34},
+ {71,93}, {24,54}, {71,90}, {72,3}, {49,45}, {72,2}, {53,17}, {54,20},
+ {72,6}, {28,22}, {71,91}, {71,92}, {72,0}, {44,53}, {49,11}, {72,17},
+ {72,8}, {19,9}, {19,26}, {72,10}, {47,7}, {72,4}, {18,93}, {72,11},
+ {31,66}, {72,9}, {72,24}, {72,23}, {72,13}, {71,89}, {72,7}, {30,11},
+ {72,16}, {72,25}, {33,4}, {72,14}, {23,36}, {72,12}, {50,59}, {72,19},
+ {72,20}, {72,22}, {72,38}, {31,37}, {72,36}, {72,15}, {72,26}, {15,80},
+ {72,27}, {52,4}, {72,29}, {72,30}, {72,32}, {32,80}, {39,21}, {72,28},
+ {72,33}, {72,34}, {72,18}, {72,21}, {26,16}, {72,31}, {27,86}, {72,35},
+ {72,37}, {72,41}, {72,45}, {17,58}, {72,39}, {22,13}, {72,42}, {72,43},
+ {52,32}, {35,2}, {72,55}, {25,64}, {72,40}, {50,2}, {72,51}, {72,54},
+ {72,47}, {72,46}, {38,32}, {72,49}, {72,56}, {18,39}, {72,50}, {46,79},
+ {72,44}, {18,86}, {72,53}, {72,57}, {43,19}, {46,12}, {72,52}, {72,59},
+ {72,58}, {72,61}, {72,48}, {72,60}, {72,62}, {34,41}, {38,22}, {19,45},
+ {26,21}, {47,31}, {75,2}, {36,22}, {50,90}, {75,3}, {75,4}, {37,58},
+ {30,77}, {75,5}, {75,6}, {47,9}, {38,23}, {23,71}, {75,7}, {53,24},
+ {52,92}, {19,42}, {17,28}, {45,67}, {37,70}, {44,64}, {19,84}, {42,31},
+ {27,62}, {72,65}, {72,66}, {48,73}, {72,68}, {19,88}, {72,67}, {48,18},
+ {41,65}, {17,47}, {72,71}, {72,69}, {72,70}, {53,18}, {72,72}, {72,73},
+ {72,74}, {72,75}, {75,14}, {36,24}, {21,45}, {49,82}, {20,77}, {26,56},
+ {75,16}, {49,66}, {45,66}, {35,23}, {34,30}, {21,29}, {55,24}, {16,39},
+ {16,46}, {16,48}, {36,93}, {16,47}, {34,10}, {52,16}, {74,3}, {25,32},
+ {43,25}, {74,4}, {74,6}, {74,7}, {74,5}, {74,8}, {74,10}, {74,9}, {74,11},
+ {41,46}, {55,20}, {34,80}, {34,4}, {37,87}, {74,12}, {35,41}, {74,13},
+ {74,14}, {74,15}, {22,52}, {22,89}, {74,16}, {38,65}, {74,18}, {25,3},
+ {48,84}, {15,16}, {74,17}, {74,19}, {20,9}, {33,39}, {38,71}, {74,20},
+ {42,13}, {66,62}, {50,31}, {56,58}, {44,0}, {53,12}, {38,82}, {56,63},
+ {26,66}, {25,25}, {66,65}, {46,10}, {66,63}, {40,38}, {25,24}, {48,19},
+ {66,64}, {39,73}, {24,14}, {28,12}, {18,55}, {45,58}, {43,31}, {66,71},
+ {66,72}, {44,83}, {43,12}, {27,18}, {66,73}, {66,74}, {47,57}, {37,90},
+ {22,57}, {38,62}, {49,41}, {45,53}, {66,67}, {66,75}, {40,81}, {18,32},
+ {66,70}, {37,66}, {66,68}, {76,18}, {66,69}, {40,18}, {36,69}, {24,20},
+ {34,26}, {66,66}, {36,28}, {32,3}, {33,56}, {17,54}, {66,76}, {26,5},
+ {35,12}, {66,79}, {29,57}, {66,90}, {66,84}, {25,50}, {22,47}, {50,44},
+ {53,45}, {52,50}, {24,32}, {52,19}, {48,55}, {47,24}, {38,85}, {39,9},
+ {17,19}, {34,57}, {66,77}, {66,91}, {66,78}, {22,7}, {66,86}, {66,83},
+ {22,25}, {36,1}, {66,85}, {36,60}, {17,7}, {37,91}, {35,63}, {54,1},
+ {31,64}, {66,88}, {66,89}, {66,92}, {43,8}, {66,82}, {50,29}, {16,34},
+ {76,19}, {66,80}, {66,81}, {66,87}, {47,25}, {37,34}, {51,82}, {66,93},
+ {28,63}, {67,6}, {67,5}, {48,82}, {67,2}, {67,8}, {39,86}, {46,19},
+ {67,7}, {67,13}, {33,68}, {21,19}, {28,81}, {67,1}, {25,72}, {67,9},
+ {67,11}, {21,92}, {53,61}, {67,17}, {67,12}, {67,0}, {26,77}, {44,60},
+ {38,1}, {36,40}, {32,86}, {67,3}, {38,18}, {28,11}, {28,28}, {67,4},
+ {54,38}, {17,65}, {67,10}, {27,34}, {67,14}, {26,74}, {67,15}, {36,7},
+ {67,16}, {52,66}, {30,2}, {67,25}, {67,22}, {67,26}, {67,28}, {37,53},
+ {25,37}, {31,42}, {23,0}, {67,19}, {51,0}, {25,2}, {28,93}, {67,27},
+ {44,30}, {35,88}, {46,90}, {40,69}, {50,30}, {46,48}, {67,18}, {67,23},
+ {67,24}, {43,72}, {43,45}, {31,51}, {67,20}, {32,15}, {67,21}, {45,47},
+ {26,32}, {20,50}, {39,82}, {28,6}, {52,38}, {40,11}, {23,1}, {67,41},
+ {67,43}, {48,35}, {49,25}, {25,12}, {25,51}, {67,34}, {20,76}, {54,44},
+ {67,31}, {46,92}, {67,30}, {32,59}, {43,41}, {41,70}, {35,54}, {43,51},
+ {67,39}, {67,38}, {67,32}, {67,35}, {20,12}, {50,56}, {67,37}, {49,88},
+ {19,66}, {26,19}, {40,77}, {19,29}, {26,75}, {48,44}, {43,76}, {76,20},
+ {38,68}, {51,7}, {67,42}, {54,52}, {67,33}, {28,4}, {67,36}, {50,69},
+ {67,40}, {40,87}, {67,29}, {50,68}, {38,93}, {21,40}, {51,91}, {17,18},
+ {67,54}, {45,33}, {67,44}, {45,27}, {23,58}, {67,53}, {30,41}, {50,45},
+ {34,75}, {36,39}, {67,55}, {44,35}, {67,46}, {67,51}, {67,52}, {25,93},
+ {46,69}, {52,30}, {67,49}, {67,47}, {67,45}, {44,68}, {41,9}, {31,2},
+ {28,5}, {67,50}, {23,39}, {67,70}, {51,19}, {67,58}, {32,78}, {67,72},
+ {49,70}, {67,62}, {67,63}, {46,9}, {42,60}, {67,57}, {67,48}, {67,68},
+ {39,59}, {67,66}, {35,70}, {67,65}, {67,64}, {18,91}, {67,71}, {20,64},
+ {54,43}, {67,69}, {26,11}, {54,49}, {43,46}, {74,87}, {67,67}, {24,85},
+ {53,44}, {67,56}, {67,59}, {33,89}, {67,61}, {33,42}, {31,35}, {33,47},
+ {16,84}, {43,17}, {20,45}, {67,78}, {37,14}, {37,64}, {67,84}, {33,8},
+ {31,75}, {48,60}, {67,77}, {35,13}, {67,76}, {67,85}, {67,83}, {33,93},
+ {67,60}, {67,79}, {41,93}, {52,35}, {67,80}, {48,89}, {67,74}, {67,75},
+ {67,81}, {45,10}, {36,42}, {38,16}, {33,25}, {67,73}, {32,41}, {43,21},
+ {18,16}, {67,90}, {67,82}, {67,89}, {67,92}, {67,91}, {18,45}, {18,25},
+ {67,86}, {67,88}, {67,87}, {36,75}, {31,28}, {51,71}, {68,1}, {15,35},
+ {68,3}, {68,2}, {27,3}, {68,4}, {68,0}, {67,93}, {16,83}, {68,7}, {68,8},
+ {68,5}, {68,6}, {68,9}, {37,56}, {68,10}, {68,12}, {68,11}, {68,14},
+ {68,13}, {24,63}, {68,15}, {68,16}, {26,79}, {75,64}, {34,79}, {20,37},
+ {26,49}, {32,72}, {51,77}, {29,35}, {54,37}, {51,53}, {17,50}, {75,29},
+ {73,32}, {33,14}, {19,21}, {48,54}, {18,19}, {39,17}, {30,26}, {75,31},
+ {53,42}, {75,30}, {75,32}, {75,36}, {29,69}, {43,30}, {36,57}, {29,27},
+ {75,37}, {16,93}, {75,35}, {52,7}, {20,66}, {75,33}, {32,21}, {18,66},
+ {75,34}, {42,23}, {31,34}, {43,93}, {32,49}, {75,39}, {25,69}, {31,50},
+ {53,81}, {48,43}, {30,29}, {22,18}, {40,52}, {75,38}, {26,65}, {43,43},
+ {28,92}, {39,39}, {46,8}, {44,72}, {36,74}, {22,72}, {48,40}, {25,23},
+ {75,40}, {75,41}, {26,31}, {75,42}, {75,65}, {16,25}, {22,56}, {28,24},
+ {75,43}, {48,69}, {75,44}, {39,26}, {75,48}, {75,50}, {26,44}, {27,68},
+ {75,46}, {40,22}, {34,25}, {75,66}, {52,52}, {75,47}, {53,82}, {75,49},
+ {75,45}, {75,51}, {75,52}, {40,30}, {46,7}, {47,59}, {48,11}, {39,58},
+ {75,53}, {45,84}, {41,75}, {75,57}, {75,56}, {15,29}, {75,54}, {75,55},
+ {75,67}, {39,27}, {32,38}, {75,59}, {48,63}, {75,58}, {51,78}, {75,60},
+ {58,37}, {75,61}, {16,11}, {75,62}, {75,63}, {54,5}, {36,31}, {74,27},
+ {15,13}, {29,83}, {23,23}, {49,14}, {15,53}, {20,88}, {55,18}, {42,11},
+ {66,60}, {37,11}, {15,69}, {36,37}, {74,24}, {74,25}, {74,26}, {48,31},
+ {36,2}, {73,81}, {35,17}, {35,20}, {31,45}, {73,82}, {35,32}, {45,78},
+ {73,79}, {73,83}, {40,91}, {38,2}, {43,55}, {45,93}, {73,84}, {73,85},
+ {46,11}, {31,70}, {73,86}, {21,30}, {73,87}, {73,88}, {73,89}, {73,90},
+ {73,80}, {39,13}, {64,74}, {22,23}, {64,75}, {64,76}, {54,19}, {64,77},
+ {64,78}, {50,43}, {64,80}, {30,80}, {64,79}, {20,49}, {16,22}, {64,82},
+ {64,81}, {25,91}, {64,83}, {24,22}, {29,48}, {35,91}, {25,60}, {28,37},
+ {64,84}, {64,86}, {21,31}, {46,32}, {41,7}, {64,85}, {52,87}, {50,91},
+ {64,87}, {64,91}, {64,88}, {64,89}, {31,73}, {64,93}, {65,0}, {31,38},
+ {64,90}, {64,92}, {65,4}, {32,51}, {65,2}, {65,7}, {17,93}, {65,1},
+ {34,44}, {17,33}, {65,6}, {65,5}, {65,3}, {65,8}, {65,10}, {47,40},
+ {53,76}, {34,7}, {65,11}, {46,54}, {65,13}, {25,78}, {72,63}, {65,12},
+ {65,9}, {26,10}, {51,18}, {65,15}, {65,14}, {72,64}, {65,16}, {65,17},
+ {65,18}, {43,0}, {65,19}, {65,20}, {47,93}, {33,41}, {50,80}, {44,84},
+ {70,63}, {70,64}, {29,32}, {33,73}, {70,67}, {70,66}, {44,69}, {34,20},
+ {70,65}, {26,22}, {46,53}, {32,64}, {70,72}, {70,71}, {70,83}, {17,2},
+ {70,73}, {70,69}, {70,75}, {70,74}, {40,25}, {52,67}, {70,68}, {22,8},
+ {70,70}, {70,77}, {70,82}, {53,72}, {70,76}, {70,81}, {70,80}, {15,63},
+ {70,84}, {38,81}, {31,36}, {31,76}, {32,79}, {70,79}, {70,85}, {42,85},
+ {71,1}, {71,0}, {54,32}, {70,89}, {70,88}, {70,90}, {70,86}, {70,93},
+ {70,92}, {70,91}, {32,52}, {38,56}, {36,92}, {36,34}, {38,76}, {71,2},
+ {71,5}, {71,4}, {71,6}, {25,86}, {70,87}, {71,3}, {39,79}, {40,9},
+ {71,8}, {24,68}, {48,93}, {71,7}, {71,9}, {71,12}, {71,13}, {32,6},
+ {71,14}, {71,15}, {71,11}, {71,19}, {71,10}, {71,16}, {71,20}, {71,17},
+ {71,18}, {71,22}, {71,21}, {24,46}, {79,11}, {79,12}, {37,15}, {15,73},
+ {39,30}, {44,62}, {45,44}, {73,16}, {73,17}, {37,30}, {19,40}, {73,18},
+ {52,70}, {60,88}, {73,19}, {73,20}, {73,21}, {23,41}, {62,15}, {40,84},
+ {43,79}, {40,89}, {40,90}, {50,34}, {42,5}, {23,5}, {79,13}, {16,33},
+ {68,23}, {43,78}, {50,40}, {27,54}, {40,73}, {20,70}, {35,47}, {20,72},
+ {77,13}, {26,12}, {70,61}, {77,14}, {18,8}, {77,17}, {77,16}, {28,70},
+ {77,15}, {45,22}, {36,46}, {32,83}, {58,45}, {77,18}, {47,82}, {33,51},
+ {37,71}, {22,11}, {77,19}, {18,74}, {26,90}, {77,20}, {70,59}, {77,21},
+ {28,13}, {80,65}, {41,71}, {49,40}, {79,57}, {79,58}, {79,59}, {32,37},
+ {23,76}, {29,45}, {79,61}, {36,16}, {79,60}, {48,80}, {79,63}, {15,43},
+ {28,73}, {49,62}, {79,62}, {19,14}, {22,71}, {79,69}, {79,68}, {37,2},
+ {79,64}, {79,65}, {19,34}, {79,66}, {52,77}, {43,58}, {29,49}, {27,17},
+ {79,71}, {79,70}, {79,67}, {17,0}, {53,1}, {50,23}, {29,22}, {39,11},
+ {79,73}, {48,86}, {53,43}, {25,58}, {79,72}, {21,26}, {44,19}, {37,5},
+ {32,0}, {79,74}, {79,77}, {79,76}, {79,79}, {79,75}, {26,29}, {79,78},
+ {43,20}, {79,81}, {18,52}, {16,51}, {79,82}, {79,83}, {79,85}, {19,64},
+ {79,80}, {79,86}, {79,89}, {79,87}, {79,84}, {79,92}, {79,88}, {79,91},
+ {79,93}, {80,0}, {45,32}, {80,3}, {80,2}, {32,85}, {79,90}, {41,60},
+ {19,80}, {16,80}, {43,16}, {80,5}, {80,6}, {80,11}, {52,45}, {80,8},
+ {39,18}, {80,1}, {80,10}, {80,7}, {80,4}, {80,9}, {15,8}, {80,12},
+ {80,14}, {80,16}, {80,15}, {80,13}, {48,1}, {80,17}, {80,18}, {24,78},
+ {20,38}, {15,54}, {15,56}, {51,76}, {20,35}, {28,51}, {26,41}, {79,6},
+ {23,61}, {79,7}, {15,7}, {79,8}, {44,77}, {79,9}, {79,10}, {37,3},
+ {53,68}, {80,67}, {80,68}, {34,82}, {50,58}, {53,48}, {36,71}, {50,14},
+ {49,69}, {77,32}, {15,26}, {52,20}, {48,45}, {27,63}, {25,47}, {30,87},
+ {23,38}, {20,32}, {36,43}, {41,1}, {34,42}, {77,33}, {35,30}, {21,1},
+ {76,75}, {34,3}, {53,16}, {46,63}, {76,78}, {36,45}, {21,59}, {41,0},
+ {76,76}, {76,79}, {76,80}, {34,27}, {30,19}, {76,77}, {76,83}, {76,81},
+ {52,69}, {34,62}, {76,82}, {76,85}, {52,2}, {48,2}, {76,84}, {34,47},
+ {76,86}, {30,83}, {29,75}, {76,87}, {43,86}, {48,58}, {54,36}, {52,85},
+ {76,91}, {76,90}, {76,88}, {76,89}, {76,92}, {29,5}, {42,14}, {77,0},
+ {21,28}, {77,1}, {35,31}, {76,93}, {28,61}, {17,38}, {21,34}, {77,4},
+ {55,25}, {77,2}, {77,5}, {34,72}, {18,81}, {77,6}, {77,3}, {46,24},
+ {77,7}, {33,86}, {77,8}, {77,9}, {61,10}, {37,18}, {38,37}, {53,84},
+ {20,40}, {42,17}, {77,10}, {44,10}, {77,11}, {52,15}, {77,12}, {85,35},
+ {58,38}, {19,2}, {34,11}, {80,69}, {41,23}, {49,50}, {53,9}, {78,81},
+ {29,55}, {28,34}, {78,82}, {21,43}, {15,10}, {41,14}, {76,21}, {76,22},
+ {45,88}, {22,14}, {30,82}, {76,23}, {33,74}, {40,15}, {76,24}, {37,85},
+ {30,18}, {76,27}, {36,87}, {48,47}, {54,8}, {76,25}, {76,26}, {48,65},
+ {76,30}, {76,31}, {76,35}, {76,39}, {76,37}, {76,45}, {52,71}, {76,40},
+ {76,38}, {76,29}, {36,72}, {37,37}, {40,72}, {51,49}, {76,32}, {76,33},
+ {76,34}, {76,36}, {31,88}, {19,0}, {24,71}, {76,47}, {76,48}, {76,41},
+ {76,46}, {45,87}, {42,21}, {76,43}, {76,44}, {46,84}, {76,49}, {32,81},
+ {50,17}, {76,42}, {39,22}, {27,78}, {36,79}, {76,53}, {20,78}, {33,20},
+ {15,12}, {42,72}, {16,13}, {76,51}, {44,74}, {20,65}, {76,52}, {76,50},
+ {76,54}, {20,89}, {76,55}, {76,56}, {76,59}, {16,43}, {36,85}, {27,77},
+ {76,57}, {43,27}, {17,73}, {76,58}, {35,74}, {19,36}, {15,84}, {76,62},
+ {31,57}, {19,71}, {36,44}, {76,60}, {30,35}, {76,61}, {35,4}, {76,63},
+ {76,64}, {76,66}, {32,54}, {26,38}, {28,23}, {76,65}, {76,67}, {76,69},
+ {76,68}, {76,70}, {41,29}, {75,73}, {31,80}, {40,70}, {75,74}, {37,77},
+ {75,75}, {37,76}, {75,76}, {75,79}, {54,69}, {75,82}, {75,80}, {75,77},
+ {75,78}, {54,2}, {40,80}, {42,77}, {75,83}, {75,81}, {46,72}, {75,85},
+ {37,16}, {27,31}, {75,84}, {20,26}, {26,85}, {75,86}, {56,86}, {28,90},
+ {33,26}, {75,87}, {75,88}, {23,2}, {75,89}, {75,90}, {75,91}, {50,76},
+ {55,13}, {31,74}, {38,60}, {25,43}, {47,66}, {42,28}, {44,25}, {23,48},
+ {16,91}, {38,78}, {53,53}, {30,37}, {34,74}, {78,84}, {34,55}, {54,65},
+ {78,86}, {18,50}, {38,55}, {48,76}, {53,39}, {78,87}, {78,85}, {26,92},
+ {18,37}, {28,52}, {49,37}, {26,63}, {46,0}, {78,91}, {78,90}, {78,88},
+ {18,43}, {40,51}, {42,15}, {78,93}, {15,61}, {53,40}, {78,92}, {18,76},
+ {85,52}, {45,39}, {79,1}, {79,0}, {20,29}, {27,57}, {26,91}, {23,68},
+ {35,33}, {79,2}, {42,74}, {79,5}, {48,7}, {29,30}, {38,77}, {80,21},
+ {80,22}, {30,52}, {19,8}, {80,23}, {44,26}, {38,51}, {52,12}, {80,24},
+ {80,25}, {38,46}, {49,3}, {53,46}, {80,26}, {28,48}, {19,15}, {29,28},
+ {19,59}, {45,48}, {30,62}, {80,28}, {30,89}, {80,27}, {80,30}, {80,29},
+ {80,31}, {80,32}, {32,93}, {32,1}, {41,89}, {52,29}, {29,25}, {29,24},
+ {52,33}, {30,1}, {44,14}, {80,20}, {28,62}, {21,42}, {53,80}, {82,34},
+ {82,35}, {23,44}, {82,37}, {82,38}, {15,41}, {82,36}, {82,40}, {42,80},
+ {82,42}, {47,5}, {16,41}, {82,39}, {82,46}, {20,48}, {82,54}, {82,49},
+ {82,51}, {82,50}, {22,90}, {16,30}, {82,45}, {82,41}, {20,57}, {82,47},
+ {82,48}, {82,52}, {82,44}, {27,66}, {32,92}, {82,53}, {82,57}, {82,43},
+ {20,39}, {28,77}, {82,59}, {22,3}, {30,79}, {53,93}, {44,17}, {19,79},
+ {17,62}, {82,55}, {82,56}, {40,23}, {82,60}, {82,61}, {82,64}, {82,62},
+ {82,66}, {82,65}, {82,58}, {30,73}, {18,78}, {82,63}, {38,8}, {27,81},
+ {82,74}, {24,30}, {82,67}, {17,12}, {26,93}, {42,66}, {82,76}, {82,72},
+ {24,59}, {82,77}, {82,68}, {82,69}, {82,73}, {33,64}, {82,75}, {82,78},
+ {82,71}, {27,92}, {46,67}, {82,79}, {82,70}, {82,81}, {54,12}, {37,9},
+ {82,82}, {82,80}, {33,7}, {23,60}, {82,84}, {82,83}, {19,58}, {82,85},
+ {82,86}, {82,87}, {31,25}, {31,72}, {36,80}, {82,90}, {82,89}, {19,55},
+ {82,93}, {82,88}, {82,91}, {82,92}, {83,0}, {83,2}, {26,40}, {83,1},
+ {83,3}, {17,29}, {83,5}, {83,4}, {27,13}, {34,54}, {56,64}, {31,63},
+ {83,43}, {54,48}, {22,58}, {83,45}, {32,2}, {37,40}, {19,53}, {52,18},
+ {83,47}, {83,46}, {83,48}, {42,57}, {83,49}, {51,32}, {53,63}, {22,63},
+ {32,23}, {32,26}, {83,50}, {29,11}, {19,65}, {83,51}, {83,52}, {29,10},
+ {83,53}, {83,58}, {83,54}, {83,57}, {25,92}, {83,55}, {83,56}, {23,65},
+ {43,38}, {83,59}, {17,57}, {34,50}, {51,66}, {30,22}, {83,60}, {36,19},
+ {83,72}, {46,20}, {45,40}, {42,55}, {42,86}, {28,83}, {54,46}, {31,58},
+ {47,84}, {83,73}, {83,74}, {83,75}, {86,66}, {22,16}, {83,76}, {54,74},
+ {83,77}, {69,88}, {29,31}, {69,89}, {25,75}, {69,90}, {46,42}, {69,91},
+ {51,27}, {27,21}, {69,92}, {69,93}, {27,44}, {39,49}, {45,18}, {70,0},
+ {19,30}, {70,1}, {40,19}, {23,56}, {35,40}, {54,60}, {33,57}, {22,54},
+ {53,28}, {45,37}, {22,35}, {36,5}, {70,2}, {46,62}, {70,3}, {70,4},
+ {70,5}, {32,22}, {54,72}, {40,79}, {46,23}, {53,14}, {53,52}, {70,6},
+ {15,76}, {70,7}, {70,8}, {40,59}, {49,78}, {29,12}, {70,9}, {15,82},
+ {39,61}, {28,64}, {70,10}, {39,37}, {70,11}, {26,69}, {23,87}, {48,3},
+ {70,12}, {33,70}, {29,87}, {28,41}, {44,18}, {70,13}, {70,14}, {29,77},
+ {47,68}, {42,70}, {43,47}, {27,43}, {70,15}, {27,7}, {47,86}, {70,16},
+ {47,87}, {70,17}, {70,18}, {19,33}, {70,19}, {70,20}, {40,93}, {45,11},
+ {34,63}, {70,22}, {16,32}, {18,80}, {70,23}, {70,24}, {54,58}, {52,31},
+ {70,25}, {33,43}, {54,25}, {70,26}, {70,27}, {70,28}, {27,73}, {34,68},
+ {31,33}, {70,29}, {70,30}, {27,8}, {70,31}, {70,32}, {70,21}, {21,47},
+ {70,33}, {70,34}, {70,35}, {26,25}, {20,61}, {33,37}, {16,63}, {70,36},
+ {51,20}, {70,37}, {23,30}, {70,39}, {70,38}, {22,75}, {70,40}, {17,87},
+ {70,41}, {70,42}, {70,43}, {70,44}, {70,45}, {70,46}, {70,47}, {50,6},
+ {42,84}, {70,48}, {70,49}, {70,50}, {70,51}, {40,40}, {70,52}, {70,53},
+ {70,54}, {70,55}, {70,56}, {28,40}, {70,57}, {82,29}, {23,54}, {39,16},
+ {82,30}, {82,31}, {82,32}, {24,61}, {44,87}, {55,71}, {25,16}, {33,61},
+ {77,22}, {22,2}, {77,24}, {77,23}, {15,52}, {77,26}, {52,53}, {54,78},
+ {53,34}, {77,28}, {41,79}, {77,27}, {77,29}, {77,31}, {77,30}, {48,81},
+ {38,27}, {34,31}, {23,64}, {32,70}, {83,37}, {47,62}, {83,38}, {46,58},
+ {39,25}, {83,39}, {83,40}, {83,41}, {83,42}, {56,89}, {23,93}, {68,80},
+ {50,79}, {83,63}, {45,43}, {18,64}, {80,19}, {49,77}, {83,64}, {46,71},
+ {83,65}, {38,43}, {20,51}, {19,67}, {83,67}, {83,66}, {83,68}, {83,69},
+ {83,70}, {25,17}, {15,30}, {83,71}, {22,12}, {49,76}, {49,10}, {31,46},
+ {30,27}, {74,2}, {52,62}, {73,39}, {80,82}, {21,87}, {42,2}, {35,44},
+ {80,70}, {80,71}, {23,90}, {80,72}, {25,35}, {51,36}, {15,49}, {80,73},
+ {80,74}, {80,75}, {80,76}, {80,77}, {80,78}, {80,80}, {80,79}, {36,52},
+ {80,81}, {21,89}, {80,83}, {49,13}, {61,38}, {42,41}, {18,59}, {20,1},
+ {24,1}, {35,83}, {80,84}, {80,85}, {32,35}, {32,90}, {53,15}, {80,86},
+ {80,87}, {32,9}, {37,23}, {29,58}, {80,88}, {19,46}, {80,89}, {76,17},
+ {76,16}, {42,63}, {49,61}, {42,32}, {52,55}, {39,65}, {31,62}, {27,0},
+ {74,32}, {47,3}, {53,65}, {21,38}, {23,55}, {74,31}, {23,45}, {74,30},
+ {18,5}, {24,40}, {53,10}, {22,83}, {22,41}, {27,70}, {22,29}, {74,37},
+ {74,38}, {15,24}, {30,46}, {74,36}, {50,92}, {74,39}, {74,40}, {22,45},
+ {74,33}, {74,35}, {40,85}, {53,54}, {52,44}, {47,17}, {74,46}, {45,23},
+ {74,47}, {20,7}, {16,18}, {74,49}, {43,4}, {36,53}, {74,50}, {74,48},
+ {36,62}, {74,45}, {41,3}, {74,52}, {15,90}, {25,89}, {55,22}, {80,66},
+ {74,41}, {74,42}, {74,43}, {74,44}, {74,53}, {69,31}, {74,56}, {30,71},
+ {49,39}, {74,54}, {74,59}, {23,75}, {74,55}, {28,25}, {47,55}, {15,22},
+ {74,60}, {35,59}, {53,11}, {19,63}, {33,85}, {27,24}, {74,57}, {74,58},
+ {51,63}, {37,73}, {35,51}, {74,62}, {36,6}, {56,84}, {17,16}, {74,67},
+ {28,36}, {74,65}, {74,66}, {23,11}, {44,48}, {74,68}, {74,64}, {32,18},
+ {37,1}, {43,82}, {74,69}, {31,15}, {49,23}, {74,70}, {23,14}, {23,12},
+ {74,71}, {38,26}, {44,82}, {74,73}, {74,74}, {74,76}, {47,39}, {74,81},
+ {74,77}, {74,80}, {39,88}, {48,91}, {74,75}, {74,72}, {23,24}, {46,56},
+ {35,68}, {74,78}, {74,79}, {43,57}, {44,39}, {15,81}, {74,85}, {74,84},
+ {17,17}, {23,63}, {74,86}, {16,75}, {43,36}, {35,3}, {46,4}, {74,88},
+ {75,1}, {36,81}, {74,89}, {40,36}, {65,62}, {74,93}, {44,45}, {75,0},
+ {16,58}, {50,22}, {49,59}, {74,92}, {74,90}, {18,27}, {73,15}, {54,51},
+ {83,10}, {18,83}, {53,32}, {53,33}, {52,72}, {29,41}, {83,6}, {49,7},
+ {83,7}, {83,8}, {83,9}, {29,42}, {50,62}, {40,63}, {40,64}, {82,33},
+ {41,69}, {43,81}, {65,21}, {42,19}, {45,71}, {53,58}, {83,12}, {83,13},
+ {83,14}, {83,17}, {25,28}, {83,18}, {15,66}, {83,15}, {83,16}, {28,1},
+ {17,52}, {83,21}, {83,22}, {21,69}, {17,15}, {46,46}, {83,19}, {19,11},
+ {83,20}, {83,23}, {83,24}, {44,6}, {83,25}, {83,26}, {83,27}, {42,49},
+ {83,28}, {83,29}, {83,30}, {83,61}, {32,27}, {27,71}, {40,10}, {48,61},
+ {68,84}, {59,18}, {49,52}, {59,19}, {15,11}, {59,20}, {28,57}, {59,24},
+ {55,33}, {59,22}, {50,82}, {40,53}, {59,25}, {59,21}, {59,26}, {34,1},
+ {59,27}, {59,36}, {59,28}, {45,62}, {53,4}, {59,46}, {59,44}, {59,49},
+ {28,69}, {33,10}, {59,23}, {59,42}, {59,45}, {59,29}, {22,49}, {15,36},
+ {59,38}, {47,29}, {59,32}, {26,7}, {22,27}, {59,43}, {59,37}, {59,30},
+ {38,58}, {48,30}, {59,31}, {59,41}, {59,47}, {45,12}, {59,33}, {59,34},
+ {59,39}, {59,40}, {17,51}, {59,48}, {42,52}, {51,22}, {59,58}, {59,62},
+ {43,5}, {59,69}, {34,70}, {59,59}, {30,32}, {59,56}, {15,89}, {24,21},
+ {59,68}, {59,50}, {59,35}, {59,53}, {39,83}, {30,63}, {40,26}, {16,28},
+ {50,1}, {59,57}, {59,52}, {37,26}, {59,61}, {54,33}, {34,14}, {22,21},
+ {38,48}, {34,8}, {59,65}, {59,55}, {59,74}, {59,51}, {59,60}, {29,4},
+ {59,54}, {59,63}, {59,66}, {59,67}, {59,87}, {59,64}, {60,1}, {59,70},
+ {27,74}, {19,35}, {34,2}, {17,70}, {59,89}, {59,81}, {59,78}, {59,91},
+ {59,77}, {49,79}, {17,71}, {39,54}, {39,66}, {59,90}, {59,76}, {59,86},
+ {59,84}, {29,2}, {59,83}, {17,60}, {59,82}, {27,85}, {59,71}, {26,35},
+ {31,82}, {27,51}, {59,72}, {59,73}, {59,80}, {59,85}, {59,88}, {20,19},
+ {39,56}, {26,70}, {59,93}, {59,92}, {50,10}, {60,0}, {60,2}, {60,4},
+ {49,80}, {60,3}, {60,5}, {60,6}, {49,8}, {25,40}, {60,8}, {60,21},
+ {60,16}, {60,19}, {60,15}, {37,45}, {31,81}, {40,14}, {59,75}, {60,13},
+ {60,22}, {59,79}, {60,14}, {60,23}, {60,11}, {60,24}, {60,18}, {60,12},
+ {35,9}, {60,7}, {31,18}, {32,10}, {60,9}, {60,10}, {60,17}, {26,80},
+ {60,20}, {50,7}, {60,25}, {60,26}, {34,6}, {60,49}, {60,27}, {60,48},
+ {24,28}, {29,52}, {29,89}, {25,41}, {60,41}, {60,36}, {60,30}, {17,42},
+ {60,34}, {60,42}, {17,3}, {60,52}, {60,29}, {37,47}, {60,47}, {60,51},
+ {32,65}, {22,37}, {60,45}, {60,46}, {60,35}, {60,28}, {60,44}, {43,48},
+ {60,40}, {60,33}, {34,39}, {37,27}, {45,13}, {60,43}, {60,39}, {60,32},
+ {60,37}, {33,59}, {50,8}, {50,9}, {60,50}, {46,83}, {39,87}, {60,69},
+ {60,38}, {60,63}, {33,67}, {60,64}, {60,54}, {53,87}, {60,56}, {60,55},
+ {23,79}, {60,53}, {37,46}, {21,12}, {60,65}, {25,88}, {51,64}, {60,70},
+ {19,47}, {60,57}, {30,90}, {60,66}, {60,62}, {60,60}, {20,56}, {60,58},
+ {60,59}, {60,61}, {28,14}, {60,67}, {60,68}, {60,84}, {34,40}, {42,65},
+ {60,81}, {55,64}, {37,48}, {60,83}, {52,83}, {60,82}, {60,79}, {60,75},
+ {60,78}, {60,71}, {47,77}, {39,55}, {60,77}, {60,72}, {60,73}, {42,81},
+ {60,76}, {16,44}, {31,21}, {27,26}, {60,80}, {60,86}, {60,85}, {60,74},
+ {36,77}, {60,90}, {61,3}, {61,2}, {60,87}, {34,78}, {33,90}, {52,64},
+ {45,20}, {60,92}, {17,43}, {35,71}, {41,62}, {38,29}, {60,89}, {60,91},
+ {60,93}, {61,1}, {15,9}, {16,45}, {61,11}, {61,5}, {28,21}, {39,78},
+ {61,0}, {61,4}, {61,8}, {61,7}, {61,6}, {61,12}, {51,43}, {61,18},
+ {61,9}, {61,13}, {31,56}, {16,0}, {61,21}, {61,16}, {61,17}, {48,5},
+ {61,20}, {61,14}, {61,15}, {47,28}, {61,19}, {41,76}, {61,24}, {61,23},
+ {61,22}, {61,26}, {28,68}, {17,55}, {34,73}, {61,25}, {36,25}, {61,27},
+ {43,56}, {22,9}, {51,68}, {61,28}, {61,30}, {35,1}, {61,32}, {61,29},
+ {61,31}, {52,25}, {61,33}, {81,13}, {26,1}, {33,17}, {36,15}, {33,38},
+ {81,14}, {47,72}, {50,60}, {74,28}, {18,69}, {81,15}, {81,16}, {41,12},
+ {25,70}, {81,18}, {81,20}, {81,19}, {42,67}, {46,25}, {81,17}, {41,19},
+ {49,46}, {33,75}, {45,34}, {81,23}, {15,85}, {81,22}, {81,29}, {17,46},
+ {48,32}, {81,25}, {81,27}, {51,72}, {81,26}, {81,21}, {81,30}, {81,28},
+ {81,24}, {81,38}, {81,35}, {81,37}, {81,41}, {81,33}, {81,31}, {81,36},
+ {53,90}, {81,32}, {38,88}, {40,62}, {81,39}, {24,37}, {20,15}, {81,34},
+ {81,40}, {81,47}, {81,53}, {26,54}, {81,52}, {44,59}, {53,74}, {81,49},
+ {81,51}, {23,81}, {81,42}, {81,45}, {33,88}, {52,60}, {81,43}, {81,44},
+ {81,46}, {81,50}, {81,56}, {50,27}, {21,73}, {41,80}, {22,67}, {81,54},
+ {81,55}, {81,57}, {81,60}, {81,58}, {81,59}, {48,48}, {81,48}, {44,40},
+ {45,46}, {53,8}, {81,66}, {34,58}, {81,63}, {31,14}, {81,75}, {81,61},
+ {81,64}, {81,71}, {81,65}, {81,70}, {81,69}, {81,72}, {81,62}, {81,67},
+ {81,73}, {50,11}, {81,68}, {17,84}, {81,81}, {47,10}, {81,84}, {26,39},
+ {81,88}, {81,79}, {81,85}, {81,87}, {81,89}, {81,82}, {81,80}, {25,90},
+ {20,90}, {81,78}, {81,86}, {81,76}, {81,77}, {81,74}, {82,5}, {82,2},
+ {82,1}, {81,83}, {39,57}, {81,90}, {82,4}, {34,87}, {81,92}, {82,6},
+ {82,8}, {82,3}, {81,91}, {82,10}, {82,9}, {33,60}, {82,13}, {82,15},
+ {82,0}, {82,16}, {82,11}, {82,14}, {81,93}, {82,12}, {82,17}, {82,19},
+ {82,7}, {82,18}, {82,20}, {47,22}, {82,23}, {56,88}, {82,24}, {82,22},
+ {39,67}, {82,21}, {82,25}, {82,26}, {19,31}, {77,34}, {82,27}, {82,28},
+ {48,9}, {83,11}, {47,37}, {47,47}, {48,59}, {46,45}, {28,53}, {48,34},
+ {25,65}, {64,72}, {49,33}, {80,33}, {17,24}, {16,76}, {80,34}, {40,31},
+ {18,35}, {56,81}, {42,4}, {80,35}, {53,51}, {80,36}, {83,31}, {80,37},
+ {51,11}, {80,38}, {15,31}, {83,32}, {83,33}, {19,91}, {36,58}, {43,26},
+ {47,67}, {44,63}, {80,39}, {56,82}, {16,26}, {46,13}, {23,3}, {80,41},
+ {80,42}, {17,34}, {32,48}, {54,15}, {80,40}, {80,43}, {80,45}, {56,85},
+ {49,64}, {51,2}, {83,34}, {39,24}, {83,35}, {80,44}, {80,46}, {30,66},
+ {80,47}, {80,51}, {80,53}, {80,48}, {40,48}, {36,64}, {33,66}, {24,91},
+ {80,50}, {80,52}, {24,50}, {80,58}, {25,53}, {15,92}, {80,56}, {80,55},
+ {80,49}, {80,57}, {80,54}, {39,75}, {44,41}, {80,60}, {68,28}, {80,59},
+ {80,61}, {80,62}, {46,68}, {83,36}, {28,82}, {80,63}, {80,64}, {45,86},
+ {49,9}, {80,90}, {23,17}, {27,90}, {24,58}, {24,69}, {34,56}, {41,50},
+ {73,71}, {31,31}, {29,84}, {73,72}, {73,73}, {73,74}, {73,75}, {73,76},
+ {73,77}, {73,78}, {28,38}, {84,90}, {84,92}, {84,93}, {84,91}, {28,65},
+ {85,0}, {19,4}, {85,1}, {85,2}, {75,17}, {48,51}, {56,73}, {85,3},
+ {77,25}, {52,17}, {50,93}, {43,59}, {41,35}, {68,31}, {85,4}, {29,14},
+ {37,8}, {57,4}, {27,37}, {21,8}, {23,27}, {39,46}, {27,4}, {57,5},
+ {57,6}, {43,53}, {39,34}, {57,7}, {37,92}, {48,20}, {49,72}, {48,21},
+ {27,38}, {28,17}, {26,67}, {57,8}, {57,9}, {48,39}, {57,10}, {47,76},
+ {21,78}, {33,58}, {42,46}, {22,76}, {40,71}, {22,34}, {29,86}, {53,3},
+ {57,11}, {57,12}, {37,31}, {54,70}, {41,21}, {52,8}, {42,62}, {52,78},
+ {57,13}, {53,62}, {19,41}, {57,15}, {57,14}, {49,74}, {57,16}, {57,17},
+ {57,18}, {41,51}, {57,19}, {41,10}, {57,20}, {57,21}, {18,46}, {53,78},
+ {57,22}, {26,15}, {20,13}, {57,23}, {57,24}, {24,77}, {48,14}, {49,71},
+ {57,25}, {23,34}, {46,73}, {17,78}, {57,26}, {57,27}, {28,74}, {45,59},
+ {50,78}, {57,28}, {45,82}, {57,29}, {50,52}, {26,68}, {57,30}, {42,20},
+ {42,47}, {57,31}, {38,74}, {53,77}, {57,32}, {36,20}, {21,32}, {57,33},
+ {22,43}, {30,45}, {57,34}, {57,35}, {42,12}, {57,36}, {20,86}, {57,37},
+ {32,33}, {54,26}, {57,38}, {43,23}, {49,73}, {35,16}, {57,39}, {20,92},
+ {26,48}, {57,40}, {47,18}, {57,41}, {57,42}, {45,28}, {57,43}, {57,44},
+ {57,45}, {17,86}, {57,48}, {57,46}, {48,71}, {57,47}, {34,52}, {57,49},
+ {57,50}, {57,51}, {57,52}, {47,26}, {49,4}, {15,88}, {57,53}, {38,10},
+ {57,54}, {28,86}, {34,0}, {57,55}, {57,56}, {34,92}, {43,22}, {57,57},
+ {57,58}, {31,29}, {37,54}, {57,59}, {57,60}, {38,19}, {57,61}, {57,62},
+ {24,39}, {26,76}, {21,24}, {83,87}, {83,88}, {44,66}, {84,24}, {74,63},
+ {46,82}, {26,30}, {25,31}, {51,4}, {64,56}, {84,83}, {16,9}, {17,81},
+ {84,84}, {84,86}, {25,48}, {84,85}, {34,17}, {84,88}, {84,87}, {16,19},
+ {52,73}, {23,25}, {24,16}, {17,37}, {51,79}, {46,44}, {15,59}, {52,42},
+ {26,84}, {53,41}, {22,22}, {43,15}, {37,21}, {16,64}, {24,25}, {53,91},
+ {24,64}, {22,0}, {27,89}, {73,57}, {73,58}, {43,88}, {24,82}, {73,59},
+ {19,90}, {34,18}, {22,48}, {25,55}, {73,60}, {51,83}, {73,61}, {27,53},
+ {26,62}, {73,62}, {32,61}, {33,23}, {51,62}, {54,41}, {73,63}, {73,64},
+ {73,67}, {73,65}, {73,66}, {40,61}, {23,18}, {21,35}, {73,68}, {41,73},
+ {40,44}, {19,44}, {65,56}, {36,65}, {73,69}, {31,20}, {54,23}, {73,70},
+ {54,11}, {39,91}, {55,50}, {55,44}, {51,61}, {51,88}, {40,35}, {50,13},
+ {23,50}, {18,63}, {40,65}, {83,85}, {25,52}, {83,86}, {54,62}, {83,80},
+ {23,15}, {52,51}, {23,46}, {37,79}, {18,34}, {83,81}, {18,11}, {51,28},
+ {38,86}, {83,83}, {83,82}, {43,42}, {39,3}, {83,84}, {54,66}, {36,30},
+ {84,31}, {84,26}, {84,34}, {84,33}, {53,25}, {84,32}, {51,29}, {84,35},
+ {84,43}, {15,46}, {20,87}, {84,40}, {84,41}, {36,59}, {84,36}, {84,37},
+ {84,38}, {84,42}, {29,63}, {84,39}, {23,89}, {84,47}, {84,50}, {30,70},
+ {24,81}, {84,27}, {84,44}, {33,22}, {43,87}, {27,88}, {84,45}, {84,46},
+ {84,48}, {21,68}, {84,49}, {84,52}, {84,28}, {84,51}, {50,26}, {18,75},
+ {43,3}, {84,53}, {84,54}, {29,64}, {84,55}, {43,62}, {84,58}, {17,39},
+ {54,56}, {84,56}, {84,57}, {84,59}, {84,65}, {84,63}, {84,62}, {84,60},
+ {84,64}, {84,61}, {84,67}, {84,68}, {43,66}, {68,30}, {20,23}, {84,66},
+ {84,71}, {43,2}, {84,69}, {84,70}, {84,29}, {16,35}, {84,30}, {20,36},
+ {17,67}, {84,75}, {84,72}, {21,54}, {84,76}, {84,73}, {84,74}, {19,57},
+ {51,73}, {84,77}, {18,88}, {84,78}, {84,80}, {84,79}, {84,81}, {84,82},
+ {40,76}, {24,9}, {38,90}, {21,66}, {43,40}, {73,5}, {18,20}, {51,93},
+ {24,75}, {47,88}, {72,76}, {54,9}, {72,77}, {33,53}, {39,76}, {25,67},
+ {72,78}, {72,79}, {72,80}, {53,64}, {72,81}, {72,82}, {72,84}, {72,83},
+ {72,85}, {72,86}, {38,64}, {72,87}, {51,55}, {72,88}, {28,45}, {72,89},
+ {72,90}, {28,46}, {72,91}, {23,7}, {32,29}, {72,92}, {16,17}, {26,51},
+ {24,84}, {72,93}, {73,0}, {73,1}, {73,2}, {22,87}, {27,12}, {41,67},
+ {63,45}, {51,14}, {46,28}, {52,22}, {73,3}, {52,61}, {73,4}, {47,32},
+ {24,27}, {19,38}, {16,56}, {31,16}, {16,69}, {16,70}, {16,71}, {18,28},
+ {39,71}, {68,32}, {16,62}, {32,40}, {19,78}, {38,7}, {50,55}, {37,88},
+ {48,23}, {24,92}, {33,84}, {50,12}, {51,42}, {28,91}, {68,33}, {22,20},
+ {68,34}, {26,24}, {52,65}, {28,87}, {51,21}, {45,4}, {32,11}, {18,56},
+ {43,85}, {68,37}, {68,35}, {68,39}, {68,41}, {68,38}, {20,46}, {37,39},
+ {20,91}, {68,36}, {41,85}, {68,40}, {34,51}, {16,36}, {27,2}, {54,22},
+ {44,42}, {42,44}, {41,41}, {43,50}, {68,43}, {68,42}, {35,69}, {48,0},
+ {48,22}, {68,44}, {68,47}, {44,23}, {53,79}, {68,46}, {20,60}, {44,29},
+ {68,48}, {21,25}, {44,7}, {24,67}, {41,36}, {18,48}, {42,56}, {51,75},
+ {68,49}, {22,73}, {68,45}, {68,52}, {19,93}, {68,53}, {68,50}, {68,51},
+ {49,60}, {33,62}, {16,37}, {50,65}, {21,60}, {42,75}, {68,54}, {50,85},
+ {16,72}, {21,83}, {68,57}, {68,55}, {68,56}, {20,31}, {49,36}, {68,59},
+ {68,61}, {68,60}, {38,17}, {49,2}, {68,58}, {51,65}, {52,57}, {68,63},
+ {54,80}, {68,64}, {16,59}, {48,90}, {68,65}, {68,67}, {68,66}, {68,68},
+ {49,55}, {20,42}, {70,62}, {57,84}, {57,87}, {57,85}, {57,86}, {57,89},
+ {47,46}, {35,38}, {15,77}, {47,15}, {57,88}, {50,41}, {25,9}, {58,1},
+ {38,80}, {57,91}, {57,90}, {40,58}, {57,92}, {58,0}, {54,61}, {57,93},
+ {32,57}, {58,4}, {50,83}, {58,6}, {58,3}, {58,7}, {28,27}, {31,40},
+ {58,2}, {58,5}, {53,2}, {58,8}, {58,12}, {58,13}, {58,11}, {25,33},
+ {30,3}, {58,10}, {58,9}, {51,38}, {17,30}, {58,14}, {24,88}, {58,15},
+ {18,26}, {20,5}, {21,27}, {58,16}, {21,84}, {58,17}, {16,40}, {58,19},
+ {58,18}, {58,20}, {58,22}, {58,21}, {58,23}, {58,24}, {58,25}, {50,46},
+ {83,89}, {38,84}, {54,34}, {36,67}, {83,91}, {83,92}, {83,90}, {29,37},
+ {47,78}, {22,50}, {51,44}, {43,9}, {84,1}, {84,0}, {25,7}, {83,93},
+ {42,53}, {84,3}, {31,49}, {18,73}, {44,9}, {84,4}, {84,2}, {28,19},
+ {84,7}, {84,8}, {28,44}, {34,23}, {30,64}, {42,64}, {84,9}, {84,5},
+ {84,6}, {35,79}, {84,11}, {19,27}, {54,76}, {19,54}, {84,10}, {84,13},
+ {84,12}, {84,14}, {47,48}, {34,48}, {39,8}, {84,15}, {84,16}, {84,17},
+ {84,18}, {84,19}, {84,20}, {84,22}, {84,21}, {84,23}, {17,40}, {50,51},
+ {41,44}, {31,78}, {53,55}, {49,15}, {32,30}, {28,79}, {23,9}, {27,87},
+ {85,37}, {85,38}, {85,39}, {85,40}, {85,41}, {85,43}, {85,42}, {86,72},
+ {85,44}, {85,45}, {77,35}, {77,36}, {77,37}, {52,74}, {21,3}, {77,39},
+ {77,38}, {77,40}, {77,41}, {38,4}, {77,42}, {77,43}, {22,15}, {20,85},
+ {77,44}, {77,46}, {77,45}, {23,37}, {77,47}, {77,48}, {77,49}, {21,58},
+ {18,13}, {53,50}, {35,37}, {16,20}, {23,53}, {77,50}, {77,51}, {51,30},
+ {38,52}, {29,90}, {45,56}, {24,18}, {77,53}, {77,52}, {77,55}, {77,54},
+ {36,4}, {77,56}, {77,57}, {38,13}, {77,58}, {38,14}, {77,59}, {17,6},
+ {77,60}, {77,61}, {77,62}, {77,63}, {77,64}, {54,73}, {77,65}, {77,66},
+ {27,55}, {77,67}, {50,42}, {43,89}, {17,11}, {32,68}, {77,68}, {38,5},
+ {34,12}, {77,69}, {77,70}, {77,71}, {77,72}, {77,73}, {77,74}, {77,75},
+ {77,76}, {77,77}, {77,78}, {77,79}, {77,80}, {77,81}, {77,83}, {77,82},
+ {77,84}, {44,12}, {33,32}, {77,85}, {77,86}, {77,87}, {52,0}, {77,88},
+ {46,18}, {77,89}, {77,90}, {77,91}, {77,92}, {78,0}, {77,93}, {78,1},
+ {23,84}, {34,89}, {78,2}, {78,3}, {28,33}, {49,30}, {17,88}, {78,4},
+ {78,5}, {78,6}, {49,87}, {78,7}, {53,92}, {78,8}, {37,43}, {78,9},
+ {78,10}, {32,19}, {78,11}, {46,89}, {42,87}, {78,13}, {78,12}, {18,89},
+ {24,87}, {78,14}, {78,15}, {47,65}, {78,16}, {78,17}, {22,69}, {47,30},
+ {78,18}, {78,19}, {78,20}, {39,80}, {43,63}, {78,21}, {78,22}, {78,23},
+ {78,24}, {78,25}, {52,63}, {78,26}, {19,76}, {34,9}, {78,27}, {78,28},
+ {78,29}, {78,30}, {45,92}, {78,31}, {33,63}, {19,23}, {54,21}, {28,84},
+ {46,38}, {78,34}, {78,32}, {78,33}, {78,35}, {21,6}, {27,91}, {29,65},
+ {34,43}, {78,36}, {78,37}, {78,38}, {78,46}, {78,39}, {78,40}, {78,41},
+ {38,33}, {78,80}, {21,44}, {78,42}, {78,43}, {78,44}, {21,37}, {34,29},
+ {78,45}, {78,47}, {78,48}, {78,49}, {52,81}, {78,50}, {35,86}, {78,51},
+ {35,87}, {78,52}, {78,53}, {23,67}, {15,86}, {78,54}, {78,55}, {78,56},
+ {78,57}, {78,58}, {78,59}, {78,60}, {78,61}, {29,20}, {78,64}, {78,62},
+ {78,63}, {78,65}, {78,66}, {32,44}, {78,67}, {78,68}, {78,69}, {78,70},
+ {78,71}, {78,72}, {78,73}, {78,74}, {78,75}, {31,55}, {78,76}, {32,12},
+ {78,77}, {78,78}, {78,79}, {46,65}, {18,3}, {34,36}, {66,36}, {40,32},
+ {66,37}, {16,52}, {45,41}, {19,18}, {39,81}, {66,38}, {46,47}, {66,39},
+ {27,67}, {66,40}, {66,41}, {34,37}, {52,1}, {35,53}, {24,74}, {45,36},
+ {66,42}, {34,85}, {66,43}, {22,6}, {23,82}, {25,49}, {66,44}, {66,45},
+ {51,35}, {66,46}, {66,47}, {48,42}, {66,48}, {66,49}, {66,50}, {66,51},
+ {48,53}, {66,52}, {17,90}, {31,26}, {66,53}, {31,10}, {66,54}, {66,55},
+ {66,56}, {66,57}, {66,58}, {23,22}, {57,65}, {21,50}, {57,67}, {57,66},
+ {57,69}, {39,77}, {57,68}, {22,31}, {48,83}, {49,84}, {52,82}, {28,54},
+ {54,71}, {57,71}, {57,70}, {15,1}, {44,50}, {57,72}, {23,28}, {27,41},
+ {33,28}, {33,3}, {18,33}, {57,73}, {33,9}, {35,15}, {28,20}, {46,61},
+ {57,74}, {40,33}, {16,60}, {57,75}, {21,23}, {51,25}, {18,92}, {57,76},
+ {51,40}, {46,52}, {36,66}, {57,77}, {57,78}, {57,79}, {32,73}, {43,52},
+ {46,60}, {50,70}, {33,0}, {57,80}, {42,68}, {57,81}, {42,69}, {49,93},
+ {23,83}, {57,82}, {15,14}, {46,21}, {52,46}, {42,76}, {57,83}, {66,35},
+ {32,4}, {85,30}, {85,31}, {85,32}, {35,48}, {39,23}, {48,66}, {47,58},
+ {48,36}, {27,14}, {24,44}, {78,83}, {19,37}, {50,25}, {85,33}, {18,90},
+ {85,34}, {20,80}, {85,36}, {50,73}, {85,6}, {48,8}, {85,8}, {85,7},
+ {32,66}, {31,54}, {16,1}, {45,76}, {47,71}, {85,10}, {46,85}, {85,9},
+ {52,79}, {85,11}, {34,24}, {26,83}, {85,13}, {85,12}, {35,61}, {32,55},
+ {42,9}, {46,27}, {85,14}, {85,15}, {85,16}, {33,21}, {15,51}, {36,88},
+ {85,17}, {38,63}, {85,5}, {29,23}, {29,17}, {20,68}, {22,38}, {30,30},
+ {34,49}, {34,69}, {55,43}, {23,78}, {28,88}, {48,4}, {15,47}, {86,15},
+ {86,16}, {47,11}, {15,15}, {86,17}, {86,18}, {86,19}, {38,41}, {29,46},
+ {86,22}, {86,21}, {16,61}, {86,20}, {86,23}, {86,24}, {45,3}, {39,44},
+ {25,10}, {71,23}, {71,24}, {71,25}, {29,33}, {49,83}, {51,46}, {40,55},
+ {49,18}, {21,4}, {38,73}, {80,91}, {46,77}, {42,18}, {47,74}, {70,78},
+ {44,70}, {24,42}, {21,56}, {80,92}, {15,67}, {42,43}, {80,93}, {51,3},
+ {33,12}, {32,75}, {37,35}, {29,16}, {81,0}, {27,52}, {81,1}, {81,2},
+ {81,3}, {49,34}, {37,20}, {44,38}, {81,4}, {50,16}, {30,36}, {43,65},
+ {81,5}, {81,6}, {48,52}, {21,77}, {81,7}, {81,8}, {20,62}, {81,9},
+ {81,10}, {17,91}, {81,11}, {81,12}, {39,6}, {22,70}, {75,8}, {75,9},
+ {75,10}, {75,11}, {37,13}, {75,12}, {75,13}, {22,40}, {41,18}, {65,23},
+ {86,46}, {86,47}, {17,44}, {86,48}, {86,50}, {86,49}, {65,26}, {27,1},
+ {65,27}, {65,28}, {65,29}, {65,30}, {65,31}, {65,32}, {22,24}, {49,90},
+ {28,3}, {41,45}, {16,4}, {42,38}, {65,33}, {21,91}, {39,35}, {65,34},
+ {28,39}, {16,92}, {65,35}, {21,85}, {65,36}, {35,56}, {65,37}, {46,57},
+ {24,60}, {65,38}, {31,0}, {65,39}, {17,85}, {65,40}, {32,82}, {65,41},
+ {65,42}, {33,87}, {65,43}, {65,44}, {65,45}, {41,54}, {55,23}, {56,68},
+ {46,66}, {79,4}, {59,15}, {33,76}, {51,5}, {44,51}, {48,16}, {18,58},
+ {38,92}, {17,20}, {33,30}, {69,63}, {41,26}, {69,64}, {69,65}, {29,51},
+ {69,66}, {54,3}, {44,52}, {69,68}, {27,60}, {69,67}, {69,69}, {69,70},
+ {33,77}, {28,29}, {69,71}, {33,69}, {25,6}, {69,72}, {69,73}, {18,49},
+ {48,72}, {30,4}, {69,74}, {37,78}, {69,75}, {69,76}, {69,77}, {37,12},
+ {69,78}, {40,6}, {69,79}, {69,80}, {69,81}, {68,24}, {69,82}, {69,83},
+ {33,65}, {69,84}, {69,85}, {53,71}, {69,86}, {69,87}, {24,38}, {86,26},
+ {86,25}, {86,29}, {86,27}, {25,0}, {86,30}, {86,31}, {86,33}, {86,32},
+ {86,35}, {86,34}, {86,36}, {86,37}, {86,38}, {42,71}, {23,62}, {86,51},
+ {86,52}, {86,53}, {86,55}, {86,57}, {86,54}, {86,58}, {86,56}, {54,54},
+ {86,59}, {86,60}, {86,61}, {86,62}, {86,63}, {58,42}, {55,9}, {68,86},
+ {24,76}, {30,92}, {26,73}, {86,40}, {37,38}, {86,39}, {86,41}, {86,43},
+ {86,42}, {86,44}, {45,25}, {86,45}, {35,6}, {50,66}, {85,46}, {33,18},
+ {85,47}, {85,48}, {85,49}, {85,50}, {85,51}, {85,53}, {16,10}, {85,54},
+ {85,55}, {85,56}, {85,57}, {85,58}, {85,59}, {85,60}, {85,61}, {46,41},
+ {85,62}, {85,63}, {85,64}, {85,65}, {85,66}, {85,67}, {31,79}, {85,68},
+ {85,69}, {85,70}, {85,71}, {85,72}, {85,73}, {85,74}, {85,75}, {85,76},
+ {85,77}, {85,78}, {85,79}, {85,80}, {85,81}, {85,82}, {85,83}, {29,7},
+ {85,84}, {85,85}, {85,86}, {85,87}, {39,89}, {85,88}, {85,89}, {85,90},
+ {85,91}, {85,92}, {85,93}, {86,0}, {86,1}, {86,2}, {86,3}, {86,4},
+ {86,5}, {86,6}, {86,7}, {16,77}, {86,8}, {86,9}, {86,10}, {86,11},
+ {86,12}, {32,58}, {86,13}, {86,14}, {35,80}, {79,14}, {27,5}, {79,15},
+ {34,88}, {36,23}, {48,26}, {79,16}, {79,17}, {79,18}, {79,19}, {79,20},
+ {48,27}, {48,75}, {79,22}, {79,21}, {51,6}, {44,49}, {79,23}, {79,25},
+ {79,24}, {79,26}, {79,27}, {23,74}, {79,28}, {25,71}, {79,29}, {79,30},
+ {29,72}, {79,31}, {21,75}, {79,32}, {79,33}, {79,34}, {79,35}, {39,20},
+ {79,36}, {79,37}, {79,38}, {36,83}, {79,39}, {79,40}, {79,41}, {86,28},
+ {79,42}, {79,43}, {79,44}, {79,45}, {79,46}, {25,54}, {79,47}, {79,48},
+ {79,49}, {79,50}, {79,51}, {79,52}, {79,53}, {79,55}, {50,4}, {79,54},
+ {79,56}, {84,25}, {33,24}, {86,67}, {86,68}, {86,69}, {86,70}, {86,71},
+ {33,19}, {86,73}, {86,74}, {33,82}, {83,79}, {83,78}, {33,72}, {86,64},
+ {86,65}, {26,37}, {56,67}, {41,81}, {31,71}, {79,3}, {25,57}, {38,12},
+ {35,11}, {86,75}, {86,76}, {86,77}, {86,79}, {86,78}, {86,80}, {86,83},
+ {86,82}, {86,81}, {86,84}, {86,85}, {76,72}, {76,73}, {76,74}, {85,27},
+ {85,28}, {85,29}, {21,5}, {55,29}, {24,35}, {55,26}, {59,16}, {41,82},
+ {86,86}, {86,87}, {86,88}, {86,90}, {86,89}, {16,38}, {86,91}, {86,92},
+ {86,93}, {37,74}, {75,19}, {18,60}, {85,18}, {85,19}, {32,67}, {85,20},
+ {85,21}, {85,22}, {85,23}, {85,24}, {85,25}, {39,2}, {85,26}, {32,89},
+ {24,7}, {76,71}, {24,73}, {56,62}, {2,0}, {2,1}, {2,2}, {0,70}, {2,4},
+ {2,5}, {2,6}, {2,7}, {2,8}, {2,9}, {2,10}, {2,11}, {2,12}, {2,13},
+ {2,14}, {2,15}, {2,16}, {2,17}, {2,18}, {2,19}, {2,20}, {2,21}, {2,22},
+ {2,23}, {2,24}, {2,25}, {2,26}, {2,27}, {2,28}, {2,29}, {2,30}, {2,31},
+ {2,32}, {2,33}, {2,34}, {2,35}, {2,36}, {2,37}, {2,38}, {2,39}, {2,40},
+ {2,41}, {2,42}, {2,43}, {2,44}, {2,45}, {2,46}, {2,47}, {2,48}, {2,49},
+ {2,50}, {2,51}, {2,52}, {2,53}, {2,54}, {2,55}, {2,56}, {2,57}, {2,58},
+ {2,59}, {2,60}, {2,61}, {2,62}, {2,63}, {2,64}, {2,65}, {2,66}, {2,67},
+ {2,68}, {2,69}, {2,70}, {2,71}, {2,72}, {2,73}, {2,74}, {2,75}, {2,76},
+ {2,77}, {2,78}, {2,79}, {2,80}, {2,81}, {2,82}, {2,83}, {2,84}, {2,85},
+ {2,86}, {2,87}, {2,88}, {2,89}, {2,90}, {2,91}, {2,92}, {0,10}, {0,72},
+ {0,73}, {2,93}, {2,3}
+};
+
+/* This returns ERROR if the code point doesn't exist. */
+long int gb2312_to_unicode(int r, int c)
+{
+ assert(r >= 0 && r < 94);
+ assert(c >= 0 && c < 94);
+ return gb2312_forward[r][c];
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_gb2312(long int unicode, int *r, int *c)
+{
+ int rr, cc;
+ long int uu;
+ int i, j, k;
+
+ i = -1;
+ j = lenof(gb2312_backward);
+ while (j - i > 1) {
+ k = (i + j) / 2;
+ rr = gb2312_backward[k].r;
+ cc = gb2312_backward[k].c;
+ uu = gb2312_forward[rr][cc];
+ if (unicode > uu)
+ i = k;
+ else if (unicode < uu)
+ j = k;
+ else {
+ *r = rr;
+ *c = cc;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+
+int main(void)
+{
+ int r, c, rr, cc, ret;
+ long int u, uu;
+
+ for (r = 0; r < 94; r++) {
+ for (c = 0; c < 94; c++) {
+ u = gb2312_to_unicode(r, c);
+ if (u != ERROR) {
+ ret = unicode_to_gb2312(u, &rr, &cc);
+ if (!ret)
+ printf("(%d,%d) -> U-%08lx but didn't convert back\n",
+ r, c, u);
+ else if (rr != r || cc != c)
+ printf("(%d,%d) -> U-%08lx -> (%d,%d)\n",
+ r, c, u, rr, cc);
+ }
+ }
+ }
+
+ for (u = 0; u < 0x10000L; u++) {
+ ret = unicode_to_gb2312(u, &r, &c);
+ if (ret) {
+ uu = gb2312_to_unicode(r, c);
+ if (uu == ERROR)
+ printf("U-%08lx -> (%d,%d) but didn't convert back\n",
+ u, r, c);
+ else if (uu != u)
+ printf("U-%08lx -> (%d,%d) -> U-%08lx\n", u, r, c, uu);
+ }
+ }
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/charset/hz.c b/app/tools/halibut/charset/hz.c
new file mode 100644
index 0000000..1266e7e
--- /dev/null
+++ b/app/tools/halibut/charset/hz.c
@@ -0,0 +1,142 @@
+/*
+ * hz.c - HZ textual encoding of ASCII and GB2312, as defined in RFC 1843.
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+static void read_hz(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ /*
+ * When reading, our state variables are:
+ *
+ * - s0 is 0 in ASCII mode, 1 in GB2312 mode.
+ *
+ * - s1 stores a character we have just seen but not fully
+ * processed. So in ASCII mode, this can only ever be zero
+ * (no character) or 0x7E (~); in GB2312 mode it can be
+ * anything from 0x21-0x7E.
+ */
+
+ UNUSEDARG(charset);
+
+ if (state->s0 == 0) {
+ /*
+ * ASCII mode.
+ */
+
+ if (state->s1) {
+ assert(state->s1 == '~');
+ state->s1 = 0;
+ /* Process the character after a tilde. */
+ switch (input_chr) {
+ case '~':
+ emit(emitctx, input_chr);
+ return;
+ case '\n':
+ return; /* ~\n is ignored */
+ case '{':
+ state->s0 = 1; /* switch to GB2312 mode */
+ return;
+ }
+ } else if (input_chr == '~') {
+ state->s1 = '~';
+ return;
+ } else {
+ /* In ASCII mode, any non-tildes go straight */
+ emit(emitctx, input_chr);
+ return;
+ }
+ } else {
+ /*
+ * GB2312 mode. As I understand it, we expect never to see
+ * anything in this mode that isn't 0x21-0x7E. So if we do,
+ * we'll simply throw an error and return to ASCII mode.
+ */
+ if (input_chr < 0x21 || input_chr > 0x7E) {
+ emit(emitctx, ERROR);
+ state->s0 = state->s1 = 0;
+ return;
+ }
+
+ /*
+ * So if we don't have a character stored already, store
+ * this one...
+ */
+ if (!state->s1) {
+ state->s1 = input_chr;
+ return;
+ }
+
+ /*
+ * ... otherwise, combine the stored char with this one.
+ * This will give either `~}', the escape sequence to
+ * return to ASCII mode, or something which we translate
+ * through GB2312.
+ */
+ if (state->s1 == '~' && input_chr == '}') {
+ state->s1 = state->s0 = 0;
+ return;
+ }
+
+ emit(emitctx, gb2312_to_unicode(state->s1 - 0x21, input_chr - 0x21));
+ state->s1 = 0;
+ }
+}
+
+static int write_hz(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ int desired_state, r, c;
+
+ UNUSEDARG(charset);
+
+ /*
+ * Analyse the input char.
+ */
+ if (input_chr < 0x80) {
+ desired_state = 0;
+ c = input_chr;
+ } else if (unicode_to_gb2312(input_chr, &r, &c)) {
+ desired_state = 1;
+ } else {
+ return FALSE;
+ }
+
+ if (state->s0 != (unsigned)desired_state) {
+ emit(emitctx, '~');
+ emit(emitctx, desired_state ? '{' : '}');
+ state->s0 = desired_state;
+ }
+
+ if (input_chr < 0)
+ return TRUE; /* special case: just reset state */
+
+ if (state->s0) {
+ /*
+ * GB mode.
+ */
+ emit(emitctx, 0x21 + r);
+ emit(emitctx, 0x21 + c);
+ } else {
+ emit(emitctx, c);
+ }
+ return TRUE;
+}
+
+const charset_spec charset_CS_HZ = {
+ CS_HZ, read_hz, write_hz, NULL
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_HZ)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/internal.h b/app/tools/halibut/charset/internal.h
new file mode 100644
index 0000000..5d215a5
--- /dev/null
+++ b/app/tools/halibut/charset/internal.h
@@ -0,0 +1,126 @@
+/*
+ * internal.h - internal header stuff for the charset library.
+ */
+
+#ifndef charset_internal_h
+#define charset_internal_h
+
+/* This invariably comes in handy */
+#define lenof(x) ( sizeof((x)) / sizeof(*(x)) )
+
+/* This is an invalid Unicode value used to indicate an error. */
+#define ERROR 0xFFFFL /* Unicode value representing error */
+
+#undef TRUE
+#define TRUE 1
+#undef FALSE
+#define FALSE 0
+
+typedef struct charset_spec charset_spec;
+typedef struct sbcs_data sbcs_data;
+
+struct charset_spec {
+ int charset; /* numeric identifier */
+
+ /*
+ * A function to read the character set and output Unicode
+ * characters. The `emit' function expects to get Unicode chars
+ * passed to it; it should be sent ERROR for any encoding error
+ * on the input.
+ */
+ void (*read)(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx);
+ /*
+ * A function to read Unicode characters and output in this
+ * character set. The `emit' function expects to get byte
+ * values passed to it.
+ *
+ * A non-representable input character should cause a FALSE
+ * return, _before_ `emit' is called. Successful conversion
+ * causes a TRUE return.
+ *
+ * If `input_chr' is -1, this function must revert the encoding
+ * state to any default required at the end of a piece of
+ * encoded text.
+ */
+ int (*write)(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx);
+ void const *data;
+};
+
+/*
+ * This is the format of `data' used by the SBCS read and write
+ * functions; so it's the format used in all SBCS definitions.
+ */
+struct sbcs_data {
+ /*
+ * This is a simple mapping table converting each SBCS position
+ * to a Unicode code point. Some positions may contain ERROR,
+ * indicating that that byte value is not defined in the SBCS
+ * in question and its occurrence in input is an error.
+ */
+ unsigned long sbcs2ucs[256];
+
+ /*
+ * This lookup table is used to convert Unicode back to the
+ * SBCS. It consists of the valid byte values in the SBCS,
+ * sorted in order of their Unicode translation. So given a
+ * Unicode value U, you can do a binary search on this table
+ * using the above table as a lookup: when testing the Xth
+ * position in this table, you branch according to whether
+ * sbcs2ucs[ucs2sbcs[X]] is less than, greater than, or equal
+ * to U.
+ *
+ * Note that since there may be fewer than 256 valid byte
+ * values in a particular SBCS, we must supply the length of
+ * this table as well as the contents.
+ */
+ unsigned char ucs2sbcs[256];
+ int nvalid;
+};
+
+/*
+ * Prototypes for internal library functions.
+ */
+charset_spec const *charset_find_spec(int charset);
+void read_sbcs(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx);
+int write_sbcs(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx);
+long int sbcs_to_unicode(const struct sbcs_data *sd, long int input_chr);
+long int sbcs_from_unicode(const struct sbcs_data *sd, long int input_chr);
+
+void read_utf8(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx);
+int write_utf8(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx);
+
+long int big5_to_unicode(int r, int c);
+int unicode_to_big5(long int unicode, int *r, int *c);
+long int cns11643_to_unicode(int p, int r, int c);
+int unicode_to_cns11643(long int unicode, int *p, int *r, int *c);
+long int cp949_to_unicode(int r, int c);
+int unicode_to_cp949(long int unicode, int *r, int *c);
+long int ksx1001_to_unicode(int r, int c);
+int unicode_to_ksx1001(long int unicode, int *r, int *c);
+long int gb2312_to_unicode(int r, int c);
+int unicode_to_gb2312(long int unicode, int *r, int *c);
+long int jisx0208_to_unicode(int r, int c);
+int unicode_to_jisx0208(long int unicode, int *r, int *c);
+long int jisx0212_to_unicode(int r, int c);
+int unicode_to_jisx0212(long int unicode, int *r, int *c);
+
+/*
+ * Placate compiler warning about unused parameters, of which we
+ * expect to have some in this library.
+ */
+#define UNUSEDARG(x) ( (x) = (x) )
+
+#endif /* charset_internal_h */
diff --git a/app/tools/halibut/charset/iso2022.c b/app/tools/halibut/charset/iso2022.c
new file mode 100644
index 0000000..8cf3c25
--- /dev/null
+++ b/app/tools/halibut/charset/iso2022.c
@@ -0,0 +1,1385 @@
+/*
+ * iso2022.c - support for ISO/IEC 2022 (alias ECMA-35).
+ *
+ * This isn't a complete implementation of ISO/IEC 2022, but it's
+ * close. It can decode 8-bit and 7-bit versions, with support for
+ * single-byte and multi-byte character sets, all four containers
+ * (G0, G1, G2, and G3), using both single-shift and locking-shift
+ * sequences.
+ *
+ * The general principle is that any valid ISO/IEC 2022 sequence
+ * should either be correctly decoded or should emit an ERROR. The
+ * only exception to this is that the C0 and C1 sets are fixed as
+ * those of ISO/IEC 6429. Escape sequences for designating control
+ * sets are passed through, so a post-processor could fix them up if
+ * necessary.
+ *
+ * DOCS to UTF-8 works. Other DOCS sequences are ignored, which will
+ * produce surprising results.
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include <assert.h>
+#include <string.h>
+
+#include "charset.h"
+#include "internal.h"
+#include "sbcsdat.h"
+
+#define LS1 (0x0E)
+#define LS0 (0x0F)
+#define ESC (0x1B)
+#define SS2 (0x8E)
+#define SS3 (0x8F)
+
+enum {S4, S6, M4, M6};
+
+static long int emacs_big5_1_to_unicode(int, int);
+static long int emacs_big5_2_to_unicode(int, int);
+static int unicode_to_emacs_big5(long int, int *, int *, int *);
+static long int cns11643_1_to_unicode(int, int);
+static long int cns11643_2_to_unicode(int, int);
+static long int cns11643_3_to_unicode(int, int);
+static long int cns11643_4_to_unicode(int, int);
+static long int cns11643_5_to_unicode(int, int);
+static long int cns11643_6_to_unicode(int, int);
+static long int cns11643_7_to_unicode(int, int);
+static long int null_dbcs_to_unicode(int, int);
+static int unicode_to_null_dbcs(long int, int *, int *);
+
+typedef int (*to_dbcs_t)(long int, int *, int *);
+typedef int (*to_dbcs_planar_t)(long int, int *, int *, int *);
+
+/*
+ * These macros cast between to_dbcs_planar_t and to_dbcs_t, in
+ * such a way as to cause a compile-time error if the input is not
+ * of the appropriate type.
+ *
+ * Defining these portably is quite fiddly. My first effort was as
+ * follows:
+ * #define DEPLANARISE(x) ( (x) == (to_dbcs_planar_t)NULL, (to_dbcs_t)(x) )
+ *
+ * so that the comparison on the left of the comma provokes the
+ * type check error, and the cast on the right is the actual
+ * desired result.
+ *
+ * gcc was entirely happy with this. However, when used in a static
+ * initialiser, MSVC objected - justifiably - that the first half
+ * of the comma expression wasn't constant and thus the expression
+ * as a whole was not a constant expression. We can get round this
+ * by enclosing the comparison in `sizeof', so that it isn't
+ * actually evaluated.
+ *
+ * But then we run into a second problem, which is that C actually
+ * disallows the use of the comma operator within a constant
+ * expression for any purpose at all! Presumably this is on the
+ * basis that its purpose is to have side effects and constant
+ * expressions can't; unfortunately, this specific case is one in
+ * which the desired side effect is a compile-time rather than a
+ * run-time one.
+ *
+ * We are permitted to use ?:, however, and that works quite well
+ * since the actual result of the sizeof expression _is_ evaluable
+ * at compile time. So here's my final answer, with the unfortunate
+ * remaining problem of evaluating its arguments multiple times:
+ */
+#define TYPECHECK(x,y) ( sizeof((x)) == sizeof((x)) ? (y) : (y) )
+#define DEPLANARISE(x) TYPECHECK((x) == (to_dbcs_planar_t)NULL, (to_dbcs_t)(x))
+#define REPLANARISE(x) TYPECHECK((x) == (to_dbcs_t)NULL, (to_dbcs_planar_t)(x))
+
+/*
+ * Values used in the `enable' field. Each of these identifies a
+ * class of character sets; we then have a bitmask indicating which
+ * classes are allowable in a given mode.
+ *
+ * These values are currently only checked on output: for input,
+ * any ISO 2022 we can comprehend at all is considered acceptable.
+ */
+#define CCS 1 /* CTEXT standard */
+#define COS 2 /* other standard */
+#define CPU 3 /* private use */
+#define CDC 4 /* DOCS for CTEXT */
+#define CDU 5 /* DOCS for UTF-8 */
+#define CNU 31 /* never used */
+
+struct iso2022_mode {
+ int enable_mask;
+ char ltype, li, lf, rtype, ri, rf;
+};
+
+const struct iso2022_subcharset {
+ char type, i, f, enable;
+ int offset;
+ const sbcs_data *sbcs_base;
+ long int (*from_dbcs)(int, int);
+
+ /*
+ * If to_dbcs_plane < 0, then to_dbcs is used as expected.
+ * However, if to_dbcs_plane >= 0, then to_dbcs is expected to
+ * be cast to a to_dbcs_planar_t before use, and the returned
+ * plane value (the first int *) must equal to_dbcs_plane.
+ *
+ * I'd have preferred to do this by means of a union, but you
+ * can't initialise a selected field of a union at compile
+ * time. Function pointer casts are guaranteed to work sensibly
+ * in ISO C (that is, it's undefined what happens if you call a
+ * function via the wrong type of pointer, but if you cast it
+ * back to the right type before calling it then it must work),
+ * so this is safe if ugly.
+ */
+ to_dbcs_t to_dbcs;
+ int to_dbcs_plane; /* use to_dbcs_planar iff >= 0 */
+} iso2022_subcharsets[] = {
+ /*
+ * We list these subcharsets in preference order for output.
+ * Since the best-defined use of ISO 2022 output is compound
+ * text, we'll use a preference order which matches that. So we
+ * begin with the charsets defined in the compound text spec.
+ */
+ { S4, 0, 'B', CCS, 0x00, &sbcsdata_CS_ASCII },
+ { S6, 0, 'A', CCS, 0x80, &sbcsdata_CS_ISO8859_1 },
+ { S6, 0, 'B', CCS, 0x80, &sbcsdata_CS_ISO8859_2 },
+ { S6, 0, 'C', CCS, 0x80, &sbcsdata_CS_ISO8859_3 },
+ { S6, 0, 'D', CCS, 0x80, &sbcsdata_CS_ISO8859_4 },
+ { S6, 0, 'F', CCS, 0x80, &sbcsdata_CS_ISO8859_7 },
+ { S6, 0, 'G', CCS, 0x80, &sbcsdata_CS_ISO8859_6 },
+ { S6, 0, 'H', CCS, 0x80, &sbcsdata_CS_ISO8859_8 },
+ { S6, 0, 'L', CCS, 0x80, &sbcsdata_CS_ISO8859_5 },
+ { S6, 0, 'M', CCS, 0x80, &sbcsdata_CS_ISO8859_9 },
+ { S4, 0, 'I', CCS, 0x80, &sbcsdata_CS_JISX0201 },
+ { S4, 0, 'J', CCS, 0x00, &sbcsdata_CS_JISX0201 },
+ { M4, 0, 'A', CCS, -0x21, 0, &gb2312_to_unicode, &unicode_to_gb2312, -1 },
+ { M4, 0, 'B', CCS, -0x21, 0, &jisx0208_to_unicode, &unicode_to_jisx0208, -1 },
+ { M4, 0, 'C', CCS, -0x21, 0, &ksx1001_to_unicode, &unicode_to_ksx1001, -1 },
+ { M4, 0, 'D', CCS, -0x21, 0, &jisx0212_to_unicode, &unicode_to_jisx0212, -1 },
+
+ /*
+ * Next, other reasonably standard things: the rest of the ISO
+ * 8859 sets, UK-ASCII, and CNS 11643.
+ */
+ { S6, 0, 'T', COS, 0x80, &sbcsdata_CS_ISO8859_11 },
+ { S6, 0, 'V', COS, 0x80, &sbcsdata_CS_ISO8859_10 },
+ { S6, 0, 'Y', COS, 0x80, &sbcsdata_CS_ISO8859_13 },
+ { S6, 0, '_', COS, 0x80, &sbcsdata_CS_ISO8859_14 },
+ { S6, 0, 'b', COS, 0x80, &sbcsdata_CS_ISO8859_15 },
+ { S6, 0, 'f', COS, 0x80, &sbcsdata_CS_ISO8859_16 },
+ { S4, 0, 'A', COS, 0x00, &sbcsdata_CS_BS4730 },
+ { M4, 0, 'G', COS, -0x21, 0, &cns11643_1_to_unicode, DEPLANARISE(&unicode_to_cns11643), 0 },
+ { M4, 0, 'H', COS, -0x21, 0, &cns11643_2_to_unicode, DEPLANARISE(&unicode_to_cns11643), 1 },
+ { M4, 0, 'I', COS, -0x21, 0, &cns11643_3_to_unicode, DEPLANARISE(&unicode_to_cns11643), 2 },
+ { M4, 0, 'J', COS, -0x21, 0, &cns11643_4_to_unicode, DEPLANARISE(&unicode_to_cns11643), 3 },
+ { M4, 0, 'K', COS, -0x21, 0, &cns11643_5_to_unicode, DEPLANARISE(&unicode_to_cns11643), 4 },
+ { M4, 0, 'L', COS, -0x21, 0, &cns11643_6_to_unicode, DEPLANARISE(&unicode_to_cns11643), 5 },
+ { M4, 0, 'M', COS, -0x21, 0, &cns11643_7_to_unicode, DEPLANARISE(&unicode_to_cns11643), 6 },
+
+ /*
+ * Private-use designations: DEC private sets and Emacs's Big5
+ * abomination.
+ */
+ { S4, 0, '0', CPU, 0x00, &sbcsdata_CS_DEC_GRAPHICS },
+ { S4, 0, '<', CPU, 0x80, &sbcsdata_CS_DEC_MCS },
+ { M4, 0, '0', CPU, -0x21, 0, &emacs_big5_1_to_unicode, DEPLANARISE(&unicode_to_emacs_big5), 1 },
+ { M4, 0, '1', CPU, -0x21, 0, &emacs_big5_2_to_unicode, DEPLANARISE(&unicode_to_emacs_big5), 2 },
+
+ /*
+ * Ben left this conditioned out without explanation,
+ * presumably on the grounds that we don't have a translation
+ * table for it.
+ */
+#if 0
+ { M4, 0, '@', CNU }, /* JIS C 6226-1978 */
+#endif
+
+ /*
+ * Finally, fallback entries for null character sets.
+ */
+ { S4, 0, '~', CNU },
+ { S6, 0, '~', CNU }, /* empty 96-set */
+ { M4, 0, '~', CNU, 0, 0, &null_dbcs_to_unicode, &unicode_to_null_dbcs, -1 }, /* empty 94^n-set */
+ { M6, 0, '~', CNU, 0, 0, &null_dbcs_to_unicode, &unicode_to_null_dbcs, -1 }, /* empty 96^n-set */
+};
+
+static long int null_dbcs_to_unicode(int r, int c)
+{
+ UNUSEDARG(r);
+ UNUSEDARG(c);
+ return ERROR;
+}
+static int unicode_to_null_dbcs(long int unicode, int *r, int *c)
+{
+ UNUSEDARG(unicode);
+ UNUSEDARG(r);
+ UNUSEDARG(c);
+ return 0; /* failed to convert anything */
+}
+
+/*
+ * Emacs encodes Big5 in COMPOUND_TEXT as two 94x94 character sets.
+ * We treat Big5 as a 94x191 character set with a bunch of undefined
+ * columns in the middle, so we have to mess around a bit to make
+ * things fit.
+ */
+
+static long int emacs_big5_1_to_unicode(int r, int c)
+{
+ unsigned long s;
+ s = r * 94 + c;
+ r = s / 157;
+ c = s % 157;
+ if (c >= 64) c += 34; /* Skip over the gap */
+ return big5_to_unicode(r, c);
+}
+
+static long int emacs_big5_2_to_unicode(int r, int c)
+{
+ unsigned long s;
+ s = r * 94 + c;
+ r = s / 157 + 40;
+ c = s % 157;
+ if (c >= 64) c += 34; /* Skip over the gap */
+ return big5_to_unicode(r, c);
+}
+
+static int unicode_to_emacs_big5(long int unicode, int *p, int *r, int *c)
+{
+ int rr, cc, s;
+ if (!unicode_to_big5(unicode, &rr, &cc))
+ return 0;
+ if (cc >= 64) {
+ cc -= 34;
+ assert(cc >= 64);
+ }
+ s = rr * 157 + cc;
+ if (s >= 40*157) {
+ *p = 2;
+ s -= 40*157;
+ } else {
+ *p = 1;
+ }
+ *r = s / 94;
+ *c = s % 94;
+ return 1;
+}
+
+/* Wrappers for cns11643_to_unicode() */
+static long int cns11643_1_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(0, r, c);
+}
+static long int cns11643_2_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(1, r, c);
+}
+static long int cns11643_3_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(2, r, c);
+}
+static long int cns11643_4_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(3, r, c);
+}
+static long int cns11643_5_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(4, r, c);
+}
+static long int cns11643_6_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(5, r, c);
+}
+static long int cns11643_7_to_unicode(int r, int c)
+{
+ return cns11643_to_unicode(6, r, c);
+}
+
+/* States, or "what we're currently accumulating". */
+enum {
+ IDLE, /* None of the below */
+ SS2CHAR, /* Accumulating a character after SS2 */
+ SS3CHAR, /* Accumulating a character after SS3 */
+ ESCSEQ, /* Accumulating an escape sequence */
+ ESCDROP, /* Discarding an escape sequence */
+ ESCPASS, /* Passing through an escape sequence */
+ DOCSUTF8, /* DOCSed into UTF-8 */
+ DOCSCTEXT /* DOCSed into a COMPOUND_TEXT extended segment */
+};
+
+#if 0
+#include <stdio.h>
+static void dump_state(charset_state *s)
+{
+ unsigned s0 = s->s0, s1 = s->s1;
+ char const * const modes[] = { "IDLE", "SS2CHAR", "SS3CHAR",
+ "ESCSEQ", "ESCDROP", "ESCPASS",
+ "DOCSUTF8" };
+
+ fprintf(stderr, "s0: %s", modes[s0 >> 29]);
+ fprintf(stderr, " %02x %02x %02x ", (s0 >> 16) & 0xff, (s0 >> 8) & 0xff,
+ s0 & 0xff);
+ fprintf(stderr, "s1: LS%d LS%dR", (s1 >> 30) & 3, (s1 >> 28) & 3);
+ fprintf(stderr, " %d %d %d %d\n", s1 & 0x7f, (s1 >> 7) & 0x7f,
+ (s1 >> 14) & 0x7f, (s1 >> 21) & 0x7f);
+}
+#endif
+
+static void designate(charset_state *state, int container,
+ int type, int ibyte, int fbyte)
+{
+ unsigned long i;
+
+ assert(container >= 0 && container <= 3);
+ assert(type == S4 || type == S6 || type == M4 || type == M6);
+
+ for (i = 0; i < lenof(iso2022_subcharsets); i++) {
+ if (iso2022_subcharsets[i].type == type &&
+ iso2022_subcharsets[i].i == ibyte &&
+ iso2022_subcharsets[i].f == fbyte) {
+ state->s1 &= ~(0x7fL << (container * 7));
+ state->s1 |= (i << (container * 7));
+ return;
+ }
+ }
+ /*
+ * If we don't find the charset, invoke the empty one, so we
+ * output ERROR rather than garbage.
+ */
+ designate(state, container, type, 0, '~');
+}
+
+static void do_utf8(long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ charset_state ustate;
+
+ ustate.s1 = 0;
+ ustate.s0 = state->s0 & 0x03ffffffL;
+ read_utf8(NULL, input_chr, &ustate, emit, emitctx);
+ state->s0 = (state->s0 & ~0x03ffffffL) | (ustate.s0 & 0x03ffffffL);
+}
+
+static void docs_utf8(long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ int retstate;
+
+ /*
+ * Bits [25:0] of s0 are reserved for read_utf8().
+ * Bits [27:26] are a tiny state machine to recognise ESC % @.
+ */
+ retstate = (state->s0 & 0x0c000000L) >> 26;
+ if (retstate == 1 && input_chr == '%')
+ retstate = 2;
+ else if (retstate == 2 && input_chr == '@') {
+ /* If we've got a partial UTF-8 sequence, complain. */
+ if (state->s0 & 0x03ffffffL)
+ emit(emitctx, ERROR);
+ state->s0 = 0;
+ return;
+ } else {
+ if (retstate >= 1) do_utf8(ESC, state, emit, emitctx);
+ if (retstate >= 2) do_utf8('%', state, emit, emitctx);
+ retstate = 0;
+ if (input_chr == ESC)
+ retstate = 1;
+ else {
+ do_utf8(input_chr, state, emit, emitctx);
+ }
+ }
+ state->s0 = (state->s0 & ~0x0c000000L) | (retstate << 26);
+}
+
+struct ctext_encoding {
+ char const *name;
+ char octets_per_char, enable;
+ charset_spec const *subcs;
+};
+
+/*
+ * In theory, this list is in <ftp://ftp.x.org/pub/DOCS/registry>,
+ * but XLib appears to have its own ideas, and encodes these three
+ * (as of X11R6.8.2)
+ */
+
+extern charset_spec const charset_CS_ISO8859_14;
+extern charset_spec const charset_CS_ISO8859_15;
+extern charset_spec const charset_CS_BIG5;
+
+static struct ctext_encoding const ctext_encodings[] = {
+ { "big5-0\2", 0 /* variable */, CDC, &charset_CS_BIG5 },
+ { "iso8859-14\2", 1, CDC, &charset_CS_ISO8859_14 },
+ { "iso8859-15\2", 1, CDC, &charset_CS_ISO8859_15 }
+};
+
+static void docs_ctext(long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ /*
+ * s0[27:26] = first entry in ctext_encodings that matches
+ * s0[25:22] = number of characters successfully matched, 0xf if all
+ * s0[21:8] count the number of octets left in the segment
+ * s0[7:0] are for sub-charset use
+ */
+ int n = (state->s0 >> 22) & 0xf, i = (state->s0 >> 26) & 3, oi = i, j;
+ int length = (state->s0 >> 8) & 0x3fff;
+
+ /*
+ * Note that we do not bother checking the octets-per-character
+ * byte against the selected charset when reading. It's
+ * extremely unlikely that this code will ever have to deal
+ * with two charset identifiers with the same name and
+ * different octets-per-character values! If it ever happens,
+ * we'll have to edit this file anyway so we can modify the
+ * code then...
+ */
+
+ if (!length) {
+ /* Haven't read length yet */
+ if ((state->s0 & 0xff) == 0)
+ /* ... or even the first byte */
+ state->s0 |= input_chr;
+ else {
+ length = (state->s0 & 0x7f) * 0x80 + (input_chr & 0x7f);
+ if (length == 0)
+ state->s0 = 0;
+ else
+ state->s0 = (state->s0 & 0xf0000000) | (length << 8);
+ }
+ return;
+ }
+
+ j = i;
+ if (n == 0xe) {
+ /* Skipping unknown encoding. Look out for STX. */
+ if (input_chr == 2)
+ state->s0 = (state->s0 & 0xf0000000) | (i << 26) | (0xf << 22);
+ } else if (n != 0xf) {
+ while ((unsigned)j < lenof(ctext_encodings) &&
+ !memcmp(ctext_encodings[j].name,
+ ctext_encodings[oi].name, n)) {
+ if (ctext_encodings[j].name[n] < input_chr)
+ i = ++j;
+ else
+ break;
+ }
+ if ((unsigned)i >= lenof(ctext_encodings) ||
+ memcmp(ctext_encodings[i].name,
+ ctext_encodings[oi].name, n) ||
+ ctext_encodings[i].name[n] != input_chr) {
+ /* Doom! We haven't heard of this encoding */
+ i = lenof(ctext_encodings);
+ n = 0xe;
+ } else {
+ /*
+ * Otherwise, we have found an additional character in our
+ * encoding name. See if we have reached the _end_ of our
+ * name.
+ */
+ n++;
+ if (!ctext_encodings[i].name[n])
+ n = 0xf;
+ }
+ /*
+ * Failing _that_, we simply update our encoding-name-
+ * tracking state.
+ */
+ assert(i < 4 && n < 16);
+ state->s0 = (state->s0 & 0xf0000000) | (i << 26) | (n << 22);
+ } else {
+ if ((unsigned)i >= lenof(ctext_encodings))
+ emit(emitctx, ERROR);
+ else {
+ charset_state substate;
+ charset_spec const *subcs = ctext_encodings[i].subcs;
+ substate.s1 = 0;
+ substate.s0 = state->s0 & 0xff;
+ subcs->read(subcs, input_chr, &substate, emit, emitctx);
+ state->s0 = (state->s0 & ~0xff) | (substate.s0 & 0xff);
+ }
+ }
+ if (!--length)
+ state->s0 = 0;
+ else
+ state->s0 = (state->s0 &~0x003fff00) | (length << 8);
+}
+
+static void read_iso2022(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ struct iso2022_mode const *mode = (struct iso2022_mode *)charset->data;
+
+ /* dump_state(state); */
+ /*
+ * We have to make fairly efficient use of the 64 bits of state
+ * available to us. Long-term state goes in s1, and consists of
+ * the identities of the character sets designated as G0/G1/G2/G3
+ * and the locking-shift states for GL and GR. Short-term state
+ * goes in s0: The bottom half of s0 accumulates characters for an
+ * escape sequence or a multi-byte character, while the top three
+ * bits indicate what they're being accumulated for. After DOCS,
+ * the bottom 29 bits of state are available for the DOCS function
+ * to use -- the UTF-8 one uses the bottom 26 for UTF-8 decoding
+ * and the top two to recognised ESC % @.
+ *
+ * s0[31:29] = state enum
+ * s0[24:0] = accumulated bytes
+ * s1[31:30] = GL locking-shift state
+ * s1[29:28] = GR locking-shift state
+ * s1[27:21] = G3 charset
+ * s1[20:14] = G2 charset
+ * s1[13:7] = G1 charset
+ * s1[6:0] = G0 charset
+ */
+
+#define LEFT 30
+#define RIGHT 28
+#define LOCKING_SHIFT(n,side) \
+ (state->s1 = (state->s1 & ~(3UL<<(side))) | ((n ## UL)<<(side)))
+#define MODE ((state->s0 & 0xe0000000UL) >> 29)
+#define ENTER_MODE(m) (state->s0 = (state->s0 & ~0xe0000000UL) | ((unsigned long)(m)<<29))
+#define SINGLE_SHIFT(n) ENTER_MODE(SS2CHAR - 2 + (n))
+#define ASSERT_IDLE do { \
+ if (state->s0 != 0) emit(emitctx, ERROR); \
+ state->s0 = 0; \
+} while (0)
+
+ if (state->s1 == 0) {
+ /*
+ * Since there's no LS0R, this means we must just have started.
+ * Set up a sane initial state (LS0, LS1R, ASCII in G0/G1/G2/G3).
+ */
+ LOCKING_SHIFT(0, LEFT);
+ LOCKING_SHIFT(1, RIGHT);
+ designate(state, 0, mode->ltype, mode->li, mode->lf);
+ designate(state, 1, mode->rtype, mode->ri, mode->rf);
+ designate(state, 2, S4, 0, 'B');
+ designate(state, 3, S4, 0, 'B');
+ }
+
+ if (MODE == DOCSUTF8) {
+ docs_utf8(input_chr, state, emit, emitctx);
+ return;
+ }
+ if (MODE == DOCSCTEXT) {
+ docs_ctext(input_chr, state, emit, emitctx);
+ return;
+ }
+
+ if ((input_chr & 0x60) == 0x00) {
+ /* C0 or C1 control */
+ ASSERT_IDLE;
+ switch (input_chr) {
+ case ESC:
+ ENTER_MODE(ESCSEQ);
+ break;
+ case LS0:
+ LOCKING_SHIFT(0, LEFT);
+ break;
+ case LS1:
+ LOCKING_SHIFT(1, LEFT);
+ break;
+ case SS2:
+ SINGLE_SHIFT(2);
+ break;
+ case SS3:
+ SINGLE_SHIFT(3);
+ break;
+ default:
+ emit(emitctx, input_chr);
+ break;
+ }
+ } else if ((input_chr & 0x80) || MODE < ESCSEQ) {
+ int is_gl = 0;
+ struct iso2022_subcharset const *subcs;
+ unsigned container;
+ long input_7bit;
+ /*
+ * Actual data.
+ * Force idle state if we're in mid escape sequence, or in a
+ * multi-byte character with a different top bit.
+ */
+ if (MODE >= ESCSEQ ||
+ ((state->s0 & 0x00ff0000L) != 0 &&
+ (((state->s0 >> 16) ^ input_chr) & 0x80)))
+ ASSERT_IDLE;
+ if (MODE == SS2CHAR || MODE == SS3CHAR) /* Single-shift */
+ container = MODE - SS2CHAR + 2;
+ else if (input_chr >= 0x80) /* GR */
+ container = (state->s1 >> 28) & 3;
+ else { /* GL */
+ container = state->s1 >> 30;
+ is_gl = 1;
+ }
+ input_7bit = input_chr & ~0x80;
+ subcs = &iso2022_subcharsets[(state->s1 >> (container * 7)) & 0x7f];
+ if ((subcs->type == S4 || subcs->type == M4) &&
+ (input_7bit == 0x20 || input_7bit == 0x7f)) {
+ /* characters not in 94-char set */
+ if (is_gl) emit(emitctx, input_7bit);
+ else emit(emitctx, ERROR);
+ } else if (subcs->type == M4 || subcs->type == M6) {
+ if ((state->s0 & 0x00ff0000L) == 0) {
+ state->s0 |= input_chr << 16;
+ return;
+ } else {
+ emit(emitctx,
+ subcs->from_dbcs(((state->s0 >> 16) & 0x7f) +
+ subcs->offset,
+ input_7bit + subcs->offset));
+ }
+ } else {
+ if ((state->s0 & 0x00ff0000L) != 0)
+ emit(emitctx, ERROR);
+ emit(emitctx, subcs->sbcs_base ?
+ sbcs_to_unicode(subcs->sbcs_base, input_7bit + subcs->offset):
+ ERROR);
+ }
+ state->s0 = 0;
+ } else {
+ unsigned i1, i2;
+ if (MODE == ESCPASS) {
+ emit(emitctx, input_chr);
+ if ((input_chr & 0xf0) != 0x20)
+ ENTER_MODE(IDLE);
+ return;
+ }
+
+ /*
+ * Intermediate bytes shall be any of the 16 positions of
+ * column 02 of the code table; they are denoted by the symbol
+ * I.
+ */
+ if ((input_chr & 0xf0) == 0x20) {
+ if (((state->s0 >> 16) & 0xff) == 0)
+ state->s0 |= input_chr << 16;
+ else if (((state->s0 >> 8) & 0xff) == 0)
+ state->s0 |= input_chr << 8;
+ else {
+ /* Long escape sequence. Switch to ESCPASS or ESCDROP. */
+ i1 = (state->s0 >> 16) & 0xff;
+ i2 = (state->s0 >> 8) & 0xff;
+ switch (i1) {
+ case '(': case ')': case '*': case '+':
+ case '-': case '.': case '/':
+ case '$':
+ ENTER_MODE(ESCDROP);
+ break;
+ default:
+ emit(emitctx, ESC);
+ emit(emitctx, i1);
+ emit(emitctx, i2);
+ emit(emitctx, input_chr);
+ state->s0 = 0;
+ ENTER_MODE(ESCPASS);
+ break;
+ }
+ }
+ return;
+ }
+
+ /*
+ * Final bytes shall be any of the 79 positions of columns 03
+ * to 07 of the code table excluding position 07/15; they are
+ * denoted by the symbol F.
+ */
+ i1 = (state->s0 >> 16) & 0xff;
+ i2 = (state->s0 >> 8) & 0xff;
+ if (MODE == ESCDROP)
+ input_chr = 0; /* Make sure it won't match. */
+ state->s0 = 0;
+ switch (i1) {
+ case 0: /* No intermediate bytes */
+ switch (input_chr) {
+ case 'N': /* SS2 */
+ SINGLE_SHIFT(2);
+ break;
+ case 'O': /* SS3 */
+ SINGLE_SHIFT(3);
+ break;
+ case 'n': /* LS2 */
+ LOCKING_SHIFT(2, LEFT);
+ break;
+ case 'o': /* LS3 */
+ LOCKING_SHIFT(3, LEFT);
+ break;
+ case '|': /* LS3R */
+ LOCKING_SHIFT(3, RIGHT);
+ break;
+ case '}': /* LS2R */
+ LOCKING_SHIFT(2, RIGHT);
+ break;
+ case '~': /* LS1R */
+ LOCKING_SHIFT(1, RIGHT);
+ break;
+ default:
+ /* Unsupported escape sequence. Spit it back out. */
+ emit(emitctx, ESC);
+ emit(emitctx, input_chr);
+ }
+ break;
+ case ' ': /* ACS */
+ /*
+ * Various coding structure facilities specify that designating
+ * a code element also invokes it. As far as I can see, invoking
+ * it now will have the same practical effect, since those
+ * facilities also ban the use of locking shifts.
+ */
+ switch (input_chr) {
+ case 'A': /* G0 element used and invoked into GL */
+ LOCKING_SHIFT(0, LEFT);
+ break;
+ case 'C': /* G0 in GL, G1 in GR */
+ case 'D': /* Ditto, at least for 8-bit codes */
+ case 'L': /* ISO 4873 (ECMA-43) level 1 */
+ case 'M': /* ISO 4873 (ECMA-43) level 2 */
+ LOCKING_SHIFT(0, LEFT);
+ LOCKING_SHIFT(1, RIGHT);
+ break;
+ }
+ break;
+ case '&': /* IRR */
+ /*
+ * IRR (Identify Revised Registration) is ignored here,
+ * since any revised registration must be
+ * upward-compatible with the old one, so either we'll
+ * support the new one or we'll emit ERROR when we run
+ * into a new character. In either case, there's nothing
+ * to be done here.
+ */
+ break;
+ case '(': /* GZD4 */ case ')': /* G1D4 */
+ case '*': /* G2D4 */ case '+': /* G3D4 */
+ designate(state, i1 - '(', S4, i2, input_chr);
+ break;
+ case '-': /* G1D6 */ case '.': /* G2D6 */ case '/': /* G3D6 */
+ designate(state, i1 - ',', S6, i2, input_chr);
+ break;
+ case '$': /* G?DM? */
+ switch (i2) {
+ case 0: /* Obsolete version of GZDM4 */
+ i2 = '(';
+ case '(': /* GZDM4 */ case ')': /* G1DM4 */
+ case '*': /* G2DM4 */ case '+': /* G3DM4 */
+ designate(state, i2 - '(', M4, 0, input_chr);
+ break;
+ case '-': /* G1DM6 */
+ case '.': /* G2DM6 */ case '/': /* G3DM6 */
+ designate(state, i2 - ',', M6, 0, input_chr);
+ break;
+ default:
+ emit(emitctx, ERROR);
+ break;
+ }
+ case '%': /* DOCS */
+ /* XXX What's a reasonable way to handle an unrecognised DOCS? */
+ switch (i2) {
+ case 0:
+ switch (input_chr) {
+ case 'G':
+ ENTER_MODE(DOCSUTF8);
+ break;
+ }
+ break;
+ case '/':
+ switch (input_chr) {
+ case '1': case '2':
+ ENTER_MODE(DOCSCTEXT);
+ break;
+ }
+ break;
+ }
+ break;
+ default:
+ /* Unsupported nF escape sequence. Re-emit it. */
+ emit(emitctx, ESC);
+ emit(emitctx, i1);
+ if (i2) emit(emitctx, i2);
+ emit(emitctx, input_chr);
+ break;
+ }
+ }
+}
+
+static void oselect(charset_state *state, int i, int right,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ int shift = (right ? 31-7 : 31-7-7);
+ struct iso2022_subcharset const *subcs = &iso2022_subcharsets[i];
+
+ if (((state->s1 >> shift) & 0x7F) != (unsigned)i) {
+ state->s1 &= ~(0x7FL << shift);
+ state->s1 |= (i << shift);
+
+ if (emit) {
+ emit(emitctx, ESC);
+ if (subcs->type == M4 || subcs->type == M6)
+ emit(emitctx, '$');
+ if (subcs->type == S6 || subcs->type == M6) {
+ assert(right);
+ emit(emitctx, '-');
+ } else if (right) {
+ emit(emitctx, ')');
+ } else {
+ emit(emitctx, '(');
+ }
+ if (subcs->i)
+ emit(emitctx, subcs->i);
+ emit(emitctx, subcs->f);
+ }
+ }
+}
+
+static void docs_char(charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx, int cset, char *data, int datalen)
+{
+ int curr_cset, currlen, i;
+
+ /*
+ * cset is the index into ctext_encodings[]. It can also be -1
+ * to mean DOCS UTF-8, or -2 to mean no DOCS (ordinary 2022).
+ * In the latter case, `chr' is ignored.
+ */
+
+ /*
+ * First, terminate a DOCS segment if necessary. We always have
+ * to terminate a DOCS segment if one is active and we're about
+ * to switch to a different one; we might also have to
+ * terminate a length-encoded DOCS segment if we've run out of
+ * storage space to accumulate characters in it.
+ */
+ curr_cset = ((state->s1 >> 14) & 7) - 2;
+ currlen = ((state->s1 >> 11) & 7);
+ if ((curr_cset != -2 && curr_cset != cset) ||
+ (curr_cset >= 0 && currlen + datalen > 5)) {
+ if (curr_cset == -1) {
+ /*
+ * Terminating DOCS UTF-8 is easy.
+ */
+ emit(emitctx, ESC);
+ emit(emitctx, '%');
+ emit(emitctx, '@');
+ } else {
+ int len;
+
+ /*
+ * To terminate a length-encoded DOCS segment we must
+ * actually output the whole thing.
+ */
+ emit(emitctx, ESC);
+ emit(emitctx, '%');
+ emit(emitctx, '/');
+ emit(emitctx, '0' + ctext_encodings[curr_cset].octets_per_char);
+ len = currlen + datalen +
+ strlen(ctext_encodings[curr_cset].name);
+ assert(len < (1 << 14));
+ emit(emitctx, 0x80 | ((len >> 7) & 0x7F));
+ emit(emitctx, 0x80 | ((len ) & 0x7F));
+ /* The name stored in ctext_encodings[] includes the trailing \2 */
+ for (i = 0; ctext_encodings[curr_cset].name[i]; i++)
+ emit(emitctx, ctext_encodings[curr_cset].name[i]);
+ for (i = 0; i < currlen; i++)
+ emit(emitctx,
+ (i == 0 ? state->s1 : state->s0 >> (8*(4-i))) & 0xFF);
+ for (i = 0; i < datalen; i++)
+ emit(emitctx, data[i]);
+
+ /*
+ * We've now dealt with the input data, so clear it so
+ * we don't try to do so again below.
+ */
+ datalen = 0;
+ }
+ curr_cset = -2;
+ }
+
+ /*
+ * Now, start a DOCS segment if necessary.
+ */
+ if (curr_cset != cset) {
+ assert(cset != -2);
+ if (cset == -1) {
+ /*
+ * Start DOCS UTF-8.
+ */
+ emit(emitctx, ESC);
+ emit(emitctx, '%');
+ emit(emitctx, 'G');
+ } else {
+ /*
+ * Starting a length-encoded DOCS segment is simply a
+ * matter of setting our stored length counter to zero.
+ */
+ currlen = 0;
+ state->s1 &= ~(7 << 11);
+ state->s1 &= ~0xFF;
+ state->s0 = 0;
+ }
+ }
+ state->s1 &= ~(7 << 14);
+ assert((cset+2) >= 0 && (cset+2) < 8);
+ state->s1 |= ((cset+2) << 14);
+
+ /*
+ * Now we're in the right DOCS state. Actually deal with the
+ * input data, if we haven't already done so above.
+ */
+ if (datalen > 0) {
+ assert(cset != 2);
+ if (cset == -1) {
+ /*
+ * In DOCS UTF-8, we output data as soon as we get it.
+ */
+ for (i = 0; i < datalen; i++)
+ emit(emitctx, data[i]);
+ } else {
+ /*
+ * In length-encoded DOCS, we just store our data and
+ * bide our time. It'll all be output when we fill up
+ * or switch to another character set.
+ */
+ assert(currlen + datalen <= 5); /* overflow handled already */
+ for (i = 0; i < datalen; i++) {
+ if (currlen + i == 0)
+ state->s1 |= data[i] & 0xFF;
+ else
+ state->s0 |= (data[i] & 0xFF) << (8*(4-(currlen+i)));
+ }
+ currlen += datalen;
+ assert(currlen >= 0 && currlen < 8);
+ state->s1 &= ~(7 << 11);
+ state->s1 |= (currlen << 11);
+ }
+ }
+}
+
+static void write_to_pointer(void *ctx, long int output)
+{
+ char **ptr = (char **)ctx;
+ *(*ptr)++ = output;
+}
+
+/*
+ * Writing full ISO-2022 is not useful in very many circumstances.
+ * One of the few situations in which it _is_ useful is generating
+ * X11 COMPOUND_TEXT; therefore, this writing function will obey
+ * the compound text restrictions and hence output the subset of
+ * ISO-2022 that's usable in that context.
+ *
+ * The subset in question is roughly that we use GL/GR for G0/G1
+ * always, and that the _only_ escape sequences we output (other
+ * than the occasional DOCS) are those which designate different
+ * subcharsets into G0 and G1. There are additional constraints
+ * about which things go in which container; see below.
+ *
+ * FIXME: this wants some decent tests to be written, and also the
+ * exact output policy for compound text wants thinking about more
+ * carefully.
+ */
+static int write_iso2022(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ int i;
+ struct iso2022_subcharset const *subcs;
+ struct iso2022_mode const *mode = (struct iso2022_mode *)charset->data;
+ to_dbcs_planar_t last_planar_dbcs = NULL;
+ int last_p, last_r, last_c;
+ long int c1, c2;
+
+ /*
+ * For output, I allocate the state variables as follows:
+ *
+ * s1[31] == 1 if output state has been initialised
+ * s1[30:24] == G1 charset (always in GR)
+ * s1[23:17] == G0 charset (always in GL)
+ * s1[16:14] == DOCS index plus 2 (because -1 and -2 are special)
+ * s1[13:11] == number of DOCS accumulated characters (up to five)
+ * s1[7:0] + s0[31:0] == DOCS collected characters
+ */
+
+ if (!state->s1) {
+ state->s0 = 0x00000000UL;
+ state->s1 = 0x80000000UL;
+ /*
+ * Start with US-ASCII in GL and also in GR.
+ */
+ for (i = 0; (unsigned)i < lenof(iso2022_subcharsets); i++) {
+ subcs = &iso2022_subcharsets[i];
+ if (subcs->type == mode->ltype &&
+ subcs->i == mode->li &&
+ subcs->f == mode->lf)
+ oselect(state, i, FALSE, NULL, NULL);
+ if (subcs->type == mode->rtype &&
+ subcs->i == mode->ri &&
+ subcs->f == mode->rf)
+ oselect(state, i, TRUE, NULL, NULL);
+ }
+ }
+
+ if (input_chr == -1) {
+ /*
+ * Special case: reset encoding state.
+ */
+ docs_char(state, emit, emitctx, -2, NULL, 0); /* leave DOCS */
+
+ for (i = 0; (unsigned)i < lenof(iso2022_subcharsets); i++) {
+ subcs = &iso2022_subcharsets[i];
+ if (subcs->type == mode->ltype &&
+ subcs->i == mode->li &&
+ subcs->f == mode->lf)
+ oselect(state, i, FALSE, emit, emitctx);
+ if (subcs->type == mode->rtype &&
+ subcs->i == mode->ri &&
+ subcs->f == mode->rf)
+ oselect(state, i, TRUE, emit, emitctx);
+ }
+ return TRUE;
+ }
+
+ /*
+ * Special-case characters: Space, Delete, and anything in C0
+ * or C1 are output unchanged.
+ */
+ if (input_chr <= 0x20 || (input_chr >= 0x7F && input_chr < 0xA0)) {
+ emit(emitctx, input_chr);
+ return TRUE;
+ }
+
+ /*
+ * Analyse the input character and work out which subcharset it
+ * belongs to.
+ */
+ for (i = 0; (unsigned)i < lenof(iso2022_subcharsets); i++) {
+ subcs = &iso2022_subcharsets[i];
+ if (!(mode->enable_mask & (1 << subcs->enable)))
+ continue; /* this charset is disabled */
+ if (subcs->sbcs_base) {
+ c1 = sbcs_from_unicode(subcs->sbcs_base, input_chr);
+ c1 -= subcs->offset;
+ if (c1 >= 0x20 && c1 <= 0x7f) {
+ c2 = 0;
+ break;
+ }
+ } else if (subcs->to_dbcs) {
+ if (subcs->to_dbcs_plane >= 0) {
+ /*
+ * Since multiplanar DBCSes almost by definition
+ * involve several entries in iso2022_subcharsets
+ * with the same to_dbcs function and different
+ * plane values, we remember the last such function
+ * we called and what its result was, so that we
+ * don't (for example) have to call
+ * unicode_to_cns11643 seven times.
+ */
+ if (last_planar_dbcs != REPLANARISE(subcs->to_dbcs)) {
+ last_planar_dbcs = REPLANARISE(subcs->to_dbcs);
+ if (!last_planar_dbcs(input_chr,
+ &last_p, &last_r, &last_c))
+ last_p = -1;
+ }
+ } else {
+ last_p = subcs->to_dbcs_plane;
+ if (!subcs->to_dbcs(input_chr, &last_r, &last_c))
+ last_p = 0; /* cannot match since to_dbcs_plane<0 */
+ }
+
+ if (last_p == subcs->to_dbcs_plane) {
+ c1 = last_r - subcs->offset;
+ c2 = last_c - subcs->offset;
+ assert(c1 >= 0x20 && c1 <= 0x7f);
+ assert(c2 >= 0x20 && c2 <= 0x7f);
+ break;
+ }
+ }
+ }
+
+ if ((unsigned)i < lenof(iso2022_subcharsets)) {
+ int right;
+
+ /*
+ * Our character is represented by c1 (and possibly also
+ * c2) in subcharset `subcs'. So now we must decide whether
+ * to designate that character set into G0/GL or G1/GR.
+ *
+ * Any S6 or M6 subcharset has to go in GR because it won't
+ * fit in GL. In addition, the compound text rules state
+ * that any single-byte subcharset defined as the
+ * right-hand half of some SBCS must go in GR.
+ *
+ * M4 subcharsets can go in either half according to the
+ * rules. I choose to put them in GR always because it's a
+ * simple policy with reasonable behaviour (facilitates
+ * switching between them and ASCII).
+ */
+ right = (subcs->type == S6 || subcs->type == M6 || subcs->type == M4 ||
+ (subcs->sbcs_base && subcs->offset == 0x80));
+
+ /*
+ * If we're in a DOCS mode, leave it.
+ */
+ docs_char(state, emit, emitctx, -2, NULL, 0);
+
+ /*
+ * If this subcharset is not already selected in that
+ * container, select it.
+ */
+ oselect(state, i, right, emit, emitctx);
+
+ /*
+ * Now emit the actual characters.
+ */
+ if (right) {
+ assert(c1 >= 0x20 && c1 <= 0x7f);
+ emit(emitctx, c1 | 0x80);
+ if (c2) {
+ assert(c2 >= 0x20 && c2 <= 0x7f);
+ emit(emitctx, c2 | 0x80);
+ }
+ } else {
+ assert(c1 > 0x20 && c1 < 0x7f);
+ emit(emitctx, c1);
+ if (c2) {
+ assert(c2 > 0x20 && c2 < 0x7f);
+ emit(emitctx, c2);
+ }
+ }
+
+ return TRUE;
+ }
+
+ /*
+ * Fall back to DOCS.
+ */
+ {
+ char data[10];
+ char *p = data;
+ int i, cs;
+
+ cs = -2; /* means failure */
+
+ for (i = 0; (unsigned)i <= lenof(ctext_encodings); i++) {
+ charset_state substate;
+ charset_spec const *subcs = ctext_encodings[i].subcs;
+
+ /*
+ * We assume that all character sets dealt with by DOCS
+ * are stateless for output purposes.
+ */
+ substate.s1 = substate.s0 = 0;
+ p = data;
+
+ if ((unsigned)i < lenof(ctext_encodings)) {
+ if ((mode->enable_mask & (1 << ctext_encodings[i].enable)) &&
+ subcs->write(subcs, input_chr, &substate,
+ write_to_pointer, &p)) {
+ cs = i;
+ break;
+ }
+ } else {
+ if ((mode->enable_mask & (1 << CDU)) &&
+ write_utf8(NULL, input_chr, NULL, write_to_pointer, &p)) {
+ cs = -1;
+ break;
+ }
+ }
+ }
+
+ if (cs != -2) {
+ docs_char(state, emit, emitctx, cs, data, p - data);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+/*
+ * Full ISO 2022 output with all options on. Not entirely sure what
+ * if anything this is useful for, but here it is anyway. All
+ * output character sets and DOCS variants are permitted; all
+ * containers start out with ASCII in them.
+ */
+static const struct iso2022_mode iso2022_all = {
+ (1<<CCS) | (1<<COS) | (1<<CPU) | (1<<CDC) | (1<<CDU),
+ S4, 0, 'B', S4, 0, 'B',
+};
+
+const charset_spec charset_CS_ISO2022 = {
+ CS_ISO2022, read_iso2022, write_iso2022, &iso2022_all
+};
+
+/*
+ * X11 compound text. A subset of output charsets is permitted, and
+ * G1/GR starts off in ISO8859-1.
+ */
+static const struct iso2022_mode iso2022_ctext = {
+ (1<<CCS) | (1<<CDC),
+ S4, 0, 'B', S6, 0, 'A',
+};
+
+const charset_spec charset_CS_CTEXT = {
+ CS_CTEXT, read_iso2022, write_iso2022, &iso2022_ctext
+};
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+
+int total_errs = 0;
+
+void iso2022_emit(void *ctx, long output)
+{
+ wchar_t **p = (wchar_t **)ctx;
+ *(*p)++ = output;
+}
+
+void iso2022_read_test(int line, char *input, int inlen, ...)
+{
+ va_list ap;
+ wchar_t *p, str[512];
+ int i;
+ charset_state state;
+ unsigned long l;
+
+ state.s0 = state.s1 = 0;
+ p = str;
+
+ for (i = 0; i < inlen; i++)
+ read_iso2022(NULL, input[i] & 0xFF, &state, iso2022_emit, &p);
+
+ va_start(ap, inlen);
+ l = 0;
+ for (i = 0; i < p - str; i++) {
+ l = va_arg(ap, long int);
+ if (l == -1) {
+ printf("%d: correct string shorter than output\n", line);
+ total_errs++;
+ break;
+ }
+ if (l != str[i]) {
+ printf("%d: char %d came out as %08x, should be %08lx\n",
+ line, i, str[i], l);
+ total_errs++;
+ }
+ }
+ if (l != -1) {
+ l = va_arg(ap, long int);
+ if (l != -1) {
+ printf("%d: correct string longer than output\n", line);
+ total_errs++;
+ }
+ }
+ va_end(ap);
+}
+
+/* Macro to concoct the first three parameters of iso2022_read_test. */
+#define TESTSTR(x) __LINE__, x, lenof(x)
+
+int main(void)
+{
+ printf("read tests beginning\n");
+ /* Simple test (Emacs sample text for Japanese, in ISO-2022-JP) */
+ iso2022_read_test(TESTSTR("Japanese (\x1b$BF|K\\8l\x1b(B)\t"
+ "\x1b$B$3$s$K$A$O\x1b(B, "
+ "\x1b$B%3%s%K%A%O\x1b(B\n"),
+ 'J','a','p','a','n','e','s','e',' ','(',
+ 0x65E5, 0x672C, 0x8A9E, ')', '\t',
+ 0x3053, 0x3093, 0x306b, 0x3061, 0x306f, ',', ' ',
+ 0x30b3, 0x30f3, 0x30cb, 0x30c1, 0x30cf, '\n', 0, -1);
+ /* Same thing in EUC-JP (with designations, and half-width katakana) */
+ iso2022_read_test(TESTSTR("\x1b$)B\x1b*I\x1b$+D"
+ "Japanese (\xc6\xfc\xcb\xdc\xb8\xec)\t"
+ "\xa4\xb3\xa4\xf3\xa4\xcb\xa4\xc1\xa4\xcf, "
+ "\x8e\xba\x8e\xdd\x8e\xc6\x8e\xc1\x8e\xca\n"),
+ 'J','a','p','a','n','e','s','e',' ','(',
+ 0x65E5, 0x672C, 0x8A9E, ')', '\t',
+ 0x3053, 0x3093, 0x306b, 0x3061, 0x306f, ',', ' ',
+ 0xff7a, 0xff9d, 0xff86, 0xff81, 0xff8a, '\n', 0, -1);
+ /* Multibyte single-shift */
+ iso2022_read_test(TESTSTR("\x1b$)B\x1b*I\x1b$+D\x8f\"/!"),
+ 0x02D8, '!', 0, -1);
+ /* Non-existent SBCS */
+ iso2022_read_test(TESTSTR("\x1b(!Zfnord\n"),
+ ERROR, ERROR, ERROR, ERROR, ERROR, '\n', 0, -1);
+ /* Pass-through of ordinary escape sequences, including a long one */
+ iso2022_read_test(TESTSTR("\x1b""b\x1b#5\x1b#!!!5"),
+ 0x1B, 'b', 0x1B, '#', '5',
+ 0x1B, '#', '!', '!', '!', '5', 0, -1);
+ /* Non-existent DBCS (also 5-byte escape sequence) */
+ iso2022_read_test(TESTSTR("\x1b$(!Bfnord!"),
+ ERROR, ERROR, ERROR, 0, -1);
+ /* Incomplete DB characters */
+ iso2022_read_test(TESTSTR("\x1b$B(,(\x1b(BHi\x1b$B(,(\n"),
+ 0x2501, ERROR, 'H', 'i', 0x2501, ERROR, '\n', 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$)B\x1b*I\x1b$+D\xa4""B"),
+ ERROR, 'B', 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$)B\x1b*I\x1b$+D\x0e\x1b|$\xa2\xaf"),
+ ERROR, 0x02D8, 0, -1);
+ /* Incomplete escape sequence */
+ iso2022_read_test(TESTSTR("\x1b\n"), ERROR, '\n', 0, -1);
+ iso2022_read_test(TESTSTR("\x1b-A\x1b~\x1b\xa1"), ERROR, 0xa1, 0, -1);
+ /* Incomplete single-shift */
+ iso2022_read_test(TESTSTR("\x8e\n"), ERROR, '\n', 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$*B\x8e(\n"), ERROR, '\n', 0, -1);
+ /* Corner cases (02/00 and 07/15) */
+ iso2022_read_test(TESTSTR("\x1b(B\x20\x7f"), 0x20, 0x7f, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b(I\x20\x7f"), 0x20, 0x7f, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$B\x20\x7f"), 0x20, 0x7f, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b-A\x0e\x20\x7f"), 0xa0, 0xff, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$-~\x0e\x20\x7f"), ERROR, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b)B\xa0\xff"), ERROR, ERROR, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b)I\xa0\xff"), ERROR, ERROR, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$)B\xa0\xff"), ERROR, ERROR, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b-A\x1b~\xa0\xff"), 0xa0, 0xff, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b$-~\x1b~\xa0\xff"), ERROR, 0, -1);
+ /* Designate control sets */
+ iso2022_read_test(TESTSTR("\x1b!@"), 0x1b, '!', '@', 0, -1);
+ /* Designate other coding system (UTF-8) */
+ iso2022_read_test(TESTSTR("\x1b%G"
+ "\xCE\xBA\xE1\xBD\xB9\xCF\x83\xCE\xBC\xCE\xB5"),
+ 0x03BA, 0x1F79, 0x03C3, 0x03BC, 0x03B5, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b-A\x1b%G\xCE\xBA\x1b%@\xa0"),
+ 0x03BA, 0xA0, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b%G\xCE\x1b%@"), ERROR, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b%G\xCE\xBA\x1b%\x1b%@"),
+ 0x03BA, 0x1B, '%', 0, -1);
+ /* DOCS (COMPOUND_TEXT extended segment) */
+ iso2022_read_test(TESTSTR("\x1b%/1\x80\x80"), 0, -1);
+ iso2022_read_test(TESTSTR("\x1b%/1\x80\x8fiso-8859-15\2xyz\x1b(B"),
+ ERROR, ERROR, ERROR, 0, -1);
+ iso2022_read_test(TESTSTR("\x1b%/1\x80\x8eiso8859-15\2xyz\x1b(B"),
+ 'x', 'y', 'z', 0, -1);
+ iso2022_read_test(TESTSTR("\x1b-A\x1b%/2\x80\x89"
+ "big5-0\2\xa1\x40\xa1\x40"),
+ 0x3000, 0xa1, 0x40, 0, -1);
+ /* Emacs Big5-in-ISO-2022 mapping */
+ iso2022_read_test(TESTSTR("\x1b$(0&x86\x1b(B \x1b$(0DeBv"),
+ 0x5143, 0x6c23, ' ', ' ', 0x958b, 0x767c, 0, -1);
+ /* Test from RFC 1922 (ISO-2022-CN) */
+ iso2022_read_test(TESTSTR("\x1b$)A\x0e=;;;\x1b$)GG(_P\x0f"),
+ 0x4EA4, 0x6362, 0x4EA4, 0x63db, 0, -1);
+
+ printf("read tests completed\n");
+ printf("total: %d errors\n", total_errs);
+ return (total_errs != 0);
+}
+
+#endif /* TESTMODE */
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_ISO2022)
+
+#endif
diff --git a/app/tools/halibut/charset/iso2022s.c b/app/tools/halibut/charset/iso2022s.c
new file mode 100644
index 0000000..a1eceb8
--- /dev/null
+++ b/app/tools/halibut/charset/iso2022s.c
@@ -0,0 +1,544 @@
+/*
+ * iso2022s.c - support for ISO-2022 subset encodings.
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+#include "sbcsdat.h"
+
+#define SO (0x0E)
+#define SI (0x0F)
+#define ESC (0x1B)
+
+/* Functional description of a single ISO 2022 escape sequence. */
+struct iso2022_escape {
+ char const *sequence;
+ unsigned long andbits, xorbits;
+ /*
+ * For output, these variables help us figure out which escape
+ * sequences we need to get where we want to be.
+ *
+ * `container' should be in the range 0-3, but can also be ORed
+ * with the bit flag RO to indicate that this is not a
+ * preferred container to use for this charset during output.
+ */
+ int container, subcharset;
+};
+#define RO 0x80
+
+struct iso2022 {
+ /*
+ * List of escape sequences supported in this subset. Must be
+ * in ASCII order, so that we can narrow down the list as
+ * necessary.
+ */
+ const struct iso2022_escape *escapes;/* must be sorted in ASCII order! */
+ int nescapes;
+
+ /*
+ * We assign indices from 0 upwards to the sub-charsets of a
+ * given ISO 2022 subset. nbytes[i] tells us how many bytes per
+ * character are required by sub-charset i. (It's a string
+ * mainly because that makes it easier to declare in C syntax
+ * than an int array.)
+ */
+ char const *nbytes;
+
+ /*
+ * The characters in this string are indices-plus-one (so that
+ * NUL can still terminate) of escape sequences in `escapes'.
+ * These escapes are output in the given sequence to reset the
+ * encoding state, unless it turns out that a given escape
+ * would not change the state at all.
+ */
+ char const *reset;
+
+ /*
+ * Initial value of s1, in case the default container contents
+ * needs to be something other than charset 0 in all cases.
+ * (Note that this must have the top bit set!)
+ */
+ unsigned long s1;
+
+ /*
+ * For output, some ISO 2022 subsets _mandate_ an initial shift
+ * sequence. If so, here it is so we can output it. (For the
+ * sake of basic sanity we won't bother to _require_ it on
+ * input, although it should of course be listed under
+ * `escapes' above so that we ignore it when present.)
+ */
+ char const *initial_sequence;
+
+ /*
+ * Is this an 8-bit ISO 2022 subset?
+ */
+ int eightbit;
+
+ /*
+ * Function calls to do the actual translation.
+ */
+ long int (*to_ucs)(int subcharset, unsigned long bytes);
+ int (*from_ucs)(long int ucs, int *subcharset, unsigned long *bytes);
+};
+
+static void read_iso2022s(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ struct iso2022 const *iso = (struct iso2022 *)charset->data;
+
+ /*
+ * For reading ISO-2022 subsets, we divide up our state
+ * variables as follows:
+ *
+ * - The top byte of s0 (bits 31:24) indicates, if nonzero,
+ * that we are part-way through a recognised ISO-2022 escape
+ * sequence. Five of those bits (31:27) give the index of
+ * the first member of the escapes list matching what we
+ * have so far; the remaining three (26:24) give the number
+ * of characters we have seen so far.
+ *
+ * - The top bit of s1 (bit 31) is non-zero at all times, to
+ * indicate that we have performed any necessary
+ * initialisation. When we start, we detect a zero s1 and
+ * respond to it by initialising the default container
+ * contents.
+ *
+ * - The next three bits of s1 (bits 30:28) indicate which
+ * _container_ is currently selected. This isn't quite as
+ * simple as it sounds, since we have to preserve memory of
+ * which of the SI/SO containers we came from when we're
+ * temporarily in SS2/SS3. Hence, what happens is:
+ * + bit 28 indicates SI/SO.
+ * + if we're in an SS2/SS3 container, that's indicated by
+ * the two bits above that being nonzero and holding
+ * either 2 or 3.
+ * + Hence: 0 is SI, 1 is SO, 4 is SS2-from-SI, 5 is
+ * SS2-from-SO, 6 is SS3-from-SI, 7 is SS3-from-SO.
+ * + For added fun: in an _8-bit_ ISO 2022 subset, we have
+ * the further special value 2, which means that we're
+ * theoretically in SI but the current character being
+ * accumulated is composed of 8-bit characters and will
+ * therefore be interpreted as if in SO.
+ *
+ * - The next nibble of s1 (27:24) indicates how many bytes
+ * have been accumulated in the current character.
+ *
+ * - The remaining three bytes of s1 are divided into four
+ * six-bit sections, and each section gives the current
+ * sub-charset selected in one of the possible containers.
+ * (Those containers are SI, SO, SS2 and SS3, respectively
+ * and in order from the bottom of s0 to the top.)
+ *
+ * - The bottom 24 bits of s0 give the accumulated character
+ * data so far.
+ *
+ * (Note that this means s1 contains all the parts of the state
+ * which might need to be operated on by escape sequences.
+ * Cunning, eh?)
+ */
+
+ if (!(state->s1 & 0x80000000)) {
+ state->s1 = iso->s1;
+ }
+
+ /*
+ * So. Firstly, we process escape sequences, if we're in the
+ * middle of one or if we see a possible introducer (SI, SO,
+ * ESC).
+ */
+ if ((state->s0 >> 24) ||
+ (input_chr == SO || input_chr == SI || input_chr == ESC)) {
+ int n = (state->s0 >> 24) & 7, i = (state->s0 >> 27), oi = i, j;
+
+ /*
+ * If this is the start of an escape sequence, we might be
+ * in mid-character. If so, clear the character state and
+ * emit an error token for the incomplete character.
+ */
+ if (state->s1 & 0x0F000000) {
+ state->s1 &= ~0x0F000000;
+ state->s0 &= 0xFF000000;
+ /*
+ * If we were in the SS2 or SS3 container, we
+ * automatically exit it.
+ */
+ if (state->s1 & 0x60000000)
+ state->s1 &= 0x9FFFFFFF;
+ emit(emitctx, ERROR);
+ }
+
+ j = i;
+ while (j < iso->nescapes &&
+ !memcmp(iso->escapes[j].sequence,
+ iso->escapes[oi].sequence, n)) {
+ if (iso->escapes[j].sequence[n] < input_chr)
+ i = ++j;
+ else
+ break;
+ }
+ if (i >= iso->nescapes ||
+ memcmp(iso->escapes[i].sequence,
+ iso->escapes[oi].sequence, n) ||
+ iso->escapes[i].sequence[n] != input_chr) {
+ /*
+ * This character does not appear in any valid escape
+ * sequence. Therefore, we must emit all the characters
+ * we had previously swallowed, plus this one, and
+ * return to non-escape-sequence state.
+ */
+ for (j = 0; j < n; j++)
+ emit(emitctx, iso->escapes[oi].sequence[j]);
+ emit(emitctx, input_chr);
+ state->s0 = 0;
+ return;
+ }
+
+ /*
+ * Otherwise, we have found an additional character in our
+ * escape sequence. See if we have reached the _end_ of our
+ * sequence (and therefore must process the sequence).
+ */
+ n++;
+ if (!iso->escapes[i].sequence[n]) {
+ state->s0 = 0;
+ state->s1 &= iso->escapes[i].andbits;
+ state->s1 ^= iso->escapes[i].xorbits;
+ return;
+ }
+
+ /*
+ * Failing _that_, we simply update our escape-sequence-
+ * tracking state.
+ */
+ assert(i < 32 && n < 8);
+ state->s0 = (i << 27) | (n << 24);
+ return;
+ }
+
+ /*
+ * If this isn't an escape sequence, it must be part of a
+ * character. One possibility is that it's a control character
+ * (00-20 or 7F-9F; also in non-8-bit ISO 2022 subsets I'm
+ * going to treat all top-half characters as controls), in
+ * which case we output it verbatim.
+ */
+ if (input_chr < 0x21 ||
+ (input_chr > 0x7E && (!iso->eightbit || input_chr < 0xA0))) {
+ /*
+ * We might be in mid-multibyte-character. If so, clear the
+ * character state and emit an error token for the
+ * incomplete character.
+ */
+ if (state->s1 & 0x0F000000) {
+ state->s1 &= ~0x0F000000;
+ state->s0 &= 0xFF000000;
+ emit(emitctx, ERROR);
+ /*
+ * If we were in the SS2 or SS3 container, we
+ * automatically exit it.
+ */
+ if (state->s1 & 0x60000000)
+ state->s1 &= 0x9FFFFFFF;
+ }
+
+ emit(emitctx, input_chr);
+ return;
+ }
+
+ /*
+ * Otherwise, accumulate character data.
+ */
+ {
+ unsigned long chr;
+ int chrlen, cont, subcharset, bytes;
+
+ /*
+ * Verify that we've seen the right kind of character for
+ * what we're currently doing. This only matters in 8-bit
+ * subsets.
+ */
+ if (iso->eightbit) {
+ cont = (state->s1 >> 28) & 7;
+ /*
+ * If cont==0, we're entitled to see either GL or GR
+ * characters. If cont==2, we expect only GR; otherwise
+ * we expect only GL.
+ *
+ * If we see a GR character while cont==0, we set
+ * cont=2 immediately.
+ */
+ if ((cont == 2 && !(input_chr & 0x80)) ||
+ (cont != 0 && cont != 2 && (input_chr & 0x80))) {
+ /*
+ * Clear the previous character; it was prematurely
+ * terminated by this error.
+ */
+ state->s1 &= ~0x0F000000;
+ state->s0 &= 0xFF000000;
+ emit(emitctx, ERROR);
+ /*
+ * If we were in the SS2 or SS3 container, we
+ * automatically exit it.
+ */
+ if (state->s1 & 0x60000000)
+ state->s1 &= 0x9FFFFFFF;
+ }
+
+ if (cont == 0 && (input_chr & 0x80)) {
+ state->s1 |= 0x20000000;
+ }
+ }
+
+ /* The current character and its length. */
+ chr = ((state->s0 & 0x00FFFFFF) << 8) | (input_chr & 0x7F);
+ chrlen = ((state->s1 >> 24) & 0xF) + 1;
+ /* The current sub-charset. */
+ cont = (state->s1 >> 28) & 7;
+ if (cont > 1) cont >>= 1;
+ subcharset = (state->s1 >> (6*cont)) & 0x3F;
+ /* The number of bytes-per-character in that sub-charset. */
+ bytes = iso->nbytes[subcharset];
+
+ /*
+ * If this character is now complete, we convert and emit
+ * it. Otherwise, we simply update the state and return.
+ */
+ if (chrlen >= bytes) {
+ emit(emitctx, iso->to_ucs(subcharset, chr));
+ chr = chrlen = 0;
+ /*
+ * If we were in the SS2 or SS3 container, we
+ * automatically exit it.
+ */
+ if (state->s1 & 0x60000000)
+ state->s1 &= 0x9FFFFFFF;
+ }
+ state->s0 = (state->s0 & 0xFF000000) | chr;
+ state->s1 = (state->s1 & 0xF0FFFFFF) | (chrlen << 24);
+ }
+}
+
+static int write_iso2022s(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ struct iso2022 const *iso = (struct iso2022 *)charset->data;
+ int subcharset, len, i, j, cont, topbit = 0;
+ unsigned long bytes;
+
+ /*
+ * For output, our s1 state variable contains most of the same
+ * stuff as it did for input - initial-state indicator bit,
+ * current container, and current subcharset selected in each
+ * container.
+ */
+
+ /*
+ * Analyse the character and find out what subcharset it needs
+ * to go in.
+ */
+ if (input_chr >= 0 && !iso->from_ucs(input_chr, &subcharset, &bytes))
+ return FALSE;
+
+ if (!(state->s1 & 0x80000000)) {
+ state->s1 = iso->s1;
+ if (iso->initial_sequence)
+ for (i = 0; iso->initial_sequence[i]; i++)
+ emit(emitctx, iso->initial_sequence[i]);
+ }
+
+ if (input_chr == -1) {
+ unsigned long oldstate;
+ int k;
+
+ /*
+ * Special case: reset encoding state.
+ */
+ for (i = 0; iso->reset[i]; i++) {
+ j = iso->reset[i] - 1;
+ oldstate = state->s1;
+ state->s1 &= iso->escapes[j].andbits;
+ state->s1 ^= iso->escapes[j].xorbits;
+ if (state->s1 != oldstate) {
+ /* We must actually emit this sequence. */
+ for (k = 0; iso->escapes[j].sequence[k]; k++)
+ emit(emitctx, iso->escapes[j].sequence[k]);
+ }
+ }
+
+ return TRUE;
+ }
+
+ /*
+ * Now begins the fun. We now know what subcharset we want. So
+ * we must find out which container we should select it into,
+ * select it into it if necessary, select that _container_ if
+ * necessary, and then output the given bytes.
+ */
+ for (i = 0; i < iso->nescapes; i++)
+ if (iso->escapes[i].subcharset == subcharset &&
+ !(iso->escapes[i].container & RO))
+ break;
+ assert(i < iso->nescapes);
+
+ /*
+ * We've found the escape sequence which would select this
+ * subcharset into a container. However, that subcharset might
+ * already _be_ selected in that container! Check before we go
+ * to the effort of emitting the sequence.
+ */
+ cont = iso->escapes[i].container &~ RO;
+ if (((state->s1 >> (6*cont)) & 0x3F) != (unsigned)subcharset) {
+ for (j = 0; iso->escapes[i].sequence[j]; j++)
+ emit(emitctx, iso->escapes[i].sequence[j]);
+ state->s1 &= iso->escapes[i].andbits;
+ state->s1 ^= iso->escapes[i].xorbits;
+ }
+
+ /*
+ * Now we know what container our subcharset is in, so we want
+ * to select that container.
+ */
+ if (cont > 1) {
+ /* SS2 or SS3; just output the sequence and be done. */
+ emit(emitctx, ESC);
+ emit(emitctx, 'L' + cont); /* comes out to 'N' or 'O' */
+ } else {
+ /*
+ * Emit SI or SO, but only if the current container isn't already
+ * the right one.
+ *
+ * Also, in an 8-bit subset, we need not do this; we'll
+ * just use 8-bit characters to output SO-container
+ * characters.
+ */
+ if (iso->eightbit && cont == 1 && ((state->s1 >> 28) & 7) == 0) {
+ topbit = 0x80;
+ } else if (((state->s1 >> 28) & 7) != (unsigned)cont) {
+ emit(emitctx, cont ? SO : SI);
+ state->s1 = (state->s1 & 0x8FFFFFFF) | (cont << 28);
+ }
+ }
+
+ /*
+ * We're done. Subcharset is selected in container, container
+ * is selected. All we need now is to write out the bytes.
+ */
+ len = iso->nbytes[subcharset];
+ while (len--)
+ emit(emitctx, ((bytes >> (8*len)) & 0xFF) | topbit);
+
+ return TRUE;
+}
+
+/*
+ * ISO-2022-JP, defined in RFC 1468.
+ */
+static long int iso2022jp_to_ucs(int subcharset, unsigned long bytes)
+{
+ switch (subcharset) {
+ case 1: /* JIS X 0201 bottom half */
+ if (bytes == 0x5C)
+ return 0xA5;
+ else if (bytes == 0x7E)
+ return 0x203E;
+ /* else fall through to ASCII */
+ case 0: return bytes; /* one-byte ASCII */
+ /* (no break needed since all control paths have returned) */
+ case 2: return jisx0208_to_unicode(((bytes >> 8) & 0xFF) - 0x21,
+ ((bytes ) & 0xFF) - 0x21);
+ default: return ERROR;
+ }
+}
+static int iso2022jp_from_ucs(long int ucs, int *subcharset,
+ unsigned long *bytes)
+{
+ int r, c;
+ if (ucs < 0x80) {
+ *subcharset = 0;
+ *bytes = ucs;
+ return 1;
+ } else if (ucs == 0xA5 || ucs == 0x203E) {
+ *subcharset = 1;
+ *bytes = (ucs == 0xA5 ? 0x5C : 0x7E);
+ return 1;
+ } else if (unicode_to_jisx0208(ucs, &r, &c)) {
+ *subcharset = 2;
+ *bytes = ((r+0x21) << 8) | (c+0x21);
+ return 1;
+ } else {
+ return 0;
+ }
+}
+static const struct iso2022_escape iso2022jp_escapes[] = {
+ {"\033$@", 0xFFFFFFC0, 0x00000002, -1, -1}, /* we ignore this one */
+ {"\033$B", 0xFFFFFFC0, 0x00000002, 0, 2},
+ {"\033(B", 0xFFFFFFC0, 0x00000000, 0, 0},
+ {"\033(J", 0xFFFFFFC0, 0x00000001, 0, 1},
+};
+static const struct iso2022 iso2022jp = {
+ iso2022jp_escapes, lenof(iso2022jp_escapes),
+ "\1\1\2", "\3", 0x80000000, NULL, FALSE,
+ iso2022jp_to_ucs, iso2022jp_from_ucs
+};
+const charset_spec charset_CS_ISO2022_JP = {
+ CS_ISO2022_JP, read_iso2022s, write_iso2022s, &iso2022jp
+};
+
+/*
+ * ISO-2022-KR, defined in RFC 1557.
+ */
+static long int iso2022kr_to_ucs(int subcharset, unsigned long bytes)
+{
+ switch (subcharset) {
+ case 0: return bytes; /* one-byte ASCII */
+ case 1: return ksx1001_to_unicode(((bytes >> 8) & 0xFF) - 0x21,
+ ((bytes ) & 0xFF) - 0x21);
+ default: return ERROR;
+ }
+}
+static int iso2022kr_from_ucs(long int ucs, int *subcharset,
+ unsigned long *bytes)
+{
+ int r, c;
+ if (ucs < 0x80) {
+ *subcharset = 0;
+ *bytes = ucs;
+ return 1;
+ } else if (unicode_to_ksx1001(ucs, &r, &c)) {
+ *subcharset = 1;
+ *bytes = ((r+0x21) << 8) | (c+0x21);
+ return 1;
+ } else {
+ return 0;
+ }
+}
+static const struct iso2022_escape iso2022kr_escapes[] = {
+ {"\016", 0x8FFFFFFF, 0x10000000, -1, -1},
+ {"\017", 0x8FFFFFFF, 0x00000000, 0, 0},
+ {"\033$)C", 0xFFFFF03F, 0x00000040, 1, 1}, /* bits[11:6] <- 1 */
+};
+static const struct iso2022 iso2022kr = {
+ iso2022kr_escapes, lenof(iso2022kr_escapes),
+ "\1\2", "\2", 0x80000040, "\033$)C", FALSE,
+ iso2022kr_to_ucs, iso2022kr_from_ucs
+};
+const charset_spec charset_CS_ISO2022_KR = {
+ CS_ISO2022_KR, read_iso2022s, write_iso2022s, &iso2022kr
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_ISO2022_JP)
+ENUM_CHARSET(CS_ISO2022_KR)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/istate.c b/app/tools/halibut/charset/istate.c
new file mode 100644
index 0000000..9c6f8c0
--- /dev/null
+++ b/app/tools/halibut/charset/istate.c
@@ -0,0 +1,3 @@
+#include "charset.h"
+
+const charset_state charset_init_state = CHARSET_INIT_STATE;
diff --git a/app/tools/halibut/charset/jisx0208.c b/app/tools/halibut/charset/jisx0208.c
new file mode 100644
index 0000000..c9f161d
--- /dev/null
+++ b/app/tools/halibut/charset/jisx0208.c
@@ -0,0 +1,2021 @@
+/*
+ * JIS X 0208 implementation for libcharset. (This is the character
+ * set itself, not any particular multibyte encoding of it.
+ * Multibyte encodings of this character set are handled
+ * separately.)
+ */
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * These tables are generated from the JIS X 0208 <-> Unicode
+ * character mapping found at
+ *
+ * http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
+ */
+
+/*
+ * Mapping from JIS X 0208 to Unicode. For these purposes JIS X
+ * 0208 is considered to be a 94x94 square array, with coordinates
+ * running from (0,0) to (93,93).
+ *
+ * Generated by running the following sh+Perl over JIS0208.TXT:
+
+cat JIS0208.TXT | \
+perl -ne '$a{hex$1,hex$2}=$3 if /^[^#]\S+\s+0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {for $r (0..93) { $o=" {"; for $c (0..93) {' \
+ -e '$k=$a{$r+33,$c+33}; $k=" ERROR" unless defined $k;' \
+ -e '$o .= ", " if $c > 0; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= $k; } print "$o},\n"; }}'
+
+ */
+
+static const unsigned short jisx0208_forward[94][94] = {
+ {0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, 0xFF1F,
+ 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E, 0xFFE3, 0xFF3F,
+ 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, 0x3005, 0x3006, 0x3007,
+ 0x30FC, 0x2015, 0x2010, 0xFF0F, 0x005C, 0x301C, 0x2016, 0xFF5C, 0x2026,
+ 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015,
+ 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C,
+ 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0x2212, 0x00B1, 0x00D7,
+ 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234,
+ 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, 0xFF04, 0x00A2,
+ 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7, 0x2606, 0x2605,
+ 0x25CB, 0x25CF, 0x25CE, 0x25C7},
+ {0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012,
+ 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x2208, 0x220B,
+ 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x2227, 0x2228, 0x00AC, 0x21D2,
+ 0x21D4, 0x2200, 0x2203, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x2220, 0x22A5, 0x2312, 0x2202,
+ 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235,
+ 0x222B, 0x222C, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, 0x00B6, ERROR,
+ ERROR, ERROR, ERROR, 0x25EF},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xFF10, 0xFF11, 0xFF12,
+ 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0xFF21, 0xFF22, 0xFF23, 0xFF24,
+ 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D,
+ 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36,
+ 0xFF37, 0xFF38, 0xFF39, 0xFF3A, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48,
+ 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51,
+ 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
+ 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052,
+ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B,
+ 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064,
+ 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D,
+ 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091,
+ 0x3092, 0x3093, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9,
+ 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2,
+ 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB,
+ 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4,
+ 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD,
+ 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6,
+ 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
+ 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1,
+ 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
+ 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3,
+ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x03B1, 0x03B2, 0x03B3, 0x03B4,
+ 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD,
+ 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
+ 0x03C8, 0x03C9, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420,
+ 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
+ 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524,
+ 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523,
+ 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F,
+ 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022,
+ 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6,
+ 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4,
+ 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309,
+ 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D,
+ 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170,
+ 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3,
+ 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF,
+ 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328,
+ 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15,
+ 0x98F2, 0x6DEB, 0x80E4, 0x852D},
+ {0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD,
+ 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893, 0x81FC, 0x6E26,
+ 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC,
+ 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, 0x834F, 0x990C, 0x53E1, 0x55B6,
+ 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B,
+ 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB,
+ 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186,
+ 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF,
+ 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276, 0x82D1,
+ 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9,
+ 0x592E, 0x5965, 0x5F80, 0x5FDC},
+ {0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C,
+ 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6,
+ 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3,
+ 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF,
+ 0x5609, 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6,
+ 0x6B4C, 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1,
+ 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8,
+ 0x8FE6, 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B,
+ 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A,
+ 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062,
+ 0x61D0, 0x6212, 0x62D0, 0x6539},
+ {0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, 0x82A5,
+ 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916, 0x54B3, 0x5BB3,
+ 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, 0x8857, 0x8A72, 0x93A7,
+ 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF, 0x86CE, 0x920E, 0x5283,
+ 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372,
+ 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694,
+ 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B,
+ 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B,
+ 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6, 0x691B,
+ 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC, 0x938C, 0x565B,
+ 0x9D28, 0x6822, 0x8305, 0x8431},
+ {0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A,
+ 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB,
+ 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1,
+ 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0,
+ 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0,
+ 0x809D, 0x8266, 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593,
+ 0x9591, 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8,
+ 0x5DCC, 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811,
+ 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947,
+ 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7,
+ 0x65E2, 0x671F, 0x68CB, 0x68C4},
+ {0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00,
+ 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, 0x8F1D, 0x98E2,
+ 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280,
+ 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, 0x8ABC, 0x8B70,
+ 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70,
+ 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18,
+ 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551,
+ 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08,
+ 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8, 0x62D2,
+ 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6,
+ 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC},
+ {0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321,
+ 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050,
+ 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8,
+ 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0,
+ 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850,
+ 0x7C81, 0x50C5, 0x52E4, 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D,
+ 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F,
+ 0x8B39, 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A,
+ 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177,
+ 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32,
+ 0x6ADB, 0x91E7, 0x5C51, 0x5C48},
+ {0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, 0x7C82,
+ 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, 0x7FA4,
+ 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144,
+ 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, 0x6176,
+ 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566,
+ 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD,
+ 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8,
+ 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A,
+ 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, 0x5026,
+ 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA,
+ 0x61B2, 0x61F8, 0x62F3, 0x6372},
+ {0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C,
+ 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855,
+ 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90,
+ 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B,
+ 0x53E4, 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238,
+ 0x6545, 0x67AF, 0x6E56, 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0,
+ 0x864E, 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92,
+ 0x4F0D, 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7,
+ 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9,
+ 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9,
+ 0x52FE, 0x539A, 0x53E3, 0x5411},
+ {0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5,
+ 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C,
+ 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821,
+ 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687,
+ 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003,
+ 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B,
+ 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D,
+ 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5,
+ 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD,
+ 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD,
+ 0x60DA, 0x9AA8, 0x72DB, 0x8FBC},
+ {0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, 0x61C7,
+ 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, 0x826E, 0x9B42,
+ 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, 0x6C99,
+ 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, 0x5750, 0x5EA7, 0x632B, 0x50B5,
+ 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D,
+ 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826,
+ 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728,
+ 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4,
+ 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, 0x643E,
+ 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, 0x685C, 0x9BAD,
+ 0x7B39, 0x5319, 0x518A, 0x5237},
+ {0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690,
+ 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2,
+ 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97,
+ 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B,
+ 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB,
+ 0x58EB, 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7,
+ 0x601D, 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62,
+ 0x6B7B, 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2,
+ 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7,
+ 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57,
+ 0x5BFA, 0x6148, 0x6301, 0x6642},
+ {0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C,
+ 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58, 0x9D2B,
+ 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9,
+ 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, 0x5B9F, 0x8500, 0x7BE0,
+ 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04,
+ 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA,
+ 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235,
+ 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6,
+ 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3,
+ 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC,
+ 0x9700, 0x56DA, 0x53CE, 0x5468},
+ {0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB,
+ 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90,
+ 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F,
+ 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26,
+ 0x91CD, 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B,
+ 0x587E, 0x719F, 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC,
+ 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3,
+ 0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6,
+ 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8,
+ 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055,
+ 0x92E4, 0x9664, 0x50B7, 0x511F},
+ {0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617, 0x5968,
+ 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, 0x5E84, 0x5E8A,
+ 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C,
+ 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, 0x6D88, 0x6E09,
+ 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965,
+ 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549,
+ 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4,
+ 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57,
+ 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5, 0x64FE,
+ 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, 0x8B72, 0x91B8,
+ 0x9320, 0x5631, 0x57F4, 0x98FE},
+ {0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF,
+ 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD,
+ 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78,
+ 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF,
+ 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA,
+ 0x4EC1, 0x5203, 0x5875, 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A,
+ 0x8FC5, 0x9663, 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8,
+ 0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B,
+ 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4,
+ 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919,
+ 0x83C5, 0x9817, 0x96C0, 0x88FE},
+ {0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236,
+ 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, 0x6674,
+ 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, 0x8056,
+ 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, 0x9752,
+ 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5,
+ 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64,
+ 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D,
+ 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148,
+ 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0,
+ 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D,
+ 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA},
+ {0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5,
+ 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38,
+ 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8,
+ 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956,
+ 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20,
+ 0x50E7, 0x5275, 0x53CC, 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D,
+ 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB,
+ 0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89,
+ 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358,
+ 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C,
+ 0x9A12, 0x50CF, 0x5897, 0x618E},
+ {0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F,
+ 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF,
+ 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D,
+ 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815,
+ 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28,
+ 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B,
+ 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8,
+ 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C,
+ 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258,
+ 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE,
+ 0x8338, 0x51E7, 0x86F8, 0x53EA},
+ {0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, 0x8FBF,
+ 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39, 0x5358, 0x5606,
+ 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, 0x6E5B, 0x70AD, 0x77ED,
+ 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, 0x86CB, 0x8A95, 0x935B, 0x56E3,
+ 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024,
+ 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E,
+ 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4,
+ 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99,
+ 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B, 0x914E,
+ 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457, 0x8CAF, 0x4E01,
+ 0x5146, 0x51CB, 0x558B, 0x5BF5},
+ {0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311,
+ 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178,
+ 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5,
+ 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673,
+ 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A,
+ 0x6802, 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4,
+ 0x9354, 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A,
+ 0x91E3, 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448,
+ 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5,
+ 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247,
+ 0x8A02, 0x8AE6, 0x8E44, 0x9013},
+ {0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4,
+ 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9, 0x64A4, 0x8F4D,
+ 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F,
+ 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, 0x6BBF, 0x6FB1, 0x7530,
+ 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597,
+ 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825,
+ 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC,
+ 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B,
+ 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7, 0x6DD8,
+ 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54,
+ 0x7B52, 0x7CD6, 0x7D71, 0x5230},
+ {0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F,
+ 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802,
+ 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053,
+ 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763,
+ 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81,
+ 0x6934, 0x5C4A, 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F,
+ 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D,
+ 0x5948, 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A,
+ 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3,
+ 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679,
+ 0x5EFF, 0x65E5, 0x4E73, 0x5165},
+ {0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, 0x79B0,
+ 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, 0x637B, 0x649A,
+ 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3,
+ 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, 0x5DF4, 0x628A,
+ 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75,
+ 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3,
+ 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885,
+ 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F,
+ 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF, 0x6CCA,
+ 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206,
+ 0x7E1B, 0x83AB, 0x99C1, 0x9EA6},
+ {0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C,
+ 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10,
+ 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC,
+ 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F,
+ 0x6C3E, 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9,
+ 0x8CA9, 0x7BC4, 0x91C6, 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A,
+ 0x76E4, 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87,
+ 0x5F7C, 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2,
+ 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB,
+ 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787,
+ 0x6BD8, 0x7435, 0x7709, 0x7F8E},
+ {0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1,
+ 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, 0x5A9B,
+ 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, 0x74E2,
+ 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, 0x82D7,
+ 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C,
+ 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0,
+ 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577,
+ 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C,
+ 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, 0x821E,
+ 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, 0x4F0F,
+ 0x526F, 0x5FA9, 0x5E45, 0x670D},
+ {0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF,
+ 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A,
+ 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75,
+ 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589,
+ 0x965B, 0x7C73, 0x9801, 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5,
+ 0x8511, 0x7B86, 0x504F, 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4,
+ 0x904D, 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA,
+ 0x5703, 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893,
+ 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305,
+ 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1,
+ 0x6367, 0x653E, 0x65B9, 0x670B},
+ {0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC,
+ 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C,
+ 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9,
+ 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8,
+ 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5,
+ 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3,
+ 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6,
+ 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE,
+ 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D,
+ 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D,
+ 0x9EBF, 0x4E07, 0x6162, 0x6E80},
+ {0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6,
+ 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11, 0x7720,
+ 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F,
+ 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF, 0x8FF7, 0x9298, 0x9CF4,
+ 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA,
+ 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2,
+ 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905,
+ 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301,
+ 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384,
+ 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453,
+ 0x6109, 0x6108, 0x6CB9, 0x7652},
+ {0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D,
+ 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337,
+ 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D,
+ 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C,
+ 0x5996, 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8,
+ 0x6D0B, 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9,
+ 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32,
+ 0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765,
+ 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375,
+ 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65,
+ 0x674E, 0x68A8, 0x7406, 0x7483},
+ {0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387, 0x7ACB,
+ 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B,
+ 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86,
+ 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599, 0x6881, 0x6DBC, 0x731F,
+ 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675,
+ 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433,
+ 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F,
+ 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2,
+ 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62, 0x66A6,
+ 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B, 0x6190, 0x6F23,
+ 0x7149, 0x7C3E, 0x7DF4, 0x806F},
+ {0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF,
+ 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A,
+ 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D,
+ 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A,
+ 0x8CC4, 0x8107, 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B,
+ 0x85C1, 0x8568, 0x6900, 0x6E7E, 0x7897, 0x8155, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F, 0x4E42,
+ 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212, 0x5F0D, 0x4E8E,
+ 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD,
+ 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED, 0x4EDF, 0x4EF7, 0x4F09,
+ 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F,
+ 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118,
+ 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4,
+ 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6,
+ 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043, 0x5047,
+ 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C, 0x5078, 0x5080,
+ 0x509A, 0x5085, 0x50B4, 0x50B2},
+ {0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3,
+ 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114,
+ 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152,
+ 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182,
+ 0x56D8, 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4,
+ 0x51A6, 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0,
+ 0x51B5, 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED,
+ 0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A,
+ 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254,
+ 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292,
+ 0x5271, 0x5288, 0x5291, 0x8FA8},
+ {0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE,
+ 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9, 0x5306,
+ 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, 0x5323, 0x532F,
+ 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4E17, 0x5349, 0x534D,
+ 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, 0x5377, 0x5382, 0x5396,
+ 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9,
+ 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D,
+ 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E,
+ 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B,
+ 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, 0x54A5,
+ 0x54AC, 0x54C4, 0x54C8, 0x54A8},
+ {0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F,
+ 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563,
+ 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D,
+ 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E,
+ 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF,
+ 0x55C4, 0x55DC, 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD,
+ 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638,
+ 0x566B, 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0,
+ 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1,
+ 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9,
+ 0x5700, 0x56FF, 0x5704, 0x5709},
+ {0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C, 0x5726,
+ 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, 0x57C0, 0x5788,
+ 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0,
+ 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, 0x57E3, 0x580B,
+ 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852,
+ 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB,
+ 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5,
+ 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD,
+ 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D, 0x5932,
+ 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, 0x5958, 0x5962,
+ 0x5960, 0x5967, 0x596C, 0x5969},
+ {0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8,
+ 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09,
+ 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A,
+ 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9,
+ 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A,
+ 0x5B36, 0x5B3E, 0x5B43, 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B,
+ 0x5B65, 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80,
+ 0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4,
+ 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05,
+ 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39,
+ 0x5C41, 0x5C46, 0x5C4E, 0x5C53},
+ {0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, 0x5C8C,
+ 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, 0x5CC5,
+ 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA,
+ 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, 0x5D22,
+ 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73,
+ 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD,
+ 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB,
+ 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36,
+ 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, 0x5E62,
+ 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, 0x5EC1,
+ 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF},
+ {0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9,
+ 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09,
+ 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41,
+ 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61,
+ 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91,
+ 0x5F87, 0x5F9E, 0x5F99, 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6,
+ 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060,
+ 0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026,
+ 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A, 0x6046,
+ 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, 0x6081,
+ 0x608D, 0x60E7, 0x6083, 0x609A},
+ {0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8,
+ 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D,
+ 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121,
+ 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A,
+ 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177,
+ 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F,
+ 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A,
+ 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8,
+ 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6,
+ 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209,
+ 0x620D, 0x620C, 0x6214, 0x621B},
+ {0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241, 0x624E,
+ 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282, 0x6289, 0x627E,
+ 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB,
+ 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, 0x62DC, 0x62CC, 0x62CA, 0x62C2,
+ 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308,
+ 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E,
+ 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B,
+ 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6,
+ 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D, 0x6417,
+ 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493,
+ 0x64A5, 0x64A9, 0x6488, 0x64BC},
+ {0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7,
+ 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4,
+ 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523,
+ 0x652B, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556,
+ 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583,
+ 0x8B8A, 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4,
+ 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A,
+ 0x6603, 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644,
+ 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662,
+ 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1,
+ 0x66B9, 0x66C9, 0x66BE, 0x66BC},
+ {0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, 0x66F0,
+ 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727, 0x9738, 0x672E,
+ 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675E, 0x6760, 0x6759,
+ 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, 0x676A, 0x678C, 0x678B,
+ 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9,
+ 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6,
+ 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E,
+ 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD,
+ 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5, 0x68A0,
+ 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922,
+ 0x6926, 0x68E1, 0x690C, 0x68CD},
+ {0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925,
+ 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6,
+ 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939,
+ 0x6974, 0x693D, 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A,
+ 0x69B2, 0x69AE, 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8,
+ 0x69CA, 0x69DD, 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C,
+ 0x6995, 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9,
+ 0x69F2, 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A,
+ 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78,
+ 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D,
+ 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3},
+ {0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE,
+ 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, 0x8616, 0x6AFA,
+ 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, 0x6B39, 0x98EE,
+ 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, 0x6B5F, 0x6B61,
+ 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95,
+ 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7,
+ 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF,
+ 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55,
+ 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E, 0x6C68,
+ 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, 0x6CD7, 0x6CC5,
+ 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE},
+ {0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B,
+ 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93,
+ 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9,
+ 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE,
+ 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA,
+ 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23,
+ 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24,
+ 0x6EFF, 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3,
+ 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2,
+ 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2,
+ 0x6F31, 0x6EEF, 0x6F32, 0x6ECC},
+ {0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F,
+ 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, 0x6FC2,
+ 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF,
+ 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, 0x700B,
+ 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D,
+ 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092,
+ 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD,
+ 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
+ 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, 0x71A8,
+ 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0,
+ 0x71EC, 0x71E7, 0x71F5, 0x71FC},
+ {0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C, 0x7230,
+ 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B, 0x7258, 0x7274,
+ 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9,
+ 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1,
+ 0x72F9, 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334,
+ 0x732F, 0x7329, 0x7325, 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A,
+ 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE,
+ 0x73BB, 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425,
+ 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441, 0x745C,
+ 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7,
+ 0x74CA, 0x74CF, 0x74D4, 0x73F1},
+ {0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8,
+ 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513,
+ 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B,
+ 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576,
+ 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D,
+ 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC,
+ 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF,
+ 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609,
+ 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B,
+ 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669,
+ 0x766A, 0x7667, 0x766C, 0x7670},
+ {0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E,
+ 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9, 0x76BA,
+ 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, 0x76E7, 0x76EA,
+ 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, 0x771E, 0x7725,
+ 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, 0x775A, 0x7768, 0x776B, 0x775B,
+ 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E,
+ 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD,
+ 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926,
+ 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C,
+ 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, 0x78BE,
+ 0x78BC, 0x78C5, 0x78CA, 0x78EC},
+ {0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C,
+ 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A,
+ 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9,
+ 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D,
+ 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37,
+ 0x7A43, 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79,
+ 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0,
+ 0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF,
+ 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED,
+ 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E,
+ 0x7B35, 0x7B28, 0x7B36, 0x7B50},
+ {0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65, 0x7B74,
+ 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F, 0x7B8D,
+ 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1,
+ 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, 0x7C11, 0x7C14, 0x7BE6,
+ 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D,
+ 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C,
+ 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56,
+ 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB,
+ 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0,
+ 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2,
+ 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06},
+ {0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F,
+ 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F,
+ 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE,
+ 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC,
+ 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2,
+ 0x7DE1, 0x7E05, 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09,
+ 0x7E0B, 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37,
+ 0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79,
+ 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F,
+ 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E,
+ 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A},
+ {0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, 0x7F58,
+ 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, 0x7F86, 0x7F83,
+ 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF,
+ 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA,
+ 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006,
+ 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F,
+ 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068,
+ 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086,
+ 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, 0x80E5,
+ 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, 0x80F1, 0x811B,
+ 0x8129, 0x8123, 0x812F, 0x814B},
+ {0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165,
+ 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195,
+ 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8,
+ 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8,
+ 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201,
+ 0x8202, 0x8205, 0x8207, 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B,
+ 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264,
+ 0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E,
+ 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF,
+ 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE,
+ 0x8306, 0x82DC, 0x8309, 0x82D9},
+ {0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345,
+ 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, 0x83A2,
+ 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375,
+ 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, 0x8403,
+ 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422,
+ 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A,
+ 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C,
+ 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9,
+ 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521,
+ 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC,
+ 0x8540, 0x8563, 0x8558, 0x8548},
+ {0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A,
+ 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E,
+ 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5,
+ 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622,
+ 0x861A, 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671,
+ 0x8693, 0x86A3, 0x86A9, 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4,
+ 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC,
+ 0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB,
+ 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737, 0x873B,
+ 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774,
+ 0x8757, 0x8768, 0x876E, 0x8759},
+ {0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB,
+ 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6,
+ 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7,
+ 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836,
+ 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862,
+ 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882,
+ 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF,
+ 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902,
+ 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943,
+ 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938,
+ 0x894C, 0x891D, 0x8960, 0x895E},
+ {0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, 0x8983,
+ 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6, 0x89AC, 0x89AF,
+ 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7,
+ 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25,
+ 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C,
+ 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6,
+ 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7,
+ 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C,
+ 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33, 0x97AB,
+ 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49,
+ 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B},
+ {0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92,
+ 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C,
+ 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89,
+ 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD,
+ 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4,
+ 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07,
+ 0x8D0F, 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67,
+ 0x8D6D, 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF,
+ 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3,
+ 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42,
+ 0x8E35, 0x8E30, 0x8E34, 0x8E4A},
+ {0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A,
+ 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87, 0x8E85, 0x8E84,
+ 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC,
+ 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3,
+ 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19,
+ 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39,
+ 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C,
+ 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7,
+ 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005, 0x8FF9,
+ 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, 0x900B, 0x9027,
+ 0x9036, 0x9035, 0x9039, 0x8FF8},
+ {0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058,
+ 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081,
+ 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2,
+ 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A,
+ 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189,
+ 0x9182, 0x91A2, 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0,
+ 0x91C1, 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC,
+ 0x91F5, 0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E,
+ 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250,
+ 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9,
+ 0x930F, 0x92FA, 0x9344, 0x932E},
+ {0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C, 0x9360,
+ 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, 0x93B9, 0x93D6,
+ 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4,
+ 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942B, 0x9435,
+ 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E,
+ 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E,
+ 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599,
+ 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA,
+ 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC, 0x95E1,
+ 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F,
+ 0x964B, 0x9677, 0x965C, 0x965E},
+ {0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697,
+ 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9,
+ 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9,
+ 0x9704, 0x9706, 0x9708, 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719,
+ 0x9724, 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748,
+ 0x9742, 0x9749, 0x975C, 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B,
+ 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F,
+ 0x9790, 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6,
+ 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5,
+ 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F,
+ 0x984B, 0x986B, 0x986F, 0x9870},
+ {0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, 0x98C3,
+ 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, 0x9921,
+ 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, 0x9942,
+ 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955, 0x9997,
+ 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8,
+ 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F,
+ 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43,
+ 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64,
+ 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, 0x9AD1,
+ 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, 0x9AEB,
+ 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7},
+ {0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27,
+ 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F,
+ 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96,
+ 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6,
+ 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A,
+ 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06,
+ 0x9C08, 0x9C12, 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21,
+ 0x9C30, 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76,
+ 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06,
+ 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41,
+ 0x9D3F, 0x9D3E, 0x9D46, 0x9D48},
+ {0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87,
+ 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1,
+ 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8,
+ 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79,
+ 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D,
+ 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF,
+ 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF,
+ 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08,
+ 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63,
+ 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72,
+ 0x9F76, 0x9F95, 0x9F9C, 0x9FA0},
+ {0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+};
+
+/*
+ * Mapping from Unicode back to JIS X 0208.
+ *
+ * This inverse is done the same way the SBCS ones are done: I
+ * provide a list of JIS X 0208 positions, sorted into ascending
+ * order of their Unicode values. Then we can binary-search through
+ * this list, referring to the above table for each comparison, to
+ * find the coordinates for a given code point.
+ *
+ * Generated by running the following sh+Perl over JIS0208.TXT:
+
+cat JIS0208.TXT | \
+perl -ne '$a{$3}=[hex$1,hex$2] if /^[^#]\S+\s+0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {$o=" ";for $k (sort keys %a) { ($r,$c) = @{$a{$k}}; ' \
+ -e '$o .= $C; $C = ", "; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= sprintf "{%d,%d}", $r-33,$c-33; } print "$o\n"; }'
+
+ */
+
+static const struct { unsigned char r, c; } jisx0208_backward[] = {
+ {0,31}, {0,80}, {0,81}, {0,87}, {0,14}, {1,43}, {0,74}, {0,61}, {0,12},
+ {1,88}, {0,62}, {0,63}, {5,0}, {5,1}, {5,2}, {5,3}, {5,4}, {5,5}, {5,6},
+ {5,7}, {5,8}, {5,9}, {5,10}, {5,11}, {5,12}, {5,13}, {5,14}, {5,15},
+ {5,16}, {5,17}, {5,18}, {5,19}, {5,20}, {5,21}, {5,22}, {5,23}, {5,32},
+ {5,33}, {5,34}, {5,35}, {5,36}, {5,37}, {5,38}, {5,39}, {5,40}, {5,41},
+ {5,42}, {5,43}, {5,44}, {5,45}, {5,46}, {5,47}, {5,48}, {5,49}, {5,50},
+ {5,51}, {5,52}, {5,53}, {5,54}, {5,55}, {6,6}, {6,0}, {6,1}, {6,2},
+ {6,3}, {6,4}, {6,5}, {6,7}, {6,8}, {6,9}, {6,10}, {6,11}, {6,12}, {6,13},
+ {6,14}, {6,15}, {6,16}, {6,17}, {6,18}, {6,19}, {6,20}, {6,21}, {6,22},
+ {6,23}, {6,24}, {6,25}, {6,26}, {6,27}, {6,28}, {6,29}, {6,30}, {6,31},
+ {6,32}, {6,48}, {6,49}, {6,50}, {6,51}, {6,52}, {6,53}, {6,55}, {6,56},
+ {6,57}, {6,58}, {6,59}, {6,60}, {6,61}, {6,62}, {6,63}, {6,64}, {6,65},
+ {6,66}, {6,67}, {6,68}, {6,69}, {6,70}, {6,71}, {6,72}, {6,73}, {6,74},
+ {6,75}, {6,76}, {6,77}, {6,78}, {6,79}, {6,80}, {6,54}, {0,29}, {0,28},
+ {0,33}, {0,37}, {0,38}, {0,39}, {0,40}, {1,86}, {1,87}, {0,36}, {0,35},
+ {1,82}, {0,75}, {0,76}, {1,7}, {0,77}, {1,81}, {1,10}, {1,11}, {1,9},
+ {1,12}, {1,44}, {1,45}, {1,46}, {1,62}, {1,47}, {1,63}, {1,25}, {1,26},
+ {0,60}, {1,68}, {1,70}, {0,70}, {1,59}, {1,41}, {1,42}, {1,32}, {1,31},
+ {1,72}, {1,73}, {0,71}, {1,71}, {1,69}, {1,65}, {0,65}, {1,64}, {0,68},
+ {0,69}, {1,66}, {1,67}, {1,29}, {1,30}, {1,27}, {1,28}, {1,60}, {1,61},
+ {7,0}, {7,11}, {7,1}, {7,12}, {7,2}, {7,13}, {7,3}, {7,14}, {7,5},
+ {7,16}, {7,4}, {7,15}, {7,6}, {7,27}, {7,22}, {7,17}, {7,8}, {7,29},
+ {7,24}, {7,19}, {7,7}, {7,23}, {7,28}, {7,18}, {7,9}, {7,25}, {7,30},
+ {7,20}, {7,10}, {7,26}, {7,31}, {7,21}, {1,2}, {1,1}, {1,4}, {1,3},
+ {1,6}, {1,5}, {1,0}, {0,93}, {0,90}, {0,92}, {0,91}, {1,93}, {0,89},
+ {0,88}, {0,73}, {0,72}, {1,85}, {1,84}, {1,83}, {0,0}, {0,1}, {0,2},
+ {0,22}, {0,24}, {0,25}, {0,26}, {0,49}, {0,50}, {0,51}, {0,52}, {0,53},
+ {0,54}, {0,55}, {0,56}, {0,57}, {0,58}, {1,8}, {1,13}, {0,43}, {0,44},
+ {0,32}, {3,0}, {3,1}, {3,2}, {3,3}, {3,4}, {3,5}, {3,6}, {3,7}, {3,8},
+ {3,9}, {3,10}, {3,11}, {3,12}, {3,13}, {3,14}, {3,15}, {3,16}, {3,17},
+ {3,18}, {3,19}, {3,20}, {3,21}, {3,22}, {3,23}, {3,24}, {3,25}, {3,26},
+ {3,27}, {3,28}, {3,29}, {3,30}, {3,31}, {3,32}, {3,33}, {3,34}, {3,35},
+ {3,36}, {3,37}, {3,38}, {3,39}, {3,40}, {3,41}, {3,42}, {3,43}, {3,44},
+ {3,45}, {3,46}, {3,47}, {3,48}, {3,49}, {3,50}, {3,51}, {3,52}, {3,53},
+ {3,54}, {3,55}, {3,56}, {3,57}, {3,58}, {3,59}, {3,60}, {3,61}, {3,62},
+ {3,63}, {3,64}, {3,65}, {3,66}, {3,67}, {3,68}, {3,69}, {3,70}, {3,71},
+ {3,72}, {3,73}, {3,74}, {3,75}, {3,76}, {3,77}, {3,78}, {3,79}, {3,80},
+ {3,81}, {3,82}, {0,10}, {0,11}, {0,20}, {0,21}, {4,0}, {4,1}, {4,2},
+ {4,3}, {4,4}, {4,5}, {4,6}, {4,7}, {4,8}, {4,9}, {4,10}, {4,11}, {4,12},
+ {4,13}, {4,14}, {4,15}, {4,16}, {4,17}, {4,18}, {4,19}, {4,20}, {4,21},
+ {4,22}, {4,23}, {4,24}, {4,25}, {4,26}, {4,27}, {4,28}, {4,29}, {4,30},
+ {4,31}, {4,32}, {4,33}, {4,34}, {4,35}, {4,36}, {4,37}, {4,38}, {4,39},
+ {4,40}, {4,41}, {4,42}, {4,43}, {4,44}, {4,45}, {4,46}, {4,47}, {4,48},
+ {4,49}, {4,50}, {4,51}, {4,52}, {4,53}, {4,54}, {4,55}, {4,56}, {4,57},
+ {4,58}, {4,59}, {4,60}, {4,61}, {4,62}, {4,63}, {4,64}, {4,65}, {4,66},
+ {4,67}, {4,68}, {4,69}, {4,70}, {4,71}, {4,72}, {4,73}, {4,74}, {4,75},
+ {4,76}, {4,77}, {4,78}, {4,79}, {4,80}, {4,81}, {4,82}, {4,83}, {4,84},
+ {4,85}, {0,5}, {0,27}, {0,18}, {0,19}, {15,75}, {34,89}, {27,22}, {42,91},
+ {29,69}, {26,15}, {29,68}, {17,27}, {40,51}, {44,30}, {47,1}, {16,14},
+ {18,77}, {47,2}, {31,3}, {49,33}, {20,53}, {41,25}, {29,70}, {45,29},
+ {41,33}, {47,3}, {34,69}, {47,4}, {21,89}, {47,5}, {19,60}, {34,15},
+ {27,70}, {47,6}, {47,7}, {47,8}, {38,20}, {20,54}, {38,22}, {37,66},
+ {23,34}, {42,18}, {72,40}, {47,9}, {29,71}, {47,10}, {17,20}, {21,68},
+ {23,79}, {43,72}, {53,5}, {44,79}, {37,92}, {19,4}, {20,20}, {47,11},
+ {47,12}, {45,26}, {44,28}, {32,71}, {47,14}, {26,85}, {37,82}, {47,17},
+ {16,29}, {23,62}, {23,61}, {15,69}, {46,42}, {46,41}, {25,18}, {15,0},
+ {47,18}, {47,19}, {47,20}, {42,19}, {47,21}, {23,81}, {15,70}, {42,81},
+ {20,91}, {20,92}, {20,93}, {35,65}, {45,27}, {47,22}, {47,23}, {47,24},
+ {30,44}, {28,25}, {30,45}, {47,29}, {47,27}, {47,28}, {20,55}, {25,2},
+ {17,79}, {47,26}, {47,25}, {41,8}, {26,37}, {26,36}, {33,29}, {47,30},
+ {40,52}, {31,70}, {0,23}, {47,31}, {47,33}, {33,68}, {45,64}, {15,41},
+ {47,32}, {17,29}, {21,35}, {34,70}, {22,78}, {47,34}, {38,3}, {19,74},
+ {47,35}, {15,42}, {23,63}, {19,75}, {40,89}, {39,17}, {20,56}, {17,80},
+ {47,70}, {36,32}, {38,75}, {47,37}, {39,27}, {45,65}, {30,12}, {26,38},
+ {26,86}, {17,31}, {35,48}, {34,1}, {47,41}, {15,43}, {35,66}, {28,26},
+ {25,19}, {44,3}, {33,45}, {17,30}, {47,40}, {44,29}, {47,36}, {47,38},
+ {25,77}, {47,39}, {52,3}, {47,47}, {47,50}, {47,48}, {17,33}, {41,26},
+ {47,42}, {47,46}, {23,82}, {26,39}, {19,5}, {47,51}, {47,43}, {45,66},
+ {26,87}, {47,44}, {47,49}, {47,52}, {47,45}, {21,0}, {15,44}, {21,1},
+ {17,32}, {52,4}, {42,88}, {40,77}, {23,83}, {30,14}, {45,22}, {41,55},
+ {22,23}, {33,4}, {17,67}, {28,50}, {47,56}, {47,61}, {47,59}, {47,54},
+ {33,14}, {47,57}, {47,60}, {47,58}, {41,60}, {47,55}, {30,13}, {42,82},
+ {47,62}, {47,63}, {28,3}, {47,76}, {38,47}, {40,21}, {47,71}, {41,79},
+ {17,21}, {47,75}, {47,69}, {47,78}, {32,49}, {23,35}, {38,59}, {63,38},
+ {47,77}, {36,60}, {47,66}, {23,85}, {23,84}, {47,64}, {27,57}, {47,72},
+ {41,78}, {34,44}, {47,68}, {22,80}, {47,65}, {47,73}, {47,67}, {45,48},
+ {47,74}, {46,32}, {21,69}, {22,79}, {47,79}, {47,80}, {47,84}, {15,45},
+ {41,47}, {47,83}, {47,82}, {47,86}, {47,85}, {35,67}, {22,81}, {47,87},
+ {27,36}, {33,5}, {35,68}, {21,85}, {47,88}, {20,21}, {47,89}, {47,91},
+ {42,20}, {22,69}, {26,16}, {39,86}, {47,90}, {25,36}, {44,34}, {47,93},
+ {48,2}, {47,92}, {25,35}, {28,92}, {22,24}, {48,3}, {21,46}, {48,0},
+ {48,1}, {37,14}, {32,91}, {21,2}, {42,44}, {48,4}, {45,28}, {48,5},
+ {48,8}, {48,6}, {32,45}, {48,7}, {48,9}, {48,11}, {48,10}, {41,39},
+ {20,22}, {48,13}, {48,14}, {17,14}, {48,12}, {27,83}, {48,17}, {48,16},
+ {48,15}, {47,53}, {48,18}, {28,93}, {48,19}, {44,4}, {43,56}, {48,21},
+ {48,20}, {48,23}, {48,22}, {48,24}, {48,25}, {15,83}, {23,20}, {22,26},
+ {28,27}, {34,90}, {21,3}, {31,71}, {23,86}, {24,77}, {48,27}, {43,39},
+ {36,37}, {26,88}, {48,26}, {48,28}, {36,61}, {18,84}, {48,29}, {37,93},
+ {32,19}, {48,31}, {48,32}, {39,11}, {23,87}, {46,26}, {48,33}, {21,5},
+ {41,27}, {33,21}, {21,80}, {36,20}, {22,82}, {48,34}, {48,35}, {37,65},
+ {16,62}, {48,38}, {25,92}, {48,37}, {25,37}, {48,39}, {69,77}, {48,40},
+ {42,32}, {48,41}, {48,42}, {48,43}, {29,72}, {27,43}, {19,6}, {48,46},
+ {48,44}, {43,28}, {48,45}, {40,57}, {48,47}, {48,48}, {48,49}, {36,62},
+ {48,53}, {48,51}, {48,52}, {48,50}, {25,66}, {48,54}, {43,73}, {45,67},
+ {48,55}, {31,7}, {48,56}, {28,57}, {48,57}, {34,91}, {45,30}, {36,63},
+ {49,36}, {48,58}, {83,4}, {21,36}, {48,59}, {42,61}, {28,71}, {33,91},
+ {48,61}, {37,67}, {48,62}, {48,63}, {18,13}, {48,64}, {21,6}, {37,43},
+ {16,89}, {28,47}, {39,0}, {48,65}, {36,64}, {30,46}, {48,66}, {41,11},
+ {31,57}, {19,1}, {19,8}, {48,67}, {48,69}, {22,25}, {48,68}, {45,82},
+ {28,72}, {39,28}, {41,43}, {48,70}, {44,87}, {48,71}, {48,72}, {36,93},
+ {48,73}, {31,8}, {25,93}, {22,83}, {48,74}, {26,40}, {24,78}, {35,69},
+ {48,76}, {33,6}, {25,78}, {48,77}, {48,78}, {32,15}, {48,75}, {48,80},
+ {42,21}, {24,67}, {48,79}, {22,84}, {25,61}, {38,76}, {48,83}, {48,81},
+ {40,90}, {29,73}, {48,90}, {18,67}, {48,84}, {48,82}, {32,46}, {48,86},
+ {48,85}, {18,35}, {22,63}, {48,91}, {45,12}, {48,87}, {48,92}, {48,89},
+ {48,88}, {45,46}, {23,88}, {17,34}, {45,83}, {28,84}, {36,55}, {24,68},
+ {49,1}, {49,2}, {45,68}, {46,10}, {49,4}, {23,89}, {49,3}, {18,14},
+ {49,5}, {42,53}, {35,27}, {44,5}, {41,56}, {49,6}, {79,52}, {37,15},
+ {49,7}, {19,9}, {43,18}, {29,0}, {49,8}, {41,70}, {49,12}, {31,9},
+ {49,9}, {21,47}, {49,10}, {19,10}, {22,13}, {49,13}, {49,14}, {49,15},
+ {49,16}, {27,58}, {23,90}, {43,61}, {43,71}, {37,86}, {41,80}, {49,17},
+ {49,18}, {49,20}, {49,22}, {49,21}, {49,23}, {17,28}, {42,43}, {25,91},
+ {49,24}, {32,56}, {29,1}, {21,8}, {49,25}, {39,58}, {49,26}, {49,27},
+ {49,28}, {49,29}, {40,3}, {21,71}, {15,68}, {37,30}, {49,30}, {28,28},
+ {31,72}, {49,32}, {49,31}, {29,2}, {23,64}, {49,34}, {39,29}, {49,35},
+ {39,59}, {33,19}, {33,77}, {21,7}, {37,77}, {34,16}, {38,77}, {42,45},
+ {49,37}, {31,73}, {22,20}, {49,38}, {49,39}, {16,11}, {15,84}, {19,76},
+ {33,7}, {20,48}, {44,80}, {49,42}, {17,22}, {49,41}, {21,9}, {49,43},
+ {43,80}, {49,44}, {45,49}, {23,91}, {23,21}, {49,45}, {49,47}, {49,46},
+ {30,62}, {16,24}, {16,61}, {49,48}, {49,49}, {23,22}, {49,50}, {20,77},
+ {26,17}, {49,51}, {42,83}, {25,20}, {20,57}, {44,6}, {32,47}, {39,30},
+ {27,92}, {28,38}, {27,71}, {27,84}, {28,85}, {39,31}, {49,54}, {16,34},
+ {32,48}, {23,92}, {23,36}, {21,70}, {49,58}, {34,0}, {33,93}, {21,10},
+ {29,3}, {49,59}, {49,57}, {17,35}, {33,69}, {27,23}, {26,42}, {16,5},
+ {18,79}, {24,69}, {26,41}, {49,60}, {49,61}, {20,40}, {18,37}, {24,70},
+ {20,39}, {35,62}, {16,4}, {37,16}, {43,29}, {24,0}, {44,88}, {36,38},
+ {23,93}, {22,14}, {49,70}, {21,66}, {42,41}, {39,60}, {49,69}, {19,61},
+ {49,64}, {49,65}, {49,67}, {49,68}, {20,58}, {30,64}, {41,12}, {49,66},
+ {49,62}, {23,66}, {49,63}, {46,3}, {41,81}, {35,71}, {23,65}, {24,79},
+ {49,71}, {37,60}, {49,75}, {27,93}, {27,85}, {49,78}, {49,76}, {43,2},
+ {49,73}, {49,82}, {49,77}, {49,80}, {23,37}, {43,30}, {49,81}, {49,83},
+ {49,85}, {25,79}, {46,33}, {49,74}, {49,72}, {49,84}, {49,79}, {49,87},
+ {50,2}, {49,89}, {49,93}, {50,0}, {49,90}, {50,29}, {25,72}, {18,16},
+ {49,88}, {50,4}, {15,85}, {50,3}, {15,4}, {40,41}, {50,1}, {49,91},
+ {49,86}, {49,92}, {25,39}, {50,5}, {15,86}, {50,14}, {50,6}, {50,7},
+ {29,4}, {42,72}, {50,12}, {50,11}, {36,14}, {50,13}, {50,10}, {16,19},
+ {25,21}, {30,15}, {50,8}, {36,65}, {50,9}, {15,1}, {50,19}, {44,2},
+ {29,6}, {50,25}, {50,24}, {50,15}, {33,34}, {50,16}, {33,78}, {50,21},
+ {29,5}, {50,18}, {43,67}, {22,27}, {50,22}, {50,23}, {50,20}, {50,26},
+ {50,17}, {50,32}, {50,37}, {50,33}, {50,28}, {50,38}, {32,16}, {50,40},
+ {24,1}, {50,30}, {34,92}, {50,34}, {50,27}, {19,12}, {19,77}, {18,68},
+ {50,35}, {50,31}, {22,85}, {50,41}, {50,39}, {32,50}, {20,41}, {21,11},
+ {50,36}, {21,83}, {16,35}, {50,45}, {50,43}, {51,6}, {50,48}, {50,42},
+ {50,46}, {50,44}, {26,43}, {50,47}, {50,50}, {50,55}, {50,53}, {50,52},
+ {34,17}, {17,36}, {50,49}, {50,51}, {29,7}, {16,18}, {50,54}, {17,61},
+ {50,65}, {29,91}, {50,61}, {50,59}, {50,60}, {50,62}, {16,28}, {32,24},
+ {50,56}, {50,57}, {18,89}, {50,64}, {19,78}, {50,67}, {50,63}, {50,66},
+ {41,13}, {37,52}, {39,23}, {50,69}, {50,68}, {18,36}, {50,70}, {50,73},
+ {50,72}, {50,71}, {38,24}, {50,74}, {50,75}, {50,77}, {50,76}, {50,79},
+ {50,82}, {50,80}, {50,78}, {50,81}, {50,83}, {50,84}, {50,85}, {50,86},
+ {50,87}, {48,36}, {27,91}, {26,44}, {17,82}, {15,87}, {34,35}, {50,88},
+ {25,3}, {15,46}, {30,61}, {50,89}, {23,38}, {24,80}, {50,91}, {50,90},
+ {41,63}, {50,92}, {51,0}, {50,93}, {51,1}, {51,2}, {22,86}, {16,63},
+ {51,3}, {51,5}, {51,4}, {51,7}, {36,57}, {51,8}, {15,20}, {25,62},
+ {22,28}, {34,46}, {51,9}, {51,10}, {51,12}, {51,13}, {25,67}, {21,48},
+ {42,22}, {51,11}, {51,14}, {25,32}, {24,2}, {51,18}, {25,4}, {34,18},
+ {51,15}, {35,57}, {51,19}, {30,65}, {51,17}, {51,20}, {22,30}, {51,21},
+ {51,22}, {24,3}, {18,31}, {51,24}, {51,25}, {51,26}, {51,23}, {51,16},
+ {51,27}, {51,28}, {42,67}, {29,74}, {51,30}, {51,31}, {51,29}, {51,33},
+ {38,23}, {15,71}, {40,53}, {51,34}, {29,92}, {27,24}, {38,60}, {19,79},
+ {25,74}, {42,56}, {37,17}, {22,87}, {33,46}, {51,32}, {51,35}, {33,35},
+ {51,36}, {51,37}, {51,39}, {35,72}, {19,13}, {83,0}, {16,64}, {41,82},
+ {29,75}, {36,39}, {25,69}, {51,45}, {41,28}, {45,60}, {17,83}, {51,41},
+ {32,25}, {51,44}, {36,66}, {36,40}, {36,67}, {39,24}, {35,44}, {25,40},
+ {51,40}, {16,85}, {36,21}, {51,42}, {51,38}, {30,47}, {51,46}, {28,45},
+ {21,12}, {51,47}, {41,71}, {32,92}, {35,37}, {51,49}, {42,46}, {51,50},
+ {51,55}, {41,14}, {51,54}, {51,48}, {51,51}, {51,53}, {25,5}, {41,40},
+ {51,56}, {34,36}, {17,84}, {29,76}, {51,58}, {51,57}, {24,71}, {51,59},
+ {51,61}, {51,60}, {51,63}, {51,52}, {51,65}, {51,64}, {51,62}, {26,45},
+ {30,48}, {32,51}, {51,66}, {31,27}, {15,76}, {38,67}, {35,58}, {51,68},
+ {51,67}, {51,69}, {51,70}, {51,71}, {51,72}, {41,48}, {51,73}, {17,37},
+ {51,74}, {44,27}, {18,15}, {49,40}, {28,39}, {33,30}, {51,75}, {43,74},
+ {43,19}, {51,77}, {33,70}, {36,22}, {33,31}, {40,54}, {51,78}, {51,79},
+ {16,90}, {27,25}, {51,80}, {15,47}, {51,81}, {51,82}, {16,65}, {19,80},
+ {37,63}, {41,83}, {51,86}, {32,52}, {51,85}, {22,31}, {42,58}, {51,84},
+ {36,68}, {51,88}, {51,87}, {51,90}, {51,89}, {16,91}, {51,91}, {29,8},
+ {51,93}, {34,4}, {51,92}, {41,18}, {28,86}, {36,58}, {52,0}, {24,4},
+ {52,1}, {38,0}, {39,61}, {43,48}, {38,4}, {52,10}, {20,23}, {44,36},
+ {43,14}, {53,11}, {52,2}, {52,5}, {33,36}, {42,23}, {36,41}, {52,6},
+ {42,68}, {25,41}, {29,9}, {52,7}, {26,47}, {26,46}, {15,24}, {23,39},
+ {31,10}, {15,48}, {52,11}, {52,12}, {52,9}, {16,23}, {19,14}, {52,8},
+ {43,36}, {40,16}, {15,7}, {15,88}, {26,48}, {15,49}, {15,2}, {52,17},
+ {52,15}, {43,27}, {52,18}, {52,16}, {52,14}, {30,16}, {52,13}, {41,57},
+ {23,67}, {52,22}, {52,23}, {29,10}, {52,19}, {46,11}, {38,43}, {52,21},
+ {25,6}, {52,24}, {40,55}, {52,25}, {52,20}, {43,26}, {38,61}, {52,26},
+ {40,17}, {52,27}, {52,31}, {52,28}, {17,38}, {52,30}, {27,26}, {52,29},
+ {22,88}, {52,43}, {52,36}, {52,33}, {34,67}, {52,32}, {52,34}, {52,35},
+ {52,37}, {52,38}, {19,81}, {52,40}, {52,39}, {52,41}, {29,77}, {52,44},
+ {35,59}, {16,36}, {52,42}, {52,45}, {52,46}, {52,49}, {52,47}, {52,48},
+ {26,49}, {52,50}, {24,5}, {52,51}, {26,89}, {33,23}, {52,52}, {52,53},
+ {26,57}, {24,6}, {43,49}, {20,7}, {23,40}, {52,54}, {18,55}, {52,55},
+ {33,24}, {52,56}, {53,2}, {52,57}, {52,58}, {52,59}, {52,61}, {52,62},
+ {52,63}, {33,79}, {16,6}, {27,72}, {15,33}, {32,54}, {19,15}, {27,20},
+ {24,7}, {36,69}, {28,0}, {19,16}, {34,71}, {35,73}, {15,23}, {20,24},
+ {41,84}, {27,33}, {20,49}, {31,74}, {27,27}, {44,7}, {52,64}, {20,59},
+ {25,42}, {18,17}, {16,66}, {29,11}, {17,39}, {52,65}, {44,37}, {28,40},
+ {27,67}, {52,66}, {19,82}, {37,49}, {43,8}, {52,67}, {52,68}, {40,56},
+ {52,70}, {19,7}, {21,86}, {52,69}, {19,17}, {30,17}, {52,74}, {26,0},
+ {17,40}, {52,73}, {52,71}, {52,75}, {52,72}, {38,10}, {59,44}, {30,18},
+ {52,76}, {45,31}, {52,77}, {52,79}, {34,93}, {52,78}, {31,2}, {26,90},
+ {33,47}, {27,86}, {40,84}, {31,75}, {27,44}, {52,80}, {29,12}, {52,81},
+ {52,82}, {15,50}, {33,25}, {30,49}, {52,83}, {37,18}, {29,13}, {29,14},
+ {52,84}, {31,76}, {29,15}, {52,85}, {52,86}, {43,63}, {52,87}, {21,37},
+ {28,1}, {52,88}, {52,89}, {27,59}, {30,11}, {37,83}, {30,51}, {39,87},
+ {38,1}, {21,40}, {52,90}, {20,78}, {52,91}, {21,93}, {37,46}, {17,15},
+ {26,50}, {52,92}, {53,1}, {53,0}, {21,92}, {52,93}, {36,23}, {33,15},
+ {36,42}, {27,39}, {32,55}, {44,89}, {53,3}, {53,4}, {37,53}, {26,18},
+ {53,6}, {53,7}, {53,8}, {19,83}, {53,9}, {53,10}, {17,11}, {32,26},
+ {19,67}, {53,12}, {43,7}, {33,49}, {18,56}, {53,14}, {53,16}, {19,62},
+ {53,13}, {53,15}, {53,18}, {53,17}, {53,19}, {53,20}, {37,28}, {21,13},
+ {17,68}, {53,21}, {53,26}, {53,24}, {41,86}, {41,85}, {36,70}, {53,23},
+ {28,51}, {53,22}, {30,81}, {53,27}, {25,73}, {53,33}, {53,34}, {53,28},
+ {18,18}, {53,29}, {53,38}, {53,37}, {53,36}, {53,32}, {53,31}, {53,35},
+ {41,87}, {53,42}, {53,39}, {53,41}, {44,81}, {53,40}, {53,30}, {30,82},
+ {53,43}, {25,22}, {53,44}, {53,45}, {53,48}, {53,47}, {53,46}, {36,71},
+ {53,25}, {53,54}, {53,50}, {53,49}, {53,51}, {53,52}, {53,55}, {45,69},
+ {53,56}, {53,53}, {53,57}, {19,63}, {53,58}, {53,60}, {53,59}, {53,61},
+ {53,62}, {31,77}, {28,2}, {28,67}, {32,66}, {24,8}, {25,23}, {24,9},
+ {20,79}, {53,63}, {25,24}, {23,41}, {53,64}, {43,5}, {38,34}, {53,65},
+ {24,10}, {19,11}, {34,6}, {21,49}, {26,51}, {40,58}, {39,32}, {53,66},
+ {19,84}, {53,69}, {35,0}, {53,68}, {53,67}, {53,70}, {35,74}, {30,66},
+ {26,52}, {31,41}, {33,50}, {20,1}, {35,1}, {53,71}, {53,72}, {29,78},
+ {42,24}, {53,75}, {53,74}, {53,73}, {40,92}, {53,82}, {42,57}, {53,76},
+ {53,78}, {42,74}, {53,77}, {53,79}, {39,7}, {53,80}, {41,29}, {53,81},
+ {19,18}, {41,30}, {38,14}, {53,83}, {53,84}, {24,11}, {19,19}, {53,85},
+ {23,23}, {44,35}, {44,8}, {19,85}, {53,87}, {35,2}, {24,12}, {29,16},
+ {39,62}, {29,17}, {28,87}, {35,75}, {41,88}, {36,24}, {24,13}, {40,59},
+ {53,88}, {36,56}, {25,33}, {23,42}, {35,76}, {15,34}, {28,77}, {24,14},
+ {44,38}, {53,89}, {53,90}, {38,48}, {53,91}, {45,86}, {46,12}, {53,93},
+ {53,92}, {18,38}, {54,0}, {54,3}, {54,4}, {54,2}, {40,31}, {29,18},
+ {54,6}, {54,5}, {54,1}, {54,7}, {54,8}, {54,9}, {54,12}, {54,10}, {54,11},
+ {54,13}, {16,67}, {35,77}, {54,14}, {22,89}, {17,85}, {38,21}, {54,15},
+ {37,90}, {41,58}, {54,16}, {46,13}, {54,17}, {41,31}, {54,20}, {47,0},
+ {47,16}, {27,15}, {37,84}, {54,21}, {20,60}, {35,3}, {15,89}, {54,22},
+ {41,5}, {24,15}, {34,47}, {35,78}, {43,78}, {23,24}, {23,43}, {54,23},
+ {54,24}, {54,30}, {27,68}, {35,4}, {21,14}, {54,25}, {40,10}, {34,37},
+ {54,26}, {54,27}, {21,15}, {54,28}, {54,29}, {54,31}, {36,85}, {54,32},
+ {54,33}, {54,34}, {54,19}, {54,18}, {54,35}, {22,32}, {40,6}, {25,43},
+ {40,22}, {35,5}, {40,42}, {54,36}, {29,19}, {16,37}, {54,37}, {54,38},
+ {43,81}, {39,63}, {54,41}, {16,92}, {31,11}, {54,40}, {54,39}, {22,33},
+ {33,51}, {54,45}, {54,43}, {54,42}, {45,6}, {23,68}, {28,88}, {54,44},
+ {36,43}, {28,29}, {37,31}, {54,48}, {54,47}, {54,46}, {54,49}, {23,69},
+ {54,50}, {40,91}, {28,58}, {54,51}, {39,88}, {37,32}, {35,6}, {36,15},
+ {54,52}, {20,10}, {30,19}, {40,11}, {19,86}, {38,5}, {54,53}, {26,53},
+ {42,25}, {42,26}, {16,93}, {54,58}, {34,72}, {54,55}, {17,86}, {55,12},
+ {54,57}, {38,15}, {54,56}, {54,54}, {24,89}, {54,60}, {54,66}, {54,72},
+ {54,64}, {36,59}, {54,69}, {40,60}, {54,63}, {54,68}, {45,70}, {26,54},
+ {33,52}, {54,61}, {20,61}, {54,71}, {31,12}, {16,68}, {54,65}, {17,87},
+ {54,70}, {21,16}, {54,67}, {54,73}, {54,75}, {54,85}, {54,83}, {54,80},
+ {54,79}, {45,87}, {54,81}, {21,17}, {24,16}, {28,89}, {54,88}, {54,74},
+ {54,78}, {54,62}, {17,89}, {54,82}, {54,84}, {34,48}, {25,7}, {17,23},
+ {54,76}, {54,87}, {54,86}, {21,18}, {33,8}, {18,69}, {22,34}, {54,77},
+ {54,89}, {54,92}, {55,0}, {27,28}, {55,6}, {35,79}, {54,90}, {55,4},
+ {17,88}, {55,2}, {55,3}, {54,93}, {55,1}, {23,70}, {44,9}, {19,20},
+ {16,56}, {55,5}, {38,25}, {15,12}, {39,64}, {54,59}, {55,11}, {55,15},
+ {43,68}, {55,8}, {36,72}, {55,13}, {29,79}, {55,14}, {37,54}, {46,38},
+ {55,10}, {55,16}, {24,90}, {31,42}, {15,51}, {55,9}, {55,7}, {32,57},
+ {54,91}, {26,19}, {33,37}, {55,28}, {32,58}, {55,23}, {55,20}, {55,21},
+ {27,69}, {55,24}, {55,27}, {55,22}, {28,4}, {55,25}, {55,19}, {43,91},
+ {43,90}, {55,29}, {55,30}, {15,52}, {55,18}, {21,81}, {15,5}, {19,21},
+ {55,26}, {55,34}, {55,33}, {55,38}, {55,39}, {55,37}, {55,40}, {55,32},
+ {55,36}, {55,41}, {55,42}, {55,31}, {26,91}, {55,35}, {33,53}, {24,17},
+ {55,17}, {30,20}, {55,55}, {41,72}, {55,45}, {55,46}, {55,47}, {55,54},
+ {55,53}, {42,92}, {19,22}, {55,51}, {22,36}, {18,19}, {55,48}, {45,23},
+ {55,50}, {15,53}, {55,52}, {55,43}, {55,49}, {55,56}, {22,35}, {55,44},
+ {44,60}, {44,10}, {55,59}, {55,63}, {32,93}, {45,88}, {55,64}, {55,61},
+ {55,58}, {55,57}, {55,62}, {41,15}, {37,19}, {22,37}, {55,65}, {55,60},
+ {55,66}, {22,90}, {17,16}, {55,74}, {19,23}, {55,72}, {55,73}, {25,8},
+ {55,71}, {55,69}, {55,68}, {55,75}, {55,67}, {55,77}, {17,90}, {55,79},
+ {55,78}, {35,7}, {55,82}, {55,80}, {55,70}, {22,91}, {55,81}, {55,85},
+ {55,84}, {55,86}, {55,83}, {55,87}, {55,88}, {55,89}, {41,73}, {55,91},
+ {55,90}, {28,30}, {31,13}, {17,69}, {17,91}, {55,92}, {15,30}, {31,43},
+ {55,93}, {75,34}, {56,0}, {22,64}, {56,1}, {31,78}, {56,2}, {56,3},
+ {20,25}, {56,4}, {56,5}, {56,6}, {33,54}, {23,44}, {43,64}, {42,27},
+ {28,73}, {56,7}, {31,79}, {77,28}, {39,65}, {27,73}, {25,44}, {56,8},
+ {33,38}, {41,6}, {33,80}, {56,11}, {56,9}, {56,12}, {56,10}, {56,13},
+ {41,16}, {15,22}, {40,61}, {39,66}, {56,14}, {56,17}, {29,20}, {20,26},
+ {56,15}, {56,22}, {29,21}, {56,16}, {38,35}, {44,61}, {56,18}, {56,19},
+ {56,23}, {36,73}, {56,20}, {24,18}, {31,61}, {56,37}, {39,19}, {33,81},
+ {39,67}, {57,12}, {41,89}, {35,80}, {42,84}, {56,26}, {17,0}, {34,73},
+ {56,35}, {34,19}, {56,29}, {56,36}, {56,31}, {56,38}, {56,34}, {56,33},
+ {38,78}, {56,27}, {17,92}, {56,25}, {20,80}, {33,82}, {56,21}, {56,24},
+ {24,19}, {31,58}, {29,22}, {56,32}, {38,49}, {20,81}, {18,39}, {18,70},
+ {30,0}, {56,40}, {56,45}, {56,41}, {22,92}, {56,46}, {26,1}, {24,72},
+ {28,5}, {56,28}, {26,92}, {56,43}, {26,55}, {56,44}, {15,35}, {56,39},
+ {35,8}, {20,82}, {21,19}, {56,42}, {15,6}, {25,34}, {30,21}, {35,81},
+ {39,51}, {56,48}, {32,61}, {33,9}, {26,10}, {56,49}, {56,51}, {56,47},
+ {41,64}, {35,28}, {32,59}, {41,90}, {27,45}, {56,63}, {56,62}, {30,87},
+ {22,93}, {56,56}, {29,24}, {37,71}, {38,16}, {56,54}, {32,60}, {27,87},
+ {56,59}, {29,23}, {56,53}, {56,58}, {38,50}, {56,52}, {22,0}, {18,60},
+ {56,60}, {45,10}, {25,45}, {34,20}, {56,57}, {31,59}, {24,20}, {30,67},
+ {16,69}, {32,27}, {56,55}, {20,36}, {22,38}, {35,46}, {56,61}, {32,62},
+ {56,64}, {56,66}, {33,22}, {56,72}, {56,67}, {56,69}, {40,32}, {35,82},
+ {56,70}, {44,11}, {44,39}, {19,24}, {15,13}, {56,68}, {56,65}, {19,87},
+ {16,70}, {56,71}, {44,40}, {56,75}, {33,26}, {56,82}, {56,76}, {56,73},
+ {56,80}, {56,50}, {56,77}, {56,81}, {39,33}, {36,74}, {56,74}, {56,78},
+ {22,39}, {25,80}, {31,60}, {56,86}, {36,5}, {56,83}, {42,63}, {56,84},
+ {56,85}, {43,45}, {31,1}, {22,65}, {56,92}, {26,20}, {56,89}, {56,88},
+ {38,17}, {37,20}, {36,16}, {56,90}, {56,91}, {40,78}, {38,36}, {26,2},
+ {31,80}, {42,47}, {18,40}, {57,4}, {56,93}, {44,41}, {57,6}, {57,2},
+ {57,3}, {32,63}, {57,1}, {56,30}, {57,5}, {57,0}, {57,10}, {57,11},
+ {36,6}, {57,13}, {26,3}, {57,8}, {20,27}, {57,14}, {57,7}, {57,18},
+ {57,17}, {57,16}, {57,19}, {57,21}, {29,80}, {57,20}, {57,24}, {57,22},
+ {57,23}, {56,79}, {57,26}, {57,25}, {56,87}, {57,27}, {57,15}, {26,56},
+ {57,28}, {57,29}, {57,31}, {57,30}, {57,32}, {17,93}, {24,21}, {41,91},
+ {31,14}, {23,45}, {57,34}, {57,37}, {40,49}, {20,62}, {57,36}, {57,35},
+ {38,51}, {57,38}, {21,20}, {57,40}, {57,39}, {19,25}, {26,21}, {37,55},
+ {22,40}, {30,83}, {57,41}, {31,15}, {36,7}, {40,62}, {57,42}, {57,43},
+ {57,44}, {41,23}, {52,60}, {31,37}, {40,43}, {25,55}, {39,68}, {39,34},
+ {36,44}, {45,32}, {57,46}, {27,47}, {57,47}, {15,21}, {21,51}, {31,44},
+ {40,63}, {57,48}, {26,33}, {34,38}, {26,58}, {30,22}, {57,49}, {41,92},
+ {16,86}, {26,59}, {57,52}, {57,50}, {57,53}, {45,24}, {57,51}, {31,90},
+ {57,54}, {33,17}, {57,55}, {19,89}, {57,57}, {57,56}, {57,58}, {57,59},
+ {19,90}, {37,91}, {34,21}, {20,75}, {26,60}, {32,64}, {28,59}, {15,15},
+ {57,60}, {17,1}, {57,64}, {24,22}, {57,63}, {25,10}, {29,25}, {57,62},
+ {29,26}, {43,31}, {25,9}, {15,54}, {31,45}, {57,69}, {31,16}, {16,38},
+ {28,52}, {42,69}, {25,81}, {29,27}, {31,6}, {57,68}, {57,66}, {57,67},
+ {34,74}, {58,5}, {57,73}, {26,93}, {24,23}, {57,71}, {57,72}, {30,23},
+ {57,70}, {26,14}, {57,75}, {57,74}, {57,79}, {57,80}, {57,76}, {18,1},
+ {57,77}, {57,78}, {39,52}, {40,64}, {22,41}, {57,81}, {31,17}, {29,28},
+ {34,49}, {21,38}, {57,82}, {57,86}, {17,42}, {57,83}, {57,85}, {57,84},
+ {28,74}, {34,39}, {15,36}, {57,87}, {57,88}, {35,9}, {45,80}, {26,34},
+ {41,74}, {42,28}, {58,1}, {57,90}, {57,93}, {57,92}, {57,89}, {58,0},
+ {37,61}, {57,91}, {58,2}, {28,75}, {58,3}, {44,42}, {38,87}, {58,4},
+ {58,6}, {58,7}, {58,8}, {21,41}, {16,39}, {24,24}, {58,9}, {58,10},
+ {28,80}, {32,65}, {49,55}, {32,29}, {32,28}, {33,55}, {25,38}, {47,81},
+ {22,77}, {44,12}, {41,93}, {40,93}, {58,11}, {25,82}, {35,30}, {58,12},
+ {46,14}, {42,29}, {35,10}, {58,13}, {19,91}, {58,14}, {58,15}, {43,57},
+ {43,3}, {42,85}, {42,59}, {26,4}, {58,17}, {27,74}, {42,48}, {58,19},
+ {58,22}, {58,21}, {19,88}, {20,63}, {58,18}, {58,20}, {58,23}, {30,88},
+ {44,90}, {15,40}, {25,63}, {33,27}, {27,60}, {29,82}, {58,26}, {36,45},
+ {58,24}, {33,10}, {58,25}, {29,81}, {43,60}, {58,27}, {58,28}, {44,71},
+ {58,33}, {24,25}, {38,52}, {58,30}, {36,75}, {57,61}, {57,65}, {20,46},
+ {38,38}, {58,32}, {29,29}, {39,35}, {58,38}, {39,89}, {58,29}, {58,35},
+ {58,34}, {31,46}, {42,76}, {45,50}, {42,70}, {17,43}, {26,61}, {46,39},
+ {58,37}, {30,84}, {58,36}, {58,31}, {23,46}, {58,43}, {58,41}, {17,44},
+ {58,39}, {58,45}, {58,51}, {33,39}, {41,32}, {58,53}, {40,1}, {58,52},
+ {38,79}, {42,30}, {19,26}, {31,86}, {28,31}, {35,50}, {44,13}, {58,48},
+ {58,47}, {58,49}, {58,46}, {58,54}, {58,44}, {58,42}, {58,50}, {58,40},
+ {34,75}, {43,87}, {27,37}, {25,83}, {25,25}, {42,78}, {18,32}, {35,45},
+ {37,41}, {16,40}, {31,81}, {31,19}, {22,9}, {58,56}, {24,26}, {18,91},
+ {58,58}, {18,83}, {58,64}, {58,61}, {31,82}, {18,42}, {25,11}, {18,41},
+ {25,46}, {58,59}, {22,68}, {22,42}, {36,76}, {58,57}, {15,37}, {58,60},
+ {58,62}, {21,44}, {22,11}, {19,27}, {20,42}, {58,65}, {25,88}, {42,80},
+ {26,22}, {58,66}, {40,15}, {58,78}, {17,18}, {58,67}, {58,84}, {58,68},
+ {45,33}, {58,75}, {38,62}, {58,83}, {58,70}, {15,19}, {58,72}, {24,27},
+ {58,74}, {58,73}, {58,69}, {58,80}, {29,30}, {51,76}, {23,71}, {44,91},
+ {58,71}, {35,83}, {18,2}, {25,12}, {58,63}, {58,79}, {18,64}, {58,77},
+ {58,81}, {36,77}, {19,93}, {59,17}, {43,40}, {58,86}, {19,92}, {58,93},
+ {42,31}, {59,0}, {59,2}, {59,6}, {58,88}, {34,9}, {36,78}, {59,10},
+ {58,91}, {59,7}, {59,1}, {30,24}, {59,11}, {31,18}, {59,9}, {19,28},
+ {46,47}, {58,85}, {59,5}, {15,55}, {58,87}, {43,25}, {58,92}, {30,1},
+ {35,38}, {58,82}, {59,4}, {30,89}, {59,14}, {18,80}, {23,0}, {59,16},
+ {58,89}, {59,15}, {59,8}, {58,90}, {59,12}, {59,13}, {59,30}, {37,45},
+ {59,3}, {59,26}, {59,28}, {35,55}, {44,43}, {40,85}, {59,23}, {33,41},
+ {59,29}, {32,30}, {59,20}, {59,33}, {59,32}, {37,78}, {59,31}, {37,73},
+ {59,35}, {59,22}, {21,39}, {59,25}, {28,60}, {38,63}, {59,27}, {21,42},
+ {59,19}, {59,21}, {59,18}, {46,15}, {18,57}, {59,24}, {59,34}, {18,20},
+ {25,70}, {16,60}, {59,51}, {46,16}, {59,54}, {30,25}, {59,53}, {59,52},
+ {59,49}, {59,37}, {59,66}, {59,36}, {59,55}, {59,47}, {59,42}, {59,39},
+ {59,40}, {59,48}, {83,1}, {59,45}, {24,28}, {35,39}, {32,67}, {59,43},
+ {59,38}, {59,41}, {44,44}, {42,73}, {59,46}, {59,56}, {59,64}, {59,57},
+ {59,70}, {59,68}, {59,63}, {59,62}, {35,47}, {32,68}, {59,60}, {59,58},
+ {59,65}, {59,71}, {39,84}, {59,77}, {59,72}, {59,75}, {59,69}, {34,83},
+ {40,23}, {59,59}, {59,67}, {29,31}, {43,46}, {59,87}, {59,74}, {23,1},
+ {17,2}, {18,62}, {59,50}, {29,32}, {59,79}, {59,86}, {27,88}, {18,81},
+ {34,13}, {59,76}, {59,81}, {59,85}, {21,21}, {20,43}, {59,83}, {20,0},
+ {37,42}, {59,82}, {59,84}, {59,78}, {59,80}, {18,63}, {34,40}, {59,91},
+ {59,89}, {23,72}, {59,88}, {60,0}, {58,55}, {59,90}, {59,92}, {59,93},
+ {60,11}, {60,7}, {58,76}, {60,6}, {60,5}, {60,2}, {59,73}, {60,4},
+ {60,3}, {60,9}, {46,5}, {60,12}, {21,90}, {60,8}, {60,10}, {39,6},
+ {60,13}, {60,17}, {60,14}, {44,82}, {60,15}, {59,61}, {60,18}, {60,19},
+ {16,20}, {60,21}, {22,70}, {27,0}, {21,52}, {17,3}, {44,62}, {60,23},
+ {60,22}, {60,25}, {20,28}, {21,53}, {19,29}, {60,28}, {60,27}, {60,29},
+ {17,45}, {34,22}, {60,30}, {19,30}, {60,32}, {60,31}, {60,33}, {60,34},
+ {60,35}, {26,62}, {31,20}, {25,0}, {40,79}, {41,65}, {46,35}, {26,84},
+ {25,47}, {45,81}, {60,36}, {60,37}, {26,63}, {60,38}, {60,39}, {60,41},
+ {60,40}, {42,55}, {28,61}, {27,75}, {26,35}, {60,42}, {60,44}, {30,2},
+ {60,43}, {60,45}, {60,46}, {60,47}, {60,48}, {60,49}, {60,51}, {60,50},
+ {60,52}, {17,4}, {34,41}, {60,53}, {26,5}, {18,43}, {60,54}, {36,33},
+ {51,43}, {20,2}, {60,55}, {60,56}, {41,75}, {42,71}, {37,38}, {60,57},
+ {39,69}, {39,90}, {43,50}, {60,58}, {60,60}, {60,59}, {60,62}, {60,61},
+ {60,64}, {26,64}, {43,16}, {60,65}, {60,66}, {20,3}, {60,67}, {60,69},
+ {60,68}, {30,68}, {40,24}, {16,41}, {39,36}, {35,84}, {28,32}, {20,64},
+ {39,37}, {27,13}, {60,71}, {19,31}, {16,87}, {37,81}, {60,70}, {24,29},
+ {34,50}, {60,72}, {60,80}, {60,73}, {33,32}, {20,65}, {60,81}, {22,71},
+ {20,4}, {60,79}, {60,77}, {60,74}, {44,63}, {35,31}, {37,56}, {60,75},
+ {60,83}, {60,82}, {22,2}, {17,12}, {25,26}, {60,76}, {60,78}, {42,54},
+ {33,83}, {42,86}, {60,91}, {60,92}, {17,46}, {41,7}, {43,92}, {61,0},
+ {27,2}, {29,33}, {60,87}, {60,93}, {16,71}, {21,22}, {60,84}, {60,89},
+ {31,83}, {38,80}, {39,70}, {60,86}, {42,0}, {60,88}, {61,3}, {61,1},
+ {60,90}, {42,1}, {38,39}, {20,66}, {36,4}, {34,76}, {61,4}, {61,2},
+ {33,56}, {60,85}, {16,42}, {44,45}, {61,15}, {61,14}, {31,85}, {61,11},
+ {44,75}, {37,21}, {61,5}, {35,36}, {16,43}, {24,30}, {61,8}, {28,6},
+ {61,13}, {61,12}, {61,7}, {61,10}, {18,71}, {61,9}, {38,40}, {45,13},
+ {29,83}, {31,84}, {61,21}, {61,19}, {40,44}, {61,16}, {61,18}, {16,25},
+ {24,31}, {46,17}, {18,28}, {40,65}, {44,64}, {18,3}, {30,26}, {61,20},
+ {61,25}, {29,34}, {44,15}, {61,22}, {61,17}, {61,23}, {45,61}, {36,82},
+ {37,33}, {18,21}, {16,52}, {61,29}, {61,32}, {45,34}, {44,67}, {61,39},
+ {61,33}, {61,30}, {45,51}, {61,36}, {28,41}, {61,38}, {61,43}, {36,80},
+ {61,41}, {61,35}, {34,23}, {61,42}, {61,31}, {61,37}, {61,44}, {15,91},
+ {61,34}, {61,45}, {30,27}, {28,62}, {41,4}, {25,13}, {61,26}, {61,40},
+ {36,25}, {31,21}, {18,72}, {25,48}, {29,35}, {61,28}, {28,33}, {22,43},
+ {61,27}, {61,49}, {28,76}, {23,25}, {61,64}, {61,58}, {20,83}, {36,46},
+ {61,53}, {61,62}, {15,14}, {16,17}, {17,24}, {61,55}, {33,11}, {61,46},
+ {61,48}, {24,32}, {61,65}, {61,60}, {61,52}, {61,59}, {43,10}, {61,57},
+ {61,61}, {23,47}, {29,36}, {34,24}, {61,51}, {44,14}, {61,54}, {61,47},
+ {36,81}, {61,50}, {61,56}, {46,48}, {27,29}, {42,93}, {61,66}, {39,13},
+ {61,78}, {23,26}, {28,63}, {61,68}, {45,14}, {24,33}, {61,81}, {15,77},
+ {61,79}, {61,67}, {61,73}, {61,75}, {44,46}, {61,70}, {36,13}, {61,72},
+ {61,80}, {61,74}, {43,38}, {61,69}, {27,1}, {61,93}, {18,73}, {61,71},
+ {61,76}, {61,77}, {33,75}, {33,57}, {61,85}, {61,91}, {61,89}, {36,8},
+ {62,2}, {61,86}, {61,87}, {61,63}, {20,88}, {40,25}, {27,30}, {24,86},
+ {46,18}, {61,83}, {62,1}, {16,72}, {32,69}, {38,88}, {19,32}, {45,89},
+ {43,0}, {35,49}, {61,90}, {61,92}, {32,17}, {62,0}, {61,88}, {61,82},
+ {19,34}, {22,72}, {62,14}, {62,9}, {31,87}, {18,66}, {28,64}, {62,18},
+ {62,11}, {35,11}, {62,8}, {35,56}, {62,43}, {62,5}, {62,4}, {62,13},
+ {62,7}, {62,6}, {62,12}, {31,0}, {62,3}, {62,15}, {62,16}, {19,33},
+ {62,21}, {62,20}, {62,22}, {62,25}, {36,34}, {62,19}, {62,23}, {22,66},
+ {33,88}, {62,17}, {38,26}, {62,24}, {62,29}, {62,27}, {62,30}, {62,33},
+ {62,26}, {24,73}, {38,7}, {61,24}, {44,83}, {62,28}, {62,32}, {33,84},
+ {62,31}, {62,10}, {78,72}, {62,36}, {62,40}, {62,38}, {62,34}, {62,35},
+ {62,39}, {62,37}, {40,45}, {62,45}, {62,42}, {62,41}, {62,44}, {37,51},
+ {62,46}, {34,84}, {33,76}, {31,4}, {62,47}, {62,49}, {62,48}, {61,84},
+ {62,50}, {37,70}, {62,51}, {17,47}, {36,83}, {18,4}, {20,67}, {27,61},
+ {25,49}, {46,6}, {30,69}, {16,73}, {62,53}, {62,52}, {62,56}, {34,25},
+ {62,59}, {62,54}, {62,58}, {62,57}, {36,31}, {15,56}, {45,84}, {62,61},
+ {16,7}, {62,63}, {62,62}, {62,60}, {62,55}, {42,2}, {62,65}, {62,64},
+ {16,74}, {62,67}, {41,17}, {62,66}, {43,20}, {29,38}, {32,18}, {29,37},
+ {45,90}, {62,73}, {31,88}, {62,69}, {62,74}, {16,75}, {62,72}, {38,64},
+ {62,68}, {62,71}, {29,39}, {39,48}, {62,75}, {27,48}, {31,89}, {62,78},
+ {62,70}, {22,6}, {62,76}, {44,47}, {62,79}, {83,5}, {28,46}, {62,80},
+ {62,81}, {38,13}, {62,83}, {62,84}, {38,18}, {36,84}, {62,86}, {62,88},
+ {45,52}, {62,85}, {62,87}, {16,76}, {62,82}, {50,58}, {62,89}, {32,70},
+ {26,23}, {62,91}, {62,90}, {30,3}, {49,56}, {62,92}, {63,0}, {62,77},
+ {62,93}, {63,1}, {38,89}, {63,2}, {63,3}, {63,4}, {63,5}, {35,61},
+ {63,7}, {63,6}, {63,8}, {63,9}, {27,62}, {40,66}, {43,75}, {63,10},
+ {63,11}, {32,53}, {27,3}, {63,12}, {63,13}, {63,14}, {41,49}, {39,38},
+ {63,15}, {38,54}, {35,12}, {63,16}, {17,70}, {20,76}, {43,37}, {43,21},
+ {17,19}, {46,19}, {42,49}, {41,9}, {31,22}, {63,17}, {37,34}, {23,2},
+ {63,18}, {25,51}, {63,20}, {63,19}, {63,21}, {63,22}, {63,23}, {20,29},
+ {63,24}, {63,25}, {23,3}, {39,39}, {63,27}, {29,84}, {63,26}, {21,23},
+ {63,28}, {63,30}, {63,29}, {63,31}, {23,48}, {63,32}, {21,72}, {32,31},
+ {24,92}, {63,34}, {63,35}, {63,33}, {27,76}, {37,39}, {21,24}, {63,37},
+ {34,11}, {63,36}, {46,20}, {38,65}, {63,40}, {63,42}, {63,39}, {43,51},
+ {63,41}, {63,43}, {45,35}, {63,47}, {63,46}, {34,85}, {38,12}, {23,4},
+ {63,45}, {63,44}, {44,16}, {44,17}, {63,48}, {16,77}, {24,85}, {26,65},
+ {63,49}, {63,50}, {63,52}, {28,34}, {63,54}, {63,53}, {63,55}, {18,44},
+ {63,57}, {63,56}, {63,59}, {63,58}, {23,27}, {45,7}, {21,43}, {17,5},
+ {21,73}, {19,64}, {45,71}, {63,61}, {63,63}, {63,64}, {17,48}, {63,60},
+ {26,24}, {35,32}, {63,62}, {63,67}, {27,77}, {63,65}, {22,29}, {39,40},
+ {63,66}, {63,93}, {63,72}, {23,28}, {20,68}, {63,69}, {44,92}, {45,15},
+ {33,85}, {63,71}, {63,73}, {45,53}, {21,54}, {39,91}, {38,41}, {63,74},
+ {63,76}, {63,79}, {63,75}, {63,78}, {23,73}, {16,44}, {63,80}, {30,79},
+ {63,77}, {45,59}, {63,83}, {83,3}, {63,81}, {63,84}, {63,70}, {63,82},
+ {25,27}, {63,85}, {63,86}, {44,93}, {63,87}, {63,88}, {63,68}, {63,89},
+ {19,35}, {27,4}, {63,90}, {63,91}, {63,92}, {16,26}, {64,0}, {40,26},
+ {64,1}, {19,3}, {64,2}, {64,3}, {64,4}, {64,6}, {64,7}, {64,5}, {40,50},
+ {64,9}, {64,8}, {64,11}, {64,10}, {64,12}, {64,13}, {64,15}, {64,14},
+ {24,88}, {64,17}, {64,16}, {19,36}, {30,50}, {36,27}, {64,18}, {31,23},
+ {26,25}, {16,88}, {64,19}, {44,48}, {41,66}, {64,20}, {36,35}, {44,18},
+ {24,34}, {30,28}, {34,42}, {49,19}, {35,13}, {17,71}, {64,21}, {64,22},
+ {64,27}, {64,25}, {64,24}, {57,33}, {18,5}, {64,23}, {15,57}, {39,9},
+ {39,41}, {45,16}, {64,28}, {64,26}, {34,59}, {31,5}, {39,10}, {40,12},
+ {64,30}, {45,11}, {22,44}, {64,31}, {64,29}, {39,53}, {64,32}, {64,33},
+ {15,58}, {29,85}, {64,38}, {64,35}, {37,76}, {64,34}, {20,5}, {64,41},
+ {64,36}, {64,37}, {64,40}, {64,39}, {40,4}, {32,33}, {32,32}, {20,30},
+ {64,42}, {64,43}, {64,44}, {64,46}, {64,45}, {16,53}, {64,54}, {39,71},
+ {64,48}, {64,50}, {64,52}, {30,29}, {64,53}, {64,51}, {27,31}, {64,47},
+ {64,49}, {40,33}, {29,40}, {64,56}, {64,55}, {64,57}, {27,5}, {25,14},
+ {36,86}, {64,58}, {35,42}, {64,60}, {45,0}, {64,59}, {32,72}, {64,65},
+ {64,67}, {64,68}, {34,51}, {64,66}, {64,63}, {64,61}, {64,62}, {64,64},
+ {64,71}, {64,69}, {64,70}, {64,72}, {64,74}, {64,75}, {64,76}, {64,77},
+ {64,73}, {64,79}, {64,78}, {64,80}, {45,36}, {64,83}, {64,81}, {64,82},
+ {19,65}, {43,93}, {41,41}, {64,85}, {64,84}, {64,86}, {64,87}, {64,91},
+ {64,88}, {64,89}, {64,90}, {64,92}, {64,93}, {65,0}, {65,1}, {65,2},
+ {39,14}, {36,47}, {65,3}, {38,81}, {40,19}, {65,4}, {65,5}, {36,9},
+ {18,6}, {24,35}, {65,6}, {65,7}, {65,8}, {26,8}, {65,10}, {65,9}, {65,11},
+ {65,12}, {39,72}, {65,13}, {65,14}, {82,72}, {65,15}, {65,16}, {65,17},
+ {26,13}, {65,18}, {38,53}, {42,62}, {16,45}, {16,54}, {65,19}, {65,21},
+ {65,20}, {36,79}, {31,24}, {60,24}, {65,22}, {43,32}, {65,23}, {19,37},
+ {39,54}, {65,24}, {65,25}, {65,26}, {43,59}, {43,52}, {35,29}, {32,73},
+ {65,28}, {28,65}, {29,41}, {65,31}, {65,30}, {65,29}, {39,92}, {19,38},
+ {23,8}, {65,37}, {65,34}, {30,30}, {43,17}, {65,33}, {65,35}, {65,36},
+ {65,32}, {65,38}, {65,39}, {35,14}, {19,66}, {34,68}, {65,40}, {65,41},
+ {65,44}, {30,70}, {37,35}, {65,45}, {42,50}, {65,42}, {65,43}, {65,48},
+ {65,47}, {65,46}, {65,50}, {65,49}, {65,51}, {65,53}, {65,52}, {41,44},
+ {28,53}, {45,37}, {65,54}, {37,22}, {65,55}, {65,56}, {65,60}, {65,58},
+ {65,59}, {65,57}, {65,61}, {65,62}, {65,63}, {65,64}, {43,22}, {65,65},
+ {43,79}, {65,66}, {34,45}, {38,73}, {21,74}, {34,26}, {65,67}, {21,25},
+ {31,47}, {65,68}, {25,28}, {65,69}, {65,70}, {23,5}, {25,52}, {65,72},
+ {36,53}, {25,53}, {20,45}, {42,3}, {38,42}, {36,54}, {24,59}, {65,74},
+ {29,42}, {45,17}, {24,36}, {23,6}, {39,2}, {65,76}, {65,78}, {23,74},
+ {65,77}, {35,85}, {65,80}, {18,22}, {65,75}, {39,73}, {16,15}, {25,75},
+ {46,49}, {65,79}, {65,81}, {41,42}, {31,56}, {65,83}, {65,84}, {65,82},
+ {18,45}, {65,90}, {65,89}, {27,6}, {65,91}, {65,86}, {65,92}, {65,87},
+ {39,55}, {65,85}, {65,88}, {66,1}, {66,0}, {42,64}, {65,93}, {15,74},
+ {66,3}, {66,2}, {29,43}, {66,4}, {32,34}, {66,6}, {66,5}, {66,7}, {65,71},
+ {65,73}, {66,9}, {66,8}, {27,7}, {45,72}, {27,49}, {66,10}, {22,22},
+ {20,31}, {20,6}, {26,66}, {44,19}, {66,16}, {66,15}, {32,35}, {66,12},
+ {66,14}, {28,42}, {30,31}, {66,13}, {66,11}, {38,9}, {29,44}, {40,27},
+ {25,54}, {36,87}, {66,17}, {66,18}, {66,40}, {21,55}, {46,28}, {32,20},
+ {66,19}, {17,49}, {35,86}, {41,0}, {66,20}, {20,89}, {66,21}, {66,23},
+ {66,24}, {38,8}, {66,25}, {66,26}, {66,27}, {21,56}, {17,50}, {37,36},
+ {28,7}, {26,67}, {66,28}, {28,8}, {17,41}, {40,34}, {66,29}, {39,74},
+ {32,36}, {66,32}, {66,33}, {38,72}, {30,32}, {66,30}, {34,64}, {66,31},
+ {29,45}, {15,59}, {20,8}, {66,34}, {35,87}, {66,35}, {31,38}, {43,12},
+ {40,2}, {66,36}, {66,37}, {34,52}, {45,38}, {66,39}, {66,38}, {27,78},
+ {66,41}, {15,79}, {66,44}, {66,42}, {17,51}, {22,45}, {66,43}, {24,37},
+ {24,81}, {41,69}, {66,45}, {42,51}, {66,47}, {31,48}, {16,46}, {17,25},
+ {15,11}, {66,46}, {66,48}, {66,49}, {29,86}, {66,50}, {18,46}, {66,52},
+ {22,73}, {20,69}, {66,53}, {21,84}, {66,54}, {31,91}, {37,44}, {31,63},
+ {25,84}, {66,55}, {34,65}, {32,74}, {66,57}, {66,59}, {66,56}, {66,58},
+ {22,1}, {66,60}, {22,5}, {20,70}, {44,49}, {66,62}, {66,63}, {16,13},
+ {66,66}, {18,85}, {66,65}, {66,64}, {66,68}, {66,61}, {66,69}, {45,8},
+ {66,70}, {66,71}, {51,83}, {66,73}, {66,72}, {66,74}, {66,75}, {45,20},
+ {66,76}, {79,78}, {29,46}, {66,77}, {66,78}, {28,54}, {37,23}, {66,79},
+ {34,7}, {66,80}, {34,27}, {66,81}, {21,4}, {48,30}, {34,60}, {27,18},
+ {19,39}, {66,82}, {67,1}, {66,85}, {20,71}, {66,84}, {67,3}, {66,83},
+ {29,47}, {66,87}, {66,88}, {36,10}, {66,89}, {18,61}, {30,57}, {40,67},
+ {66,91}, {33,71}, {66,86}, {66,90}, {66,92}, {25,90}, {67,5}, {40,13},
+ {39,5}, {36,88}, {21,57}, {67,4}, {67,2}, {39,20}, {66,93}, {34,61},
+ {36,90}, {36,89}, {25,85}, {67,23}, {67,7}, {67,9}, {67,12}, {67,13},
+ {67,10}, {67,11}, {67,8}, {67,6}, {67,0}, {41,46}, {17,52}, {67,20},
+ {67,17}, {67,22}, {67,21}, {38,82}, {43,6}, {26,26}, {67,15}, {67,24},
+ {67,19}, {67,18}, {67,14}, {67,16}, {19,40}, {34,28}, {31,92}, {39,1},
+ {67,29}, {39,3}, {31,64}, {67,26}, {39,46}, {67,30}, {41,50}, {34,58},
+ {67,25}, {67,27}, {67,28}, {67,31}, {27,35}, {37,37}, {67,36}, {67,35},
+ {67,32}, {46,21}, {67,41}, {67,45}, {67,42}, {67,38}, {67,39}, {67,44},
+ {67,33}, {49,52}, {67,40}, {67,34}, {67,43}, {67,49}, {19,41}, {67,46},
+ {67,47}, {67,48}, {67,51}, {67,50}, {39,85}, {67,52}, {45,91}, {41,76},
+ {67,57}, {67,54}, {67,53}, {31,49}, {67,56}, {67,58}, {67,55}, {67,62},
+ {67,59}, {67,60}, {67,37}, {67,61}, {67,63}, {67,64}, {41,37}, {67,65},
+ {43,65}, {21,45}, {22,8}, {67,66}, {41,19}, {30,71}, {43,15}, {67,67},
+ {45,18}, {38,83}, {32,37}, {38,19}, {28,44}, {15,31}, {67,72}, {67,70},
+ {67,68}, {19,0}, {29,48}, {67,73}, {67,71}, {67,69}, {67,77}, {67,76},
+ {67,75}, {67,74}, {67,78}, {67,79}, {31,25}, {67,80}, {67,82}, {67,81},
+ {23,49}, {32,23}, {67,84}, {36,91}, {67,83}, {67,85}, {41,20}, {32,75},
+ {24,38}, {67,86}, {45,39}, {67,88}, {67,89}, {67,90}, {67,91}, {26,68},
+ {67,92}, {22,46}, {20,73}, {20,9}, {68,0}, {43,82}, {24,39}, {67,93},
+ {68,3}, {43,69}, {38,27}, {40,18}, {28,66}, {68,2}, {27,50}, {24,40},
+ {26,69}, {20,72}, {41,21}, {68,1}, {32,38}, {42,33}, {25,86}, {26,70},
+ {35,60}, {68,6}, {45,62}, {25,56}, {68,7}, {30,33}, {68,9}, {29,49},
+ {25,15}, {68,8}, {28,9}, {23,29}, {32,39}, {68,4}, {68,10}, {68,5},
+ {22,47}, {68,13}, {68,17}, {22,74}, {68,12}, {68,21}, {24,41}, {44,76},
+ {15,27}, {68,18}, {20,74}, {68,15}, {68,16}, {36,92}, {68,14}, {68,11},
+ {18,7}, {31,67}, {23,7}, {68,23}, {68,20}, {68,22}, {68,19}, {22,48},
+ {33,18}, {68,24}, {32,77}, {68,37}, {68,33}, {68,27}, {68,31}, {27,89},
+ {15,60}, {68,26}, {68,34}, {68,38}, {24,42}, {43,53}, {35,53}, {68,28},
+ {68,36}, {68,25}, {34,29}, {68,30}, {15,28}, {43,41}, {68,29}, {21,58},
+ {39,75}, {32,76}, {45,47}, {28,78}, {68,77}, {68,39}, {31,93}, {68,35},
+ {68,40}, {68,42}, {35,88}, {68,45}, {68,41}, {41,51}, {19,42}, {43,42},
+ {15,61}, {68,44}, {45,92}, {68,43}, {16,78}, {37,75}, {68,46}, {68,53},
+ {68,47}, {68,54}, {68,50}, {38,90}, {27,41}, {68,52}, {68,49}, {68,55},
+ {68,48}, {28,35}, {42,4}, {28,43}, {68,51}, {68,63}, {68,59}, {68,62},
+ {68,60}, {68,64}, {68,58}, {68,32}, {31,50}, {39,42}, {68,61}, {68,56},
+ {32,0}, {22,49}, {28,10}, {30,4}, {32,21}, {68,67}, {68,69}, {68,70},
+ {68,66}, {68,68}, {68,57}, {68,65}, {68,73}, {68,72}, {42,89}, {22,10},
+ {68,71}, {68,75}, {68,74}, {68,78}, {68,80}, {26,27}, {68,76}, {68,81},
+ {68,82}, {68,83}, {68,89}, {36,26}, {68,85}, {68,84}, {68,86}, {68,87},
+ {68,88}, {68,90}, {68,91}, {19,43}, {68,92}, {68,93}, {69,0}, {69,1},
+ {69,2}, {69,3}, {69,4}, {69,5}, {69,7}, {69,6}, {69,8}, {69,9}, {69,10},
+ {69,13}, {69,11}, {69,12}, {25,64}, {22,50}, {34,53}, {39,18}, {28,79},
+ {38,44}, {39,76}, {69,14}, {55,76}, {69,15}, {69,17}, {44,68}, {69,16},
+ {69,19}, {69,18}, {44,50}, {69,20}, {39,93}, {69,21}, {69,24}, {69,23},
+ {69,22}, {69,25}, {22,17}, {32,1}, {20,32}, {69,29}, {69,26}, {69,27},
+ {69,30}, {69,31}, {69,28}, {16,8}, {17,6}, {69,33}, {69,34}, {69,35},
+ {44,65}, {28,11}, {69,37}, {69,36}, {30,72}, {69,38}, {69,39}, {69,40},
+ {19,68}, {19,44}, {69,41}, {69,42}, {42,60}, {44,66}, {44,51}, {46,22},
+ {24,44}, {69,45}, {27,51}, {69,44}, {69,46}, {27,8}, {33,48}, {69,47},
+ {24,43}, {43,54}, {69,48}, {69,49}, {69,50}, {69,51}, {69,52}, {27,9},
+ {43,76}, {69,54}, {34,30}, {69,53}, {69,56}, {69,55}, {69,57}, {31,26},
+ {69,58}, {69,59}, {41,24}, {69,60}, {32,78}, {69,61}, {69,62}, {45,93},
+ {69,65}, {69,64}, {69,63}, {35,15}, {69,66}, {30,5}, {69,67}, {69,68},
+ {46,23}, {69,69}, {69,70}, {69,72}, {69,71}, {39,4}, {37,88}, {46,29},
+ {39,8}, {69,74}, {29,50}, {40,9}, {69,75}, {69,73}, {19,45}, {23,51},
+ {26,71}, {39,77}, {23,9}, {42,34}, {69,78}, {69,76}, {24,45}, {24,46},
+ {15,72}, {25,71}, {38,56}, {15,62}, {69,83}, {34,31}, {38,55}, {33,58},
+ {69,85}, {69,81}, {69,84}, {69,79}, {69,82}, {42,5}, {23,52}, {15,92},
+ {69,80}, {69,87}, {69,88}, {37,24}, {21,26}, {70,5}, {38,28}, {26,72},
+ {21,27}, {31,39}, {46,37}, {43,13}, {69,86}, {31,51}, {20,50}, {69,89},
+ {69,91}, {69,90}, {69,92}, {34,5}, {38,29}, {35,16}, {70,2}, {70,1},
+ {69,93}, {30,52}, {40,68}, {70,4}, {70,3}, {24,47}, {46,50}, {70,20},
+ {70,8}, {70,9}, {27,79}, {70,7}, {24,87}, {70,6}, {70,10}, {35,17},
+ {41,1}, {32,2}, {33,59}, {70,14}, {70,15}, {70,11}, {70,12}, {70,13},
+ {24,48}, {70,21}, {70,17}, {40,69}, {42,75}, {40,7}, {70,16}, {70,19},
+ {70,18}, {42,35}, {70,22}, {70,23}, {32,22}, {70,24}, {70,26}, {70,30},
+ {70,27}, {70,25}, {38,30}, {70,28}, {70,29}, {17,17}, {70,36}, {70,31},
+ {70,32}, {70,33}, {33,0}, {70,35}, {70,34}, {70,37}, {70,38}, {70,39},
+ {30,34}, {17,72}, {70,40}, {45,54}, {27,10}, {28,12}, {26,73}, {34,54},
+ {70,41}, {70,42}, {16,16}, {70,43}, {70,44}, {70,45}, {70,46}, {70,47},
+ {21,28}, {57,9}, {70,48}, {31,68}, {70,49}, {27,42}, {70,50}, {47,15},
+ {70,51}, {41,61}, {19,59}, {32,3}, {28,55}, {40,80}, {28,13}, {70,52},
+ {24,49}, {70,53}, {39,43}, {70,67}, {70,55}, {33,40}, {38,84}, {23,30},
+ {70,54}, {32,4}, {70,56}, {35,89}, {70,58}, {70,57}, {70,60}, {70,59},
+ {70,61}, {70,63}, {70,62}, {19,46}, {70,64}, {70,65}, {70,66}, {25,16},
+ {45,40}, {70,68}, {30,6}, {16,79}, {70,69}, {70,70}, {70,71}, {15,81},
+ {70,72}, {70,73}, {40,70}, {27,38}, {70,75}, {18,8}, {15,17}, {70,74},
+ {70,77}, {38,45}, {30,35}, {17,53}, {42,6}, {22,60}, {21,59}, {70,76},
+ {17,73}, {19,2}, {16,80}, {70,81}, {45,73}, {33,60}, {40,35}, {70,93},
+ {17,54}, {70,91}, {70,89}, {70,80}, {70,78}, {70,79}, {27,66}, {21,75},
+ {34,86}, {37,48}, {16,48}, {70,83}, {70,82}, {70,88}, {70,84}, {70,87},
+ {43,47}, {70,86}, {17,55}, {18,92}, {70,90}, {70,92}, {22,51}, {71,2},
+ {71,11}, {71,12}, {15,10}, {71,19}, {15,80}, {71,10}, {71,9}, {71,4},
+ {71,3}, {71,1}, {71,0}, {34,66}, {33,90}, {71,6}, {71,5}, {71,8}, {32,79},
+ {22,52}, {16,32}, {71,7}, {24,50}, {32,80}, {71,25}, {71,26}, {17,56},
+ {17,13}, {71,23}, {71,13}, {71,21}, {71,28}, {71,22}, {71,20}, {70,85},
+ {71,18}, {71,14}, {19,47}, {71,16}, {71,27}, {71,17}, {71,29}, {71,15},
+ {38,91}, {44,72}, {71,24}, {71,46}, {71,38}, {30,90}, {20,37}, {21,60},
+ {71,33}, {17,58}, {29,51}, {71,36}, {25,57}, {36,48}, {71,41}, {41,77},
+ {71,32}, {17,57}, {23,53}, {40,8}, {71,42}, {71,30}, {71,39}, {71,49},
+ {71,34}, {71,35}, {37,25}, {71,40}, {71,37}, {42,7}, {71,43}, {15,63},
+ {71,31}, {71,45}, {71,44}, {38,74}, {71,51}, {71,62}, {18,93}, {71,65},
+ {71,47}, {71,52}, {44,77}, {71,61}, {44,52}, {45,9}, {34,87}, {18,74},
+ {40,81}, {71,67}, {37,0}, {15,16}, {71,60}, {71,56}, {32,81}, {71,50},
+ {71,58}, {71,63}, {38,11}, {15,9}, {71,55}, {71,64}, {40,87}, {71,59},
+ {71,54}, {29,52}, {28,14}, {27,11}, {43,55}, {40,38}, {71,70}, {71,79},
+ {71,57}, {18,86}, {29,87}, {71,68}, {71,73}, {32,82}, {71,69}, {71,76},
+ {34,62}, {71,77}, {44,53}, {71,66}, {18,23}, {71,72}, {71,75}, {43,11},
+ {71,78}, {71,71}, {71,74}, {42,8}, {46,0}, {71,82}, {71,89}, {71,81},
+ {27,34}, {71,48}, {41,45}, {43,1}, {71,88}, {71,87}, {71,83}, {71,84},
+ {16,21}, {71,86}, {71,80}, {35,52}, {71,85}, {15,93}, {33,1}, {41,34},
+ {71,90}, {72,0}, {39,56}, {71,93}, {29,53}, {27,40}, {72,2}, {21,29},
+ {72,3}, {40,88}, {71,92}, {71,53}, {71,91}, {46,46}, {37,1}, {40,82},
+ {72,10}, {72,16}, {72,17}, {72,4}, {38,85}, {72,14}, {72,6}, {72,8},
+ {72,18}, {72,7}, {72,11}, {16,81}, {37,68}, {72,12}, {72,15}, {72,5},
+ {32,5}, {72,9}, {26,6}, {30,36}, {22,15}, {43,83}, {43,88}, {28,81},
+ {72,22}, {72,20}, {46,45}, {72,19}, {44,84}, {72,21}, {72,23}, {72,24},
+ {72,27}, {72,25}, {37,2}, {72,26}, {39,44}, {72,13}, {28,82}, {72,28},
+ {72,33}, {32,83}, {72,32}, {72,1}, {72,34}, {32,40}, {72,29}, {72,31},
+ {72,30}, {60,16}, {60,1}, {72,36}, {72,35}, {44,85}, {65,27}, {72,37},
+ {72,38}, {72,39}, {23,54}, {20,51}, {72,41}, {48,60}, {20,84}, {45,25},
+ {21,82}, {72,42}, {72,43}, {34,77}, {72,44}, {37,89}, {15,25}, {17,66},
+ {72,49}, {72,50}, {72,45}, {26,28}, {72,46}, {38,33}, {72,47}, {72,48},
+ {72,58}, {72,52}, {72,55}, {72,51}, {72,53}, {72,54}, {27,55}, {72,56},
+ {34,32}, {22,53}, {18,33}, {72,59}, {18,30}, {72,64}, {72,60}, {72,63},
+ {39,25}, {72,61}, {72,62}, {40,39}, {39,57}, {72,65}, {33,92}, {72,75},
+ {72,71}, {17,74}, {72,69}, {42,9}, {72,70}, {72,67}, {72,68}, {72,73},
+ {72,76}, {72,74}, {72,72}, {72,66}, {34,55}, {72,83}, {43,9}, {72,81},
+ {72,82}, {72,77}, {72,79}, {72,80}, {72,78}, {31,69}, {46,24}, {72,87},
+ {72,88}, {73,0}, {30,9}, {72,90}, {72,93}, {72,85}, {72,84}, {73,1},
+ {17,59}, {72,91}, {73,2}, {72,92}, {72,89}, {35,18}, {72,86}, {38,71},
+ {73,6}, {44,26}, {73,5}, {73,4}, {73,13}, {73,7}, {73,15}, {44,69},
+ {73,18}, {73,9}, {73,10}, {73,14}, {73,17}, {73,16}, {73,8}, {73,11},
+ {73,28}, {73,21}, {73,19}, {73,20}, {73,25}, {73,26}, {18,9}, {20,33},
+ {73,24}, {73,3}, {73,23}, {73,27}, {73,22}, {73,29}, {73,31}, {73,30},
+ {73,33}, {73,32}, {72,57}, {73,37}, {73,34}, {73,35}, {73,36}, {73,38},
+ {22,75}, {73,40}, {73,39}, {28,15}, {24,51}, {61,6}, {73,41}, {28,48},
+ {18,24}, {73,42}, {16,49}, {29,54}, {73,43}, {24,52}, {73,44}, {15,64},
+ {40,28}, {73,45}, {30,73}, {73,52}, {73,49}, {34,78}, {73,50}, {73,47},
+ {21,61}, {73,46}, {73,53}, {22,21}, {33,61}, {73,59}, {73,55}, {33,20},
+ {73,54}, {73,57}, {73,48}, {73,58}, {73,60}, {39,78}, {73,56}, {73,61},
+ {73,63}, {23,50}, {73,51}, {15,32}, {73,62}, {25,58}, {45,85}, {73,64},
+ {73,65}, {32,84}, {45,1}, {73,66}, {44,20}, {73,67}, {73,68}, {41,67},
+ {73,69}, {25,31}, {45,2}, {73,74}, {73,75}, {29,55}, {73,73}, {44,70},
+ {73,70}, {73,72}, {31,28}, {30,93}, {73,71}, {73,76}, {41,2}, {73,78},
+ {73,77}, {18,75}, {42,10}, {73,79}, {73,91}, {73,81}, {73,82}, {73,83},
+ {73,84}, {73,88}, {73,89}, {73,87}, {73,85}, {73,80}, {73,86}, {73,90},
+ {79,22}, {17,7}, {73,93}, {21,62}, {73,92}, {74,1}, {74,0}, {74,3},
+ {74,2}, {74,4}, {28,16}, {74,5}, {74,6}, {74,7}, {31,29}, {44,54},
+ {74,8}, {41,3}, {38,37}, {74,9}, {74,10}, {23,10}, {20,11}, {74,11},
+ {26,74}, {38,32}, {74,12}, {18,47}, {74,13}, {74,15}, {44,86}, {74,14},
+ {30,37}, {74,16}, {74,17}, {74,18}, {19,48}, {74,19}, {74,20}, {74,21},
+ {74,22}, {18,48}, {74,23}, {74,24}, {74,25}, {17,81}, {30,7}, {74,26},
+ {74,27}, {74,28}, {23,31}, {35,90}, {74,29}, {22,54}, {30,53}, {74,32},
+ {37,3}, {74,31}, {22,16}, {74,30}, {33,86}, {20,12}, {74,33}, {74,34},
+ {29,56}, {22,76}, {74,35}, {42,11}, {31,62}, {20,85}, {43,84}, {32,41},
+ {74,36}, {30,38}, {34,79}, {29,57}, {74,37}, {74,40}, {74,41}, {25,29},
+ {33,33}, {74,39}, {29,58}, {40,29}, {74,38}, {26,75}, {16,50}, {74,45},
+ {22,55}, {26,77}, {26,76}, {46,44}, {74,44}, {74,43}, {32,6}, {20,44},
+ {46,34}, {18,25}, {29,59}, {74,42}, {74,47}, {74,48}, {74,46}, {23,55},
+ {44,31}, {26,78}, {38,6}, {74,51}, {31,31}, {34,33}, {44,21}, {74,54},
+ {23,75}, {31,30}, {74,50}, {74,55}, {23,76}, {74,52}, {74,53}, {74,49},
+ {31,65}, {37,40}, {34,14}, {17,60}, {39,79}, {20,34}, {35,19}, {74,58},
+ {74,56}, {34,43}, {31,32}, {19,49}, {74,57}, {30,58}, {45,41}, {46,31},
+ {74,59}, {74,70}, {35,20}, {74,69}, {74,66}, {74,74}, {74,67}, {74,63},
+ {35,91}, {74,62}, {74,60}, {44,0}, {26,79}, {74,64}, {74,61}, {74,68},
+ {28,83}, {23,32}, {33,89}, {42,36}, {16,57}, {15,65}, {37,4}, {74,72},
+ {74,71}, {37,69}, {74,76}, {74,65}, {74,75}, {74,77}, {23,11}, {74,73},
+ {24,53}, {27,52}, {74,78}, {44,55}, {74,81}, {74,84}, {74,82}, {40,20},
+ {74,79}, {21,63}, {74,83}, {74,85}, {74,89}, {74,86}, {74,88}, {74,87},
+ {74,90}, {27,16}, {74,92}, {74,91}, {40,71}, {75,0}, {22,56}, {74,93},
+ {75,1}, {75,2}, {20,35}, {69,32}, {29,88}, {75,3}, {23,77}, {75,4},
+ {75,5}, {26,29}, {57,45}, {75,6}, {75,7}, {28,17}, {75,8}, {75,9},
+ {75,10}, {75,11}, {75,12}, {34,10}, {75,13}, {75,15}, {75,14}, {37,5},
+ {75,16}, {42,12}, {75,17}, {75,18}, {75,19}, {75,20}, {37,57}, {29,60},
+ {75,21}, {24,74}, {47,13}, {75,22}, {75,23}, {40,30}, {75,24}, {75,32},
+ {75,25}, {75,27}, {75,26}, {75,28}, {42,37}, {75,29}, {75,30}, {75,31},
+ {75,33}, {18,12}, {35,70}, {40,72}, {25,65}, {24,54}, {40,46}, {17,62},
+ {39,45}, {75,36}, {19,50}, {31,52}, {75,35}, {75,40}, {34,88}, {43,66},
+ {75,38}, {75,39}, {20,13}, {75,41}, {38,66}, {33,62}, {39,80}, {36,28},
+ {75,37}, {42,38}, {17,75}, {75,43}, {46,7}, {35,33}, {46,36}, {26,80},
+ {75,42}, {33,16}, {75,59}, {32,7}, {37,87}, {40,47}, {75,46}, {26,30},
+ {26,81}, {29,61}, {38,68}, {23,12}, {75,45}, {75,44}, {40,73}, {27,32},
+ {36,49}, {75,48}, {75,49}, {24,55}, {75,47}, {75,50}, {75,51}, {75,53},
+ {33,2}, {75,52}, {19,69}, {75,55}, {75,54}, {75,56}, {75,58}, {75,60},
+ {75,61}, {31,53}, {27,46}, {75,62}, {18,49}, {75,63}, {32,85}, {75,64},
+ {75,65}, {40,74}, {20,14}, {75,66}, {35,21}, {16,58}, {75,67}, {27,80},
+ {30,85}, {33,12}, {75,70}, {75,69}, {75,68}, {75,76}, {75,74}, {75,71},
+ {75,73}, {75,72}, {75,75}, {20,86}, {75,79}, {31,54}, {75,80}, {23,56},
+ {75,77}, {75,78}, {46,8}, {35,22}, {32,8}, {75,81}, {75,84}, {75,82},
+ {75,83}, {44,56}, {37,6}, {75,87}, {75,85}, {75,86}, {75,88}, {76,8},
+ {75,91}, {75,92}, {75,90}, {75,89}, {35,92}, {76,0}, {76,4}, {76,1},
+ {75,93}, {76,2}, {76,3}, {76,10}, {76,5}, {31,55}, {76,7}, {76,9},
+ {76,6}, {76,12}, {28,18}, {76,11}, {76,13}, {76,14}, {76,17}, {76,16},
+ {76,15}, {76,19}, {76,18}, {43,85}, {76,21}, {76,20}, {76,22}, {76,23},
+ {76,25}, {76,24}, {30,39}, {76,26}, {21,76}, {76,27}, {76,29}, {76,30},
+ {76,31}, {76,28}, {76,32}, {27,53}, {76,33}, {20,15}, {22,18}, {23,13},
+ {76,34}, {37,79}, {36,29}, {76,35}, {76,38}, {27,19}, {76,37}, {76,36},
+ {22,57}, {76,39}, {18,50}, {76,41}, {25,59}, {76,40}, {76,49}, {76,43},
+ {76,45}, {41,68}, {76,42}, {76,44}, {76,48}, {76,46}, {20,16}, {76,47},
+ {76,50}, {38,57}, {45,55}, {28,19}, {76,51}, {44,1}, {76,53}, {76,52},
+ {76,56}, {44,32}, {76,55}, {18,76}, {76,54}, {76,59}, {76,58}, {76,57},
+ {36,17}, {76,60}, {76,61}, {76,62}, {24,75}, {22,4}, {76,63}, {76,64},
+ {76,65}, {30,40}, {76,66}, {27,12}, {76,67}, {76,68}, {49,0}, {48,93},
+ {76,69}, {68,79}, {76,70}, {34,3}, {30,10}, {38,31}, {76,71}, {41,52},
+ {35,51}, {24,93}, {34,8}, {16,9}, {42,87}, {30,54}, {22,61}, {21,64},
+ {41,53}, {76,72}, {76,74}, {76,73}, {17,63}, {37,85}, {76,75}, {38,86},
+ {36,18}, {76,76}, {28,49}, {76,78}, {43,33}, {76,93}, {76,80}, {76,81},
+ {35,40}, {33,63}, {32,86}, {37,7}, {76,79}, {20,52}, {76,88}, {76,85},
+ {77,4}, {37,8}, {34,63}, {76,82}, {35,93}, {36,50}, {76,83}, {76,87},
+ {30,63}, {38,70}, {35,43}, {31,33}, {76,86}, {33,13}, {33,3}, {76,84},
+ {15,8}, {46,1}, {76,89}, {33,64}, {28,20}, {30,41}, {76,91}, {76,90},
+ {15,78}, {76,92}, {40,14}, {77,6}, {37,58}, {30,74}, {34,56}, {21,87},
+ {77,5}, {44,22}, {16,30}, {41,54}, {17,64}, {77,0}, {77,1}, {77,2},
+ {77,3}, {37,26}, {34,2}, {15,66}, {77,7}, {77,8}, {83,2}, {33,28},
+ {77,9}, {16,82}, {32,43}, {23,14}, {44,57}, {77,10}, {36,11}, {32,87},
+ {27,54}, {77,11}, {77,14}, {28,68}, {77,12}, {32,10}, {32,9}, {15,67},
+ {45,42}, {77,16}, {39,81}, {77,18}, {77,17}, {77,15}, {66,67}, {19,51},
+ {76,77}, {77,20}, {77,19}, {77,21}, {44,23}, {37,64}, {42,13}, {77,22},
+ {27,56}, {77,23}, {77,24}, {77,25}, {36,0}, {15,73}, {24,56}, {46,25},
+ {77,29}, {22,19}, {77,26}, {77,27}, {40,83}, {18,51}, {44,24}, {21,30},
+ {36,51}, {77,30}, {77,31}, {77,32}, {36,1}, {77,34}, {77,33}, {37,50},
+ {77,35}, {28,21}, {27,63}, {38,58}, {34,80}, {27,81}, {30,75}, {77,36},
+ {77,37}, {30,60}, {77,38}, {77,39}, {77,40}, {44,78}, {28,22}, {77,42},
+ {77,41}, {24,57}, {24,82}, {26,31}, {77,45}, {28,69}, {77,44}, {77,43},
+ {33,72}, {23,78}, {31,34}, {39,15}, {28,24}, {77,46}, {29,62}, {77,49},
+ {77,47}, {77,48}, {77,51}, {77,50}, {29,89}, {77,52}, {77,53}, {77,54},
+ {39,47}, {25,50}, {27,64}, {77,55}, {77,56}, {45,3}, {28,36}, {43,77},
+ {45,43}, {77,57}, {21,65}, {77,58}, {36,2}, {77,61}, {18,87}, {30,42},
+ {77,59}, {77,60}, {35,63}, {42,52}, {21,91}, {77,63}, {77,64}, {77,62},
+ {77,66}, {37,62}, {18,34}, {77,70}, {77,67}, {77,69}, {77,65}, {78,46},
+ {77,68}, {45,74}, {23,57}, {77,78}, {36,19}, {77,73}, {77,76}, {77,74},
+ {77,79}, {77,80}, {77,72}, {77,85}, {16,83}, {77,71}, {39,12}, {77,75},
+ {29,63}, {24,58}, {42,39}, {21,67}, {28,37}, {37,27}, {32,12}, {77,83},
+ {77,77}, {77,82}, {43,34}, {35,23}, {77,84}, {77,81}, {32,11}, {77,88},
+ {77,87}, {77,86}, {42,14}, {28,90}, {77,89}, {41,62}, {16,51}, {40,37},
+ {34,81}, {20,87}, {77,91}, {24,60}, {26,11}, {77,90}, {30,76}, {30,77},
+ {78,0}, {78,2}, {29,90}, {78,1}, {78,3}, {21,50}, {40,36}, {27,65},
+ {46,2}, {77,93}, {25,87}, {46,30}, {78,5}, {78,4}, {78,6}, {77,92},
+ {37,72}, {36,52}, {35,54}, {78,11}, {34,34}, {78,7}, {78,8}, {22,12},
+ {78,10}, {23,15}, {78,9}, {29,64}, {18,88}, {78,15}, {25,30}, {32,88},
+ {35,41}, {18,26}, {78,13}, {78,14}, {35,34}, {78,12}, {78,16}, {78,22},
+ {78,25}, {78,24}, {36,12}, {78,17}, {78,18}, {78,21}, {78,23}, {21,31},
+ {78,26}, {78,20}, {78,19}, {78,30}, {78,31}, {78,32}, {78,29}, {78,28},
+ {29,65}, {37,9}, {78,27}, {78,36}, {78,34}, {78,35}, {78,33}, {33,87},
+ {78,37}, {78,38}, {78,40}, {19,52}, {78,39}, {43,89}, {78,51}, {78,41},
+ {78,44}, {78,42}, {78,43}, {78,45}, {78,47}, {78,48}, {78,49}, {78,52},
+ {78,50}, {78,53}, {78,55}, {78,54}, {35,24}, {43,70}, {78,56}, {32,13},
+ {78,57}, {41,35}, {78,58}, {18,10}, {16,27}, {19,54}, {19,53}, {78,59},
+ {78,60}, {78,61}, {78,62}, {78,63}, {19,55}, {18,52}, {24,61}, {39,21},
+ {78,65}, {78,64}, {78,66}, {16,59}, {78,69}, {78,68}, {78,67}, {78,70},
+ {78,73}, {15,38}, {78,71}, {78,75}, {78,74}, {78,77}, {78,76}, {78,78},
+ {37,13}, {78,79}, {78,80}, {78,82}, {78,81}, {40,75}, {78,83}, {78,84},
+ {25,68}, {78,85}, {78,86}, {42,40}, {32,42}, {15,3}, {33,42}, {78,87},
+ {40,76}, {78,90}, {78,88}, {24,62}, {78,89}, {23,33}, {41,36}, {78,92},
+ {79,0}, {78,93}, {79,1}, {16,0}, {30,55}, {28,91}, {19,56}, {79,2},
+ {38,69}, {79,4}, {16,1}, {79,3}, {35,35}, {45,44}, {37,10}, {78,91},
+ {45,5}, {23,16}, {44,58}, {21,88}, {45,19}, {22,7}, {33,65}, {70,0},
+ {79,5}, {18,11}, {30,78}, {18,53}, {79,7}, {79,8}, {79,6}, {22,67},
+ {25,60}, {29,66}, {16,2}, {45,56}, {79,10}, {77,13}, {79,9}, {79,13},
+ {79,11}, {79,12}, {79,14}, {79,15}, {45,75}, {79,16}, {79,17}, {31,40},
+ {39,26}, {30,92}, {19,70}, {44,25}, {17,76}, {28,23}, {23,58}, {79,20},
+ {79,19}, {26,82}, {79,21}, {79,18}, {26,7}, {79,25}, {73,12}, {49,53},
+ {30,86}, {79,23}, {45,4}, {37,80}, {16,10}, {31,66}, {27,21}, {41,22},
+ {16,31}, {45,76}, {44,74}, {79,26}, {36,36}, {27,90}, {79,27}, {79,28},
+ {30,43}, {79,29}, {45,77}, {79,24}, {79,31}, {79,33}, {79,32}, {79,30},
+ {79,34}, {79,35}, {32,89}, {17,65}, {79,36}, {43,23}, {79,37}, {79,38},
+ {46,9}, {58,16}, {79,39}, {79,40}, {79,41}, {79,45}, {79,42}, {79,43},
+ {79,44}, {79,46}, {31,35}, {43,86}, {31,36}, {79,47}, {39,82}, {79,48},
+ {82,50}, {43,43}, {79,49}, {79,50}, {79,51}, {18,54}, {79,53}, {30,56},
+ {79,54}, {22,3}, {79,55}, {79,59}, {79,57}, {79,58}, {18,82}, {79,56},
+ {79,60}, {79,61}, {15,39}, {79,62}, {79,63}, {29,67}, {79,64}, {20,38},
+ {79,67}, {79,66}, {79,65}, {74,80}, {41,59}, {79,68}, {79,69}, {79,70},
+ {79,71}, {79,72}, {79,73}, {19,57}, {79,74}, {79,75}, {38,2}, {79,77},
+ {17,26}, {79,80}, {79,79}, {16,3}, {21,32}, {41,38}, {35,25}, {25,1},
+ {24,63}, {28,70}, {30,59}, {79,82}, {79,81}, {44,33}, {19,71}, {39,49},
+ {37,59}, {30,91}, {45,45}, {22,58}, {79,85}, {79,84}, {42,42}, {37,11},
+ {16,47}, {79,86}, {79,83}, {40,48}, {44,73}, {79,87}, {79,88}, {79,90},
+ {33,73}, {18,58}, {18,59}, {79,89}, {19,72}, {23,17}, {19,73}, {36,30},
+ {45,63}, {23,59}, {79,91}, {79,92}, {79,93}, {80,0}, {80,2}, {80,1},
+ {40,86}, {80,3}, {80,4}, {80,5}, {80,6}, {80,8}, {80,7}, {80,9}, {39,83},
+ {69,43}, {30,8}, {20,17}, {80,10}, {80,11}, {49,11}, {60,26}, {39,50},
+ {15,90}, {15,26}, {26,83}, {42,15}, {29,93}, {80,12}, {43,62}, {80,13},
+ {44,59}, {16,33}, {26,32}, {80,14}, {17,77}, {80,15}, {80,16}, {80,18},
+ {80,19}, {80,21}, {80,17}, {80,20}, {19,58}, {80,22}, {80,23}, {80,24},
+ {80,25}, {80,26}, {80,28}, {80,27}, {80,30}, {80,33}, {80,29}, {80,31},
+ {80,32}, {80,34}, {21,33}, {27,82}, {80,35}, {80,36}, {24,64}, {80,37},
+ {18,29}, {38,46}, {80,38}, {80,39}, {34,57}, {37,74}, {80,40}, {38,92},
+ {33,43}, {16,55}, {21,77}, {21,78}, {34,82}, {80,45}, {21,79}, {17,78},
+ {80,44}, {80,42}, {80,43}, {80,41}, {80,55}, {80,46}, {80,47}, {80,48},
+ {80,49}, {80,51}, {80,50}, {28,56}, {80,52}, {80,54}, {20,18}, {80,53},
+ {32,90}, {23,18}, {80,56}, {33,44}, {80,57}, {37,12}, {80,58}, {80,63},
+ {80,61}, {80,60}, {80,62}, {80,59}, {80,65}, {80,64}, {80,67}, {21,34},
+ {80,66}, {80,68}, {80,69}, {80,71}, {80,70}, {80,72}, {80,74}, {80,73},
+ {24,91}, {80,75}, {80,76}, {18,27}, {80,77}, {80,78}, {30,80}, {80,79},
+ {80,80}, {80,81}, {80,82}, {24,65}, {80,83}, {80,84}, {80,85}, {80,86},
+ {80,87}, {39,16}, {80,89}, {40,5}, {80,90}, {80,88}, {80,92}, {80,91},
+ {80,93}, {81,0}, {81,1}, {81,2}, {81,3}, {81,4}, {81,5}, {81,6}, {81,7},
+ {81,8}, {81,9}, {81,10}, {81,11}, {81,12}, {81,13}, {60,20}, {81,14},
+ {67,87}, {20,19}, {18,0}, {25,17}, {81,16}, {81,15}, {43,4}, {81,18},
+ {81,19}, {81,17}, {81,20}, {42,65}, {81,21}, {20,90}, {46,4}, {81,22},
+ {81,24}, {15,29}, {81,25}, {41,10}, {81,23}, {81,26}, {81,27}, {81,28},
+ {81,29}, {81,30}, {42,77}, {26,12}, {25,89}, {32,14}, {81,31}, {81,34},
+ {81,32}, {81,35}, {23,80}, {81,33}, {81,36}, {81,37}, {81,38}, {81,42},
+ {26,9}, {33,67}, {81,43}, {81,40}, {81,39}, {81,41}, {22,62}, {81,47},
+ {81,46}, {81,45}, {15,18}, {81,57}, {81,53}, {81,54}, {81,50}, {81,56},
+ {81,52}, {18,65}, {46,43}, {81,55}, {81,51}, {81,49}, {81,48}, {81,59},
+ {81,62}, {81,61}, {81,60}, {40,40}, {81,58}, {15,82}, {81,63}, {81,65},
+ {18,78}, {81,44}, {16,22}, {81,67}, {81,66}, {81,64}, {34,12}, {42,79},
+ {45,57}, {81,68}, {81,69}, {81,70}, {81,71}, {81,72}, {35,26}, {81,73},
+ {39,22}, {81,78}, {81,74}, {81,75}, {42,16}, {43,35}, {37,47}, {81,79},
+ {81,80}, {37,29}, {81,77}, {81,76}, {17,9}, {81,88}, {81,87}, {16,84},
+ {81,85}, {81,84}, {81,82}, {18,90}, {81,81}, {27,17}, {17,8}, {24,66},
+ {81,91}, {81,90}, {81,89}, {81,86}, {81,92}, {81,93}, {82,4}, {82,3},
+ {82,5}, {16,12}, {82,0}, {82,1}, {24,83}, {43,24}, {82,2}, {42,17},
+ {82,10}, {82,6}, {82,11}, {82,8}, {82,7}, {22,59}, {82,12}, {82,13},
+ {82,14}, {82,9}, {81,83}, {82,15}, {35,64}, {82,19}, {82,20}, {82,18},
+ {82,17}, {82,23}, {82,16}, {82,21}, {82,22}, {82,25}, {82,24}, {82,27},
+ {82,28}, {82,29}, {46,40}, {82,26}, {33,74}, {25,76}, {82,30}, {82,31},
+ {82,32}, {82,33}, {82,34}, {23,19}, {82,35}, {82,36}, {27,14}, {82,37},
+ {82,38}, {82,39}, {82,40}, {82,43}, {82,41}, {46,27}, {82,42}, {45,78},
+ {82,44}, {45,58}, {82,45}, {38,93}, {82,46}, {82,48}, {82,49}, {82,47},
+ {24,76}, {43,44}, {42,66}, {53,86}, {60,63}, {42,90}, {17,10}, {82,51},
+ {20,47}, {82,52}, {82,53}, {82,54}, {24,84}, {82,55}, {63,51}, {43,58},
+ {33,66}, {82,56}, {82,58}, {82,57}, {82,59}, {82,60}, {82,61}, {82,62},
+ {82,63}, {82,64}, {82,65}, {82,66}, {82,67}, {82,68}, {82,69}, {82,70},
+ {82,71}, {36,3}, {23,60}, {82,73}, {32,44}, {82,74}, {82,75}, {40,0},
+ {82,76}, {82,77}, {66,22}, {75,57}, {79,76}, {82,78}, {82,79}, {82,81},
+ {82,82}, {82,83}, {45,79}, {82,80}, {82,84}, {82,85}, {82,87}, {82,86},
+ {82,89}, {82,90}, {82,88}, {45,21}, {82,91}, {82,92}, {66,51}, {82,93},
+ {0,9}, {0,83}, {0,79}, {0,82}, {0,84}, {0,41}, {0,42}, {0,85}, {0,59},
+ {0,3}, {0,4}, {0,30}, {2,15}, {2,16}, {2,17}, {2,18}, {2,19}, {2,20},
+ {2,21}, {2,22}, {2,23}, {2,24}, {0,6}, {0,7}, {0,66}, {0,64}, {0,67},
+ {0,8}, {0,86}, {2,32}, {2,33}, {2,34}, {2,35}, {2,36}, {2,37}, {2,38},
+ {2,39}, {2,40}, {2,41}, {2,42}, {2,43}, {2,44}, {2,45}, {2,46}, {2,47},
+ {2,48}, {2,49}, {2,50}, {2,51}, {2,52}, {2,53}, {2,54}, {2,55}, {2,56},
+ {2,57}, {0,45}, {0,46}, {0,15}, {0,17}, {0,13}, {2,64}, {2,65}, {2,66},
+ {2,67}, {2,68}, {2,69}, {2,70}, {2,71}, {2,72}, {2,73}, {2,74}, {2,75},
+ {2,76}, {2,77}, {2,78}, {2,79}, {2,80}, {2,81}, {2,82}, {2,83}, {2,84},
+ {2,85}, {2,86}, {2,87}, {2,88}, {2,89}, {0,47}, {0,34}, {0,48}, {0,16},
+ {0,78}
+};
+
+/* This returns ERROR if the code point doesn't exist. */
+long int jisx0208_to_unicode(int r, int c)
+{
+ assert(r >= 0 && r < 94);
+ assert(c >= 0 && c < 94);
+ return jisx0208_forward[r][c];
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_jisx0208(long int unicode, int *r, int *c)
+{
+ int rr, cc;
+ long int uu;
+ int i, j, k;
+
+ i = -1;
+ j = lenof(jisx0208_backward);
+ while (j - i > 1) {
+ k = (i + j) / 2;
+ rr = jisx0208_backward[k].r;
+ cc = jisx0208_backward[k].c;
+ uu = jisx0208_forward[rr][cc];
+ if (unicode > uu)
+ i = k;
+ else if (unicode < uu)
+ j = k;
+ else {
+ *r = rr;
+ *c = cc;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+
+int main(void)
+{
+ int r, c, rr, cc, ret;
+ long int u, uu;
+
+ for (r = 0; r < 94; r++) {
+ for (c = 0; c < 94; c++) {
+ u = jisx0208_to_unicode(r, c);
+ if (u != ERROR) {
+ ret = unicode_to_jisx0208(u, &rr, &cc);
+ if (!ret)
+ printf("(%d,%d) -> U-%08lx but didn't convert back\n",
+ r, c, u);
+ else if (rr != r || cc != c)
+ printf("(%d,%d) -> U-%08lx -> (%d,%d)\n",
+ r, c, u, rr, cc);
+ }
+ }
+ }
+
+ for (u = 0; u < 0x10000L; u++) {
+ ret = unicode_to_jisx0208(u, &r, &c);
+ if (ret) {
+ uu = jisx0208_to_unicode(r, c);
+ if (uu == ERROR)
+ printf("U-%08lx -> (%d,%d) but didn't convert back\n",
+ u, r, c);
+ else if (uu != u)
+ printf("U-%08lx -> (%d,%d) -> U-%08lx\n", u, r, c, uu);
+ }
+ }
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/charset/jisx0212.c b/app/tools/halibut/charset/jisx0212.c
new file mode 100644
index 0000000..49be67f
--- /dev/null
+++ b/app/tools/halibut/charset/jisx0212.c
@@ -0,0 +1,1919 @@
+/*
+ * JIS X 0212 implementation for libcharset. (This is the character
+ * set itself, not any particular multibyte encoding of it.
+ * Multibyte encodings of this character set are handled
+ * separately.)
+ */
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * These tables are generated from the JIS X 0212 <-> Unicode
+ * character mapping found at
+ *
+ * http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT
+ */
+
+/*
+ * Mapping from JIS X 0212 to Unicode. For these purposes JIS X
+ * 0212 is considered to be a 94x94 square array, with coordinates
+ * running from (0,0) to (93,93).
+ *
+ * Generated by running the following sh+Perl over JIS0212.TXT:
+
+cat JIS0212.TXT | \
+perl -ne '$a{hex$1,hex$2}=$3 if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {for $r (0..93) { $o=" {"; for $c (0..93) {' \
+ -e '$k=$a{$r+33,$c+33}; $k=" ERROR" unless defined $k;' \
+ -e '$o .= ", " if $c > 0; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= $k; } print "$o},\n"; }}'
+
+ */
+
+static const unsigned short jisx0212_forward[94][94] = {
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x02D8, 0x02C7, 0x00B8, 0x02D9,
+ 0x02DD, 0x00AF, 0x02DB, 0x02DA, 0x007E, 0x0384, 0x0385, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x00A1, 0x00A6, 0x00BF,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0x00BA, 0x00AA, 0x00A9, 0x00AE, 0x2122, 0x00A4, 0x2116,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, 0x0386, 0x0388, 0x0389, 0x038A, 0x03AA, ERROR, 0x038C, ERROR,
+ 0x038E, 0x03AB, ERROR, 0x038F, ERROR, ERROR, ERROR, ERROR, 0x03AC,
+ 0x03AD, 0x03AE, 0x03AF, 0x03CA, 0x0390, 0x03CC, 0x03C2, 0x03CD, 0x03CB,
+ 0x03B0, 0x03CE, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x0402, 0x0403, 0x0404,
+ 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040E,
+ 0x040F, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045A,
+ 0x045B, 0x045C, 0x045E, 0x045F},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x00C6, 0x0110, ERROR, 0x0126, ERROR, 0x0132, ERROR, 0x0141, 0x013F,
+ ERROR, 0x014A, 0x00D8, 0x0152, ERROR, 0x0166, 0x00DE, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, 0x00E6, 0x0111, 0x00F0, 0x0127,
+ 0x0131, 0x0133, 0x0138, 0x0142, 0x0140, 0x0149, 0x014B, 0x00F8, 0x0153,
+ 0x00DF, 0x0167, 0x00FE, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x00C1, 0x00C0, 0x00C4, 0x00C2, 0x0102, 0x01CD, 0x0100, 0x0104, 0x00C5,
+ 0x00C3, 0x0106, 0x0108, 0x010C, 0x00C7, 0x010A, 0x010E, 0x00C9, 0x00C8,
+ 0x00CB, 0x00CA, 0x011A, 0x0116, 0x0112, 0x0118, ERROR, 0x011C, 0x011E,
+ 0x0122, 0x0120, 0x0124, 0x00CD, 0x00CC, 0x00CF, 0x00CE, 0x01CF, 0x0130,
+ 0x012A, 0x012E, 0x0128, 0x0134, 0x0136, 0x0139, 0x013D, 0x013B, 0x0143,
+ 0x0147, 0x0145, 0x00D1, 0x00D3, 0x00D2, 0x00D6, 0x00D4, 0x01D1, 0x0150,
+ 0x014C, 0x00D5, 0x0154, 0x0158, 0x0156, 0x015A, 0x015C, 0x0160, 0x015E,
+ 0x0164, 0x0162, 0x00DA, 0x00D9, 0x00DC, 0x00DB, 0x016C, 0x01D3, 0x0170,
+ 0x016A, 0x0172, 0x016E, 0x0168, 0x01D7, 0x01DB, 0x01D9, 0x01D5, 0x0174,
+ 0x00DD, 0x0178, 0x0176, 0x0179, 0x017D, 0x017B, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x00E1, 0x00E0, 0x00E4, 0x00E2, 0x0103, 0x01CE, 0x0101, 0x0105, 0x00E5,
+ 0x00E3, 0x0107, 0x0109, 0x010D, 0x00E7, 0x010B, 0x010F, 0x00E9, 0x00E8,
+ 0x00EB, 0x00EA, 0x011B, 0x0117, 0x0113, 0x0119, 0x01F5, 0x011D, 0x011F,
+ ERROR, 0x0121, 0x0125, 0x00ED, 0x00EC, 0x00EF, 0x00EE, 0x01D0, ERROR,
+ 0x012B, 0x012F, 0x0129, 0x0135, 0x0137, 0x013A, 0x013E, 0x013C, 0x0144,
+ 0x0148, 0x0146, 0x00F1, 0x00F3, 0x00F2, 0x00F6, 0x00F4, 0x01D2, 0x0151,
+ 0x014D, 0x00F5, 0x0155, 0x0159, 0x0157, 0x015B, 0x015D, 0x0161, 0x015F,
+ 0x0165, 0x0163, 0x00FA, 0x00F9, 0x00FC, 0x00FB, 0x016D, 0x01D4, 0x0171,
+ 0x016B, 0x0173, 0x016F, 0x0169, 0x01D8, 0x01DC, 0x01DA, 0x01D6, 0x0175,
+ 0x00FD, 0x00FF, 0x0177, 0x017A, 0x017E, 0x017C, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ {0x4E02, 0x4E04, 0x4E05, 0x4E0C, 0x4E12, 0x4E1F, 0x4E23, 0x4E24, 0x4E28,
+ 0x4E2B, 0x4E2E, 0x4E2F, 0x4E30, 0x4E35, 0x4E40, 0x4E41, 0x4E44, 0x4E47,
+ 0x4E51, 0x4E5A, 0x4E5C, 0x4E63, 0x4E68, 0x4E69, 0x4E74, 0x4E75, 0x4E79,
+ 0x4E7F, 0x4E8D, 0x4E96, 0x4E97, 0x4E9D, 0x4EAF, 0x4EB9, 0x4EC3, 0x4ED0,
+ 0x4EDA, 0x4EDB, 0x4EE0, 0x4EE1, 0x4EE2, 0x4EE8, 0x4EEF, 0x4EF1, 0x4EF3,
+ 0x4EF5, 0x4EFD, 0x4EFE, 0x4EFF, 0x4F00, 0x4F02, 0x4F03, 0x4F08, 0x4F0B,
+ 0x4F0C, 0x4F12, 0x4F15, 0x4F16, 0x4F17, 0x4F19, 0x4F2E, 0x4F31, 0x4F60,
+ 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, 0x4F3E, 0x4F40, 0x4F42, 0x4F48,
+ 0x4F49, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, 0x4F58, 0x4F5F, 0x4F63,
+ 0x4F6A, 0x4F6C, 0x4F6E, 0x4F71, 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D,
+ 0x4F7E, 0x4F81, 0x4F82, 0x4F84},
+ {0x4F85, 0x4F89, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F94,
+ 0x4F97, 0x4F99, 0x4F9A, 0x4F9E, 0x4F9F, 0x4FB2, 0x4FB7, 0x4FB9, 0x4FBB,
+ 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC5, 0x4FC6, 0x4FC8, 0x4FC9,
+ 0x4FCB, 0x4FCC, 0x4FCD, 0x4FCF, 0x4FD2, 0x4FDC, 0x4FE0, 0x4FE2, 0x4FF0,
+ 0x4FF2, 0x4FFC, 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5004, 0x5007, 0x500A,
+ 0x500C, 0x500E, 0x5010, 0x5013, 0x5017, 0x5018, 0x501B, 0x501C, 0x501D,
+ 0x501E, 0x5022, 0x5027, 0x502E, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040,
+ 0x5041, 0x5042, 0x5045, 0x5046, 0x504A, 0x504C, 0x504E, 0x5051, 0x5052,
+ 0x5053, 0x5057, 0x5059, 0x505F, 0x5060, 0x5062, 0x5063, 0x5066, 0x5067,
+ 0x506A, 0x506D, 0x5070, 0x5071, 0x503B, 0x5081, 0x5083, 0x5084, 0x5086,
+ 0x508A, 0x508E, 0x508F, 0x5090},
+ {0x5092, 0x5093, 0x5094, 0x5096, 0x509B, 0x509C, 0x509E, 0x509F, 0x50A0,
+ 0x50A1, 0x50A2, 0x50AA, 0x50AF, 0x50B0, 0x50B9, 0x50BA, 0x50BD, 0x50C0,
+ 0x50C3, 0x50C4, 0x50C7, 0x50CC, 0x50CE, 0x50D0, 0x50D3, 0x50D4, 0x50D8,
+ 0x50DC, 0x50DD, 0x50DF, 0x50E2, 0x50E4, 0x50E6, 0x50E8, 0x50E9, 0x50EF,
+ 0x50F1, 0x50F6, 0x50FA, 0x50FE, 0x5103, 0x5106, 0x5107, 0x5108, 0x510B,
+ 0x510C, 0x510D, 0x510E, 0x50F2, 0x5110, 0x5117, 0x5119, 0x511B, 0x511C,
+ 0x511D, 0x511E, 0x5123, 0x5127, 0x5128, 0x512C, 0x512D, 0x512F, 0x5131,
+ 0x5133, 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514A, 0x514F, 0x5153,
+ 0x5155, 0x5157, 0x5158, 0x515F, 0x5164, 0x5166, 0x517E, 0x5183, 0x5184,
+ 0x518B, 0x518E, 0x5198, 0x519D, 0x51A1, 0x51A3, 0x51AD, 0x51B8, 0x51BA,
+ 0x51BC, 0x51BE, 0x51BF, 0x51C2},
+ {0x51C8, 0x51CF, 0x51D1, 0x51D2, 0x51D3, 0x51D5, 0x51D8, 0x51DE, 0x51E2,
+ 0x51E5, 0x51EE, 0x51F2, 0x51F3, 0x51F4, 0x51F7, 0x5201, 0x5202, 0x5205,
+ 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222, 0x5228, 0x5231, 0x5232,
+ 0x5235, 0x523C, 0x5245, 0x5249, 0x5255, 0x5257, 0x5258, 0x525A, 0x525C,
+ 0x525F, 0x5260, 0x5261, 0x5266, 0x526E, 0x5277, 0x5278, 0x5279, 0x5280,
+ 0x5282, 0x5285, 0x528A, 0x528C, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298,
+ 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AF, 0x52B0, 0x52B6,
+ 0x52B7, 0x52B8, 0x52BA, 0x52BB, 0x52BD, 0x52C0, 0x52C4, 0x52C6, 0x52C8,
+ 0x52CC, 0x52CF, 0x52D1, 0x52D4, 0x52D6, 0x52DB, 0x52DC, 0x52E1, 0x52E5,
+ 0x52E8, 0x52E9, 0x52EA, 0x52EC, 0x52F0, 0x52F1, 0x52F4, 0x52F6, 0x52F7,
+ 0x5300, 0x5303, 0x530A, 0x530B},
+ {0x530C, 0x5311, 0x5313, 0x5318, 0x531B, 0x531C, 0x531E, 0x531F, 0x5325,
+ 0x5327, 0x5328, 0x5329, 0x532B, 0x532C, 0x532D, 0x5330, 0x5332, 0x5335,
+ 0x533C, 0x533D, 0x533E, 0x5342, 0x534C, 0x534B, 0x5359, 0x535B, 0x5361,
+ 0x5363, 0x5365, 0x536C, 0x536D, 0x5372, 0x5379, 0x537E, 0x5383, 0x5387,
+ 0x5388, 0x538E, 0x5393, 0x5394, 0x5399, 0x539D, 0x53A1, 0x53A4, 0x53AA,
+ 0x53AB, 0x53AF, 0x53B2, 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53BA, 0x53BD,
+ 0x53C0, 0x53C5, 0x53CF, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DD, 0x53DE,
+ 0x53E0, 0x53E6, 0x53E7, 0x53F5, 0x5402, 0x5413, 0x541A, 0x5421, 0x5427,
+ 0x5428, 0x542A, 0x542F, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444, 0x5447,
+ 0x544D, 0x544F, 0x545E, 0x5462, 0x5464, 0x5466, 0x5467, 0x5469, 0x546B,
+ 0x546D, 0x546E, 0x5474, 0x547F},
+ {0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548D, 0x5491, 0x5495, 0x5496,
+ 0x549C, 0x549F, 0x54A1, 0x54A6, 0x54A7, 0x54A9, 0x54AA, 0x54AD, 0x54AE,
+ 0x54B1, 0x54B7, 0x54B9, 0x54BA, 0x54BB, 0x54BF, 0x54C6, 0x54CA, 0x54CD,
+ 0x54CE, 0x54E0, 0x54EA, 0x54EC, 0x54EF, 0x54F6, 0x54FC, 0x54FE, 0x54FF,
+ 0x5500, 0x5501, 0x5505, 0x5508, 0x5509, 0x550C, 0x550D, 0x550E, 0x5515,
+ 0x552A, 0x552B, 0x5532, 0x5535, 0x5536, 0x553B, 0x553C, 0x553D, 0x5541,
+ 0x5547, 0x5549, 0x554A, 0x554D, 0x5550, 0x5551, 0x5558, 0x555A, 0x555B,
+ 0x555E, 0x5560, 0x5561, 0x5564, 0x5566, 0x557F, 0x5581, 0x5582, 0x5586,
+ 0x5588, 0x558E, 0x558F, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597, 0x55A3,
+ 0x55A4, 0x55AD, 0x55B2, 0x55BF, 0x55C1, 0x55C3, 0x55C6, 0x55C9, 0x55CB,
+ 0x55CC, 0x55CE, 0x55D1, 0x55D2},
+ {0x55D3, 0x55D7, 0x55D8, 0x55DB, 0x55DE, 0x55E2, 0x55E9, 0x55F6, 0x55FF,
+ 0x5605, 0x5608, 0x560A, 0x560D, 0x560E, 0x560F, 0x5610, 0x5611, 0x5612,
+ 0x5619, 0x562C, 0x5630, 0x5633, 0x5635, 0x5637, 0x5639, 0x563B, 0x563C,
+ 0x563D, 0x563F, 0x5640, 0x5641, 0x5643, 0x5644, 0x5646, 0x5649, 0x564B,
+ 0x564D, 0x564F, 0x5654, 0x565E, 0x5660, 0x5661, 0x5662, 0x5663, 0x5666,
+ 0x5669, 0x566D, 0x566F, 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688,
+ 0x568B, 0x568C, 0x5695, 0x5699, 0x569A, 0x569D, 0x569E, 0x569F, 0x56A6,
+ 0x56A7, 0x56A8, 0x56A9, 0x56AB, 0x56AC, 0x56AD, 0x56B1, 0x56B3, 0x56B7,
+ 0x56BE, 0x56C5, 0x56C9, 0x56CA, 0x56CB, 0x56CF, 0x56D0, 0x56CC, 0x56CD,
+ 0x56D9, 0x56DC, 0x56DD, 0x56DF, 0x56E1, 0x56E4, 0x56E5, 0x56E6, 0x56E7,
+ 0x56E8, 0x56F1, 0x56EB, 0x56ED},
+ {0x56F6, 0x56F7, 0x5701, 0x5702, 0x5707, 0x570A, 0x570C, 0x5711, 0x5715,
+ 0x571A, 0x571B, 0x571D, 0x5720, 0x5722, 0x5723, 0x5724, 0x5725, 0x5729,
+ 0x572A, 0x572C, 0x572E, 0x572F, 0x5733, 0x5734, 0x573D, 0x573E, 0x573F,
+ 0x5745, 0x5746, 0x574C, 0x574D, 0x5752, 0x5762, 0x5765, 0x5767, 0x5768,
+ 0x576B, 0x576D, 0x576E, 0x576F, 0x5770, 0x5771, 0x5773, 0x5774, 0x5775,
+ 0x5777, 0x5779, 0x577A, 0x577B, 0x577C, 0x577E, 0x5781, 0x5783, 0x578C,
+ 0x5794, 0x5797, 0x5799, 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A1,
+ 0x5795, 0x57A7, 0x57A8, 0x57A9, 0x57AC, 0x57B8, 0x57BD, 0x57C7, 0x57C8,
+ 0x57CC, 0x57CF, 0x57D5, 0x57DD, 0x57DE, 0x57E4, 0x57E6, 0x57E7, 0x57E9,
+ 0x57ED, 0x57F0, 0x57F5, 0x57F6, 0x57F8, 0x57FD, 0x57FE, 0x57FF, 0x5803,
+ 0x5804, 0x5808, 0x5809, 0x57E1},
+ {0x580C, 0x580D, 0x581B, 0x581E, 0x581F, 0x5820, 0x5826, 0x5827, 0x582D,
+ 0x5832, 0x5839, 0x583F, 0x5849, 0x584C, 0x584D, 0x584F, 0x5850, 0x5855,
+ 0x585F, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878, 0x587C, 0x587F, 0x5880,
+ 0x5881, 0x5887, 0x5888, 0x5889, 0x588A, 0x588C, 0x588D, 0x588F, 0x5890,
+ 0x5894, 0x5896, 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A6, 0x58A9, 0x58B1,
+ 0x58B2, 0x58C4, 0x58BC, 0x58C2, 0x58C8, 0x58CD, 0x58CE, 0x58D0, 0x58D2,
+ 0x58D4, 0x58D6, 0x58DA, 0x58DD, 0x58E1, 0x58E2, 0x58E9, 0x58F3, 0x5905,
+ 0x5906, 0x590B, 0x590C, 0x5912, 0x5913, 0x5914, 0x8641, 0x591D, 0x5921,
+ 0x5923, 0x5924, 0x5928, 0x592F, 0x5930, 0x5933, 0x5935, 0x5936, 0x593F,
+ 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595B, 0x595D, 0x595E, 0x595F,
+ 0x5961, 0x5963, 0x596B, 0x596D},
+ {0x596F, 0x5972, 0x5975, 0x5976, 0x5979, 0x597B, 0x597C, 0x598B, 0x598C,
+ 0x598E, 0x5992, 0x5995, 0x5997, 0x599F, 0x59A4, 0x59A7, 0x59AD, 0x59AE,
+ 0x59AF, 0x59B0, 0x59B3, 0x59B7, 0x59BA, 0x59BC, 0x59C1, 0x59C3, 0x59C4,
+ 0x59C8, 0x59CA, 0x59CD, 0x59D2, 0x59DD, 0x59DE, 0x59DF, 0x59E3, 0x59E4,
+ 0x59E7, 0x59EE, 0x59EF, 0x59F1, 0x59F2, 0x59F4, 0x59F7, 0x5A00, 0x5A04,
+ 0x5A0C, 0x5A0D, 0x5A0E, 0x5A12, 0x5A13, 0x5A1E, 0x5A23, 0x5A24, 0x5A27,
+ 0x5A28, 0x5A2A, 0x5A2D, 0x5A30, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4C,
+ 0x5A50, 0x5A55, 0x5A5E, 0x5A63, 0x5A65, 0x5A67, 0x5A6D, 0x5A77, 0x5A7A,
+ 0x5A7B, 0x5A7E, 0x5A8B, 0x5A90, 0x5A93, 0x5A96, 0x5A99, 0x5A9C, 0x5A9E,
+ 0x5A9F, 0x5AA0, 0x5AA2, 0x5AA7, 0x5AAC, 0x5AB1, 0x5AB2, 0x5AB3, 0x5AB5,
+ 0x5AB8, 0x5ABA, 0x5ABB, 0x5ABF},
+ {0x5AC4, 0x5AC6, 0x5AC8, 0x5ACF, 0x5ADA, 0x5ADC, 0x5AE0, 0x5AE5, 0x5AEA,
+ 0x5AEE, 0x5AF5, 0x5AF6, 0x5AFD, 0x5B00, 0x5B01, 0x5B08, 0x5B17, 0x5B34,
+ 0x5B19, 0x5B1B, 0x5B1D, 0x5B21, 0x5B25, 0x5B2D, 0x5B38, 0x5B41, 0x5B4B,
+ 0x5B4C, 0x5B52, 0x5B56, 0x5B5E, 0x5B68, 0x5B6E, 0x5B6F, 0x5B7C, 0x5B7D,
+ 0x5B7E, 0x5B7F, 0x5B81, 0x5B84, 0x5B86, 0x5B8A, 0x5B8E, 0x5B90, 0x5B91,
+ 0x5B93, 0x5B94, 0x5B96, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAF, 0x5BB1,
+ 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BCD, 0x5BCF, 0x5BD6,
+ 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 0x5BE0, 0x5BEF, 0x5BF1, 0x5BF4, 0x5BFD,
+ 0x5C0C, 0x5C17, 0x5C1E, 0x5C1F, 0x5C23, 0x5C26, 0x5C29, 0x5C2B, 0x5C2C,
+ 0x5C2E, 0x5C30, 0x5C32, 0x5C35, 0x5C36, 0x5C59, 0x5C5A, 0x5C5C, 0x5C62,
+ 0x5C63, 0x5C67, 0x5C68, 0x5C69},
+ {0x5C6D, 0x5C70, 0x5C74, 0x5C75, 0x5C7A, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C87,
+ 0x5C88, 0x5C8A, 0x5C8F, 0x5C92, 0x5C9D, 0x5C9F, 0x5CA0, 0x5CA2, 0x5CA3,
+ 0x5CA6, 0x5CAA, 0x5CB2, 0x5CB4, 0x5CB5, 0x5CBA, 0x5CC9, 0x5CCB, 0x5CD2,
+ 0x5CDD, 0x5CD7, 0x5CEE, 0x5CF1, 0x5CF2, 0x5CF4, 0x5D01, 0x5D06, 0x5D0D,
+ 0x5D12, 0x5D2B, 0x5D23, 0x5D24, 0x5D26, 0x5D27, 0x5D31, 0x5D34, 0x5D39,
+ 0x5D3D, 0x5D3F, 0x5D42, 0x5D43, 0x5D46, 0x5D48, 0x5D55, 0x5D51, 0x5D59,
+ 0x5D4A, 0x5D5F, 0x5D60, 0x5D61, 0x5D62, 0x5D64, 0x5D6A, 0x5D6D, 0x5D70,
+ 0x5D79, 0x5D7A, 0x5D7E, 0x5D7F, 0x5D81, 0x5D83, 0x5D88, 0x5D8A, 0x5D92,
+ 0x5D93, 0x5D94, 0x5D95, 0x5D99, 0x5D9B, 0x5D9F, 0x5DA0, 0x5DA7, 0x5DAB,
+ 0x5DB0, 0x5DB4, 0x5DB8, 0x5DB9, 0x5DC3, 0x5DC7, 0x5DCB, 0x5DD0, 0x5DCE,
+ 0x5DD8, 0x5DD9, 0x5DE0, 0x5DE4},
+ {0x5DE9, 0x5DF8, 0x5DF9, 0x5E00, 0x5E07, 0x5E0D, 0x5E12, 0x5E14, 0x5E15,
+ 0x5E18, 0x5E1F, 0x5E20, 0x5E2E, 0x5E28, 0x5E32, 0x5E35, 0x5E3E, 0x5E4B,
+ 0x5E50, 0x5E49, 0x5E51, 0x5E56, 0x5E58, 0x5E5B, 0x5E5C, 0x5E5E, 0x5E68,
+ 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D, 0x5E6E, 0x5E70, 0x5E80, 0x5E8B, 0x5E8E,
+ 0x5EA2, 0x5EA4, 0x5EA5, 0x5EA8, 0x5EAA, 0x5EAC, 0x5EB1, 0x5EB3, 0x5EBD,
+ 0x5EBE, 0x5EBF, 0x5EC6, 0x5ECC, 0x5ECB, 0x5ECE, 0x5ED1, 0x5ED2, 0x5ED4,
+ 0x5ED5, 0x5EDC, 0x5EDE, 0x5EE5, 0x5EEB, 0x5F02, 0x5F06, 0x5F07, 0x5F08,
+ 0x5F0E, 0x5F19, 0x5F1C, 0x5F1D, 0x5F21, 0x5F22, 0x5F23, 0x5F24, 0x5F28,
+ 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F34, 0x5F36, 0x5F3B, 0x5F3D, 0x5F3F,
+ 0x5F40, 0x5F44, 0x5F45, 0x5F47, 0x5F4D, 0x5F50, 0x5F54, 0x5F58, 0x5F5B,
+ 0x5F60, 0x5F63, 0x5F64, 0x5F67},
+ {0x5F6F, 0x5F72, 0x5F74, 0x5F75, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F89,
+ 0x5F8D, 0x5F8F, 0x5F96, 0x5F9C, 0x5F9D, 0x5FA2, 0x5FA7, 0x5FAB, 0x5FA4,
+ 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB8, 0x5FC4, 0x5FC7, 0x5FC8, 0x5FC9,
+ 0x5FCB, 0x5FD0, 0x5FD1, 0x5FD2, 0x5FD3, 0x5FD4, 0x5FDE, 0x5FE1, 0x5FE2,
+ 0x5FE8, 0x5FE9, 0x5FEA, 0x5FEC, 0x5FED, 0x5FEE, 0x5FEF, 0x5FF2, 0x5FF3,
+ 0x5FF6, 0x5FFA, 0x5FFC, 0x6007, 0x600A, 0x600D, 0x6013, 0x6014, 0x6017,
+ 0x6018, 0x601A, 0x601F, 0x6024, 0x602D, 0x6033, 0x6035, 0x6040, 0x6047,
+ 0x6048, 0x6049, 0x604C, 0x6051, 0x6054, 0x6056, 0x6057, 0x605D, 0x6061,
+ 0x6067, 0x6071, 0x607E, 0x607F, 0x6082, 0x6086, 0x6088, 0x608A, 0x608E,
+ 0x6091, 0x6093, 0x6095, 0x6098, 0x609D, 0x609E, 0x60A2, 0x60A4, 0x60A5,
+ 0x60A8, 0x60B0, 0x60B1, 0x60B7},
+ {0x60BB, 0x60BE, 0x60C2, 0x60C4, 0x60C8, 0x60C9, 0x60CA, 0x60CB, 0x60CE,
+ 0x60CF, 0x60D4, 0x60D5, 0x60D9, 0x60DB, 0x60DD, 0x60DE, 0x60E2, 0x60E5,
+ 0x60F2, 0x60F5, 0x60F8, 0x60FC, 0x60FD, 0x6102, 0x6107, 0x610A, 0x610C,
+ 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6119, 0x611C,
+ 0x611E, 0x6122, 0x612A, 0x612B, 0x6130, 0x6131, 0x6135, 0x6136, 0x6137,
+ 0x6139, 0x6141, 0x6145, 0x6146, 0x6149, 0x615E, 0x6160, 0x616C, 0x6172,
+ 0x6178, 0x617B, 0x617C, 0x617F, 0x6180, 0x6181, 0x6183, 0x6184, 0x618B,
+ 0x618D, 0x6192, 0x6193, 0x6197, 0x6198, 0x619C, 0x619D, 0x619F, 0x61A0,
+ 0x61A5, 0x61A8, 0x61AA, 0x61AD, 0x61B8, 0x61B9, 0x61BC, 0x61C0, 0x61C1,
+ 0x61C2, 0x61CE, 0x61CF, 0x61D5, 0x61DC, 0x61DD, 0x61DE, 0x61DF, 0x61E1,
+ 0x61E2, 0x61E7, 0x61E9, 0x61E5},
+ {0x61EC, 0x61ED, 0x61EF, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213, 0x6215,
+ 0x621C, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622B, 0x6239, 0x623D,
+ 0x6242, 0x6243, 0x6244, 0x6246, 0x624C, 0x6250, 0x6251, 0x6252, 0x6254,
+ 0x6256, 0x625A, 0x625C, 0x6264, 0x626D, 0x626F, 0x6273, 0x627A, 0x627D,
+ 0x628D, 0x628E, 0x628F, 0x6290, 0x62A6, 0x62A8, 0x62B3, 0x62B6, 0x62B7,
+ 0x62BA, 0x62BE, 0x62BF, 0x62C4, 0x62CE, 0x62D5, 0x62D6, 0x62DA, 0x62EA,
+ 0x62F2, 0x62F4, 0x62FC, 0x62FD, 0x6303, 0x6304, 0x630A, 0x630B, 0x630D,
+ 0x6310, 0x6313, 0x6316, 0x6318, 0x6329, 0x632A, 0x632D, 0x6335, 0x6336,
+ 0x6339, 0x633C, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634A, 0x634B,
+ 0x634E, 0x6352, 0x6353, 0x6354, 0x6358, 0x635B, 0x6365, 0x6366, 0x636C,
+ 0x636D, 0x6371, 0x6374, 0x6375},
+ {0x6378, 0x637C, 0x637D, 0x637F, 0x6382, 0x6384, 0x6387, 0x638A, 0x6390,
+ 0x6394, 0x6395, 0x6399, 0x639A, 0x639E, 0x63A4, 0x63A6, 0x63AD, 0x63AE,
+ 0x63AF, 0x63BD, 0x63C1, 0x63C5, 0x63C8, 0x63CE, 0x63D1, 0x63D3, 0x63D4,
+ 0x63D5, 0x63DC, 0x63E0, 0x63E5, 0x63EA, 0x63EC, 0x63F2, 0x63F3, 0x63F5,
+ 0x63F8, 0x63F9, 0x6409, 0x640A, 0x6410, 0x6412, 0x6414, 0x6418, 0x641E,
+ 0x6420, 0x6422, 0x6424, 0x6425, 0x6429, 0x642A, 0x642F, 0x6430, 0x6435,
+ 0x643D, 0x643F, 0x644B, 0x644F, 0x6451, 0x6452, 0x6453, 0x6454, 0x645A,
+ 0x645B, 0x645C, 0x645D, 0x645F, 0x6460, 0x6461, 0x6463, 0x646D, 0x6473,
+ 0x6474, 0x647B, 0x647D, 0x6485, 0x6487, 0x648F, 0x6490, 0x6491, 0x6498,
+ 0x6499, 0x649B, 0x649D, 0x649F, 0x64A1, 0x64A3, 0x64A6, 0x64A8, 0x64AC,
+ 0x64B3, 0x64BD, 0x64BE, 0x64BF},
+ {0x64C4, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CE, 0x64D0, 0x64D1, 0x64D5,
+ 0x64D7, 0x64E4, 0x64E5, 0x64E9, 0x64EA, 0x64ED, 0x64F0, 0x64F5, 0x64F7,
+ 0x64FB, 0x64FF, 0x6501, 0x6504, 0x6508, 0x6509, 0x650A, 0x650F, 0x6513,
+ 0x6514, 0x6516, 0x6519, 0x651B, 0x651E, 0x651F, 0x6522, 0x6526, 0x6529,
+ 0x652E, 0x6531, 0x653A, 0x653C, 0x653D, 0x6543, 0x6547, 0x6549, 0x6550,
+ 0x6552, 0x6554, 0x655F, 0x6560, 0x6567, 0x656B, 0x657A, 0x657D, 0x6581,
+ 0x6585, 0x658A, 0x6592, 0x6595, 0x6598, 0x659D, 0x65A0, 0x65A3, 0x65A6,
+ 0x65AE, 0x65B2, 0x65B3, 0x65B4, 0x65BF, 0x65C2, 0x65C8, 0x65C9, 0x65CE,
+ 0x65D0, 0x65D4, 0x65D6, 0x65D8, 0x65DF, 0x65F0, 0x65F2, 0x65F4, 0x65F5,
+ 0x65F9, 0x65FE, 0x65FF, 0x6600, 0x6604, 0x6608, 0x6609, 0x660D, 0x6611,
+ 0x6612, 0x6615, 0x6616, 0x661D},
+ {0x661E, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662A, 0x662B,
+ 0x662C, 0x662E, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637, 0x6640, 0x6645,
+ 0x6646, 0x664A, 0x664C, 0x6651, 0x664E, 0x6657, 0x6658, 0x6659, 0x665B,
+ 0x665C, 0x6660, 0x6661, 0x66FB, 0x666A, 0x666B, 0x666C, 0x667E, 0x6673,
+ 0x6675, 0x667F, 0x6677, 0x6678, 0x6679, 0x667B, 0x6680, 0x667C, 0x668B,
+ 0x668C, 0x668D, 0x6690, 0x6692, 0x6699, 0x669A, 0x669B, 0x669C, 0x669F,
+ 0x66A0, 0x66A4, 0x66AD, 0x66B1, 0x66B2, 0x66B5, 0x66BB, 0x66BF, 0x66C0,
+ 0x66C2, 0x66C3, 0x66C8, 0x66CC, 0x66CE, 0x66CF, 0x66D4, 0x66DB, 0x66DF,
+ 0x66E8, 0x66EB, 0x66EC, 0x66EE, 0x66FA, 0x6705, 0x6707, 0x670E, 0x6713,
+ 0x6719, 0x671C, 0x6720, 0x6722, 0x6733, 0x673E, 0x6745, 0x6747, 0x6748,
+ 0x674C, 0x6754, 0x6755, 0x675D},
+ {0x6766, 0x676C, 0x676E, 0x6774, 0x6776, 0x677B, 0x6781, 0x6784, 0x678E,
+ 0x678F, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679B, 0x67B0, 0x67B1,
+ 0x67B2, 0x67B5, 0x67BB, 0x67BC, 0x67BD, 0x67F9, 0x67C0, 0x67C2, 0x67C3,
+ 0x67C5, 0x67C8, 0x67C9, 0x67D2, 0x67D7, 0x67D9, 0x67DC, 0x67E1, 0x67E6,
+ 0x67F0, 0x67F2, 0x67F6, 0x67F7, 0x6852, 0x6814, 0x6819, 0x681D, 0x681F,
+ 0x6828, 0x6827, 0x682C, 0x682D, 0x682F, 0x6830, 0x6831, 0x6833, 0x683B,
+ 0x683F, 0x6844, 0x6845, 0x684A, 0x684C, 0x6855, 0x6857, 0x6858, 0x685B,
+ 0x686B, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687A,
+ 0x687B, 0x687C, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898, 0x689A,
+ 0x689C, 0x68A1, 0x68A3, 0x68A5, 0x68A9, 0x68AA, 0x68AE, 0x68B2, 0x68BB,
+ 0x68C5, 0x68C8, 0x68CC, 0x68CF},
+ {0x68D0, 0x68D1, 0x68D3, 0x68D6, 0x68D9, 0x68DC, 0x68DD, 0x68E5, 0x68E8,
+ 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68F0, 0x68F1, 0x68F5, 0x68F6, 0x68FB,
+ 0x68FC, 0x68FD, 0x6906, 0x6909, 0x690A, 0x6910, 0x6911, 0x6913, 0x6916,
+ 0x6917, 0x6931, 0x6933, 0x6935, 0x6938, 0x693B, 0x6942, 0x6945, 0x6949,
+ 0x694E, 0x6957, 0x695B, 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969,
+ 0x696C, 0x6970, 0x6971, 0x6972, 0x697A, 0x697B, 0x697F, 0x6980, 0x698D,
+ 0x6992, 0x6996, 0x6998, 0x69A1, 0x69A5, 0x69A6, 0x69A8, 0x69AB, 0x69AD,
+ 0x69AF, 0x69B7, 0x69B8, 0x69BA, 0x69BC, 0x69C5, 0x69C8, 0x69D1, 0x69D6,
+ 0x69D7, 0x69E2, 0x69E5, 0x69EE, 0x69EF, 0x69F1, 0x69F3, 0x69F5, 0x69FE,
+ 0x6A00, 0x6A01, 0x6A03, 0x6A0F, 0x6A11, 0x6A15, 0x6A1A, 0x6A1D, 0x6A20,
+ 0x6A24, 0x6A28, 0x6A30, 0x6A32},
+ {0x6A34, 0x6A37, 0x6A3B, 0x6A3E, 0x6A3F, 0x6A45, 0x6A46, 0x6A49, 0x6A4A,
+ 0x6A4E, 0x6A50, 0x6A51, 0x6A52, 0x6A55, 0x6A56, 0x6A5B, 0x6A64, 0x6A67,
+ 0x6A6A, 0x6A71, 0x6A73, 0x6A7E, 0x6A81, 0x6A83, 0x6A86, 0x6A87, 0x6A89,
+ 0x6A8B, 0x6A91, 0x6A9B, 0x6A9D, 0x6A9E, 0x6A9F, 0x6AA5, 0x6AAB, 0x6AAF,
+ 0x6AB0, 0x6AB1, 0x6AB4, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC6, 0x6AC9, 0x6AC8,
+ 0x6ACC, 0x6AD0, 0x6AD4, 0x6AD5, 0x6AD6, 0x6ADC, 0x6ADD, 0x6AE4, 0x6AE7,
+ 0x6AEC, 0x6AF0, 0x6AF1, 0x6AF2, 0x6AFC, 0x6AFD, 0x6B02, 0x6B03, 0x6B06,
+ 0x6B07, 0x6B09, 0x6B0F, 0x6B10, 0x6B11, 0x6B17, 0x6B1B, 0x6B1E, 0x6B24,
+ 0x6B28, 0x6B2B, 0x6B2C, 0x6B2F, 0x6B35, 0x6B36, 0x6B3B, 0x6B3F, 0x6B46,
+ 0x6B4A, 0x6B4D, 0x6B52, 0x6B56, 0x6B58, 0x6B5D, 0x6B60, 0x6B67, 0x6B6B,
+ 0x6B6E, 0x6B70, 0x6B75, 0x6B7D},
+ {0x6B7E, 0x6B82, 0x6B85, 0x6B97, 0x6B9B, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3,
+ 0x6BA8, 0x6BA9, 0x6BAC, 0x6BAD, 0x6BAE, 0x6BB0, 0x6BB8, 0x6BB9, 0x6BBD,
+ 0x6BBE, 0x6BC3, 0x6BC4, 0x6BC9, 0x6BCC, 0x6BD6, 0x6BDA, 0x6BE1, 0x6BE3,
+ 0x6BE6, 0x6BE7, 0x6BEE, 0x6BF1, 0x6BF7, 0x6BF9, 0x6BFF, 0x6C02, 0x6C04,
+ 0x6C05, 0x6C09, 0x6C0D, 0x6C0E, 0x6C10, 0x6C12, 0x6C19, 0x6C1F, 0x6C26,
+ 0x6C27, 0x6C28, 0x6C2C, 0x6C2E, 0x6C33, 0x6C35, 0x6C36, 0x6C3A, 0x6C3B,
+ 0x6C3F, 0x6C4A, 0x6C4B, 0x6C4D, 0x6C4F, 0x6C52, 0x6C54, 0x6C59, 0x6C5B,
+ 0x6C5C, 0x6C6B, 0x6C6D, 0x6C6F, 0x6C74, 0x6C76, 0x6C78, 0x6C79, 0x6C7B,
+ 0x6C85, 0x6C86, 0x6C87, 0x6C89, 0x6C94, 0x6C95, 0x6C97, 0x6C98, 0x6C9C,
+ 0x6C9F, 0x6CB0, 0x6CB2, 0x6CB4, 0x6CC2, 0x6CC6, 0x6CCD, 0x6CCF, 0x6CD0,
+ 0x6CD1, 0x6CD2, 0x6CD4, 0x6CD6},
+ {0x6CDA, 0x6CDC, 0x6CE0, 0x6CE7, 0x6CE9, 0x6CEB, 0x6CEC, 0x6CEE, 0x6CF2,
+ 0x6CF4, 0x6D04, 0x6D07, 0x6D0A, 0x6D0E, 0x6D0F, 0x6D11, 0x6D13, 0x6D1A,
+ 0x6D26, 0x6D27, 0x6D28, 0x6C67, 0x6D2E, 0x6D2F, 0x6D31, 0x6D39, 0x6D3C,
+ 0x6D3F, 0x6D57, 0x6D5E, 0x6D5F, 0x6D61, 0x6D65, 0x6D67, 0x6D6F, 0x6D70,
+ 0x6D7C, 0x6D82, 0x6D87, 0x6D91, 0x6D92, 0x6D94, 0x6D96, 0x6D97, 0x6D98,
+ 0x6DAA, 0x6DAC, 0x6DB4, 0x6DB7, 0x6DB9, 0x6DBD, 0x6DBF, 0x6DC4, 0x6DC8,
+ 0x6DCA, 0x6DCE, 0x6DCF, 0x6DD6, 0x6DDB, 0x6DDD, 0x6DDF, 0x6DE0, 0x6DE2,
+ 0x6DE5, 0x6DE9, 0x6DEF, 0x6DF0, 0x6DF4, 0x6DF6, 0x6DFC, 0x6E00, 0x6E04,
+ 0x6E1E, 0x6E22, 0x6E27, 0x6E32, 0x6E36, 0x6E39, 0x6E3B, 0x6E3C, 0x6E44,
+ 0x6E45, 0x6E48, 0x6E49, 0x6E4B, 0x6E4F, 0x6E51, 0x6E52, 0x6E53, 0x6E54,
+ 0x6E57, 0x6E5C, 0x6E5D, 0x6E5E},
+ {0x6E62, 0x6E63, 0x6E68, 0x6E73, 0x6E7B, 0x6E7D, 0x6E8D, 0x6E93, 0x6E99,
+ 0x6EA0, 0x6EA7, 0x6EAD, 0x6EAE, 0x6EB1, 0x6EB3, 0x6EBB, 0x6EBF, 0x6EC0,
+ 0x6EC1, 0x6EC3, 0x6EC7, 0x6EC8, 0x6ECA, 0x6ECD, 0x6ECE, 0x6ECF, 0x6EEB,
+ 0x6EED, 0x6EEE, 0x6EF9, 0x6EFB, 0x6EFD, 0x6F04, 0x6F08, 0x6F0A, 0x6F0C,
+ 0x6F0D, 0x6F16, 0x6F18, 0x6F1A, 0x6F1B, 0x6F26, 0x6F29, 0x6F2A, 0x6F2F,
+ 0x6F30, 0x6F33, 0x6F36, 0x6F3B, 0x6F3C, 0x6F2D, 0x6F4F, 0x6F51, 0x6F52,
+ 0x6F53, 0x6F57, 0x6F59, 0x6F5A, 0x6F5D, 0x6F5E, 0x6F61, 0x6F62, 0x6F68,
+ 0x6F6C, 0x6F7D, 0x6F7E, 0x6F83, 0x6F87, 0x6F88, 0x6F8B, 0x6F8C, 0x6F8D,
+ 0x6F90, 0x6F92, 0x6F93, 0x6F94, 0x6F96, 0x6F9A, 0x6F9F, 0x6FA0, 0x6FA5,
+ 0x6FA6, 0x6FA7, 0x6FA8, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB5, 0x6FB6, 0x6FBC,
+ 0x6FC5, 0x6FC7, 0x6FC8, 0x6FCA},
+ {0x6FDA, 0x6FDE, 0x6FE8, 0x6FE9, 0x6FF0, 0x6FF5, 0x6FF9, 0x6FFC, 0x6FFD,
+ 0x7000, 0x7005, 0x7006, 0x7007, 0x700D, 0x7017, 0x7020, 0x7023, 0x702F,
+ 0x7034, 0x7037, 0x7039, 0x703C, 0x7043, 0x7044, 0x7048, 0x7049, 0x704A,
+ 0x704B, 0x7054, 0x7055, 0x705D, 0x705E, 0x704E, 0x7064, 0x7065, 0x706C,
+ 0x706E, 0x7075, 0x7076, 0x707E, 0x7081, 0x7085, 0x7086, 0x7094, 0x7095,
+ 0x7096, 0x7097, 0x7098, 0x709B, 0x70A4, 0x70AB, 0x70B0, 0x70B1, 0x70B4,
+ 0x70B7, 0x70CA, 0x70D1, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D8, 0x70DC,
+ 0x70E4, 0x70FA, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710B, 0x710C,
+ 0x710F, 0x711E, 0x7120, 0x712B, 0x712D, 0x712F, 0x7130, 0x7131, 0x7138,
+ 0x7141, 0x7145, 0x7146, 0x7147, 0x714A, 0x714B, 0x7150, 0x7152, 0x7157,
+ 0x715A, 0x715C, 0x715E, 0x7160},
+ {0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718C, 0x7192, 0x719A, 0x719B,
+ 0x71A0, 0x71A2, 0x71AF, 0x71B0, 0x71B2, 0x71B3, 0x71BA, 0x71BF, 0x71C0,
+ 0x71C1, 0x71C4, 0x71CB, 0x71CC, 0x71D3, 0x71D6, 0x71D9, 0x71DA, 0x71DC,
+ 0x71F8, 0x71FE, 0x7200, 0x7207, 0x7208, 0x7209, 0x7213, 0x7217, 0x721A,
+ 0x721D, 0x721F, 0x7224, 0x722B, 0x722F, 0x7234, 0x7238, 0x7239, 0x7241,
+ 0x7242, 0x7243, 0x7245, 0x724E, 0x724F, 0x7250, 0x7253, 0x7255, 0x7256,
+ 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7268, 0x726B, 0x726E, 0x726F,
+ 0x7271, 0x7277, 0x7278, 0x727B, 0x727C, 0x727F, 0x7284, 0x7289, 0x728D,
+ 0x728E, 0x7293, 0x729B, 0x72A8, 0x72AD, 0x72AE, 0x72B1, 0x72B4, 0x72BE,
+ 0x72C1, 0x72C7, 0x72C9, 0x72CC, 0x72D5, 0x72D6, 0x72D8, 0x72DF, 0x72E5,
+ 0x72F3, 0x72F4, 0x72FA, 0x72FB},
+ {0x72FE, 0x7302, 0x7304, 0x7305, 0x7307, 0x730B, 0x730D, 0x7312, 0x7313,
+ 0x7318, 0x7319, 0x731E, 0x7322, 0x7324, 0x7327, 0x7328, 0x732C, 0x7331,
+ 0x7332, 0x7335, 0x733A, 0x733B, 0x733D, 0x7343, 0x734D, 0x7350, 0x7352,
+ 0x7356, 0x7358, 0x735D, 0x735E, 0x735F, 0x7360, 0x7366, 0x7367, 0x7369,
+ 0x736B, 0x736C, 0x736E, 0x736F, 0x7371, 0x7377, 0x7379, 0x737C, 0x7380,
+ 0x7381, 0x7383, 0x7385, 0x7386, 0x738E, 0x7390, 0x7393, 0x7395, 0x7397,
+ 0x7398, 0x739C, 0x739E, 0x739F, 0x73A0, 0x73A2, 0x73A5, 0x73A6, 0x73AA,
+ 0x73AB, 0x73AD, 0x73B5, 0x73B7, 0x73B9, 0x73BC, 0x73BD, 0x73BF, 0x73C5,
+ 0x73C6, 0x73C9, 0x73CB, 0x73CC, 0x73CF, 0x73D2, 0x73D3, 0x73D6, 0x73D9,
+ 0x73DD, 0x73E1, 0x73E3, 0x73E6, 0x73E7, 0x73E9, 0x73F4, 0x73F5, 0x73F7,
+ 0x73F9, 0x73FA, 0x73FB, 0x73FD},
+ {0x73FF, 0x7400, 0x7401, 0x7404, 0x7407, 0x740A, 0x7411, 0x741A, 0x741B,
+ 0x7424, 0x7426, 0x7428, 0x7429, 0x742A, 0x742B, 0x742C, 0x742D, 0x742E,
+ 0x742F, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443, 0x7444, 0x7446, 0x7447,
+ 0x744B, 0x744D, 0x7451, 0x7452, 0x7457, 0x745D, 0x7462, 0x7466, 0x7467,
+ 0x7468, 0x746B, 0x746D, 0x746E, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485,
+ 0x7486, 0x7487, 0x7489, 0x748F, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499,
+ 0x749A, 0x749C, 0x749F, 0x74A0, 0x74A1, 0x74A3, 0x74A6, 0x74A8, 0x74A9,
+ 0x74AA, 0x74AB, 0x74AE, 0x74AF, 0x74B1, 0x74B2, 0x74B5, 0x74B9, 0x74BB,
+ 0x74BF, 0x74C8, 0x74C9, 0x74CC, 0x74D0, 0x74D3, 0x74D8, 0x74DA, 0x74DB,
+ 0x74DE, 0x74DF, 0x74E4, 0x74E8, 0x74EA, 0x74EB, 0x74EF, 0x74F4, 0x74FA,
+ 0x74FB, 0x74FC, 0x74FF, 0x7506},
+ {0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529, 0x752A,
+ 0x752F, 0x7536, 0x7539, 0x753D, 0x753E, 0x753F, 0x7540, 0x7543, 0x7547,
+ 0x7548, 0x754E, 0x7550, 0x7552, 0x7557, 0x755E, 0x755F, 0x7561, 0x756F,
+ 0x7571, 0x7579, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, 0x7581, 0x7585,
+ 0x7590, 0x7592, 0x7593, 0x7595, 0x7599, 0x759C, 0x75A2, 0x75A4, 0x75B4,
+ 0x75BA, 0x75BF, 0x75C0, 0x75C1, 0x75C4, 0x75C6, 0x75CC, 0x75CE, 0x75CF,
+ 0x75D7, 0x75DC, 0x75DF, 0x75E0, 0x75E1, 0x75E4, 0x75E7, 0x75EC, 0x75EE,
+ 0x75EF, 0x75F1, 0x75F9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
+ 0x760A, 0x760C, 0x760F, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619, 0x761B,
+ 0x761C, 0x761D, 0x761E, 0x7623, 0x7625, 0x7626, 0x7629, 0x762D, 0x7632,
+ 0x7633, 0x7635, 0x7638, 0x7639},
+ {0x763A, 0x763C, 0x764A, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645, 0x7649,
+ 0x764B, 0x7655, 0x7659, 0x765F, 0x7664, 0x7665, 0x766D, 0x766E, 0x766F,
+ 0x7671, 0x7674, 0x7681, 0x7685, 0x768C, 0x768D, 0x7695, 0x769B, 0x769C,
+ 0x769D, 0x769F, 0x76A0, 0x76A2, 0x76A3, 0x76A4, 0x76A5, 0x76A6, 0x76A7,
+ 0x76A8, 0x76AA, 0x76AD, 0x76BD, 0x76C1, 0x76C5, 0x76C9, 0x76CB, 0x76CC,
+ 0x76CE, 0x76D4, 0x76D9, 0x76E0, 0x76E6, 0x76E8, 0x76EC, 0x76F0, 0x76F1,
+ 0x76F6, 0x76F9, 0x76FC, 0x7700, 0x7706, 0x770A, 0x770E, 0x7712, 0x7714,
+ 0x7715, 0x7717, 0x7719, 0x771A, 0x771C, 0x7722, 0x7728, 0x772D, 0x772E,
+ 0x772F, 0x7734, 0x7735, 0x7736, 0x7739, 0x773D, 0x773E, 0x7742, 0x7745,
+ 0x7746, 0x774A, 0x774D, 0x774E, 0x774F, 0x7752, 0x7756, 0x7757, 0x775C,
+ 0x775E, 0x775F, 0x7760, 0x7762},
+ {0x7764, 0x7767, 0x776A, 0x776C, 0x7770, 0x7772, 0x7773, 0x7774, 0x777A,
+ 0x777D, 0x7780, 0x7784, 0x778C, 0x778D, 0x7794, 0x7795, 0x7796, 0x779A,
+ 0x779F, 0x77A2, 0x77A7, 0x77AA, 0x77AE, 0x77AF, 0x77B1, 0x77B5, 0x77BE,
+ 0x77C3, 0x77C9, 0x77D1, 0x77D2, 0x77D5, 0x77D9, 0x77DE, 0x77DF, 0x77E0,
+ 0x77E4, 0x77E6, 0x77EA, 0x77EC, 0x77F0, 0x77F1, 0x77F4, 0x77F8, 0x77FB,
+ 0x7805, 0x7806, 0x7809, 0x780D, 0x780E, 0x7811, 0x781D, 0x7821, 0x7822,
+ 0x7823, 0x782D, 0x782E, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847,
+ 0x7848, 0x784C, 0x784E, 0x7852, 0x785C, 0x785E, 0x7860, 0x7861, 0x7863,
+ 0x7864, 0x7868, 0x786A, 0x786E, 0x787A, 0x787E, 0x788A, 0x788F, 0x7894,
+ 0x7898, 0x78A1, 0x789D, 0x789E, 0x789F, 0x78A4, 0x78A8, 0x78AC, 0x78AD,
+ 0x78B0, 0x78B1, 0x78B2, 0x78B3},
+ {0x78BB, 0x78BD, 0x78BF, 0x78C7, 0x78C8, 0x78C9, 0x78CC, 0x78CE, 0x78D2,
+ 0x78D3, 0x78D5, 0x78D6, 0x78E4, 0x78DB, 0x78DF, 0x78E0, 0x78E1, 0x78E6,
+ 0x78EA, 0x78F2, 0x78F3, 0x7900, 0x78F6, 0x78F7, 0x78FA, 0x78FB, 0x78FF,
+ 0x7906, 0x790C, 0x7910, 0x791A, 0x791C, 0x791E, 0x791F, 0x7920, 0x7925,
+ 0x7927, 0x7929, 0x792D, 0x7931, 0x7934, 0x7935, 0x793B, 0x793D, 0x793F,
+ 0x7944, 0x7945, 0x7946, 0x794A, 0x794B, 0x794F, 0x7951, 0x7954, 0x7958,
+ 0x795B, 0x795C, 0x7967, 0x7969, 0x796B, 0x7972, 0x7979, 0x797B, 0x797C,
+ 0x797E, 0x798B, 0x798C, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998,
+ 0x799B, 0x799C, 0x79A1, 0x79A8, 0x79A9, 0x79AB, 0x79AF, 0x79B1, 0x79B4,
+ 0x79B8, 0x79BB, 0x79C2, 0x79C4, 0x79C7, 0x79C8, 0x79CA, 0x79CF, 0x79D4,
+ 0x79D6, 0x79DA, 0x79DD, 0x79DE},
+ {0x79E0, 0x79E2, 0x79E5, 0x79EA, 0x79EB, 0x79ED, 0x79F1, 0x79F8, 0x79FC,
+ 0x7A02, 0x7A03, 0x7A07, 0x7A09, 0x7A0A, 0x7A0C, 0x7A11, 0x7A15, 0x7A1B,
+ 0x7A1E, 0x7A21, 0x7A27, 0x7A2B, 0x7A2D, 0x7A2F, 0x7A30, 0x7A34, 0x7A35,
+ 0x7A38, 0x7A39, 0x7A3A, 0x7A44, 0x7A45, 0x7A47, 0x7A48, 0x7A4C, 0x7A55,
+ 0x7A56, 0x7A59, 0x7A5C, 0x7A5D, 0x7A5F, 0x7A60, 0x7A65, 0x7A67, 0x7A6A,
+ 0x7A6D, 0x7A75, 0x7A78, 0x7A7E, 0x7A80, 0x7A82, 0x7A85, 0x7A86, 0x7A8A,
+ 0x7A8B, 0x7A90, 0x7A91, 0x7A94, 0x7A9E, 0x7AA0, 0x7AA3, 0x7AAC, 0x7AB3,
+ 0x7AB5, 0x7AB9, 0x7ABB, 0x7ABC, 0x7AC6, 0x7AC9, 0x7ACC, 0x7ACE, 0x7AD1,
+ 0x7ADB, 0x7AE8, 0x7AE9, 0x7AEB, 0x7AEC, 0x7AF1, 0x7AF4, 0x7AFB, 0x7AFD,
+ 0x7AFE, 0x7B07, 0x7B14, 0x7B1F, 0x7B23, 0x7B27, 0x7B29, 0x7B2A, 0x7B2B,
+ 0x7B2D, 0x7B2E, 0x7B2F, 0x7B30},
+ {0x7B31, 0x7B34, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B47, 0x7B4E, 0x7B55,
+ 0x7B60, 0x7B64, 0x7B66, 0x7B69, 0x7B6A, 0x7B6D, 0x7B6F, 0x7B72, 0x7B73,
+ 0x7B77, 0x7B84, 0x7B89, 0x7B8E, 0x7B90, 0x7B91, 0x7B96, 0x7B9B, 0x7B9E,
+ 0x7BA0, 0x7BA5, 0x7BAC, 0x7BAF, 0x7BB0, 0x7BB2, 0x7BB5, 0x7BB6, 0x7BBA,
+ 0x7BBB, 0x7BBC, 0x7BBD, 0x7BC2, 0x7BC5, 0x7BC8, 0x7BCA, 0x7BD4, 0x7BD6,
+ 0x7BD7, 0x7BD9, 0x7BDA, 0x7BDB, 0x7BE8, 0x7BEA, 0x7BF2, 0x7BF4, 0x7BF5,
+ 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFC, 0x7BFE, 0x7C01, 0x7C02, 0x7C03, 0x7C04,
+ 0x7C06, 0x7C09, 0x7C0B, 0x7C0C, 0x7C0E, 0x7C0F, 0x7C19, 0x7C1B, 0x7C20,
+ 0x7C25, 0x7C26, 0x7C28, 0x7C2C, 0x7C31, 0x7C33, 0x7C34, 0x7C36, 0x7C39,
+ 0x7C3A, 0x7C46, 0x7C4A, 0x7C55, 0x7C51, 0x7C52, 0x7C53, 0x7C59, 0x7C5A,
+ 0x7C5B, 0x7C5C, 0x7C5D, 0x7C5E},
+ {0x7C61, 0x7C63, 0x7C67, 0x7C69, 0x7C6D, 0x7C6E, 0x7C70, 0x7C72, 0x7C79,
+ 0x7C7C, 0x7C7D, 0x7C86, 0x7C87, 0x7C8F, 0x7C94, 0x7C9E, 0x7CA0, 0x7CA6,
+ 0x7CB0, 0x7CB6, 0x7CB7, 0x7CBA, 0x7CBB, 0x7CBC, 0x7CBF, 0x7CC4, 0x7CC7,
+ 0x7CC8, 0x7CC9, 0x7CCD, 0x7CCF, 0x7CD3, 0x7CD4, 0x7CD5, 0x7CD7, 0x7CD9,
+ 0x7CDA, 0x7CDD, 0x7CE6, 0x7CE9, 0x7CEB, 0x7CF5, 0x7D03, 0x7D07, 0x7D08,
+ 0x7D09, 0x7D0F, 0x7D11, 0x7D12, 0x7D13, 0x7D16, 0x7D1D, 0x7D1E, 0x7D23,
+ 0x7D26, 0x7D2A, 0x7D2D, 0x7D31, 0x7D3C, 0x7D3D, 0x7D3E, 0x7D40, 0x7D41,
+ 0x7D47, 0x7D48, 0x7D4D, 0x7D51, 0x7D53, 0x7D57, 0x7D59, 0x7D5A, 0x7D5C,
+ 0x7D5D, 0x7D65, 0x7D67, 0x7D6A, 0x7D70, 0x7D78, 0x7D7A, 0x7D7B, 0x7D7F,
+ 0x7D81, 0x7D82, 0x7D83, 0x7D85, 0x7D86, 0x7D88, 0x7D8B, 0x7D8C, 0x7D8D,
+ 0x7D91, 0x7D96, 0x7D97, 0x7D9D},
+ {0x7D9E, 0x7DA6, 0x7DA7, 0x7DAA, 0x7DB3, 0x7DB6, 0x7DB7, 0x7DB9, 0x7DC2,
+ 0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DD7, 0x7DD9,
+ 0x7E00, 0x7DE2, 0x7DE5, 0x7DE6, 0x7DEA, 0x7DEB, 0x7DED, 0x7DF1, 0x7DF5,
+ 0x7DF6, 0x7DF9, 0x7DFA, 0x7E08, 0x7E10, 0x7E11, 0x7E15, 0x7E17, 0x7E1C,
+ 0x7E1D, 0x7E20, 0x7E27, 0x7E28, 0x7E2C, 0x7E2D, 0x7E2F, 0x7E33, 0x7E36,
+ 0x7E3F, 0x7E44, 0x7E45, 0x7E47, 0x7E4E, 0x7E50, 0x7E52, 0x7E58, 0x7E5F,
+ 0x7E61, 0x7E62, 0x7E65, 0x7E6B, 0x7E6E, 0x7E6F, 0x7E73, 0x7E78, 0x7E7E,
+ 0x7E81, 0x7E86, 0x7E87, 0x7E8A, 0x7E8D, 0x7E91, 0x7E95, 0x7E98, 0x7E9A,
+ 0x7E9D, 0x7E9E, 0x7F3C, 0x7F3B, 0x7F3D, 0x7F3E, 0x7F3F, 0x7F43, 0x7F44,
+ 0x7F47, 0x7F4F, 0x7F52, 0x7F53, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F61, 0x7F63,
+ 0x7F64, 0x7F65, 0x7F66, 0x7F6D},
+ {0x7F71, 0x7F7D, 0x7F7E, 0x7F7F, 0x7F80, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90,
+ 0x7F91, 0x7F96, 0x7F97, 0x7F9C, 0x7FA1, 0x7FA2, 0x7FA6, 0x7FAA, 0x7FAD,
+ 0x7FB4, 0x7FBC, 0x7FBF, 0x7FC0, 0x7FC3, 0x7FC8, 0x7FCE, 0x7FCF, 0x7FDB,
+ 0x7FDF, 0x7FE3, 0x7FE5, 0x7FE8, 0x7FEC, 0x7FEE, 0x7FEF, 0x7FF2, 0x7FFA,
+ 0x7FFD, 0x7FFE, 0x7FFF, 0x8007, 0x8008, 0x800A, 0x800D, 0x800E, 0x800F,
+ 0x8011, 0x8013, 0x8014, 0x8016, 0x801D, 0x801E, 0x801F, 0x8020, 0x8024,
+ 0x8026, 0x802C, 0x802E, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803A,
+ 0x803C, 0x803E, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806D, 0x8071,
+ 0x8075, 0x8081, 0x8088, 0x808E, 0x809C, 0x809E, 0x80A6, 0x80A7, 0x80AB,
+ 0x80B8, 0x80B9, 0x80C8, 0x80CD, 0x80CF, 0x80D2, 0x80D4, 0x80D5, 0x80D7,
+ 0x80D8, 0x80E0, 0x80ED, 0x80EE},
+ {0x80F0, 0x80F2, 0x80F3, 0x80F6, 0x80F9, 0x80FA, 0x80FE, 0x8103, 0x810B,
+ 0x8116, 0x8117, 0x8118, 0x811C, 0x811E, 0x8120, 0x8124, 0x8127, 0x812C,
+ 0x8130, 0x8135, 0x813A, 0x813C, 0x8145, 0x8147, 0x814A, 0x814C, 0x8152,
+ 0x8157, 0x8160, 0x8161, 0x8167, 0x8168, 0x8169, 0x816D, 0x816F, 0x8177,
+ 0x8181, 0x8190, 0x8184, 0x8185, 0x8186, 0x818B, 0x818E, 0x8196, 0x8198,
+ 0x819B, 0x819E, 0x81A2, 0x81AE, 0x81B2, 0x81B4, 0x81BB, 0x81CB, 0x81C3,
+ 0x81C5, 0x81CA, 0x81CE, 0x81CF, 0x81D5, 0x81D7, 0x81DB, 0x81DD, 0x81DE,
+ 0x81E1, 0x81E4, 0x81EB, 0x81EC, 0x81F0, 0x81F1, 0x81F2, 0x81F5, 0x81F6,
+ 0x81F8, 0x81F9, 0x81FD, 0x81FF, 0x8200, 0x8203, 0x820F, 0x8213, 0x8214,
+ 0x8219, 0x821A, 0x821D, 0x8221, 0x8222, 0x8228, 0x8232, 0x8234, 0x823A,
+ 0x8243, 0x8244, 0x8245, 0x8246},
+ {0x824B, 0x824E, 0x824F, 0x8251, 0x8256, 0x825C, 0x8260, 0x8263, 0x8267,
+ 0x826D, 0x8274, 0x827B, 0x827D, 0x827F, 0x8280, 0x8281, 0x8283, 0x8284,
+ 0x8287, 0x8289, 0x828A, 0x828E, 0x8291, 0x8294, 0x8296, 0x8298, 0x829A,
+ 0x829B, 0x82A0, 0x82A1, 0x82A3, 0x82A4, 0x82A7, 0x82A8, 0x82A9, 0x82AA,
+ 0x82AE, 0x82B0, 0x82B2, 0x82B4, 0x82B7, 0x82BA, 0x82BC, 0x82BE, 0x82BF,
+ 0x82C6, 0x82D0, 0x82D5, 0x82DA, 0x82E0, 0x82E2, 0x82E4, 0x82E8, 0x82EA,
+ 0x82ED, 0x82EF, 0x82F6, 0x82F7, 0x82FD, 0x82FE, 0x8300, 0x8301, 0x8307,
+ 0x8308, 0x830A, 0x830B, 0x8354, 0x831B, 0x831D, 0x831E, 0x831F, 0x8321,
+ 0x8322, 0x832C, 0x832D, 0x832E, 0x8330, 0x8333, 0x8337, 0x833A, 0x833C,
+ 0x833D, 0x8342, 0x8343, 0x8344, 0x8347, 0x834D, 0x834E, 0x8351, 0x8355,
+ 0x8356, 0x8357, 0x8370, 0x8378},
+ {0x837D, 0x837F, 0x8380, 0x8382, 0x8384, 0x8386, 0x838D, 0x8392, 0x8394,
+ 0x8395, 0x8398, 0x8399, 0x839B, 0x839C, 0x839D, 0x83A6, 0x83A7, 0x83A9,
+ 0x83AC, 0x83BE, 0x83BF, 0x83C0, 0x83C7, 0x83C9, 0x83CF, 0x83D0, 0x83D1,
+ 0x83D4, 0x83DD, 0x8353, 0x83E8, 0x83EA, 0x83F6, 0x83F8, 0x83F9, 0x83FC,
+ 0x8401, 0x8406, 0x840A, 0x840F, 0x8411, 0x8415, 0x8419, 0x83AD, 0x842F,
+ 0x8439, 0x8445, 0x8447, 0x8448, 0x844A, 0x844D, 0x844F, 0x8451, 0x8452,
+ 0x8456, 0x8458, 0x8459, 0x845A, 0x845C, 0x8460, 0x8464, 0x8465, 0x8467,
+ 0x846A, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847C, 0x847D, 0x8481,
+ 0x8485, 0x8492, 0x8493, 0x8495, 0x849E, 0x84A6, 0x84A8, 0x84A9, 0x84AA,
+ 0x84AF, 0x84B1, 0x84B4, 0x84BA, 0x84BD, 0x84BE, 0x84C0, 0x84C2, 0x84C7,
+ 0x84C8, 0x84CC, 0x84CF, 0x84D3},
+ {0x84DC, 0x84E7, 0x84EA, 0x84EF, 0x84F0, 0x84F1, 0x84F2, 0x84F7, 0x8532,
+ 0x84FA, 0x84FB, 0x84FD, 0x8502, 0x8503, 0x8507, 0x850C, 0x850E, 0x8510,
+ 0x851C, 0x851E, 0x8522, 0x8523, 0x8524, 0x8525, 0x8527, 0x852A, 0x852B,
+ 0x852F, 0x8533, 0x8534, 0x8536, 0x853F, 0x8546, 0x854F, 0x8550, 0x8551,
+ 0x8552, 0x8553, 0x8556, 0x8559, 0x855C, 0x855D, 0x855E, 0x855F, 0x8560,
+ 0x8561, 0x8562, 0x8564, 0x856B, 0x856F, 0x8579, 0x857A, 0x857B, 0x857D,
+ 0x857F, 0x8581, 0x8585, 0x8586, 0x8589, 0x858B, 0x858C, 0x858F, 0x8593,
+ 0x8598, 0x859D, 0x859F, 0x85A0, 0x85A2, 0x85A5, 0x85A7, 0x85B4, 0x85B6,
+ 0x85B7, 0x85B8, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C2, 0x85C7, 0x85CA,
+ 0x85CB, 0x85CE, 0x85AD, 0x85D8, 0x85DA, 0x85DF, 0x85E0, 0x85E6, 0x85E8,
+ 0x85ED, 0x85F3, 0x85F6, 0x85FC},
+ {0x85FF, 0x8600, 0x8604, 0x8605, 0x860D, 0x860E, 0x8610, 0x8611, 0x8612,
+ 0x8618, 0x8619, 0x861B, 0x861E, 0x8621, 0x8627, 0x8629, 0x8636, 0x8638,
+ 0x863A, 0x863C, 0x863D, 0x8640, 0x8642, 0x8646, 0x8652, 0x8653, 0x8656,
+ 0x8657, 0x8658, 0x8659, 0x865D, 0x8660, 0x8661, 0x8662, 0x8663, 0x8664,
+ 0x8669, 0x866C, 0x866F, 0x8675, 0x8676, 0x8677, 0x867A, 0x868D, 0x8691,
+ 0x8696, 0x8698, 0x869A, 0x869C, 0x86A1, 0x86A6, 0x86A7, 0x86A8, 0x86AD,
+ 0x86B1, 0x86B3, 0x86B4, 0x86B5, 0x86B7, 0x86B8, 0x86B9, 0x86BF, 0x86C0,
+ 0x86C1, 0x86C3, 0x86C5, 0x86D1, 0x86D2, 0x86D5, 0x86D7, 0x86DA, 0x86DC,
+ 0x86E0, 0x86E3, 0x86E5, 0x86E7, 0x8688, 0x86FA, 0x86FC, 0x86FD, 0x8704,
+ 0x8705, 0x8707, 0x870B, 0x870E, 0x870F, 0x8710, 0x8713, 0x8714, 0x8719,
+ 0x871E, 0x871F, 0x8721, 0x8723},
+ {0x8728, 0x872E, 0x872F, 0x8731, 0x8732, 0x8739, 0x873A, 0x873C, 0x873D,
+ 0x873E, 0x8740, 0x8743, 0x8745, 0x874D, 0x8758, 0x875D, 0x8761, 0x8764,
+ 0x8765, 0x876F, 0x8771, 0x8772, 0x877B, 0x8783, 0x8784, 0x8785, 0x8786,
+ 0x8787, 0x8788, 0x8789, 0x878B, 0x878C, 0x8790, 0x8793, 0x8795, 0x8797,
+ 0x8798, 0x8799, 0x879E, 0x87A0, 0x87A3, 0x87A7, 0x87AC, 0x87AD, 0x87AE,
+ 0x87B1, 0x87B5, 0x87BE, 0x87BF, 0x87C1, 0x87C8, 0x87C9, 0x87CA, 0x87CE,
+ 0x87D5, 0x87D6, 0x87D9, 0x87DA, 0x87DC, 0x87DF, 0x87E2, 0x87E3, 0x87E4,
+ 0x87EA, 0x87EB, 0x87ED, 0x87F1, 0x87F3, 0x87F8, 0x87FA, 0x87FF, 0x8801,
+ 0x8803, 0x8806, 0x8809, 0x880A, 0x880B, 0x8810, 0x8819, 0x8812, 0x8813,
+ 0x8814, 0x8818, 0x881A, 0x881B, 0x881C, 0x881E, 0x881F, 0x8828, 0x882D,
+ 0x882E, 0x8830, 0x8832, 0x8835},
+ {0x883A, 0x883C, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884A, 0x884B,
+ 0x884E, 0x8851, 0x8855, 0x8856, 0x8858, 0x885A, 0x885C, 0x885F, 0x8860,
+ 0x8864, 0x8869, 0x8871, 0x8879, 0x887B, 0x8880, 0x8898, 0x889A, 0x889B,
+ 0x889C, 0x889F, 0x88A0, 0x88A8, 0x88AA, 0x88BA, 0x88BD, 0x88BE, 0x88C0,
+ 0x88CA, 0x88CB, 0x88CC, 0x88CD, 0x88CE, 0x88D1, 0x88D2, 0x88D3, 0x88DB,
+ 0x88DE, 0x88E7, 0x88EF, 0x88F0, 0x88F1, 0x88F5, 0x88F7, 0x8901, 0x8906,
+ 0x890D, 0x890E, 0x890F, 0x8915, 0x8916, 0x8918, 0x8919, 0x891A, 0x891C,
+ 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939,
+ 0x893A, 0x893E, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894F, 0x8952,
+ 0x8957, 0x895A, 0x895B, 0x895C, 0x8961, 0x8962, 0x8963, 0x896B, 0x896E,
+ 0x8970, 0x8973, 0x8975, 0x897A},
+ {0x897B, 0x897C, 0x897D, 0x8989, 0x898D, 0x8990, 0x8994, 0x8995, 0x899B,
+ 0x899C, 0x899F, 0x89A0, 0x89A5, 0x89B0, 0x89B4, 0x89B5, 0x89B6, 0x89B7,
+ 0x89BC, 0x89D4, 0x89D5, 0x89D6, 0x89D7, 0x89D8, 0x89E5, 0x89E9, 0x89EB,
+ 0x89ED, 0x89F1, 0x89F3, 0x89F6, 0x89F9, 0x89FD, 0x89FF, 0x8A04, 0x8A05,
+ 0x8A07, 0x8A0F, 0x8A11, 0x8A12, 0x8A14, 0x8A15, 0x8A1E, 0x8A20, 0x8A22,
+ 0x8A24, 0x8A26, 0x8A2B, 0x8A2C, 0x8A2F, 0x8A35, 0x8A37, 0x8A3D, 0x8A3E,
+ 0x8A40, 0x8A43, 0x8A45, 0x8A47, 0x8A49, 0x8A4D, 0x8A4E, 0x8A53, 0x8A56,
+ 0x8A57, 0x8A58, 0x8A5C, 0x8A5D, 0x8A61, 0x8A65, 0x8A67, 0x8A75, 0x8A76,
+ 0x8A77, 0x8A79, 0x8A7A, 0x8A7B, 0x8A7E, 0x8A7F, 0x8A80, 0x8A83, 0x8A86,
+ 0x8A8B, 0x8A8F, 0x8A90, 0x8A92, 0x8A96, 0x8A97, 0x8A99, 0x8A9F, 0x8AA7,
+ 0x8AA9, 0x8AAE, 0x8AAF, 0x8AB3},
+ {0x8AB6, 0x8AB7, 0x8ABB, 0x8ABE, 0x8AC3, 0x8AC6, 0x8AC8, 0x8AC9, 0x8ACA,
+ 0x8AD1, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD7, 0x8ADD, 0x8ADF, 0x8AEC, 0x8AF0,
+ 0x8AF4, 0x8AF5, 0x8AF6, 0x8AFC, 0x8AFF, 0x8B05, 0x8B06, 0x8B0B, 0x8B11,
+ 0x8B1C, 0x8B1E, 0x8B1F, 0x8B0A, 0x8B2D, 0x8B30, 0x8B37, 0x8B3C, 0x8B42,
+ 0x8B43, 0x8B44, 0x8B45, 0x8B46, 0x8B48, 0x8B52, 0x8B53, 0x8B54, 0x8B59,
+ 0x8B4D, 0x8B5E, 0x8B63, 0x8B6D, 0x8B76, 0x8B78, 0x8B79, 0x8B7C, 0x8B7E,
+ 0x8B81, 0x8B84, 0x8B85, 0x8B8B, 0x8B8D, 0x8B8F, 0x8B94, 0x8B95, 0x8B9C,
+ 0x8B9E, 0x8B9F, 0x8C38, 0x8C39, 0x8C3D, 0x8C3E, 0x8C45, 0x8C47, 0x8C49,
+ 0x8C4B, 0x8C4F, 0x8C51, 0x8C53, 0x8C54, 0x8C57, 0x8C58, 0x8C5B, 0x8C5D,
+ 0x8C59, 0x8C63, 0x8C64, 0x8C66, 0x8C68, 0x8C69, 0x8C6D, 0x8C73, 0x8C75,
+ 0x8C76, 0x8C7B, 0x8C7E, 0x8C86},
+ {0x8C87, 0x8C8B, 0x8C90, 0x8C92, 0x8C93, 0x8C99, 0x8C9B, 0x8C9C, 0x8CA4,
+ 0x8CB9, 0x8CBA, 0x8CC5, 0x8CC6, 0x8CC9, 0x8CCB, 0x8CCF, 0x8CD6, 0x8CD5,
+ 0x8CD9, 0x8CDD, 0x8CE1, 0x8CE8, 0x8CEC, 0x8CEF, 0x8CF0, 0x8CF2, 0x8CF5,
+ 0x8CF7, 0x8CF8, 0x8CFE, 0x8CFF, 0x8D01, 0x8D03, 0x8D09, 0x8D12, 0x8D17,
+ 0x8D1B, 0x8D65, 0x8D69, 0x8D6C, 0x8D6E, 0x8D7F, 0x8D82, 0x8D84, 0x8D88,
+ 0x8D8D, 0x8D90, 0x8D91, 0x8D95, 0x8D9E, 0x8D9F, 0x8DA0, 0x8DA6, 0x8DAB,
+ 0x8DAC, 0x8DAF, 0x8DB2, 0x8DB5, 0x8DB7, 0x8DB9, 0x8DBB, 0x8DC0, 0x8DC5,
+ 0x8DC6, 0x8DC7, 0x8DC8, 0x8DCA, 0x8DCE, 0x8DD1, 0x8DD4, 0x8DD5, 0x8DD7,
+ 0x8DD9, 0x8DE4, 0x8DE5, 0x8DE7, 0x8DEC, 0x8DF0, 0x8DBC, 0x8DF1, 0x8DF2,
+ 0x8DF4, 0x8DFD, 0x8E01, 0x8E04, 0x8E05, 0x8E06, 0x8E0B, 0x8E11, 0x8E14,
+ 0x8E16, 0x8E20, 0x8E21, 0x8E22},
+ {0x8E23, 0x8E26, 0x8E27, 0x8E31, 0x8E33, 0x8E36, 0x8E37, 0x8E38, 0x8E39,
+ 0x8E3D, 0x8E40, 0x8E41, 0x8E4B, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E54, 0x8E5B,
+ 0x8E5C, 0x8E5D, 0x8E5E, 0x8E61, 0x8E62, 0x8E69, 0x8E6C, 0x8E6D, 0x8E6F,
+ 0x8E70, 0x8E71, 0x8E79, 0x8E7A, 0x8E7B, 0x8E82, 0x8E83, 0x8E89, 0x8E90,
+ 0x8E92, 0x8E95, 0x8E9A, 0x8E9B, 0x8E9D, 0x8E9E, 0x8EA2, 0x8EA7, 0x8EA9,
+ 0x8EAD, 0x8EAE, 0x8EB3, 0x8EB5, 0x8EBA, 0x8EBB, 0x8EC0, 0x8EC1, 0x8EC3,
+ 0x8EC4, 0x8EC7, 0x8ECF, 0x8ED1, 0x8ED4, 0x8EDC, 0x8EE8, 0x8EEE, 0x8EF0,
+ 0x8EF1, 0x8EF7, 0x8EF9, 0x8EFA, 0x8EED, 0x8F00, 0x8F02, 0x8F07, 0x8F08,
+ 0x8F0F, 0x8F10, 0x8F16, 0x8F17, 0x8F18, 0x8F1E, 0x8F20, 0x8F21, 0x8F23,
+ 0x8F25, 0x8F27, 0x8F28, 0x8F2C, 0x8F2D, 0x8F2E, 0x8F34, 0x8F35, 0x8F36,
+ 0x8F37, 0x8F3A, 0x8F40, 0x8F41},
+ {0x8F43, 0x8F47, 0x8F4F, 0x8F51, 0x8F52, 0x8F53, 0x8F54, 0x8F55, 0x8F58,
+ 0x8F5D, 0x8F5E, 0x8F65, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA4, 0x8FA5, 0x8FA6,
+ 0x8FB5, 0x8FB6, 0x8FB8, 0x8FBE, 0x8FC0, 0x8FC1, 0x8FC6, 0x8FCA, 0x8FCB,
+ 0x8FCD, 0x8FD0, 0x8FD2, 0x8FD3, 0x8FD5, 0x8FE0, 0x8FE3, 0x8FE4, 0x8FE8,
+ 0x8FEE, 0x8FF1, 0x8FF5, 0x8FF6, 0x8FFB, 0x8FFE, 0x9002, 0x9004, 0x9008,
+ 0x900C, 0x9018, 0x901B, 0x9028, 0x9029, 0x902F, 0x902A, 0x902C, 0x902D,
+ 0x9033, 0x9034, 0x9037, 0x903F, 0x9043, 0x9044, 0x904C, 0x905B, 0x905D,
+ 0x9062, 0x9066, 0x9067, 0x906C, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
+ 0x908B, 0x908C, 0x908E, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099, 0x909B,
+ 0x90A0, 0x90A1, 0x90A2, 0x90A5, 0x90B0, 0x90B2, 0x90B3, 0x90B4, 0x90B6,
+ 0x90BD, 0x90CC, 0x90BE, 0x90C3},
+ {0x90C4, 0x90C5, 0x90C7, 0x90C8, 0x90D5, 0x90D7, 0x90D8, 0x90D9, 0x90DC,
+ 0x90DD, 0x90DF, 0x90E5, 0x90D2, 0x90F6, 0x90EB, 0x90EF, 0x90F0, 0x90F4,
+ 0x90FE, 0x90FF, 0x9100, 0x9104, 0x9105, 0x9106, 0x9108, 0x910D, 0x9110,
+ 0x9114, 0x9116, 0x9117, 0x9118, 0x911A, 0x911C, 0x911E, 0x9120, 0x9125,
+ 0x9122, 0x9123, 0x9127, 0x9129, 0x912E, 0x912F, 0x9131, 0x9134, 0x9136,
+ 0x9137, 0x9139, 0x913A, 0x913C, 0x913D, 0x9143, 0x9147, 0x9148, 0x914F,
+ 0x9153, 0x9157, 0x9159, 0x915A, 0x915B, 0x9161, 0x9164, 0x9167, 0x916D,
+ 0x9174, 0x9179, 0x917A, 0x917B, 0x9181, 0x9183, 0x9185, 0x9186, 0x918A,
+ 0x918E, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919E, 0x91A1, 0x91A6,
+ 0x91A8, 0x91AC, 0x91AD, 0x91AE, 0x91B0, 0x91B1, 0x91B2, 0x91B3, 0x91B6,
+ 0x91BB, 0x91BC, 0x91BD, 0x91BF},
+ {0x91C2, 0x91C3, 0x91C5, 0x91D3, 0x91D4, 0x91D7, 0x91D9, 0x91DA, 0x91DE,
+ 0x91E4, 0x91E5, 0x91E9, 0x91EA, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0,
+ 0x91F1, 0x91F7, 0x91F9, 0x91FB, 0x91FD, 0x9200, 0x9201, 0x9204, 0x9205,
+ 0x9206, 0x9207, 0x9209, 0x920A, 0x920C, 0x9210, 0x9212, 0x9213, 0x9216,
+ 0x9218, 0x921C, 0x921D, 0x9223, 0x9224, 0x9225, 0x9226, 0x9228, 0x922E,
+ 0x922F, 0x9230, 0x9233, 0x9235, 0x9236, 0x9238, 0x9239, 0x923A, 0x923C,
+ 0x923E, 0x9240, 0x9242, 0x9243, 0x9246, 0x9247, 0x924A, 0x924D, 0x924E,
+ 0x924F, 0x9251, 0x9258, 0x9259, 0x925C, 0x925D, 0x9260, 0x9261, 0x9265,
+ 0x9267, 0x9268, 0x9269, 0x926E, 0x926F, 0x9270, 0x9275, 0x9276, 0x9277,
+ 0x9278, 0x9279, 0x927B, 0x927C, 0x927D, 0x927F, 0x9288, 0x9289, 0x928A,
+ 0x928D, 0x928E, 0x9292, 0x9297},
+ {0x9299, 0x929F, 0x92A0, 0x92A4, 0x92A5, 0x92A7, 0x92A8, 0x92AB, 0x92AF,
+ 0x92B2, 0x92B6, 0x92B8, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BF, 0x92C0,
+ 0x92C1, 0x92C2, 0x92C3, 0x92C5, 0x92C6, 0x92C7, 0x92C8, 0x92CB, 0x92CC,
+ 0x92CD, 0x92CE, 0x92D0, 0x92D3, 0x92D5, 0x92D7, 0x92D8, 0x92D9, 0x92DC,
+ 0x92DD, 0x92DF, 0x92E0, 0x92E1, 0x92E3, 0x92E5, 0x92E7, 0x92E8, 0x92EC,
+ 0x92EE, 0x92F0, 0x92F9, 0x92FB, 0x92FF, 0x9300, 0x9302, 0x9308, 0x930D,
+ 0x9311, 0x9314, 0x9315, 0x931C, 0x931D, 0x931E, 0x931F, 0x9321, 0x9324,
+ 0x9325, 0x9327, 0x9329, 0x932A, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347,
+ 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358, 0x935A,
+ 0x935E, 0x9364, 0x9365, 0x9367, 0x9369, 0x936A, 0x936D, 0x936F, 0x9370,
+ 0x9371, 0x9373, 0x9374, 0x9376},
+ {0x937A, 0x937D, 0x937F, 0x9380, 0x9381, 0x9382, 0x9388, 0x938A, 0x938B,
+ 0x938D, 0x938F, 0x9392, 0x9395, 0x9398, 0x939B, 0x939E, 0x93A1, 0x93A3,
+ 0x93A4, 0x93A6, 0x93A8, 0x93AB, 0x93B4, 0x93B5, 0x93B6, 0x93BA, 0x93A9,
+ 0x93C1, 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C9, 0x93CA, 0x93CB, 0x93CC,
+ 0x93CD, 0x93D3, 0x93D9, 0x93DC, 0x93DE, 0x93DF, 0x93E2, 0x93E6, 0x93E7,
+ 0x93F9, 0x93F7, 0x93F8, 0x93FA, 0x93FB, 0x93FD, 0x9401, 0x9402, 0x9404,
+ 0x9408, 0x9409, 0x940D, 0x940E, 0x940F, 0x9415, 0x9416, 0x9417, 0x941F,
+ 0x942E, 0x942F, 0x9431, 0x9432, 0x9433, 0x9434, 0x943B, 0x943F, 0x943D,
+ 0x9443, 0x9445, 0x9448, 0x944A, 0x944C, 0x9455, 0x9459, 0x945C, 0x945F,
+ 0x9461, 0x9463, 0x9468, 0x946B, 0x946D, 0x946E, 0x946F, 0x9471, 0x9472,
+ 0x9484, 0x9483, 0x9578, 0x9579},
+ {0x957E, 0x9584, 0x9588, 0x958C, 0x958D, 0x958E, 0x959D, 0x959E, 0x959F,
+ 0x95A1, 0x95A6, 0x95A9, 0x95AB, 0x95AC, 0x95B4, 0x95B6, 0x95BA, 0x95BD,
+ 0x95BF, 0x95C6, 0x95C8, 0x95C9, 0x95CB, 0x95D0, 0x95D1, 0x95D2, 0x95D3,
+ 0x95D9, 0x95DA, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E4, 0x95E6, 0x961D,
+ 0x961E, 0x9622, 0x9624, 0x9625, 0x9626, 0x962C, 0x9631, 0x9633, 0x9637,
+ 0x9638, 0x9639, 0x963A, 0x963C, 0x963D, 0x9641, 0x9652, 0x9654, 0x9656,
+ 0x9657, 0x9658, 0x9661, 0x966E, 0x9674, 0x967B, 0x967C, 0x967E, 0x967F,
+ 0x9681, 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969A, 0x969D,
+ 0x969F, 0x96A4, 0x96A5, 0x96A6, 0x96A9, 0x96AE, 0x96AF, 0x96B3, 0x96BA,
+ 0x96CA, 0x96D2, 0x5DB2, 0x96D8, 0x96DA, 0x96DD, 0x96DE, 0x96DF, 0x96E9,
+ 0x96EF, 0x96F1, 0x96FA, 0x9702},
+ {0x9703, 0x9705, 0x9709, 0x971A, 0x971B, 0x971D, 0x9721, 0x9722, 0x9723,
+ 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974A, 0x974E, 0x974F, 0x9755,
+ 0x9757, 0x9758, 0x975A, 0x975B, 0x9763, 0x9767, 0x976A, 0x976E, 0x9773,
+ 0x9776, 0x9777, 0x9778, 0x977B, 0x977D, 0x977F, 0x9780, 0x9789, 0x9795,
+ 0x9796, 0x9797, 0x9799, 0x979A, 0x979E, 0x979F, 0x97A2, 0x97AC, 0x97AE,
+ 0x97B1, 0x97B2, 0x97B5, 0x97B6, 0x97B8, 0x97B9, 0x97BA, 0x97BC, 0x97BE,
+ 0x97BF, 0x97C1, 0x97C4, 0x97C5, 0x97C7, 0x97C9, 0x97CA, 0x97CC, 0x97CD,
+ 0x97CE, 0x97D0, 0x97D1, 0x97D4, 0x97D7, 0x97D8, 0x97D9, 0x97DD, 0x97DE,
+ 0x97E0, 0x97DB, 0x97E1, 0x97E4, 0x97EF, 0x97F1, 0x97F4, 0x97F7, 0x97F8,
+ 0x97FA, 0x9807, 0x980A, 0x9819, 0x980D, 0x980E, 0x9814, 0x9816, 0x981C,
+ 0x981E, 0x9820, 0x9823, 0x9826},
+ {0x982B, 0x982E, 0x982F, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825, 0x983E,
+ 0x9844, 0x9847, 0x984A, 0x9851, 0x9852, 0x9853, 0x9856, 0x9857, 0x9859,
+ 0x985A, 0x9862, 0x9863, 0x9865, 0x9866, 0x986A, 0x986C, 0x98AB, 0x98AD,
+ 0x98AE, 0x98B0, 0x98B4, 0x98B7, 0x98B8, 0x98BA, 0x98BB, 0x98BF, 0x98C2,
+ 0x98C5, 0x98C8, 0x98CC, 0x98E1, 0x98E3, 0x98E5, 0x98E6, 0x98E7, 0x98EA,
+ 0x98F3, 0x98F6, 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917,
+ 0x991A, 0x991B, 0x991C, 0x991F, 0x9922, 0x9926, 0x9927, 0x992B, 0x9931,
+ 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993A, 0x993B, 0x993C, 0x9940,
+ 0x9941, 0x9946, 0x9947, 0x9948, 0x994D, 0x994E, 0x9954, 0x9958, 0x9959,
+ 0x995B, 0x995C, 0x995E, 0x995F, 0x9960, 0x999B, 0x999D, 0x999F, 0x99A6,
+ 0x99B0, 0x99B1, 0x99B2, 0x99B5},
+ {0x99B9, 0x99BA, 0x99BD, 0x99BF, 0x99C3, 0x99C9, 0x99D3, 0x99D4, 0x99D9,
+ 0x99DA, 0x99DC, 0x99DE, 0x99E7, 0x99EA, 0x99EB, 0x99EC, 0x99F0, 0x99F4,
+ 0x99F5, 0x99F9, 0x99FD, 0x99FE, 0x9A02, 0x9A03, 0x9A04, 0x9A0B, 0x9A0C,
+ 0x9A10, 0x9A11, 0x9A16, 0x9A1E, 0x9A20, 0x9A22, 0x9A23, 0x9A24, 0x9A27,
+ 0x9A2D, 0x9A2E, 0x9A33, 0x9A35, 0x9A36, 0x9A38, 0x9A47, 0x9A41, 0x9A44,
+ 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4E, 0x9A51, 0x9A54, 0x9A56, 0x9A5D, 0x9AAA,
+ 0x9AAC, 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB4, 0x9AB5, 0x9AB6, 0x9AB9, 0x9ABB,
+ 0x9ABE, 0x9ABF, 0x9AC1, 0x9AC3, 0x9AC6, 0x9AC8, 0x9ACE, 0x9AD0, 0x9AD2,
+ 0x9AD5, 0x9AD6, 0x9AD7, 0x9ADB, 0x9ADC, 0x9AE0, 0x9AE4, 0x9AE5, 0x9AE7,
+ 0x9AE9, 0x9AEC, 0x9AF2, 0x9AF3, 0x9AF5, 0x9AF9, 0x9AFA, 0x9AFD, 0x9AFF,
+ 0x9B00, 0x9B01, 0x9B02, 0x9B03},
+ {0x9B04, 0x9B05, 0x9B08, 0x9B09, 0x9B0B, 0x9B0C, 0x9B0D, 0x9B0E, 0x9B10,
+ 0x9B12, 0x9B16, 0x9B19, 0x9B1B, 0x9B1C, 0x9B20, 0x9B26, 0x9B2B, 0x9B2D,
+ 0x9B33, 0x9B34, 0x9B35, 0x9B37, 0x9B39, 0x9B3A, 0x9B3D, 0x9B48, 0x9B4B,
+ 0x9B4C, 0x9B55, 0x9B56, 0x9B57, 0x9B5B, 0x9B5E, 0x9B61, 0x9B63, 0x9B65,
+ 0x9B66, 0x9B68, 0x9B6A, 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B73, 0x9B75,
+ 0x9B77, 0x9B78, 0x9B79, 0x9B7F, 0x9B80, 0x9B84, 0x9B85, 0x9B86, 0x9B87,
+ 0x9B89, 0x9B8A, 0x9B8B, 0x9B8D, 0x9B8F, 0x9B90, 0x9B94, 0x9B9A, 0x9B9D,
+ 0x9B9E, 0x9BA6, 0x9BA7, 0x9BA9, 0x9BAC, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB7,
+ 0x9BB8, 0x9BBB, 0x9BBC, 0x9BBE, 0x9BBF, 0x9BC1, 0x9BC7, 0x9BC8, 0x9BCE,
+ 0x9BD0, 0x9BD7, 0x9BD8, 0x9BDD, 0x9BDF, 0x9BE5, 0x9BE7, 0x9BEA, 0x9BEB,
+ 0x9BEF, 0x9BF3, 0x9BF7, 0x9BF8},
+ {0x9BF9, 0x9BFA, 0x9BFD, 0x9BFF, 0x9C00, 0x9C02, 0x9C0B, 0x9C0F, 0x9C11,
+ 0x9C16, 0x9C18, 0x9C19, 0x9C1A, 0x9C1C, 0x9C1E, 0x9C22, 0x9C23, 0x9C26,
+ 0x9C27, 0x9C28, 0x9C29, 0x9C2A, 0x9C31, 0x9C35, 0x9C36, 0x9C37, 0x9C3D,
+ 0x9C41, 0x9C43, 0x9C44, 0x9C45, 0x9C49, 0x9C4A, 0x9C4E, 0x9C4F, 0x9C50,
+ 0x9C53, 0x9C54, 0x9C56, 0x9C58, 0x9C5B, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C63,
+ 0x9C69, 0x9C6A, 0x9C5C, 0x9C6B, 0x9C68, 0x9C6E, 0x9C70, 0x9C72, 0x9C75,
+ 0x9C77, 0x9C7B, 0x9CE6, 0x9CF2, 0x9CF7, 0x9CF9, 0x9D0B, 0x9D02, 0x9D11,
+ 0x9D17, 0x9D18, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D2F, 0x9D30, 0x9D32, 0x9D33,
+ 0x9D34, 0x9D3A, 0x9D3C, 0x9D45, 0x9D3D, 0x9D42, 0x9D43, 0x9D47, 0x9D4A,
+ 0x9D53, 0x9D54, 0x9D5F, 0x9D63, 0x9D62, 0x9D65, 0x9D69, 0x9D6A, 0x9D6B,
+ 0x9D70, 0x9D76, 0x9D77, 0x9D7B},
+ {0x9D7C, 0x9D7E, 0x9D83, 0x9D84, 0x9D86, 0x9D8A, 0x9D8D, 0x9D8E, 0x9D92,
+ 0x9D93, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9DA1, 0x9DAA, 0x9DAC, 0x9DAE,
+ 0x9DB1, 0x9DB5, 0x9DB9, 0x9DBC, 0x9DBF, 0x9DC3, 0x9DC7, 0x9DC9, 0x9DCA,
+ 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DDA, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE5,
+ 0x9DE7, 0x9DE9, 0x9DEB, 0x9DEE, 0x9DF0, 0x9DF3, 0x9DF4, 0x9DFE, 0x9E0A,
+ 0x9E02, 0x9E07, 0x9E0E, 0x9E10, 0x9E11, 0x9E12, 0x9E15, 0x9E16, 0x9E19,
+ 0x9E1C, 0x9E1D, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E80, 0x9E82, 0x9E83, 0x9E84,
+ 0x9E85, 0x9E87, 0x9E8E, 0x9E8F, 0x9E96, 0x9E98, 0x9E9B, 0x9E9E, 0x9EA4,
+ 0x9EA8, 0x9EAC, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB3, 0x9EB4, 0x9EB5, 0x9EC6,
+ 0x9EC8, 0x9ECB, 0x9ED5, 0x9EDF, 0x9EE4, 0x9EE7, 0x9EEC, 0x9EED, 0x9EEE,
+ 0x9EF0, 0x9EF1, 0x9EF2, 0x9EF5},
+ {0x9EF8, 0x9EFF, 0x9F02, 0x9F03, 0x9F09, 0x9F0F, 0x9F10, 0x9F11, 0x9F12,
+ 0x9F14, 0x9F16, 0x9F17, 0x9F19, 0x9F1A, 0x9F1B, 0x9F1F, 0x9F22, 0x9F26,
+ 0x9F2A, 0x9F2B, 0x9F2F, 0x9F31, 0x9F32, 0x9F34, 0x9F37, 0x9F39, 0x9F3A,
+ 0x9F3C, 0x9F3D, 0x9F3F, 0x9F41, 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0x9F47,
+ 0x9F53, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F5A, 0x9F5D, 0x9F5E, 0x9F68,
+ 0x9F69, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F73, 0x9F75, 0x9F7A,
+ 0x9F7D, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F94, 0x9F96, 0x9F97, 0x9F9E,
+ 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA5, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR},
+};
+
+/*
+ * Mapping from Unicode back to JIS X 0212.
+ *
+ * This inverse is done the same way the SBCS ones are done: I
+ * provide a list of JIS X 0212 positions, sorted into ascending
+ * order of their Unicode values. Then we can binary-search through
+ * this list, referring to the above table for each comparison, to
+ * find the coordinates for a given code point.
+ *
+ * Generated by running the following sh+Perl over JIS0212.TXT:
+
+cat JIS0212.TXT | \
+perl -ne '$a{$3}=[hex$1,hex$2] if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {$o=" ";for $k (sort keys %a) { ($r,$c) = @{$a{$k}}; ' \
+ -e '$o .= $C; $C = ", "; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= sprintf "{%d,%d}", $r-33,$c-33; } print "$o\n"; }'
+
+ */
+
+static const struct { unsigned char r, c; } jisx0212_backward[] = {
+ {1,22}, {1,33}, {1,79}, {1,34}, {1,76}, {1,75}, {1,77}, {1,19}, {1,16},
+ {1,74}, {1,35}, {9,1}, {9,0}, {9,3}, {9,9}, {9,2}, {9,8}, {8,0}, {9,13},
+ {9,17}, {9,16}, {9,19}, {9,18}, {9,31}, {9,30}, {9,33}, {9,32}, {9,47},
+ {9,49}, {9,48}, {9,51}, {9,55}, {9,50}, {8,11}, {9,66}, {9,65}, {9,68},
+ {9,67}, {9,81}, {8,15}, {8,45}, {10,1}, {10,0}, {10,3}, {10,9}, {10,2},
+ {10,8}, {8,32}, {10,13}, {10,17}, {10,16}, {10,19}, {10,18}, {10,31},
+ {10,30}, {10,33}, {10,32}, {8,34}, {10,47}, {10,49}, {10,48}, {10,51},
+ {10,55}, {10,50}, {8,43}, {10,66}, {10,65}, {10,68}, {10,67}, {10,81},
+ {8,47}, {10,82}, {9,6}, {10,6}, {9,4}, {10,4}, {9,7}, {10,7}, {9,10},
+ {10,10}, {9,11}, {10,11}, {9,14}, {10,14}, {9,12}, {10,12}, {9,15},
+ {10,15}, {8,1}, {8,33}, {9,22}, {10,22}, {9,21}, {10,21}, {9,23}, {10,23},
+ {9,20}, {10,20}, {9,25}, {10,25}, {9,26}, {10,26}, {9,28}, {10,28},
+ {9,27}, {9,29}, {10,29}, {8,3}, {8,35}, {9,38}, {10,38}, {9,36}, {10,36},
+ {9,37}, {10,37}, {9,35}, {8,36}, {8,5}, {8,37}, {9,39}, {10,39}, {9,40},
+ {10,40}, {8,38}, {9,41}, {10,41}, {9,43}, {10,43}, {9,42}, {10,42},
+ {8,8}, {8,40}, {8,7}, {8,39}, {9,44}, {10,44}, {9,46}, {10,46}, {9,45},
+ {10,45}, {8,41}, {8,10}, {8,42}, {9,54}, {10,54}, {9,53}, {10,53},
+ {8,12}, {8,44}, {9,56}, {10,56}, {9,58}, {10,58}, {9,57}, {10,57},
+ {9,59}, {10,59}, {9,60}, {10,60}, {9,62}, {10,62}, {9,61}, {10,61},
+ {9,64}, {10,64}, {9,63}, {10,63}, {8,14}, {8,46}, {9,75}, {10,75},
+ {9,72}, {10,72}, {9,69}, {10,69}, {9,74}, {10,74}, {9,71}, {10,71},
+ {9,73}, {10,73}, {9,80}, {10,80}, {9,83}, {10,83}, {9,82}, {9,84},
+ {10,84}, {9,86}, {10,86}, {9,85}, {10,85}, {9,5}, {10,5}, {9,34}, {10,34},
+ {9,52}, {10,52}, {9,70}, {10,70}, {9,79}, {10,79}, {9,76}, {10,76},
+ {9,78}, {10,78}, {9,77}, {10,77}, {10,24}, {1,15}, {1,14}, {1,17},
+ {1,21}, {1,20}, {1,18}, {1,23}, {1,24}, {5,64}, {5,65}, {5,66}, {5,67},
+ {5,70}, {5,72}, {5,75}, {5,85}, {5,68}, {5,73}, {5,80}, {5,81}, {5,82},
+ {5,83}, {5,90}, {5,87}, {5,84}, {5,89}, {5,86}, {5,88}, {5,91}, {6,33},
+ {6,34}, {6,35}, {6,36}, {6,37}, {6,38}, {6,39}, {6,40}, {6,41}, {6,42},
+ {6,43}, {6,44}, {6,45}, {6,81}, {6,82}, {6,83}, {6,84}, {6,85}, {6,86},
+ {6,87}, {6,88}, {6,89}, {6,90}, {6,91}, {6,92}, {6,93}, {1,80}, {1,78},
+ {15,0}, {15,1}, {15,2}, {15,3}, {15,4}, {15,5}, {15,6}, {15,7}, {15,8},
+ {15,9}, {15,10}, {15,11}, {15,12}, {15,13}, {15,14}, {15,15}, {15,16},
+ {15,17}, {15,18}, {15,19}, {15,20}, {15,21}, {15,22}, {15,23}, {15,24},
+ {15,25}, {15,26}, {15,27}, {15,28}, {15,29}, {15,30}, {15,31}, {15,32},
+ {15,33}, {15,34}, {15,35}, {15,36}, {15,37}, {15,38}, {15,39}, {15,40},
+ {15,41}, {15,42}, {15,43}, {15,44}, {15,45}, {15,46}, {15,47}, {15,48},
+ {15,49}, {15,50}, {15,51}, {15,52}, {15,53}, {15,54}, {15,55}, {15,56},
+ {15,57}, {15,58}, {15,59}, {15,60}, {15,61}, {15,63}, {15,64}, {15,65},
+ {15,66}, {15,67}, {15,68}, {15,69}, {15,70}, {15,71}, {15,72}, {15,73},
+ {15,74}, {15,75}, {15,76}, {15,77}, {15,78}, {15,79}, {15,62}, {15,80},
+ {15,81}, {15,82}, {15,83}, {15,84}, {15,85}, {15,86}, {15,87}, {15,88},
+ {15,89}, {15,90}, {15,91}, {15,92}, {15,93}, {16,0}, {16,1}, {16,2},
+ {16,3}, {16,4}, {16,5}, {16,6}, {16,7}, {16,8}, {16,9}, {16,10}, {16,11},
+ {16,12}, {16,13}, {16,14}, {16,15}, {16,16}, {16,17}, {16,18}, {16,19},
+ {16,20}, {16,21}, {16,22}, {16,23}, {16,24}, {16,25}, {16,26}, {16,27},
+ {16,28}, {16,29}, {16,30}, {16,31}, {16,32}, {16,33}, {16,34}, {16,35},
+ {16,36}, {16,37}, {16,38}, {16,39}, {16,40}, {16,41}, {16,42}, {16,43},
+ {16,44}, {16,45}, {16,46}, {16,47}, {16,48}, {16,49}, {16,50}, {16,51},
+ {16,52}, {16,53}, {16,54}, {16,55}, {16,56}, {16,57}, {16,58}, {16,59},
+ {16,60}, {16,61}, {16,85}, {16,62}, {16,63}, {16,64}, {16,65}, {16,66},
+ {16,67}, {16,68}, {16,69}, {16,70}, {16,71}, {16,72}, {16,73}, {16,74},
+ {16,75}, {16,76}, {16,77}, {16,78}, {16,79}, {16,80}, {16,81}, {16,82},
+ {16,83}, {16,84}, {16,86}, {16,87}, {16,88}, {16,89}, {16,90}, {16,91},
+ {16,92}, {16,93}, {17,0}, {17,1}, {17,2}, {17,3}, {17,4}, {17,5}, {17,6},
+ {17,7}, {17,8}, {17,9}, {17,10}, {17,11}, {17,12}, {17,13}, {17,14},
+ {17,15}, {17,16}, {17,17}, {17,18}, {17,19}, {17,20}, {17,21}, {17,22},
+ {17,23}, {17,24}, {17,25}, {17,26}, {17,27}, {17,28}, {17,29}, {17,30},
+ {17,31}, {17,32}, {17,33}, {17,34}, {17,35}, {17,36}, {17,48}, {17,37},
+ {17,38}, {17,39}, {17,40}, {17,41}, {17,42}, {17,43}, {17,44}, {17,45},
+ {17,46}, {17,47}, {17,49}, {17,50}, {17,51}, {17,52}, {17,53}, {17,54},
+ {17,55}, {17,56}, {17,57}, {17,58}, {17,59}, {17,60}, {17,61}, {17,62},
+ {17,63}, {17,64}, {17,65}, {17,66}, {17,67}, {17,68}, {17,69}, {17,70},
+ {17,71}, {17,72}, {17,73}, {17,74}, {17,75}, {17,76}, {17,77}, {17,78},
+ {17,79}, {17,80}, {17,81}, {17,82}, {17,83}, {17,84}, {17,85}, {17,86},
+ {17,87}, {17,88}, {17,89}, {17,90}, {17,91}, {17,92}, {17,93}, {18,0},
+ {18,1}, {18,2}, {18,3}, {18,4}, {18,5}, {18,6}, {18,7}, {18,8}, {18,9},
+ {18,10}, {18,11}, {18,12}, {18,13}, {18,14}, {18,15}, {18,16}, {18,17},
+ {18,18}, {18,19}, {18,20}, {18,21}, {18,22}, {18,23}, {18,24}, {18,25},
+ {18,26}, {18,27}, {18,28}, {18,29}, {18,30}, {18,31}, {18,32}, {18,33},
+ {18,34}, {18,35}, {18,36}, {18,37}, {18,38}, {18,39}, {18,40}, {18,41},
+ {18,42}, {18,43}, {18,44}, {18,45}, {18,46}, {18,47}, {18,48}, {18,49},
+ {18,50}, {18,51}, {18,52}, {18,53}, {18,54}, {18,55}, {18,56}, {18,57},
+ {18,58}, {18,59}, {18,60}, {18,61}, {18,62}, {18,63}, {18,64}, {18,65},
+ {18,66}, {18,67}, {18,68}, {18,69}, {18,70}, {18,71}, {18,72}, {18,73},
+ {18,74}, {18,75}, {18,76}, {18,77}, {18,78}, {18,79}, {18,80}, {18,81},
+ {18,82}, {18,83}, {18,84}, {18,85}, {18,86}, {18,87}, {18,88}, {18,89},
+ {18,90}, {18,91}, {18,92}, {18,93}, {19,0}, {19,1}, {19,2}, {19,3},
+ {19,4}, {19,5}, {19,6}, {19,7}, {19,8}, {19,9}, {19,10}, {19,11}, {19,12},
+ {19,13}, {19,14}, {19,15}, {19,16}, {19,17}, {19,18}, {19,19}, {19,20},
+ {19,21}, {19,23}, {19,22}, {19,24}, {19,25}, {19,26}, {19,27}, {19,28},
+ {19,29}, {19,30}, {19,31}, {19,32}, {19,33}, {19,34}, {19,35}, {19,36},
+ {19,37}, {19,38}, {19,39}, {19,40}, {19,41}, {19,42}, {19,43}, {19,44},
+ {19,45}, {19,46}, {19,47}, {19,48}, {19,49}, {19,50}, {19,51}, {19,52},
+ {19,53}, {19,54}, {19,55}, {19,56}, {19,57}, {19,58}, {19,59}, {19,60},
+ {19,61}, {19,62}, {19,63}, {19,64}, {19,65}, {19,66}, {19,67}, {19,68},
+ {19,69}, {19,70}, {19,71}, {19,72}, {19,73}, {19,74}, {19,75}, {19,76},
+ {19,77}, {19,78}, {19,79}, {19,80}, {19,81}, {19,82}, {19,83}, {19,84},
+ {19,85}, {19,86}, {19,87}, {19,88}, {19,89}, {19,90}, {19,91}, {19,92},
+ {19,93}, {20,0}, {20,1}, {20,2}, {20,3}, {20,4}, {20,5}, {20,6}, {20,7},
+ {20,8}, {20,9}, {20,10}, {20,11}, {20,12}, {20,13}, {20,14}, {20,15},
+ {20,16}, {20,17}, {20,18}, {20,19}, {20,20}, {20,21}, {20,22}, {20,23},
+ {20,24}, {20,25}, {20,26}, {20,27}, {20,28}, {20,29}, {20,30}, {20,31},
+ {20,32}, {20,33}, {20,34}, {20,35}, {20,36}, {20,37}, {20,38}, {20,39},
+ {20,40}, {20,41}, {20,42}, {20,43}, {20,44}, {20,45}, {20,46}, {20,47},
+ {20,48}, {20,49}, {20,50}, {20,51}, {20,52}, {20,53}, {20,54}, {20,55},
+ {20,56}, {20,57}, {20,58}, {20,59}, {20,60}, {20,61}, {20,62}, {20,63},
+ {20,64}, {20,65}, {20,66}, {20,67}, {20,68}, {20,69}, {20,70}, {20,71},
+ {20,72}, {20,73}, {20,74}, {20,75}, {20,76}, {20,77}, {20,78}, {20,79},
+ {20,80}, {20,81}, {20,82}, {20,83}, {20,84}, {20,85}, {20,86}, {20,87},
+ {20,88}, {20,89}, {20,90}, {20,91}, {20,92}, {20,93}, {21,0}, {21,1},
+ {21,2}, {21,3}, {21,4}, {21,5}, {21,6}, {21,7}, {21,8}, {21,9}, {21,10},
+ {21,11}, {21,12}, {21,13}, {21,14}, {21,15}, {21,16}, {21,17}, {21,18},
+ {21,19}, {21,20}, {21,21}, {21,22}, {21,23}, {21,24}, {21,25}, {21,26},
+ {21,27}, {21,28}, {21,29}, {21,30}, {21,31}, {21,32}, {21,33}, {21,34},
+ {21,35}, {21,36}, {21,37}, {21,38}, {21,39}, {21,40}, {21,41}, {21,42},
+ {21,43}, {21,44}, {21,45}, {21,46}, {21,47}, {21,48}, {21,49}, {21,50},
+ {21,51}, {21,52}, {21,53}, {21,54}, {21,55}, {21,56}, {21,57}, {21,58},
+ {21,59}, {21,60}, {21,61}, {21,62}, {21,63}, {21,64}, {21,65}, {21,66},
+ {21,67}, {21,68}, {21,69}, {21,70}, {21,71}, {21,72}, {21,73}, {21,74},
+ {21,75}, {21,76}, {21,79}, {21,80}, {21,77}, {21,78}, {21,81}, {21,82},
+ {21,83}, {21,84}, {21,85}, {21,86}, {21,87}, {21,88}, {21,89}, {21,90},
+ {21,92}, {21,93}, {21,91}, {22,0}, {22,1}, {22,2}, {22,3}, {22,4},
+ {22,5}, {22,6}, {22,7}, {22,8}, {22,9}, {22,10}, {22,11}, {22,12},
+ {22,13}, {22,14}, {22,15}, {22,16}, {22,17}, {22,18}, {22,19}, {22,20},
+ {22,21}, {22,22}, {22,23}, {22,24}, {22,25}, {22,26}, {22,27}, {22,28},
+ {22,29}, {22,30}, {22,31}, {22,32}, {22,33}, {22,34}, {22,35}, {22,36},
+ {22,37}, {22,38}, {22,39}, {22,40}, {22,41}, {22,42}, {22,43}, {22,44},
+ {22,45}, {22,46}, {22,47}, {22,48}, {22,49}, {22,50}, {22,51}, {22,52},
+ {22,53}, {22,54}, {22,63}, {22,55}, {22,56}, {22,57}, {22,58}, {22,59},
+ {22,60}, {22,61}, {22,62}, {22,64}, {22,65}, {22,66}, {22,67}, {22,68},
+ {22,69}, {22,70}, {22,71}, {22,72}, {22,73}, {22,74}, {22,75}, {22,76},
+ {22,93}, {22,77}, {22,78}, {22,79}, {22,80}, {22,81}, {22,82}, {22,83},
+ {22,84}, {22,85}, {22,86}, {22,87}, {22,88}, {22,89}, {22,90}, {22,91},
+ {22,92}, {23,0}, {23,1}, {23,2}, {23,3}, {23,4}, {23,5}, {23,6}, {23,7},
+ {23,8}, {23,9}, {23,10}, {23,11}, {23,12}, {23,13}, {23,14}, {23,15},
+ {23,16}, {23,17}, {23,18}, {23,19}, {23,20}, {23,21}, {23,22}, {23,23},
+ {23,24}, {23,25}, {23,26}, {23,27}, {23,28}, {23,29}, {23,30}, {23,31},
+ {23,32}, {23,33}, {23,34}, {23,35}, {23,36}, {23,37}, {23,38}, {23,39},
+ {23,40}, {23,41}, {23,42}, {23,43}, {23,44}, {23,45}, {23,47}, {23,48},
+ {23,46}, {23,49}, {23,50}, {23,51}, {23,52}, {23,53}, {23,54}, {23,55},
+ {23,56}, {23,57}, {23,58}, {23,59}, {23,60}, {23,61}, {23,62}, {23,63},
+ {23,64}, {23,65}, {23,66}, {23,67}, {23,68}, {23,70}, {23,71}, {23,72},
+ {23,73}, {23,74}, {23,75}, {23,76}, {23,77}, {23,78}, {23,79}, {23,80},
+ {23,81}, {23,82}, {23,83}, {23,84}, {23,85}, {23,86}, {23,87}, {23,88},
+ {23,89}, {23,90}, {23,91}, {23,92}, {23,93}, {24,0}, {24,1}, {24,2},
+ {24,3}, {24,4}, {24,5}, {24,6}, {24,7}, {24,8}, {24,9}, {24,10}, {24,11},
+ {24,12}, {24,13}, {24,14}, {24,15}, {24,16}, {24,17}, {24,18}, {24,19},
+ {24,20}, {24,21}, {24,22}, {24,23}, {24,24}, {24,25}, {24,26}, {24,27},
+ {24,28}, {24,29}, {24,30}, {24,31}, {24,32}, {24,33}, {24,34}, {24,35},
+ {24,36}, {24,37}, {24,38}, {24,39}, {24,40}, {24,41}, {24,42}, {24,43},
+ {24,44}, {24,45}, {24,46}, {24,47}, {24,48}, {24,49}, {24,50}, {24,51},
+ {24,52}, {24,53}, {24,54}, {24,55}, {24,56}, {24,57}, {24,58}, {24,59},
+ {24,60}, {24,61}, {24,62}, {24,63}, {24,64}, {24,65}, {24,66}, {24,67},
+ {24,68}, {24,69}, {24,70}, {24,71}, {24,72}, {24,73}, {24,74}, {24,75},
+ {24,76}, {24,77}, {24,78}, {24,79}, {24,80}, {24,81}, {24,82}, {24,83},
+ {24,84}, {24,85}, {24,86}, {24,87}, {24,88}, {24,89}, {24,90}, {24,91},
+ {24,92}, {24,93}, {25,0}, {25,1}, {25,2}, {25,3}, {25,4}, {25,5}, {25,6},
+ {25,7}, {25,8}, {25,9}, {25,10}, {25,11}, {25,12}, {25,13}, {25,14},
+ {25,15}, {25,16}, {25,18}, {25,19}, {25,20}, {25,21}, {25,22}, {25,23},
+ {25,17}, {25,24}, {25,25}, {25,26}, {25,27}, {25,28}, {25,29}, {25,30},
+ {25,31}, {25,32}, {25,33}, {25,34}, {25,35}, {25,36}, {25,37}, {25,38},
+ {25,39}, {25,40}, {25,41}, {25,42}, {25,43}, {25,44}, {25,45}, {25,46},
+ {25,47}, {25,48}, {25,49}, {25,50}, {25,51}, {25,52}, {25,53}, {25,54},
+ {25,55}, {25,56}, {25,57}, {25,58}, {25,59}, {25,60}, {25,61}, {25,62},
+ {25,63}, {25,64}, {25,65}, {25,66}, {25,67}, {25,68}, {25,69}, {25,70},
+ {25,71}, {25,72}, {25,73}, {25,74}, {25,75}, {25,76}, {25,77}, {25,78},
+ {25,79}, {25,80}, {25,81}, {25,82}, {25,83}, {25,84}, {25,85}, {25,86},
+ {25,87}, {25,88}, {25,89}, {25,90}, {25,91}, {25,92}, {25,93}, {26,0},
+ {26,1}, {26,2}, {26,3}, {26,4}, {26,5}, {26,6}, {26,7}, {26,8}, {26,9},
+ {26,10}, {26,11}, {26,12}, {26,13}, {26,14}, {26,15}, {26,16}, {26,17},
+ {26,18}, {26,19}, {26,20}, {26,21}, {26,22}, {26,23}, {26,24}, {26,25},
+ {26,26}, {26,28}, {26,27}, {26,29}, {26,30}, {26,31}, {26,32}, {26,33},
+ {26,34}, {26,35}, {26,36}, {26,38}, {26,39}, {26,40}, {26,41}, {26,37},
+ {26,42}, {26,43}, {26,44}, {26,45}, {26,46}, {26,47}, {26,48}, {26,49},
+ {26,50}, {26,54}, {26,52}, {26,51}, {26,53}, {26,55}, {26,56}, {26,57},
+ {26,58}, {26,59}, {26,60}, {26,61}, {26,62}, {26,63}, {26,64}, {26,65},
+ {26,66}, {26,67}, {26,68}, {26,69}, {26,70}, {26,71}, {26,72}, {26,73},
+ {26,74}, {26,75}, {26,76}, {26,77}, {26,78}, {26,79}, {26,80}, {26,81},
+ {69,83}, {26,82}, {26,83}, {26,84}, {26,85}, {26,86}, {26,87}, {26,89},
+ {26,88}, {26,90}, {26,91}, {26,92}, {26,93}, {27,0}, {27,1}, {27,2},
+ {27,3}, {27,4}, {27,5}, {27,6}, {27,7}, {27,8}, {27,9}, {27,10}, {27,11},
+ {27,13}, {27,12}, {27,14}, {27,15}, {27,16}, {27,19}, {27,17}, {27,18},
+ {27,20}, {27,21}, {27,22}, {27,23}, {27,24}, {27,25}, {27,26}, {27,27},
+ {27,28}, {27,29}, {27,30}, {27,31}, {27,32}, {27,33}, {27,34}, {27,35},
+ {27,36}, {27,37}, {27,38}, {27,39}, {27,40}, {27,41}, {27,42}, {27,43},
+ {27,44}, {27,45}, {27,46}, {27,47}, {27,49}, {27,48}, {27,50}, {27,51},
+ {27,52}, {27,53}, {27,54}, {27,55}, {27,56}, {27,57}, {27,58}, {27,59},
+ {27,60}, {27,61}, {27,62}, {27,63}, {27,64}, {27,65}, {27,66}, {27,67},
+ {27,68}, {27,69}, {27,70}, {27,71}, {27,72}, {27,73}, {27,74}, {27,75},
+ {27,76}, {27,77}, {27,78}, {27,79}, {27,80}, {27,81}, {27,82}, {27,83},
+ {27,84}, {27,85}, {27,86}, {27,87}, {27,88}, {27,89}, {27,90}, {27,91},
+ {27,92}, {27,93}, {28,0}, {28,1}, {28,2}, {28,3}, {28,4}, {28,5}, {28,6},
+ {28,7}, {28,8}, {28,9}, {28,10}, {28,11}, {28,12}, {28,13}, {28,14},
+ {28,17}, {28,15}, {28,16}, {28,18}, {28,19}, {28,20}, {28,21}, {28,22},
+ {28,23}, {28,24}, {28,25}, {28,26}, {28,27}, {28,28}, {28,29}, {28,30},
+ {28,31}, {28,32}, {28,33}, {28,34}, {28,35}, {28,36}, {28,37}, {28,38},
+ {28,39}, {28,40}, {28,41}, {28,42}, {28,43}, {28,44}, {28,45}, {28,46},
+ {28,47}, {28,48}, {28,49}, {28,50}, {28,51}, {28,52}, {28,53}, {28,54},
+ {28,55}, {28,56}, {28,57}, {28,58}, {28,59}, {28,60}, {28,61}, {28,62},
+ {28,63}, {28,64}, {28,65}, {28,66}, {28,67}, {28,68}, {28,69}, {28,70},
+ {28,71}, {28,72}, {28,73}, {28,74}, {28,75}, {28,76}, {28,77}, {28,78},
+ {28,79}, {28,80}, {28,81}, {28,82}, {28,83}, {28,84}, {28,85}, {28,86},
+ {28,87}, {28,88}, {28,89}, {28,90}, {28,91}, {28,92}, {28,93}, {29,0},
+ {29,1}, {29,2}, {29,3}, {29,4}, {29,5}, {29,6}, {29,7}, {29,8}, {29,9},
+ {29,10}, {29,11}, {29,12}, {29,13}, {29,14}, {29,15}, {29,16}, {29,17},
+ {29,18}, {29,19}, {29,20}, {29,21}, {29,22}, {29,23}, {29,24}, {29,25},
+ {29,26}, {29,27}, {29,28}, {29,29}, {29,30}, {29,31}, {29,32}, {29,33},
+ {29,34}, {29,35}, {29,36}, {29,37}, {29,38}, {29,39}, {29,40}, {29,41},
+ {29,42}, {29,43}, {29,44}, {29,45}, {29,46}, {29,47}, {29,48}, {29,49},
+ {29,50}, {29,51}, {29,52}, {29,53}, {29,54}, {29,55}, {29,56}, {29,57},
+ {29,58}, {29,59}, {29,60}, {29,61}, {29,62}, {29,63}, {29,64}, {29,65},
+ {29,66}, {29,67}, {29,68}, {29,69}, {29,70}, {29,71}, {29,72}, {29,73},
+ {29,74}, {29,75}, {29,76}, {29,77}, {29,78}, {29,79}, {29,80}, {29,81},
+ {29,82}, {29,83}, {29,84}, {29,85}, {29,86}, {29,87}, {29,88}, {29,89},
+ {29,90}, {29,93}, {29,91}, {29,92}, {30,0}, {30,1}, {30,2}, {30,3},
+ {30,4}, {30,5}, {30,6}, {30,7}, {30,8}, {30,9}, {30,10}, {30,11}, {30,12},
+ {30,13}, {30,14}, {30,15}, {30,16}, {30,17}, {30,18}, {30,19}, {30,20},
+ {30,21}, {30,22}, {30,23}, {30,24}, {30,25}, {30,26}, {30,27}, {30,28},
+ {30,29}, {30,30}, {30,31}, {30,32}, {30,33}, {30,34}, {30,35}, {30,36},
+ {30,37}, {30,38}, {30,39}, {30,40}, {30,41}, {30,42}, {30,43}, {30,44},
+ {30,45}, {30,46}, {30,47}, {30,48}, {30,49}, {30,50}, {30,51}, {30,52},
+ {30,53}, {30,54}, {30,55}, {30,56}, {30,57}, {30,58}, {30,59}, {30,60},
+ {30,61}, {30,62}, {30,63}, {30,64}, {30,65}, {30,66}, {30,67}, {30,68},
+ {30,69}, {30,70}, {30,71}, {30,72}, {30,73}, {30,74}, {30,75}, {30,76},
+ {30,77}, {30,78}, {30,79}, {30,80}, {30,81}, {30,82}, {30,83}, {30,84},
+ {30,85}, {30,86}, {30,87}, {30,88}, {30,89}, {30,90}, {30,91}, {30,92},
+ {30,93}, {31,0}, {31,1}, {31,2}, {31,3}, {31,4}, {31,5}, {31,6}, {31,7},
+ {31,8}, {31,9}, {31,10}, {31,11}, {31,12}, {31,13}, {31,14}, {31,15},
+ {31,16}, {31,17}, {31,18}, {31,19}, {31,20}, {31,21}, {31,22}, {31,23},
+ {31,24}, {31,25}, {31,26}, {31,27}, {31,28}, {31,29}, {31,30}, {31,31},
+ {31,32}, {31,33}, {31,34}, {31,35}, {31,36}, {31,37}, {31,38}, {31,39},
+ {31,40}, {31,41}, {31,42}, {31,43}, {31,44}, {31,45}, {31,46}, {31,47},
+ {31,48}, {31,49}, {31,50}, {31,51}, {31,52}, {31,53}, {31,54}, {31,55},
+ {31,56}, {31,57}, {31,58}, {31,59}, {31,60}, {31,61}, {31,62}, {31,63},
+ {31,64}, {31,65}, {31,66}, {31,67}, {31,68}, {31,69}, {31,70}, {31,71},
+ {31,72}, {31,73}, {31,74}, {31,75}, {31,76}, {31,77}, {31,78}, {31,79},
+ {31,80}, {31,81}, {31,82}, {31,83}, {31,84}, {31,85}, {31,86}, {31,87},
+ {31,88}, {31,89}, {31,90}, {31,91}, {31,92}, {31,93}, {32,0}, {32,1},
+ {32,2}, {32,3}, {32,4}, {32,5}, {32,6}, {32,7}, {32,8}, {32,9}, {32,10},
+ {32,11}, {32,12}, {32,13}, {32,14}, {32,15}, {32,16}, {32,17}, {32,18},
+ {32,19}, {32,20}, {32,21}, {32,22}, {32,23}, {32,24}, {32,25}, {32,26},
+ {32,27}, {32,28}, {32,29}, {32,30}, {32,31}, {32,32}, {32,33}, {32,34},
+ {32,35}, {32,36}, {32,37}, {32,38}, {32,39}, {32,40}, {32,41}, {32,42},
+ {32,43}, {32,44}, {32,45}, {32,46}, {32,47}, {32,48}, {32,49}, {32,50},
+ {32,51}, {32,52}, {32,53}, {32,54}, {32,55}, {32,56}, {32,57}, {32,58},
+ {32,59}, {32,60}, {32,61}, {32,62}, {32,63}, {32,64}, {32,65}, {32,66},
+ {32,67}, {32,68}, {32,69}, {32,70}, {32,71}, {32,72}, {32,73}, {32,74},
+ {32,75}, {32,76}, {32,77}, {32,78}, {32,79}, {32,80}, {32,81}, {32,82},
+ {32,83}, {32,84}, {32,85}, {32,86}, {32,87}, {32,88}, {32,89}, {32,90},
+ {32,91}, {32,92}, {32,93}, {33,0}, {33,1}, {33,2}, {33,3}, {33,4},
+ {33,5}, {33,6}, {33,7}, {33,8}, {33,9}, {33,10}, {33,11}, {33,12},
+ {33,13}, {33,15}, {33,14}, {33,16}, {33,17}, {33,18}, {33,19}, {33,20},
+ {33,22}, {33,21}, {33,23}, {33,24}, {33,25}, {33,26}, {33,27}, {33,28},
+ {33,29}, {33,31}, {33,32}, {33,33}, {33,35}, {33,36}, {33,38}, {33,39},
+ {33,40}, {33,41}, {33,43}, {33,34}, {33,37}, {33,42}, {33,44}, {33,45},
+ {33,46}, {33,47}, {33,48}, {33,49}, {33,50}, {33,51}, {33,52}, {33,53},
+ {33,54}, {33,55}, {33,56}, {33,57}, {33,58}, {33,59}, {33,60}, {33,61},
+ {33,62}, {33,63}, {33,64}, {33,65}, {33,66}, {33,67}, {33,68}, {33,69},
+ {33,70}, {33,71}, {33,72}, {33,73}, {33,74}, {33,75}, {33,76}, {33,30},
+ {33,77}, {33,78}, {33,79}, {33,80}, {33,81}, {33,82}, {33,83}, {33,84},
+ {33,85}, {33,86}, {33,87}, {33,88}, {33,89}, {33,90}, {33,91}, {33,92},
+ {33,93}, {34,0}, {34,1}, {34,2}, {34,3}, {34,4}, {34,5}, {34,6}, {34,7},
+ {34,8}, {34,9}, {34,10}, {34,11}, {34,12}, {34,13}, {34,14}, {34,15},
+ {34,16}, {34,17}, {34,18}, {34,19}, {34,20}, {34,21}, {34,22}, {34,24},
+ {34,25}, {34,26}, {34,27}, {34,28}, {34,29}, {34,30}, {34,31}, {34,32},
+ {34,33}, {34,34}, {34,35}, {34,36}, {34,37}, {34,38}, {34,39}, {34,23},
+ {34,41}, {34,42}, {34,43}, {34,44}, {34,46}, {34,45}, {34,47}, {34,48},
+ {34,49}, {34,50}, {34,51}, {34,52}, {34,53}, {34,54}, {34,55}, {34,56},
+ {34,57}, {34,58}, {34,40}, {34,59}, {34,60}, {34,61}, {34,62}, {34,63},
+ {34,64}, {34,65}, {34,66}, {34,67}, {34,68}, {34,69}, {34,70}, {34,71},
+ {34,72}, {34,73}, {34,74}, {34,75}, {34,76}, {34,77}, {34,78}, {34,79},
+ {34,80}, {34,81}, {34,82}, {34,83}, {34,84}, {34,85}, {34,86}, {34,87},
+ {34,88}, {34,89}, {34,90}, {34,91}, {34,92}, {34,93}, {35,0}, {35,1},
+ {35,2}, {35,3}, {35,4}, {35,5}, {35,6}, {35,7}, {35,8}, {35,9}, {35,10},
+ {35,11}, {35,12}, {35,13}, {35,14}, {35,15}, {35,16}, {35,17}, {35,18},
+ {35,19}, {35,20}, {35,21}, {35,22}, {35,23}, {35,24}, {35,25}, {35,26},
+ {35,27}, {35,28}, {35,29}, {35,30}, {35,31}, {35,32}, {35,33}, {35,34},
+ {35,35}, {35,36}, {35,37}, {35,38}, {35,39}, {35,40}, {35,41}, {35,42},
+ {35,43}, {35,44}, {35,45}, {35,46}, {35,47}, {35,48}, {35,49}, {35,50},
+ {35,51}, {35,52}, {35,53}, {35,54}, {35,55}, {35,56}, {35,57}, {35,58},
+ {35,59}, {35,60}, {35,61}, {35,62}, {35,63}, {35,64}, {35,65}, {35,66},
+ {35,67}, {35,68}, {35,69}, {35,70}, {35,71}, {35,72}, {35,73}, {35,74},
+ {35,75}, {35,76}, {35,77}, {35,78}, {35,79}, {35,80}, {35,81}, {35,82},
+ {35,83}, {35,84}, {35,85}, {35,86}, {35,87}, {35,88}, {35,89}, {35,90},
+ {35,91}, {35,92}, {35,93}, {36,0}, {36,1}, {36,2}, {36,3}, {36,4},
+ {36,5}, {36,6}, {36,7}, {36,8}, {36,9}, {36,10}, {36,11}, {36,12},
+ {36,13}, {36,14}, {36,15}, {36,16}, {36,17}, {36,18}, {36,19}, {36,20},
+ {36,21}, {36,22}, {36,23}, {36,24}, {36,25}, {36,26}, {36,27}, {36,28},
+ {36,29}, {36,30}, {36,31}, {36,32}, {36,33}, {36,34}, {36,35}, {36,36},
+ {36,37}, {36,38}, {36,39}, {36,40}, {36,41}, {36,42}, {36,44}, {36,43},
+ {36,45}, {36,46}, {36,47}, {36,48}, {36,49}, {36,50}, {36,51}, {36,52},
+ {36,53}, {36,54}, {36,55}, {36,56}, {36,57}, {36,58}, {36,59}, {36,60},
+ {36,61}, {36,62}, {36,63}, {36,64}, {36,65}, {36,66}, {36,67}, {36,68},
+ {36,69}, {36,70}, {36,71}, {36,72}, {36,73}, {36,74}, {36,75}, {36,76},
+ {36,77}, {36,78}, {36,79}, {36,80}, {36,81}, {36,82}, {36,83}, {36,84},
+ {36,85}, {36,86}, {36,87}, {36,88}, {36,89}, {36,90}, {36,91}, {36,92},
+ {36,93}, {37,0}, {37,1}, {37,2}, {37,3}, {37,4}, {37,5}, {37,6}, {37,7},
+ {37,8}, {37,9}, {37,10}, {37,11}, {37,12}, {37,13}, {37,14}, {37,15},
+ {37,16}, {37,17}, {37,18}, {37,19}, {37,20}, {37,21}, {37,22}, {37,23},
+ {37,24}, {37,25}, {37,26}, {37,27}, {37,28}, {37,29}, {37,30}, {37,31},
+ {37,32}, {37,33}, {37,34}, {37,35}, {37,36}, {37,37}, {37,38}, {37,39},
+ {37,40}, {37,41}, {37,42}, {37,43}, {37,44}, {37,45}, {37,46}, {37,47},
+ {37,48}, {37,49}, {37,50}, {37,51}, {37,52}, {37,53}, {37,54}, {37,55},
+ {37,56}, {37,57}, {37,58}, {37,59}, {37,60}, {37,61}, {37,62}, {37,63},
+ {38,21}, {37,64}, {37,65}, {37,66}, {37,67}, {37,68}, {37,69}, {37,70},
+ {37,71}, {37,72}, {37,73}, {37,74}, {37,75}, {37,76}, {37,77}, {37,78},
+ {37,79}, {37,80}, {37,81}, {37,82}, {37,83}, {37,84}, {37,85}, {37,86},
+ {37,87}, {37,88}, {37,89}, {37,90}, {37,91}, {37,92}, {37,93}, {38,0},
+ {38,1}, {38,2}, {38,3}, {38,4}, {38,5}, {38,6}, {38,7}, {38,8}, {38,9},
+ {38,10}, {38,11}, {38,12}, {38,13}, {38,14}, {38,15}, {38,16}, {38,17},
+ {38,18}, {38,19}, {38,20}, {38,22}, {38,23}, {38,24}, {38,25}, {38,26},
+ {38,27}, {38,28}, {38,29}, {38,30}, {38,31}, {38,32}, {38,33}, {38,34},
+ {38,35}, {38,36}, {38,37}, {38,38}, {38,39}, {38,40}, {38,41}, {38,42},
+ {38,43}, {38,44}, {38,45}, {38,46}, {38,47}, {38,48}, {38,49}, {38,50},
+ {38,51}, {38,52}, {38,53}, {38,54}, {38,55}, {38,56}, {38,57}, {38,58},
+ {38,59}, {38,60}, {38,61}, {38,62}, {38,63}, {38,64}, {38,65}, {38,66},
+ {38,67}, {38,68}, {38,69}, {38,70}, {38,71}, {38,72}, {38,73}, {38,74},
+ {38,75}, {38,76}, {38,77}, {38,78}, {38,79}, {38,80}, {38,81}, {38,82},
+ {38,83}, {38,84}, {38,85}, {38,86}, {38,87}, {38,88}, {38,89}, {38,90},
+ {38,91}, {38,92}, {38,93}, {39,0}, {39,1}, {39,2}, {39,3}, {39,4},
+ {39,5}, {39,6}, {39,7}, {39,8}, {39,9}, {39,10}, {39,11}, {39,12},
+ {39,13}, {39,14}, {39,15}, {39,16}, {39,17}, {39,18}, {39,19}, {39,20},
+ {39,21}, {39,22}, {39,23}, {39,24}, {39,25}, {39,26}, {39,27}, {39,28},
+ {39,29}, {39,30}, {39,31}, {39,32}, {39,33}, {39,34}, {39,35}, {39,36},
+ {39,37}, {39,38}, {39,39}, {39,40}, {39,41}, {39,42}, {39,43}, {39,50},
+ {39,44}, {39,45}, {39,46}, {39,47}, {39,48}, {39,49}, {39,51}, {39,52},
+ {39,53}, {39,54}, {39,55}, {39,56}, {39,57}, {39,58}, {39,59}, {39,60},
+ {39,61}, {39,62}, {39,63}, {39,64}, {39,65}, {39,66}, {39,67}, {39,68},
+ {39,69}, {39,70}, {39,71}, {39,72}, {39,73}, {39,74}, {39,75}, {39,76},
+ {39,77}, {39,78}, {39,79}, {39,80}, {39,81}, {39,82}, {39,83}, {39,84},
+ {39,85}, {39,86}, {39,87}, {39,88}, {39,89}, {39,90}, {39,91}, {39,92},
+ {39,93}, {40,0}, {40,1}, {40,2}, {40,3}, {40,4}, {40,5}, {40,6}, {40,7},
+ {40,8}, {40,9}, {40,10}, {40,11}, {40,12}, {40,13}, {40,14}, {40,15},
+ {40,16}, {40,17}, {40,18}, {40,19}, {40,20}, {40,21}, {40,22}, {40,23},
+ {40,24}, {40,25}, {40,26}, {40,27}, {40,32}, {40,28}, {40,29}, {40,30},
+ {40,31}, {40,33}, {40,34}, {40,35}, {40,36}, {40,37}, {40,38}, {40,39},
+ {40,40}, {40,41}, {40,42}, {40,43}, {40,44}, {40,45}, {40,46}, {40,47},
+ {40,48}, {40,49}, {40,50}, {40,51}, {40,52}, {40,53}, {40,54}, {40,55},
+ {40,56}, {40,57}, {40,58}, {40,59}, {40,60}, {40,61}, {40,62}, {40,63},
+ {40,64}, {40,65}, {40,66}, {40,67}, {40,68}, {40,69}, {40,70}, {40,71},
+ {40,72}, {40,73}, {40,74}, {40,75}, {40,76}, {40,77}, {40,78}, {40,79},
+ {40,80}, {40,81}, {40,82}, {40,83}, {40,84}, {40,85}, {40,86}, {40,87},
+ {40,88}, {40,89}, {40,90}, {40,91}, {40,92}, {40,93}, {41,0}, {41,1},
+ {41,2}, {41,3}, {41,4}, {41,5}, {41,6}, {41,7}, {41,8}, {41,9}, {41,10},
+ {41,11}, {41,12}, {41,13}, {41,14}, {41,15}, {41,16}, {41,17}, {41,18},
+ {41,19}, {41,20}, {41,21}, {41,22}, {41,23}, {41,24}, {41,25}, {41,26},
+ {41,27}, {41,28}, {41,29}, {41,30}, {41,31}, {41,32}, {41,33}, {41,34},
+ {41,35}, {41,36}, {41,37}, {41,38}, {41,39}, {41,40}, {41,41}, {41,42},
+ {41,43}, {41,44}, {41,45}, {41,46}, {41,47}, {41,48}, {41,49}, {41,50},
+ {41,51}, {41,52}, {41,53}, {41,54}, {41,55}, {41,56}, {41,57}, {41,58},
+ {41,59}, {41,60}, {41,61}, {41,62}, {41,63}, {41,64}, {41,65}, {41,66},
+ {41,67}, {41,68}, {41,69}, {41,70}, {41,71}, {41,72}, {41,73}, {41,74},
+ {41,75}, {41,76}, {41,77}, {41,78}, {41,79}, {41,80}, {41,81}, {41,82},
+ {41,83}, {41,84}, {41,85}, {41,86}, {41,87}, {41,88}, {41,89}, {41,90},
+ {41,91}, {41,92}, {41,93}, {42,0}, {42,1}, {42,2}, {42,3}, {42,4},
+ {42,5}, {42,6}, {42,7}, {42,8}, {42,9}, {42,10}, {42,11}, {42,12},
+ {42,13}, {42,14}, {42,15}, {42,16}, {42,17}, {42,18}, {42,19}, {42,20},
+ {42,21}, {42,22}, {42,23}, {42,24}, {42,25}, {42,26}, {42,27}, {42,28},
+ {42,29}, {42,30}, {42,31}, {42,32}, {42,33}, {42,34}, {42,35}, {42,36},
+ {42,37}, {42,38}, {42,39}, {42,40}, {42,41}, {42,42}, {42,43}, {42,44},
+ {42,45}, {42,46}, {42,47}, {42,48}, {42,49}, {42,50}, {42,51}, {42,52},
+ {42,53}, {42,54}, {42,55}, {42,56}, {42,57}, {42,58}, {42,59}, {42,60},
+ {42,61}, {42,62}, {42,63}, {42,64}, {42,65}, {42,66}, {42,67}, {42,68},
+ {42,69}, {42,70}, {42,71}, {42,72}, {42,73}, {42,74}, {42,75}, {42,76},
+ {42,77}, {42,78}, {42,79}, {42,80}, {42,81}, {42,82}, {42,83}, {42,84},
+ {42,85}, {42,86}, {42,87}, {42,88}, {42,89}, {42,90}, {42,91}, {42,92},
+ {42,93}, {43,0}, {43,1}, {43,2}, {43,3}, {43,4}, {43,5}, {43,6}, {43,7},
+ {43,8}, {43,9}, {43,10}, {43,11}, {43,12}, {43,13}, {43,14}, {43,15},
+ {43,16}, {43,17}, {43,18}, {43,19}, {43,20}, {43,21}, {43,22}, {43,23},
+ {43,24}, {43,25}, {43,26}, {43,27}, {43,28}, {43,29}, {43,30}, {43,31},
+ {43,32}, {43,33}, {43,34}, {43,35}, {43,36}, {43,37}, {43,38}, {43,39},
+ {43,40}, {43,41}, {43,42}, {43,43}, {43,44}, {43,45}, {43,46}, {43,47},
+ {43,48}, {43,49}, {43,50}, {43,51}, {43,52}, {43,53}, {43,54}, {43,55},
+ {43,56}, {43,57}, {43,58}, {43,59}, {43,60}, {43,61}, {43,62}, {43,63},
+ {43,64}, {43,65}, {43,66}, {43,67}, {43,68}, {43,69}, {43,70}, {43,71},
+ {43,72}, {43,73}, {43,74}, {43,75}, {43,76}, {43,77}, {43,78}, {43,79},
+ {43,80}, {43,81}, {43,82}, {43,83}, {43,84}, {43,85}, {43,86}, {43,87},
+ {43,88}, {43,89}, {43,90}, {43,91}, {43,92}, {43,93}, {44,0}, {44,1},
+ {44,2}, {44,3}, {44,4}, {44,5}, {44,6}, {44,7}, {44,8}, {44,9}, {44,10},
+ {44,11}, {44,12}, {44,13}, {44,14}, {44,15}, {44,16}, {44,17}, {44,18},
+ {44,19}, {44,20}, {44,21}, {44,22}, {44,23}, {44,24}, {44,25}, {44,26},
+ {44,27}, {44,28}, {44,29}, {44,30}, {44,31}, {44,32}, {44,33}, {44,34},
+ {44,35}, {44,36}, {44,37}, {44,38}, {44,39}, {44,40}, {44,41}, {44,42},
+ {44,43}, {44,44}, {44,45}, {44,46}, {44,47}, {44,48}, {44,49}, {44,50},
+ {44,51}, {44,52}, {44,53}, {44,54}, {44,55}, {44,56}, {44,57}, {44,58},
+ {44,59}, {44,60}, {44,61}, {44,62}, {44,63}, {44,64}, {44,65}, {44,66},
+ {44,67}, {44,68}, {44,69}, {44,70}, {44,71}, {44,72}, {44,73}, {44,74},
+ {44,75}, {44,76}, {44,77}, {44,78}, {44,79}, {44,80}, {44,81}, {44,82},
+ {44,83}, {44,84}, {44,85}, {44,86}, {44,87}, {44,88}, {44,89}, {44,90},
+ {44,91}, {44,92}, {44,93}, {45,0}, {45,1}, {45,3}, {45,4}, {45,5},
+ {45,6}, {45,7}, {45,8}, {45,2}, {45,9}, {45,10}, {45,11}, {45,12},
+ {45,13}, {45,14}, {45,15}, {45,16}, {45,17}, {45,18}, {45,19}, {45,20},
+ {45,21}, {45,22}, {45,23}, {45,24}, {45,25}, {45,26}, {45,27}, {45,28},
+ {45,29}, {45,30}, {45,31}, {45,32}, {45,33}, {45,34}, {45,35}, {45,36},
+ {45,37}, {45,38}, {45,39}, {45,40}, {45,41}, {45,42}, {45,43}, {45,44},
+ {45,45}, {45,46}, {45,47}, {45,48}, {45,49}, {45,50}, {45,51}, {45,52},
+ {45,53}, {45,54}, {45,55}, {45,56}, {45,57}, {45,58}, {45,59}, {45,60},
+ {45,61}, {45,62}, {45,63}, {45,64}, {45,65}, {45,66}, {45,67}, {45,68},
+ {45,69}, {45,70}, {45,71}, {45,72}, {45,73}, {45,74}, {45,75}, {45,76},
+ {45,77}, {45,78}, {45,79}, {45,80}, {45,81}, {45,82}, {45,83}, {45,84},
+ {45,85}, {45,86}, {45,87}, {45,88}, {45,89}, {45,90}, {45,91}, {45,92},
+ {45,93}, {46,0}, {46,1}, {46,2}, {46,3}, {46,4}, {46,5}, {46,6}, {46,7},
+ {46,8}, {46,9}, {46,10}, {46,11}, {46,12}, {46,13}, {46,14}, {46,15},
+ {46,16}, {46,17}, {46,18}, {46,19}, {46,20}, {46,21}, {46,22}, {46,23},
+ {46,24}, {46,25}, {46,26}, {46,27}, {46,28}, {46,29}, {46,30}, {46,31},
+ {46,32}, {46,33}, {46,34}, {46,35}, {46,36}, {46,37}, {46,38}, {46,39},
+ {46,40}, {46,41}, {46,42}, {46,43}, {46,44}, {46,45}, {46,46}, {46,47},
+ {46,48}, {46,49}, {46,50}, {46,51}, {46,52}, {46,53}, {46,54}, {46,55},
+ {46,56}, {46,57}, {46,58}, {46,59}, {46,60}, {46,61}, {46,62}, {46,63},
+ {46,64}, {46,65}, {46,66}, {46,67}, {46,68}, {46,69}, {46,70}, {46,71},
+ {46,72}, {46,73}, {46,74}, {46,75}, {46,76}, {46,77}, {46,78}, {46,79},
+ {46,80}, {46,81}, {46,83}, {46,84}, {46,85}, {46,82}, {46,86}, {46,87},
+ {46,88}, {46,89}, {46,90}, {46,91}, {46,92}, {46,93}, {47,0}, {47,1},
+ {47,2}, {47,3}, {47,4}, {47,5}, {47,6}, {47,7}, {47,8}, {47,9}, {47,10},
+ {47,11}, {47,13}, {47,14}, {47,15}, {47,16}, {47,12}, {47,17}, {47,18},
+ {47,19}, {47,20}, {47,22}, {47,23}, {47,24}, {47,25}, {47,26}, {47,21},
+ {47,27}, {47,28}, {47,29}, {47,30}, {47,31}, {47,32}, {47,33}, {47,34},
+ {47,35}, {47,36}, {47,37}, {47,38}, {47,39}, {47,40}, {47,41}, {47,42},
+ {47,43}, {47,44}, {47,45}, {47,46}, {47,47}, {47,48}, {47,49}, {47,50},
+ {47,51}, {47,52}, {47,53}, {47,54}, {47,55}, {47,56}, {47,57}, {47,58},
+ {47,59}, {47,60}, {47,61}, {47,62}, {47,63}, {47,64}, {47,65}, {47,66},
+ {47,67}, {47,68}, {47,69}, {47,70}, {47,71}, {47,72}, {47,73}, {47,74},
+ {47,75}, {47,76}, {47,77}, {47,78}, {47,79}, {47,80}, {47,81}, {47,82},
+ {47,83}, {47,84}, {47,85}, {47,86}, {47,87}, {47,88}, {47,89}, {47,90},
+ {47,91}, {47,92}, {47,93}, {48,0}, {48,1}, {48,2}, {48,3}, {48,4},
+ {48,5}, {48,6}, {48,7}, {48,8}, {48,9}, {48,10}, {48,11}, {48,12},
+ {48,13}, {48,14}, {48,15}, {48,16}, {48,17}, {48,18}, {48,19}, {48,20},
+ {48,21}, {48,22}, {48,23}, {48,24}, {48,25}, {48,26}, {48,27}, {48,28},
+ {48,29}, {48,30}, {48,31}, {48,32}, {48,33}, {48,34}, {48,35}, {48,36},
+ {48,37}, {48,38}, {48,39}, {48,40}, {48,41}, {48,42}, {48,43}, {48,44},
+ {48,45}, {48,46}, {48,47}, {48,48}, {48,49}, {48,50}, {48,51}, {48,52},
+ {48,53}, {48,54}, {48,55}, {48,56}, {48,57}, {48,58}, {48,59}, {48,60},
+ {48,61}, {48,62}, {48,63}, {48,64}, {48,65}, {48,66}, {48,67}, {48,68},
+ {48,69}, {48,70}, {48,71}, {48,72}, {48,73}, {48,74}, {48,75}, {48,76},
+ {48,77}, {48,78}, {48,79}, {48,80}, {48,81}, {48,82}, {48,83}, {48,84},
+ {48,85}, {48,86}, {48,87}, {48,88}, {48,89}, {48,90}, {48,91}, {48,92},
+ {48,93}, {49,0}, {49,1}, {49,2}, {49,3}, {49,4}, {49,5}, {49,6}, {49,7},
+ {49,8}, {49,9}, {49,10}, {49,11}, {49,12}, {49,13}, {49,14}, {49,15},
+ {49,16}, {49,17}, {49,18}, {49,19}, {49,20}, {49,21}, {49,22}, {49,23},
+ {49,24}, {49,25}, {49,26}, {49,27}, {49,28}, {49,29}, {49,30}, {49,31},
+ {49,32}, {49,33}, {49,34}, {49,35}, {49,36}, {49,37}, {49,38}, {49,39},
+ {49,40}, {49,41}, {49,42}, {49,43}, {49,44}, {49,45}, {49,46}, {49,47},
+ {49,48}, {49,49}, {49,50}, {49,51}, {49,52}, {49,53}, {49,54}, {49,55},
+ {49,56}, {49,57}, {49,58}, {49,59}, {49,60}, {49,61}, {49,62}, {49,63},
+ {49,64}, {49,65}, {49,66}, {49,67}, {49,68}, {49,69}, {49,70}, {49,71},
+ {49,72}, {49,73}, {49,74}, {49,75}, {49,76}, {49,77}, {49,78}, {49,79},
+ {49,80}, {49,81}, {49,82}, {49,83}, {49,85}, {49,86}, {49,87}, {49,84},
+ {49,88}, {49,89}, {49,90}, {49,91}, {49,92}, {49,93}, {50,0}, {50,1},
+ {50,2}, {50,3}, {50,4}, {50,5}, {50,6}, {50,7}, {50,8}, {50,9}, {50,10},
+ {50,11}, {50,12}, {50,13}, {50,14}, {50,15}, {50,16}, {50,17}, {50,18},
+ {50,19}, {50,20}, {50,21}, {50,22}, {50,23}, {50,24}, {50,25}, {50,26},
+ {50,27}, {50,28}, {50,29}, {50,30}, {50,31}, {50,32}, {50,33}, {50,34},
+ {50,35}, {50,36}, {50,37}, {50,38}, {50,39}, {50,40}, {50,41}, {50,42},
+ {50,43}, {50,44}, {50,45}, {50,46}, {50,47}, {50,48}, {50,49}, {50,50},
+ {50,51}, {50,52}, {50,53}, {50,54}, {50,55}, {50,56}, {50,57}, {50,58},
+ {50,59}, {50,60}, {50,61}, {50,62}, {50,63}, {50,64}, {50,65}, {50,66},
+ {50,67}, {50,68}, {50,69}, {50,70}, {50,71}, {50,72}, {50,73}, {50,74},
+ {50,75}, {50,76}, {50,77}, {50,78}, {50,79}, {50,80}, {50,81}, {50,82},
+ {50,83}, {50,84}, {50,85}, {50,86}, {50,87}, {50,88}, {50,89}, {50,90},
+ {50,91}, {50,92}, {50,93}, {51,0}, {51,1}, {51,2}, {51,3}, {51,4},
+ {51,5}, {51,6}, {51,7}, {51,8}, {51,9}, {51,10}, {51,11}, {51,12},
+ {51,13}, {51,14}, {51,15}, {51,16}, {51,17}, {51,19}, {51,20}, {51,21},
+ {51,22}, {51,23}, {51,24}, {51,25}, {51,26}, {51,27}, {51,28}, {51,29},
+ {51,18}, {51,30}, {51,31}, {51,32}, {51,33}, {51,34}, {51,35}, {51,36},
+ {51,37}, {51,38}, {51,39}, {51,40}, {51,41}, {51,42}, {51,43}, {51,44},
+ {51,45}, {51,46}, {51,47}, {51,48}, {51,49}, {51,50}, {51,51}, {51,52},
+ {51,53}, {51,54}, {51,55}, {51,56}, {51,57}, {51,58}, {51,59}, {51,60},
+ {51,61}, {51,62}, {51,63}, {51,64}, {51,65}, {51,66}, {51,67}, {51,68},
+ {51,69}, {51,70}, {51,71}, {51,72}, {51,73}, {51,75}, {51,74}, {51,76},
+ {51,77}, {51,78}, {51,79}, {51,80}, {51,81}, {51,82}, {51,83}, {51,84},
+ {51,85}, {51,86}, {51,87}, {51,88}, {51,89}, {51,90}, {51,91}, {51,92},
+ {51,93}, {52,0}, {52,1}, {52,2}, {52,3}, {52,4}, {52,5}, {52,6}, {52,7},
+ {52,8}, {52,9}, {52,10}, {52,11}, {52,12}, {52,13}, {52,14}, {52,15},
+ {52,16}, {52,17}, {52,18}, {52,19}, {52,20}, {52,21}, {52,22}, {52,23},
+ {52,24}, {52,25}, {52,26}, {52,27}, {52,28}, {52,29}, {52,30}, {52,31},
+ {52,32}, {52,33}, {52,34}, {52,35}, {52,36}, {52,37}, {52,38}, {52,39},
+ {52,40}, {52,41}, {52,42}, {52,43}, {52,44}, {52,45}, {52,46}, {52,47},
+ {52,48}, {52,49}, {52,50}, {52,51}, {52,52}, {52,53}, {52,54}, {52,55},
+ {52,56}, {52,57}, {52,58}, {52,59}, {52,60}, {52,61}, {52,62}, {52,63},
+ {52,64}, {52,65}, {52,66}, {52,67}, {52,68}, {52,69}, {52,70}, {52,71},
+ {52,72}, {52,73}, {52,74}, {52,75}, {52,76}, {52,77}, {52,78}, {52,79},
+ {52,80}, {52,81}, {52,82}, {52,83}, {52,84}, {52,85}, {52,86}, {52,87},
+ {52,88}, {52,89}, {52,90}, {52,91}, {52,92}, {52,93}, {53,0}, {53,1},
+ {53,2}, {53,3}, {53,4}, {53,5}, {53,6}, {53,7}, {53,8}, {53,9}, {53,10},
+ {53,11}, {53,12}, {53,13}, {53,14}, {53,15}, {53,16}, {53,17}, {53,18},
+ {53,19}, {53,20}, {53,21}, {53,22}, {53,23}, {53,24}, {53,25}, {53,26},
+ {53,27}, {53,28}, {53,29}, {53,30}, {53,31}, {53,32}, {53,33}, {53,34},
+ {53,35}, {53,36}, {53,38}, {53,39}, {53,40}, {53,41}, {53,42}, {53,37},
+ {53,43}, {53,44}, {53,45}, {53,46}, {53,47}, {53,48}, {53,49}, {53,50},
+ {53,51}, {53,53}, {53,54}, {53,55}, {53,52}, {53,56}, {53,57}, {53,58},
+ {53,59}, {53,60}, {53,61}, {53,62}, {53,63}, {53,64}, {53,65}, {53,66},
+ {53,67}, {53,68}, {53,69}, {53,70}, {53,71}, {53,72}, {53,73}, {53,74},
+ {53,75}, {53,76}, {53,77}, {53,78}, {53,79}, {53,80}, {53,81}, {53,82},
+ {53,83}, {53,84}, {53,85}, {53,86}, {53,87}, {53,88}, {53,89}, {53,90},
+ {53,91}, {53,92}, {53,93}, {54,0}, {54,1}, {54,2}, {54,3}, {54,4},
+ {54,5}, {54,6}, {54,7}, {54,8}, {54,9}, {54,10}, {54,11}, {54,12},
+ {54,13}, {54,14}, {54,15}, {54,16}, {54,17}, {54,18}, {54,19}, {54,20},
+ {54,21}, {54,22}, {54,23}, {54,24}, {54,25}, {54,26}, {54,27}, {54,28},
+ {54,29}, {54,30}, {54,31}, {54,32}, {54,33}, {54,34}, {54,35}, {54,36},
+ {54,37}, {54,38}, {54,39}, {54,40}, {54,41}, {54,42}, {54,43}, {54,44},
+ {54,45}, {54,46}, {54,47}, {54,48}, {54,49}, {54,50}, {54,51}, {54,52},
+ {54,53}, {54,54}, {54,55}, {54,56}, {54,57}, {54,58}, {54,59}, {54,60},
+ {54,61}, {54,62}, {54,63}, {54,64}, {54,65}, {54,67}, {54,68}, {54,69},
+ {54,70}, {54,71}, {54,72}, {54,73}, {54,74}, {54,75}, {54,76}, {54,77},
+ {54,78}, {54,79}, {54,80}, {54,81}, {54,82}, {54,83}, {54,84}, {54,85},
+ {54,86}, {54,87}, {54,88}, {55,29}, {54,66}, {54,89}, {54,90}, {54,91},
+ {54,92}, {54,93}, {55,0}, {55,1}, {55,2}, {55,3}, {55,4}, {55,5}, {55,6},
+ {55,7}, {55,8}, {55,9}, {55,10}, {55,11}, {55,12}, {55,13}, {55,14},
+ {55,15}, {55,16}, {55,17}, {55,18}, {55,43}, {55,19}, {55,20}, {55,21},
+ {55,22}, {55,23}, {55,24}, {55,25}, {55,26}, {55,27}, {55,28}, {55,30},
+ {55,31}, {55,32}, {55,33}, {55,34}, {55,35}, {55,36}, {55,37}, {55,38},
+ {55,39}, {55,40}, {55,41}, {55,42}, {55,44}, {55,45}, {55,46}, {55,47},
+ {55,48}, {55,49}, {55,50}, {55,51}, {55,52}, {55,53}, {55,54}, {55,55},
+ {55,56}, {55,57}, {55,58}, {55,59}, {55,60}, {55,61}, {55,62}, {55,63},
+ {55,64}, {55,65}, {55,66}, {55,67}, {55,68}, {55,69}, {55,70}, {55,71},
+ {55,72}, {55,73}, {55,74}, {55,75}, {55,76}, {55,77}, {55,78}, {55,79},
+ {55,80}, {55,81}, {55,82}, {55,83}, {55,84}, {55,85}, {55,86}, {55,87},
+ {55,88}, {55,89}, {55,90}, {55,91}, {55,92}, {55,93}, {56,0}, {56,1},
+ {56,2}, {56,3}, {56,4}, {56,5}, {56,6}, {56,7}, {56,9}, {56,10}, {56,11},
+ {56,12}, {56,13}, {56,14}, {56,15}, {56,16}, {56,17}, {56,18}, {56,19},
+ {56,20}, {56,21}, {56,22}, {56,23}, {56,24}, {56,25}, {56,26}, {56,27},
+ {56,8}, {56,28}, {56,29}, {56,30}, {56,31}, {56,32}, {56,33}, {56,34},
+ {56,35}, {56,36}, {56,37}, {56,38}, {56,39}, {56,40}, {56,41}, {56,42},
+ {56,43}, {56,44}, {56,45}, {56,46}, {56,47}, {56,48}, {56,49}, {56,50},
+ {56,51}, {56,52}, {56,53}, {56,54}, {56,55}, {56,56}, {56,57}, {56,58},
+ {56,59}, {56,60}, {56,61}, {56,62}, {56,63}, {56,64}, {56,65}, {56,66},
+ {56,67}, {56,68}, {56,69}, {56,83}, {56,70}, {56,71}, {56,72}, {56,73},
+ {56,74}, {56,75}, {56,76}, {56,77}, {56,78}, {56,79}, {56,80}, {56,81},
+ {56,82}, {56,84}, {56,85}, {56,86}, {56,87}, {56,88}, {56,89}, {56,90},
+ {56,91}, {56,92}, {56,93}, {57,0}, {57,1}, {57,2}, {57,3}, {57,4},
+ {57,5}, {57,6}, {57,7}, {57,8}, {57,9}, {57,10}, {57,11}, {57,12},
+ {57,13}, {57,14}, {57,15}, {57,16}, {57,17}, {57,18}, {57,19}, {57,20},
+ {57,21}, {23,69}, {57,22}, {57,23}, {57,24}, {57,25}, {57,26}, {57,27},
+ {57,28}, {57,29}, {57,30}, {57,31}, {57,32}, {57,33}, {57,34}, {57,35},
+ {57,36}, {57,37}, {57,38}, {57,39}, {57,40}, {57,41}, {57,42}, {57,76},
+ {57,43}, {57,44}, {57,45}, {57,46}, {57,47}, {57,48}, {57,49}, {57,50},
+ {57,51}, {57,52}, {57,53}, {57,54}, {57,55}, {57,56}, {57,57}, {57,58},
+ {57,59}, {57,60}, {57,61}, {57,62}, {57,63}, {57,64}, {57,65}, {57,66},
+ {57,67}, {57,68}, {57,69}, {57,70}, {57,71}, {57,72}, {57,73}, {57,74},
+ {57,75}, {57,77}, {57,78}, {57,79}, {57,80}, {57,81}, {57,82}, {57,83},
+ {57,84}, {57,85}, {57,86}, {57,87}, {57,88}, {57,89}, {57,90}, {57,91},
+ {57,92}, {57,93}, {58,0}, {58,1}, {58,2}, {58,3}, {58,4}, {58,5}, {58,6},
+ {58,7}, {58,8}, {58,9}, {58,10}, {58,11}, {58,12}, {58,13}, {58,14},
+ {58,15}, {58,16}, {58,17}, {58,18}, {58,19}, {58,20}, {58,21}, {58,22},
+ {58,23}, {58,24}, {58,25}, {58,26}, {58,27}, {58,28}, {58,29}, {58,30},
+ {58,31}, {58,32}, {58,33}, {58,34}, {58,35}, {58,36}, {58,37}, {58,38},
+ {58,39}, {58,40}, {58,41}, {58,42}, {58,43}, {58,44}, {58,45}, {58,46},
+ {58,47}, {58,48}, {58,49}, {58,50}, {58,51}, {58,52}, {58,53}, {58,54},
+ {58,55}, {58,56}, {58,57}, {58,58}, {58,59}, {58,60}, {58,61}, {58,62},
+ {58,63}, {58,64}, {58,65}, {58,66}, {58,67}, {58,68}, {58,69}, {58,70},
+ {58,71}, {58,72}, {58,73}, {58,74}, {58,75}, {58,76}, {58,77}, {58,79},
+ {58,80}, {58,81}, {58,82}, {58,78}, {58,83}, {58,84}, {58,85}, {58,86},
+ {58,87}, {58,88}, {58,89}, {58,90}, {58,91}, {58,92}, {58,93}, {59,0},
+ {59,1}, {59,2}, {59,3}, {59,4}, {59,5}, {59,6}, {59,7}, {59,8}, {59,9},
+ {59,10}, {59,11}, {59,12}, {59,13}, {59,14}, {59,15}, {59,16}, {59,17},
+ {59,18}, {59,19}, {59,20}, {59,21}, {59,22}, {59,23}, {59,24}, {59,25},
+ {59,26}, {59,27}, {59,28}, {59,29}, {59,30}, {59,31}, {59,32}, {59,33},
+ {59,34}, {59,35}, {59,36}, {59,37}, {59,38}, {59,39}, {59,40}, {59,41},
+ {59,42}, {59,43}, {59,44}, {59,45}, {59,46}, {59,47}, {59,48}, {59,49},
+ {59,50}, {59,51}, {59,52}, {59,53}, {59,54}, {59,55}, {59,56}, {59,57},
+ {59,58}, {59,59}, {59,60}, {59,61}, {59,62}, {59,63}, {59,64}, {59,65},
+ {59,66}, {59,67}, {59,68}, {59,69}, {59,70}, {59,71}, {59,72}, {59,73},
+ {59,74}, {59,75}, {59,76}, {59,77}, {59,78}, {59,79}, {59,80}, {59,81},
+ {59,82}, {59,83}, {59,84}, {59,85}, {59,86}, {59,87}, {59,88}, {59,89},
+ {59,90}, {59,91}, {59,92}, {59,93}, {60,0}, {60,1}, {60,2}, {60,3},
+ {60,4}, {60,5}, {60,6}, {60,7}, {60,8}, {60,9}, {60,10}, {60,11}, {60,12},
+ {60,13}, {60,14}, {60,15}, {60,16}, {60,17}, {60,18}, {60,19}, {60,20},
+ {60,21}, {60,22}, {60,23}, {60,24}, {60,25}, {60,26}, {60,27}, {60,28},
+ {60,29}, {60,30}, {60,31}, {60,32}, {60,33}, {60,34}, {60,35}, {60,36},
+ {60,37}, {60,38}, {60,39}, {60,40}, {60,41}, {60,42}, {60,43}, {60,44},
+ {60,45}, {60,46}, {60,47}, {60,48}, {60,49}, {60,50}, {60,51}, {60,52},
+ {60,53}, {60,54}, {60,55}, {60,56}, {60,57}, {60,58}, {60,59}, {60,60},
+ {60,61}, {60,62}, {60,63}, {60,64}, {60,65}, {60,66}, {60,67}, {60,68},
+ {60,69}, {60,70}, {60,71}, {60,72}, {60,73}, {60,74}, {60,75}, {60,76},
+ {60,77}, {60,78}, {60,79}, {60,80}, {60,81}, {60,82}, {60,83}, {60,84},
+ {60,85}, {60,86}, {60,87}, {60,88}, {60,89}, {60,90}, {60,91}, {60,92},
+ {60,93}, {61,0}, {61,1}, {61,2}, {61,3}, {61,4}, {61,5}, {61,6}, {61,7},
+ {61,8}, {61,9}, {61,10}, {61,11}, {61,12}, {61,13}, {61,14}, {61,15},
+ {61,16}, {61,17}, {61,18}, {61,19}, {61,20}, {61,21}, {61,22}, {61,23},
+ {61,24}, {61,30}, {61,25}, {61,26}, {61,27}, {61,28}, {61,29}, {61,31},
+ {61,32}, {61,33}, {61,34}, {61,35}, {61,36}, {61,37}, {61,38}, {61,39},
+ {61,40}, {61,45}, {61,41}, {61,42}, {61,43}, {61,44}, {61,46}, {61,47},
+ {61,48}, {61,49}, {61,50}, {61,51}, {61,52}, {61,53}, {61,54}, {61,55},
+ {61,56}, {61,57}, {61,58}, {61,59}, {61,60}, {61,61}, {61,62}, {61,63},
+ {61,64}, {61,65}, {61,66}, {61,67}, {61,68}, {61,69}, {61,70}, {61,71},
+ {61,72}, {61,73}, {61,74}, {61,75}, {61,76}, {61,77}, {61,78}, {61,81},
+ {61,79}, {61,80}, {61,82}, {61,83}, {61,84}, {61,85}, {61,86}, {61,87},
+ {61,88}, {61,89}, {61,90}, {61,91}, {61,92}, {61,93}, {62,0}, {62,1},
+ {62,2}, {62,3}, {62,4}, {62,5}, {62,6}, {62,7}, {62,8}, {62,9}, {62,10},
+ {62,11}, {62,12}, {62,13}, {62,14}, {62,15}, {62,17}, {62,16}, {62,18},
+ {62,19}, {62,20}, {62,21}, {62,22}, {62,23}, {62,24}, {62,25}, {62,26},
+ {62,27}, {62,28}, {62,29}, {62,30}, {62,31}, {62,32}, {62,33}, {62,34},
+ {62,35}, {62,36}, {62,37}, {62,38}, {62,39}, {62,40}, {62,41}, {62,42},
+ {62,43}, {62,44}, {62,45}, {62,46}, {62,47}, {62,48}, {62,49}, {62,50},
+ {62,51}, {62,52}, {62,53}, {62,54}, {62,55}, {62,56}, {62,57}, {62,58},
+ {62,59}, {62,60}, {62,78}, {62,61}, {62,62}, {62,63}, {62,64}, {62,65},
+ {62,66}, {62,67}, {62,68}, {62,69}, {62,70}, {62,71}, {62,72}, {62,73},
+ {62,74}, {62,75}, {62,76}, {62,77}, {62,79}, {62,80}, {62,81}, {62,82},
+ {62,83}, {62,84}, {62,85}, {62,86}, {62,87}, {62,88}, {62,89}, {62,90},
+ {62,91}, {62,92}, {62,93}, {63,0}, {63,1}, {63,2}, {63,3}, {63,4},
+ {63,5}, {63,6}, {63,7}, {63,8}, {63,9}, {63,10}, {63,11}, {63,12},
+ {63,13}, {63,14}, {63,15}, {63,16}, {63,17}, {63,18}, {63,19}, {63,20},
+ {63,21}, {63,22}, {63,23}, {63,24}, {63,25}, {63,26}, {63,27}, {63,28},
+ {63,29}, {63,30}, {63,31}, {63,32}, {63,33}, {63,34}, {63,35}, {63,36},
+ {63,37}, {63,38}, {63,39}, {63,40}, {63,41}, {63,42}, {63,43}, {63,44},
+ {63,45}, {63,46}, {63,47}, {63,48}, {63,49}, {63,50}, {63,51}, {63,52},
+ {63,53}, {63,54}, {63,55}, {63,56}, {63,57}, {63,58}, {63,59}, {63,60},
+ {63,67}, {63,61}, {63,62}, {63,63}, {63,64}, {63,65}, {63,66}, {63,68},
+ {63,69}, {63,70}, {63,71}, {63,72}, {63,73}, {63,74}, {63,75}, {63,76},
+ {63,77}, {63,78}, {63,79}, {63,80}, {63,81}, {63,82}, {63,83}, {63,84},
+ {63,85}, {63,86}, {63,87}, {63,88}, {63,89}, {63,90}, {63,91}, {63,92},
+ {63,93}, {64,0}, {64,1}, {64,2}, {64,3}, {64,4}, {64,5}, {64,6}, {64,7},
+ {64,8}, {64,9}, {64,10}, {64,11}, {64,12}, {64,13}, {64,14}, {64,15},
+ {64,16}, {64,17}, {64,18}, {64,19}, {64,20}, {64,21}, {64,22}, {64,23},
+ {64,24}, {64,25}, {64,26}, {64,27}, {64,28}, {64,29}, {64,30}, {64,31},
+ {64,32}, {64,33}, {64,34}, {64,35}, {64,36}, {64,37}, {64,38}, {64,39},
+ {64,40}, {64,41}, {64,42}, {64,43}, {64,44}, {64,45}, {64,46}, {64,47},
+ {64,48}, {64,49}, {64,51}, {64,52}, {64,53}, {64,50}, {64,54}, {64,55},
+ {64,56}, {64,57}, {64,58}, {64,59}, {64,60}, {64,61}, {64,62}, {64,63},
+ {64,64}, {64,65}, {64,66}, {64,67}, {64,68}, {64,69}, {64,70}, {64,71},
+ {64,72}, {64,73}, {64,74}, {64,75}, {64,76}, {64,77}, {64,78}, {64,79},
+ {64,80}, {64,81}, {64,82}, {64,83}, {64,84}, {64,85}, {64,86}, {64,87},
+ {64,88}, {64,89}, {64,90}, {64,92}, {64,93}, {65,0}, {65,1}, {65,2},
+ {65,3}, {64,91}, {65,12}, {65,4}, {65,5}, {65,6}, {65,7}, {65,8}, {65,9},
+ {65,10}, {65,11}, {65,14}, {65,15}, {65,16}, {65,17}, {65,13}, {65,18},
+ {65,19}, {65,20}, {65,21}, {65,22}, {65,23}, {65,24}, {65,25}, {65,26},
+ {65,27}, {65,28}, {65,29}, {65,30}, {65,31}, {65,32}, {65,33}, {65,34},
+ {65,36}, {65,37}, {65,35}, {65,38}, {65,39}, {65,40}, {65,41}, {65,42},
+ {65,43}, {65,44}, {65,45}, {65,46}, {65,47}, {65,48}, {65,49}, {65,50},
+ {65,51}, {65,52}, {65,53}, {65,54}, {65,55}, {65,56}, {65,57}, {65,58},
+ {65,59}, {65,60}, {65,61}, {65,62}, {65,63}, {65,64}, {65,65}, {65,66},
+ {65,67}, {65,68}, {65,69}, {65,70}, {65,71}, {65,72}, {65,73}, {65,74},
+ {65,75}, {65,76}, {65,77}, {65,78}, {65,79}, {65,80}, {65,81}, {65,82},
+ {65,83}, {65,84}, {65,85}, {65,86}, {65,87}, {65,88}, {65,89}, {65,90},
+ {65,91}, {65,92}, {65,93}, {66,0}, {66,1}, {66,2}, {66,3}, {66,4},
+ {66,5}, {66,6}, {66,7}, {66,8}, {66,9}, {66,10}, {66,11}, {66,12},
+ {66,13}, {66,14}, {66,15}, {66,16}, {66,17}, {66,18}, {66,19}, {66,20},
+ {66,21}, {66,22}, {66,23}, {66,24}, {66,25}, {66,26}, {66,27}, {66,28},
+ {66,29}, {66,30}, {66,31}, {66,32}, {66,33}, {66,34}, {66,35}, {66,36},
+ {66,37}, {66,38}, {66,39}, {66,40}, {66,41}, {66,42}, {66,43}, {66,44},
+ {66,45}, {66,46}, {66,47}, {66,48}, {66,49}, {66,50}, {66,51}, {66,52},
+ {66,53}, {66,54}, {66,55}, {66,56}, {66,57}, {66,58}, {66,59}, {66,60},
+ {66,61}, {66,62}, {66,63}, {66,64}, {66,65}, {66,66}, {66,67}, {66,68},
+ {66,69}, {66,70}, {66,71}, {66,72}, {66,73}, {66,74}, {66,75}, {66,76},
+ {66,77}, {66,78}, {66,79}, {66,80}, {66,81}, {66,82}, {66,83}, {66,84},
+ {66,85}, {66,86}, {66,87}, {66,88}, {66,89}, {66,90}, {66,91}, {66,92},
+ {66,93}, {67,0}, {67,1}, {67,2}, {67,3}, {67,4}, {67,5}, {67,6}, {67,7},
+ {67,8}, {67,9}, {67,10}, {67,11}, {67,12}, {67,13}, {67,14}, {67,15},
+ {67,16}, {67,17}, {67,18}, {67,19}, {67,20}, {67,21}, {67,22}, {67,23},
+ {67,24}, {67,25}, {67,26}, {67,27}, {67,28}, {67,29}, {67,30}, {67,31},
+ {67,32}, {67,33}, {67,34}, {67,35}, {67,36}, {67,37}, {67,38}, {67,39},
+ {67,40}, {67,41}, {67,42}, {67,43}, {67,44}, {67,45}, {67,46}, {67,47},
+ {67,48}, {67,49}, {67,50}, {67,51}, {67,52}, {67,53}, {67,54}, {67,55},
+ {67,56}, {67,57}, {67,58}, {67,59}, {67,60}, {67,61}, {67,62}, {67,63},
+ {67,64}, {67,65}, {67,66}, {67,67}, {67,68}, {67,69}, {67,70}, {67,71},
+ {67,72}, {67,73}, {67,74}, {67,75}, {67,76}, {67,77}, {67,78}, {67,79},
+ {67,80}, {67,81}, {67,82}, {67,83}, {67,84}, {67,85}, {67,86}, {67,87},
+ {67,88}, {67,89}, {67,90}, {67,91}, {67,92}, {67,93}, {68,0}, {68,1},
+ {68,2}, {68,3}, {68,4}, {68,5}, {68,6}, {68,7}, {68,8}, {68,9}, {68,10},
+ {68,11}, {68,12}, {68,13}, {68,14}, {68,15}, {68,16}, {68,17}, {68,18},
+ {68,19}, {68,20}, {68,26}, {68,21}, {68,22}, {68,23}, {68,24}, {68,25},
+ {68,27}, {68,28}, {68,29}, {68,30}, {68,31}, {68,32}, {68,33}, {68,34},
+ {68,35}, {68,36}, {68,37}, {68,38}, {68,39}, {68,40}, {68,41}, {68,42},
+ {68,43}, {68,44}, {68,46}, {68,47}, {68,45}, {68,48}, {68,49}, {68,50},
+ {68,51}, {68,52}, {68,53}, {68,54}, {68,55}, {68,56}, {68,57}, {68,58},
+ {68,59}, {68,60}, {68,61}, {68,62}, {68,63}, {68,64}, {68,65}, {68,66},
+ {68,67}, {68,68}, {68,69}, {68,71}, {68,70}, {68,72}, {68,73}, {68,74},
+ {68,75}, {68,76}, {68,77}, {68,78}, {68,79}, {68,80}, {68,81}, {68,82},
+ {68,83}, {68,84}, {68,85}, {68,86}, {68,87}, {68,88}, {68,89}, {68,91},
+ {68,90}, {68,92}, {68,93}, {69,0}, {69,1}, {69,2}, {69,3}, {69,4},
+ {69,5}, {69,6}, {69,7}, {69,8}, {69,9}, {69,10}, {69,11}, {69,12},
+ {69,13}, {69,14}, {69,15}, {69,16}, {69,17}, {69,18}, {69,19}, {69,20},
+ {69,21}, {69,22}, {69,23}, {69,24}, {69,25}, {69,26}, {69,27}, {69,28},
+ {69,29}, {69,30}, {69,31}, {69,32}, {69,33}, {69,34}, {69,35}, {69,36},
+ {69,37}, {69,38}, {69,39}, {69,40}, {69,41}, {69,42}, {69,43}, {69,44},
+ {69,45}, {69,46}, {69,47}, {69,48}, {69,49}, {69,50}, {69,51}, {69,52},
+ {69,53}, {69,54}, {69,55}, {69,56}, {69,57}, {69,58}, {69,59}, {69,60},
+ {69,61}, {69,62}, {69,63}, {69,64}, {69,65}, {69,66}, {69,67}, {69,68},
+ {69,69}, {69,70}, {69,71}, {69,72}, {69,73}, {69,74}, {69,75}, {69,76},
+ {69,77}, {69,78}, {69,79}, {69,80}, {69,81}, {69,82}, {69,84}, {69,85},
+ {69,86}, {69,87}, {69,88}, {69,89}, {69,90}, {69,91}, {69,92}, {69,93},
+ {70,0}, {70,1}, {70,2}, {70,3}, {70,4}, {70,5}, {70,6}, {70,7}, {70,8},
+ {70,9}, {70,10}, {70,11}, {70,12}, {70,13}, {70,14}, {70,15}, {70,16},
+ {70,17}, {70,18}, {70,19}, {70,20}, {70,21}, {70,22}, {70,23}, {70,24},
+ {70,25}, {70,26}, {70,27}, {70,28}, {70,29}, {70,30}, {70,31}, {70,32},
+ {70,33}, {70,34}, {70,35}, {70,36}, {70,37}, {70,38}, {70,39}, {70,40},
+ {70,41}, {70,42}, {70,43}, {70,44}, {70,45}, {70,46}, {70,47}, {70,48},
+ {70,49}, {70,50}, {70,51}, {70,52}, {70,53}, {70,54}, {70,55}, {70,56},
+ {70,57}, {70,58}, {70,59}, {70,60}, {70,61}, {70,62}, {70,63}, {70,64},
+ {70,65}, {70,66}, {70,67}, {70,68}, {70,69}, {70,73}, {70,70}, {70,71},
+ {70,72}, {70,74}, {70,75}, {70,76}, {70,77}, {70,78}, {70,79}, {70,80},
+ {70,81}, {70,82}, {70,83}, {70,85}, {70,86}, {70,87}, {70,88}, {70,84},
+ {70,89}, {70,90}, {70,91}, {70,92}, {71,7}, {70,93}, {71,0}, {71,1},
+ {71,2}, {71,3}, {71,4}, {71,5}, {71,6}, {71,8}, {71,9}, {71,10}, {71,11},
+ {71,12}, {71,13}, {71,14}, {71,15}, {71,16}, {71,17}, {71,18}, {71,19},
+ {71,20}, {71,21}, {71,22}, {71,23}, {71,24}, {71,25}, {71,26}, {71,27},
+ {71,28}, {71,29}, {71,30}, {71,31}, {71,32}, {71,33}, {71,34}, {71,35},
+ {71,36}, {71,37}, {71,38}, {71,39}, {71,40}, {71,41}, {71,42}, {71,43},
+ {71,44}, {71,45}, {71,46}, {71,47}, {71,48}, {71,49}, {71,50}, {71,51},
+ {71,52}, {71,53}, {71,54}, {71,55}, {71,56}, {71,57}, {71,58}, {71,59},
+ {71,60}, {71,61}, {71,62}, {71,63}, {71,64}, {71,65}, {71,66}, {71,67},
+ {71,68}, {71,69}, {71,70}, {71,71}, {71,72}, {71,73}, {71,74}, {71,75},
+ {71,76}, {71,77}, {71,78}, {71,79}, {71,80}, {71,81}, {71,82}, {71,83},
+ {71,84}, {71,85}, {71,86}, {71,87}, {71,88}, {71,89}, {71,90}, {71,91},
+ {71,92}, {71,93}, {72,0}, {72,1}, {72,2}, {72,3}, {72,4}, {72,5}, {72,6},
+ {72,7}, {72,8}, {72,9}, {72,10}, {72,11}, {72,12}, {72,13}, {72,14},
+ {72,15}, {72,16}, {72,17}, {72,18}, {72,19}, {72,20}, {72,21}, {72,22},
+ {72,23}, {72,24}, {72,25}, {72,26}, {72,27}, {72,28}, {72,29}, {72,30},
+ {72,31}, {72,32}, {72,33}, {72,34}, {72,35}, {72,36}, {72,37}, {72,38},
+ {72,39}, {72,40}, {72,41}, {72,43}, {72,44}, {72,42}, {72,45}, {72,46},
+ {72,47}, {72,48}, {72,49}, {72,50}, {72,51}, {72,52}, {72,53}, {72,54},
+ {72,55}, {72,56}, {72,57}, {72,58}, {72,59}, {72,60}, {72,61}, {72,62},
+ {72,63}, {72,64}, {72,65}, {72,66}, {72,67}, {72,68}, {72,69}, {72,70},
+ {72,71}, {72,72}, {72,73}, {72,74}, {72,75}, {72,76}, {72,77}, {72,78},
+ {72,79}, {72,80}, {72,81}, {72,82}, {72,83}, {72,84}, {72,85}, {72,86},
+ {72,87}, {72,88}, {72,89}, {72,90}, {72,91}, {72,92}, {72,93}, {73,0},
+ {73,1}, {73,2}, {73,3}, {73,4}, {73,5}, {73,6}, {73,7}, {73,8}, {73,9},
+ {73,10}, {73,11}, {73,12}, {73,13}, {73,14}, {73,15}, {73,16}, {73,17},
+ {73,18}, {73,19}, {73,20}, {73,21}, {73,22}, {73,23}, {73,24}, {73,25},
+ {73,26}, {73,27}, {73,28}, {73,29}, {73,30}, {73,31}, {73,32}, {73,33},
+ {73,34}, {73,35}, {73,36}, {73,37}, {73,38}, {73,39}, {73,40}, {73,41},
+ {73,42}, {73,43}, {73,44}, {73,45}, {73,46}, {73,47}, {73,48}, {73,49},
+ {73,50}, {73,51}, {73,52}, {73,53}, {73,54}, {73,55}, {73,56}, {73,57},
+ {73,58}, {73,59}, {73,60}, {73,61}, {73,62}, {73,63}, {73,64}, {73,65},
+ {73,66}, {73,67}, {73,68}, {73,69}, {73,70}, {73,71}, {73,72}, {73,73},
+ {73,74}, {73,75}, {73,76}, {73,77}, {73,78}, {73,79}, {73,80}, {73,81},
+ {73,82}, {73,83}, {73,84}, {73,85}, {73,86}, {73,87}, {73,88}, {73,89},
+ {73,90}, {73,91}, {73,92}, {73,93}, {74,0}, {74,1}, {74,2}, {74,3},
+ {74,4}, {74,5}, {74,6}, {74,7}, {74,8}, {74,9}, {74,10}, {74,11}, {74,12},
+ {74,13}, {74,14}, {74,15}, {74,16}, {74,17}, {74,18}, {74,19}, {74,20},
+ {74,21}, {74,22}, {74,23}, {74,24}, {74,25}, {74,26}, {74,27}, {74,28},
+ {74,29}, {74,30}, {74,31}, {74,32}, {74,33}, {74,34}, {74,35}, {74,36},
+ {74,37}, {74,38}, {74,39}, {74,40}, {74,47}, {74,41}, {74,42}, {74,43},
+ {74,44}, {74,49}, {74,45}, {74,46}, {74,48}, {74,50}, {74,51}, {74,52},
+ {74,53}, {74,54}, {74,55}, {74,56}, {74,57}, {74,58}, {74,59}, {74,61},
+ {74,60}, {74,62}, {74,63}, {74,64}, {74,65}, {74,66}, {74,67}, {74,68},
+ {74,69}, {74,70}, {74,71}, {74,72}, {74,73}, {74,74}, {74,76}, {74,77},
+ {74,78}, {74,75}, {74,79}, {74,80}, {74,81}, {74,82}, {74,83}, {74,85},
+ {74,84}, {74,86}, {74,87}, {74,88}, {74,89}, {74,90}, {74,91}, {74,92},
+ {74,93}, {75,0}, {75,1}, {75,2}, {75,3}, {75,4}, {75,5}, {75,6}, {75,7},
+ {75,8}, {75,9}, {75,10}, {75,11}, {75,12}, {75,13}, {75,14}, {75,15},
+ {75,16}, {75,17}, {75,18}, {75,19}, {75,20}, {75,21}, {75,22}, {75,23},
+ {75,24}, {75,25}, {75,26}, {75,27}, {75,28}, {75,29}, {75,30}, {75,31},
+ {75,32}, {75,33}, {75,34}, {75,35}, {75,36}, {75,37}, {75,38}, {75,39},
+ {75,40}, {75,41}, {75,42}, {75,43}, {75,45}, {75,46}, {75,44}, {75,47},
+ {75,48}, {75,49}, {75,50}, {75,51}, {75,52}, {75,53}, {75,54}, {75,55},
+ {75,56}, {75,57}, {75,58}, {75,59}, {75,60}, {75,61}, {75,62}, {75,63},
+ {75,64}, {75,65}, {75,66}, {75,67}, {75,68}, {75,69}, {75,70}, {75,71},
+ {75,72}, {75,73}, {75,74}, {75,75}, {75,76}, {75,77}, {75,78}, {75,79},
+ {75,80}, {75,81}, {75,82}, {75,83}, {75,84}, {75,85}, {75,86}, {75,87},
+ {75,88}, {75,89}, {75,90}, {75,91}, {75,92}, {75,93}, {76,0}, {76,1},
+ {76,2}, {76,3}, {76,4}, {76,5}, {76,6}, {76,7}, {76,8}, {76,9}, {76,10},
+ {76,11}, {76,12}, {76,13}, {76,14}, {76,15}, {76,16}, {76,17}, {76,18},
+ {76,19}, {76,20}, {76,21}, {76,22}, {76,23}, {76,24}, {76,25}, {76,26},
+ {76,27}, {76,28}, {76,29}, {76,30}, {76,31}, {76,32}, {76,33}, {76,34},
+ {76,35}, {76,36}, {76,37}, {76,38}, {76,39}, {76,40}, {76,41}, {76,42},
+ {76,43}, {76,44}, {76,45}, {76,46}, {76,47}, {76,48}, {76,49}, {76,50},
+ {76,51}, {76,52}, {76,53}, {76,54}, {76,55}, {76,56}, {76,57}, {76,58},
+ {76,59}, {76,60}, {76,61}, {76,62}, {76,63}, {76,64}, {76,65}, {76,66}
+};
+
+/* This returns ERROR if the code point doesn't exist. */
+long int jisx0212_to_unicode(int r, int c)
+{
+ assert(r >= 0 && r < 94);
+ assert(c >= 0 && c < 94);
+ return jisx0212_forward[r][c];
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_jisx0212(long int unicode, int *r, int *c)
+{
+ int rr, cc;
+ long int uu;
+ int i, j, k;
+
+ i = -1;
+ j = lenof(jisx0212_backward);
+ while (j - i > 1) {
+ k = (i + j) / 2;
+ rr = jisx0212_backward[k].r;
+ cc = jisx0212_backward[k].c;
+ uu = jisx0212_forward[rr][cc];
+ if (unicode > uu)
+ i = k;
+ else if (unicode < uu)
+ j = k;
+ else {
+ *r = rr;
+ *c = cc;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+
+int main(void)
+{
+ int r, c, rr, cc, ret;
+ long int u, uu;
+
+ for (r = 0; r < 94; r++) {
+ for (c = 0; c < 94; c++) {
+ u = jisx0212_to_unicode(r, c);
+ if (u != ERROR) {
+ ret = unicode_to_jisx0212(u, &rr, &cc);
+ if (!ret)
+ printf("(%d,%d) -> U-%08lx but didn't convert back\n",
+ r, c, u);
+ else if (rr != r || cc != c)
+ printf("(%d,%d) -> U-%08lx -> (%d,%d)\n",
+ r, c, u, rr, cc);
+ }
+ }
+ }
+
+ for (u = 0; u < 0x10000L; u++) {
+ ret = unicode_to_jisx0212(u, &r, &c);
+ if (ret) {
+ uu = jisx0212_to_unicode(r, c);
+ if (uu == ERROR)
+ printf("U-%08lx -> (%d,%d) but didn't convert back\n",
+ u, r, c);
+ else if (uu != u)
+ printf("U-%08lx -> (%d,%d) -> U-%08lx\n", u, r, c, uu);
+ }
+ }
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/charset/ksx1001.c b/app/tools/halibut/charset/ksx1001.c
new file mode 100644
index 0000000..3360c26
--- /dev/null
+++ b/app/tools/halibut/charset/ksx1001.c
@@ -0,0 +1,5261 @@
+/*
+ * KS X 1001 and MS CP949 implementation for libcharset.
+ */
+
+#include <assert.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * There is a KS X 1001 <-> Unicode character mapping available at
+ * http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/KSX1001.TXT
+ *
+ * but in fact the square (A1A1-FEFE) subset of the Microsoft CP949
+ * mapping is superior, since it's slightly more up to date
+ * (contains the Euro sign, for example). So this file actually
+ * implements a mapping between the double-byte portion of CP949
+ * and Unicode, and also provides ksx1001 conversion functions to
+ * access that square subset.
+ *
+ * The file I'm actually working from is at
+ * http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT
+ */
+
+/*
+ * Mapping from KS X 1001 to Unicode. For these purposes KS X 1001
+ * is considered to be a 128x192 square array, with coordinates
+ * running from (0,0) to (127,191).
+ *
+ * Generated by running the following sh+Perl over CP949.TXT:
+
+cat CP949.TXT | \
+perl -ne '$a{hex$1,hex$2}=$3 if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {for $r (0..127) { $o=" {"; for $c (0..191) {' \
+ -e '$k=$a{$r+128,$c+64}; $k=" ERROR" unless defined $k;' \
+ -e '$o .= ", " if $c > 0; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= $k; } print "$o},\n"; }}'
+
+ */
+
+static const unsigned short cp949_forward[128][192] = {
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xAC02, 0xAC03, 0xAC05, 0xAC06, 0xAC0B, 0xAC0C, 0xAC0D, 0xAC0E,
+ 0xAC0F, 0xAC18, 0xAC1E, 0xAC1F, 0xAC21, 0xAC22, 0xAC23, 0xAC25, 0xAC26,
+ 0xAC27, 0xAC28, 0xAC29, 0xAC2A, 0xAC2B, 0xAC2E, 0xAC32, 0xAC33, 0xAC34,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xAC35, 0xAC36, 0xAC37,
+ 0xAC3A, 0xAC3B, 0xAC3D, 0xAC3E, 0xAC3F, 0xAC41, 0xAC42, 0xAC43, 0xAC44,
+ 0xAC45, 0xAC46, 0xAC47, 0xAC48, 0xAC49, 0xAC4A, 0xAC4C, 0xAC4E, 0xAC4F,
+ 0xAC50, 0xAC51, 0xAC52, 0xAC53, 0xAC55, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xAC56, 0xAC57, 0xAC59, 0xAC5A, 0xAC5B, 0xAC5D, 0xAC5E,
+ 0xAC5F, 0xAC60, 0xAC61, 0xAC62, 0xAC63, 0xAC64, 0xAC65, 0xAC66, 0xAC67,
+ 0xAC68, 0xAC69, 0xAC6A, 0xAC6B, 0xAC6C, 0xAC6D, 0xAC6E, 0xAC6F, 0xAC72,
+ 0xAC73, 0xAC75, 0xAC76, 0xAC79, 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC7F,
+ 0xAC82, 0xAC87, 0xAC88, 0xAC8D, 0xAC8E, 0xAC8F, 0xAC91, 0xAC92, 0xAC93,
+ 0xAC95, 0xAC96, 0xAC97, 0xAC98, 0xAC99, 0xAC9A, 0xAC9B, 0xAC9E, 0xACA2,
+ 0xACA3, 0xACA4, 0xACA5, 0xACA6, 0xACA7, 0xACAB, 0xACAD, 0xACAE, 0xACB1,
+ 0xACB2, 0xACB3, 0xACB4, 0xACB5, 0xACB6, 0xACB7, 0xACBA, 0xACBE, 0xACBF,
+ 0xACC0, 0xACC2, 0xACC3, 0xACC5, 0xACC6, 0xACC7, 0xACC9, 0xACCA, 0xACCB,
+ 0xACCD, 0xACCE, 0xACCF, 0xACD0, 0xACD1, 0xACD2, 0xACD3, 0xACD4, 0xACD6,
+ 0xACD8, 0xACD9, 0xACDA, 0xACDB, 0xACDC, 0xACDD, 0xACDE, 0xACDF, 0xACE2,
+ 0xACE3, 0xACE5, 0xACE6, 0xACE9, 0xACEB, 0xACED, 0xACEE, 0xACF2, 0xACF4,
+ 0xACF7, 0xACF8, 0xACF9, 0xACFA, 0xACFB, 0xACFE, 0xACFF, 0xAD01, 0xAD02,
+ 0xAD03, 0xAD05, 0xAD07, 0xAD08, 0xAD09, 0xAD0A, 0xAD0B, 0xAD0E, 0xAD10,
+ 0xAD12, 0xAD13, ERROR},
+ { ERROR, 0xAD14, 0xAD15, 0xAD16, 0xAD17, 0xAD19, 0xAD1A, 0xAD1B, 0xAD1D,
+ 0xAD1E, 0xAD1F, 0xAD21, 0xAD22, 0xAD23, 0xAD24, 0xAD25, 0xAD26, 0xAD27,
+ 0xAD28, 0xAD2A, 0xAD2B, 0xAD2E, 0xAD2F, 0xAD30, 0xAD31, 0xAD32, 0xAD33,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xAD36, 0xAD37, 0xAD39,
+ 0xAD3A, 0xAD3B, 0xAD3D, 0xAD3E, 0xAD3F, 0xAD40, 0xAD41, 0xAD42, 0xAD43,
+ 0xAD46, 0xAD48, 0xAD4A, 0xAD4B, 0xAD4C, 0xAD4D, 0xAD4E, 0xAD4F, 0xAD51,
+ 0xAD52, 0xAD53, 0xAD55, 0xAD56, 0xAD57, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xAD59, 0xAD5A, 0xAD5B, 0xAD5C, 0xAD5D, 0xAD5E, 0xAD5F,
+ 0xAD60, 0xAD62, 0xAD64, 0xAD65, 0xAD66, 0xAD67, 0xAD68, 0xAD69, 0xAD6A,
+ 0xAD6B, 0xAD6E, 0xAD6F, 0xAD71, 0xAD72, 0xAD77, 0xAD78, 0xAD79, 0xAD7A,
+ 0xAD7E, 0xAD80, 0xAD83, 0xAD84, 0xAD85, 0xAD86, 0xAD87, 0xAD8A, 0xAD8B,
+ 0xAD8D, 0xAD8E, 0xAD8F, 0xAD91, 0xAD92, 0xAD93, 0xAD94, 0xAD95, 0xAD96,
+ 0xAD97, 0xAD98, 0xAD99, 0xAD9A, 0xAD9B, 0xAD9E, 0xAD9F, 0xADA0, 0xADA1,
+ 0xADA2, 0xADA3, 0xADA5, 0xADA6, 0xADA7, 0xADA8, 0xADA9, 0xADAA, 0xADAB,
+ 0xADAC, 0xADAD, 0xADAE, 0xADAF, 0xADB0, 0xADB1, 0xADB2, 0xADB3, 0xADB4,
+ 0xADB5, 0xADB6, 0xADB8, 0xADB9, 0xADBA, 0xADBB, 0xADBC, 0xADBD, 0xADBE,
+ 0xADBF, 0xADC2, 0xADC3, 0xADC5, 0xADC6, 0xADC7, 0xADC9, 0xADCA, 0xADCB,
+ 0xADCC, 0xADCD, 0xADCE, 0xADCF, 0xADD2, 0xADD4, 0xADD5, 0xADD6, 0xADD7,
+ 0xADD8, 0xADD9, 0xADDA, 0xADDB, 0xADDD, 0xADDE, 0xADDF, 0xADE1, 0xADE2,
+ 0xADE3, 0xADE5, 0xADE6, 0xADE7, 0xADE8, 0xADE9, 0xADEA, 0xADEB, 0xADEC,
+ 0xADED, 0xADEE, 0xADEF, 0xADF0, 0xADF1, 0xADF2, 0xADF3, 0xADF4, 0xADF5,
+ 0xADF6, 0xADF7, ERROR},
+ { ERROR, 0xADFA, 0xADFB, 0xADFD, 0xADFE, 0xAE02, 0xAE03, 0xAE04, 0xAE05,
+ 0xAE06, 0xAE07, 0xAE0A, 0xAE0C, 0xAE0E, 0xAE0F, 0xAE10, 0xAE11, 0xAE12,
+ 0xAE13, 0xAE15, 0xAE16, 0xAE17, 0xAE18, 0xAE19, 0xAE1A, 0xAE1B, 0xAE1C,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xAE1D, 0xAE1E, 0xAE1F,
+ 0xAE20, 0xAE21, 0xAE22, 0xAE23, 0xAE24, 0xAE25, 0xAE26, 0xAE27, 0xAE28,
+ 0xAE29, 0xAE2A, 0xAE2B, 0xAE2C, 0xAE2D, 0xAE2E, 0xAE2F, 0xAE32, 0xAE33,
+ 0xAE35, 0xAE36, 0xAE39, 0xAE3B, 0xAE3C, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xAE3D, 0xAE3E, 0xAE3F, 0xAE42, 0xAE44, 0xAE47, 0xAE48,
+ 0xAE49, 0xAE4B, 0xAE4F, 0xAE51, 0xAE52, 0xAE53, 0xAE55, 0xAE57, 0xAE58,
+ 0xAE59, 0xAE5A, 0xAE5B, 0xAE5E, 0xAE62, 0xAE63, 0xAE64, 0xAE66, 0xAE67,
+ 0xAE6A, 0xAE6B, 0xAE6D, 0xAE6E, 0xAE6F, 0xAE71, 0xAE72, 0xAE73, 0xAE74,
+ 0xAE75, 0xAE76, 0xAE77, 0xAE7A, 0xAE7E, 0xAE7F, 0xAE80, 0xAE81, 0xAE82,
+ 0xAE83, 0xAE86, 0xAE87, 0xAE88, 0xAE89, 0xAE8A, 0xAE8B, 0xAE8D, 0xAE8E,
+ 0xAE8F, 0xAE90, 0xAE91, 0xAE92, 0xAE93, 0xAE94, 0xAE95, 0xAE96, 0xAE97,
+ 0xAE98, 0xAE99, 0xAE9A, 0xAE9B, 0xAE9C, 0xAE9D, 0xAE9E, 0xAE9F, 0xAEA0,
+ 0xAEA1, 0xAEA2, 0xAEA3, 0xAEA4, 0xAEA5, 0xAEA6, 0xAEA7, 0xAEA8, 0xAEA9,
+ 0xAEAA, 0xAEAB, 0xAEAC, 0xAEAD, 0xAEAE, 0xAEAF, 0xAEB0, 0xAEB1, 0xAEB2,
+ 0xAEB3, 0xAEB4, 0xAEB5, 0xAEB6, 0xAEB7, 0xAEB8, 0xAEB9, 0xAEBA, 0xAEBB,
+ 0xAEBF, 0xAEC1, 0xAEC2, 0xAEC3, 0xAEC5, 0xAEC6, 0xAEC7, 0xAEC8, 0xAEC9,
+ 0xAECA, 0xAECB, 0xAECE, 0xAED2, 0xAED3, 0xAED4, 0xAED5, 0xAED6, 0xAED7,
+ 0xAEDA, 0xAEDB, 0xAEDD, 0xAEDE, 0xAEDF, 0xAEE0, 0xAEE1, 0xAEE2, 0xAEE3,
+ 0xAEE4, 0xAEE5, ERROR},
+ { ERROR, 0xAEE6, 0xAEE7, 0xAEE9, 0xAEEA, 0xAEEC, 0xAEEE, 0xAEEF, 0xAEF0,
+ 0xAEF1, 0xAEF2, 0xAEF3, 0xAEF5, 0xAEF6, 0xAEF7, 0xAEF9, 0xAEFA, 0xAEFB,
+ 0xAEFD, 0xAEFE, 0xAEFF, 0xAF00, 0xAF01, 0xAF02, 0xAF03, 0xAF04, 0xAF05,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xAF06, 0xAF09, 0xAF0A,
+ 0xAF0B, 0xAF0C, 0xAF0E, 0xAF0F, 0xAF11, 0xAF12, 0xAF13, 0xAF14, 0xAF15,
+ 0xAF16, 0xAF17, 0xAF18, 0xAF19, 0xAF1A, 0xAF1B, 0xAF1C, 0xAF1D, 0xAF1E,
+ 0xAF1F, 0xAF20, 0xAF21, 0xAF22, 0xAF23, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xAF24, 0xAF25, 0xAF26, 0xAF27, 0xAF28, 0xAF29, 0xAF2A,
+ 0xAF2B, 0xAF2E, 0xAF2F, 0xAF31, 0xAF33, 0xAF35, 0xAF36, 0xAF37, 0xAF38,
+ 0xAF39, 0xAF3A, 0xAF3B, 0xAF3E, 0xAF40, 0xAF44, 0xAF45, 0xAF46, 0xAF47,
+ 0xAF4A, 0xAF4B, 0xAF4C, 0xAF4D, 0xAF4E, 0xAF4F, 0xAF51, 0xAF52, 0xAF53,
+ 0xAF54, 0xAF55, 0xAF56, 0xAF57, 0xAF58, 0xAF59, 0xAF5A, 0xAF5B, 0xAF5E,
+ 0xAF5F, 0xAF60, 0xAF61, 0xAF62, 0xAF63, 0xAF66, 0xAF67, 0xAF68, 0xAF69,
+ 0xAF6A, 0xAF6B, 0xAF6C, 0xAF6D, 0xAF6E, 0xAF6F, 0xAF70, 0xAF71, 0xAF72,
+ 0xAF73, 0xAF74, 0xAF75, 0xAF76, 0xAF77, 0xAF78, 0xAF7A, 0xAF7B, 0xAF7C,
+ 0xAF7D, 0xAF7E, 0xAF7F, 0xAF81, 0xAF82, 0xAF83, 0xAF85, 0xAF86, 0xAF87,
+ 0xAF89, 0xAF8A, 0xAF8B, 0xAF8C, 0xAF8D, 0xAF8E, 0xAF8F, 0xAF92, 0xAF93,
+ 0xAF94, 0xAF96, 0xAF97, 0xAF98, 0xAF99, 0xAF9A, 0xAF9B, 0xAF9D, 0xAF9E,
+ 0xAF9F, 0xAFA0, 0xAFA1, 0xAFA2, 0xAFA3, 0xAFA4, 0xAFA5, 0xAFA6, 0xAFA7,
+ 0xAFA8, 0xAFA9, 0xAFAA, 0xAFAB, 0xAFAC, 0xAFAD, 0xAFAE, 0xAFAF, 0xAFB0,
+ 0xAFB1, 0xAFB2, 0xAFB3, 0xAFB4, 0xAFB5, 0xAFB6, 0xAFB7, 0xAFBA, 0xAFBB,
+ 0xAFBD, 0xAFBE, ERROR},
+ { ERROR, 0xAFBF, 0xAFC1, 0xAFC2, 0xAFC3, 0xAFC4, 0xAFC5, 0xAFC6, 0xAFCA,
+ 0xAFCC, 0xAFCF, 0xAFD0, 0xAFD1, 0xAFD2, 0xAFD3, 0xAFD5, 0xAFD6, 0xAFD7,
+ 0xAFD8, 0xAFD9, 0xAFDA, 0xAFDB, 0xAFDD, 0xAFDE, 0xAFDF, 0xAFE0, 0xAFE1,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xAFE2, 0xAFE3, 0xAFE4,
+ 0xAFE5, 0xAFE6, 0xAFE7, 0xAFEA, 0xAFEB, 0xAFEC, 0xAFED, 0xAFEE, 0xAFEF,
+ 0xAFF2, 0xAFF3, 0xAFF5, 0xAFF6, 0xAFF7, 0xAFF9, 0xAFFA, 0xAFFB, 0xAFFC,
+ 0xAFFD, 0xAFFE, 0xAFFF, 0xB002, 0xB003, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB005, 0xB006, 0xB007, 0xB008, 0xB009, 0xB00A, 0xB00B,
+ 0xB00D, 0xB00E, 0xB00F, 0xB011, 0xB012, 0xB013, 0xB015, 0xB016, 0xB017,
+ 0xB018, 0xB019, 0xB01A, 0xB01B, 0xB01E, 0xB01F, 0xB020, 0xB021, 0xB022,
+ 0xB023, 0xB024, 0xB025, 0xB026, 0xB027, 0xB029, 0xB02A, 0xB02B, 0xB02C,
+ 0xB02D, 0xB02E, 0xB02F, 0xB030, 0xB031, 0xB032, 0xB033, 0xB034, 0xB035,
+ 0xB036, 0xB037, 0xB038, 0xB039, 0xB03A, 0xB03B, 0xB03C, 0xB03D, 0xB03E,
+ 0xB03F, 0xB040, 0xB041, 0xB042, 0xB043, 0xB046, 0xB047, 0xB049, 0xB04B,
+ 0xB04D, 0xB04F, 0xB050, 0xB051, 0xB052, 0xB056, 0xB058, 0xB05A, 0xB05B,
+ 0xB05C, 0xB05E, 0xB05F, 0xB060, 0xB061, 0xB062, 0xB063, 0xB064, 0xB065,
+ 0xB066, 0xB067, 0xB068, 0xB069, 0xB06A, 0xB06B, 0xB06C, 0xB06D, 0xB06E,
+ 0xB06F, 0xB070, 0xB071, 0xB072, 0xB073, 0xB074, 0xB075, 0xB076, 0xB077,
+ 0xB078, 0xB079, 0xB07A, 0xB07B, 0xB07E, 0xB07F, 0xB081, 0xB082, 0xB083,
+ 0xB085, 0xB086, 0xB087, 0xB088, 0xB089, 0xB08A, 0xB08B, 0xB08E, 0xB090,
+ 0xB092, 0xB093, 0xB094, 0xB095, 0xB096, 0xB097, 0xB09B, 0xB09D, 0xB09E,
+ 0xB0A3, 0xB0A4, ERROR},
+ { ERROR, 0xB0A5, 0xB0A6, 0xB0A7, 0xB0AA, 0xB0B0, 0xB0B2, 0xB0B6, 0xB0B7,
+ 0xB0B9, 0xB0BA, 0xB0BB, 0xB0BD, 0xB0BE, 0xB0BF, 0xB0C0, 0xB0C1, 0xB0C2,
+ 0xB0C3, 0xB0C6, 0xB0CA, 0xB0CB, 0xB0CC, 0xB0CD, 0xB0CE, 0xB0CF, 0xB0D2,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB0D3, 0xB0D5, 0xB0D6,
+ 0xB0D7, 0xB0D9, 0xB0DA, 0xB0DB, 0xB0DC, 0xB0DD, 0xB0DE, 0xB0DF, 0xB0E1,
+ 0xB0E2, 0xB0E3, 0xB0E4, 0xB0E6, 0xB0E7, 0xB0E8, 0xB0E9, 0xB0EA, 0xB0EB,
+ 0xB0EC, 0xB0ED, 0xB0EE, 0xB0EF, 0xB0F0, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB0F1, 0xB0F2, 0xB0F3, 0xB0F4, 0xB0F5, 0xB0F6, 0xB0F7,
+ 0xB0F8, 0xB0F9, 0xB0FA, 0xB0FB, 0xB0FC, 0xB0FD, 0xB0FE, 0xB0FF, 0xB100,
+ 0xB101, 0xB102, 0xB103, 0xB104, 0xB105, 0xB106, 0xB107, 0xB10A, 0xB10D,
+ 0xB10E, 0xB10F, 0xB111, 0xB114, 0xB115, 0xB116, 0xB117, 0xB11A, 0xB11E,
+ 0xB11F, 0xB120, 0xB121, 0xB122, 0xB126, 0xB127, 0xB129, 0xB12A, 0xB12B,
+ 0xB12D, 0xB12E, 0xB12F, 0xB130, 0xB131, 0xB132, 0xB133, 0xB136, 0xB13A,
+ 0xB13B, 0xB13C, 0xB13D, 0xB13E, 0xB13F, 0xB142, 0xB143, 0xB145, 0xB146,
+ 0xB147, 0xB149, 0xB14A, 0xB14B, 0xB14C, 0xB14D, 0xB14E, 0xB14F, 0xB152,
+ 0xB153, 0xB156, 0xB157, 0xB159, 0xB15A, 0xB15B, 0xB15D, 0xB15E, 0xB15F,
+ 0xB161, 0xB162, 0xB163, 0xB164, 0xB165, 0xB166, 0xB167, 0xB168, 0xB169,
+ 0xB16A, 0xB16B, 0xB16C, 0xB16D, 0xB16E, 0xB16F, 0xB170, 0xB171, 0xB172,
+ 0xB173, 0xB174, 0xB175, 0xB176, 0xB177, 0xB17A, 0xB17B, 0xB17D, 0xB17E,
+ 0xB17F, 0xB181, 0xB183, 0xB184, 0xB185, 0xB186, 0xB187, 0xB18A, 0xB18C,
+ 0xB18E, 0xB18F, 0xB190, 0xB191, 0xB195, 0xB196, 0xB197, 0xB199, 0xB19A,
+ 0xB19B, 0xB19D, ERROR},
+ { ERROR, 0xB19E, 0xB19F, 0xB1A0, 0xB1A1, 0xB1A2, 0xB1A3, 0xB1A4, 0xB1A5,
+ 0xB1A6, 0xB1A7, 0xB1A9, 0xB1AA, 0xB1AB, 0xB1AC, 0xB1AD, 0xB1AE, 0xB1AF,
+ 0xB1B0, 0xB1B1, 0xB1B2, 0xB1B3, 0xB1B4, 0xB1B5, 0xB1B6, 0xB1B7, 0xB1B8,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB1B9, 0xB1BA, 0xB1BB,
+ 0xB1BC, 0xB1BD, 0xB1BE, 0xB1BF, 0xB1C0, 0xB1C1, 0xB1C2, 0xB1C3, 0xB1C4,
+ 0xB1C5, 0xB1C6, 0xB1C7, 0xB1C8, 0xB1C9, 0xB1CA, 0xB1CB, 0xB1CD, 0xB1CE,
+ 0xB1CF, 0xB1D1, 0xB1D2, 0xB1D3, 0xB1D5, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB1D6, 0xB1D7, 0xB1D8, 0xB1D9, 0xB1DA, 0xB1DB, 0xB1DE,
+ 0xB1E0, 0xB1E1, 0xB1E2, 0xB1E3, 0xB1E4, 0xB1E5, 0xB1E6, 0xB1E7, 0xB1EA,
+ 0xB1EB, 0xB1ED, 0xB1EE, 0xB1EF, 0xB1F1, 0xB1F2, 0xB1F3, 0xB1F4, 0xB1F5,
+ 0xB1F6, 0xB1F7, 0xB1F8, 0xB1FA, 0xB1FC, 0xB1FE, 0xB1FF, 0xB200, 0xB201,
+ 0xB202, 0xB203, 0xB206, 0xB207, 0xB209, 0xB20A, 0xB20D, 0xB20E, 0xB20F,
+ 0xB210, 0xB211, 0xB212, 0xB213, 0xB216, 0xB218, 0xB21A, 0xB21B, 0xB21C,
+ 0xB21D, 0xB21E, 0xB21F, 0xB221, 0xB222, 0xB223, 0xB224, 0xB225, 0xB226,
+ 0xB227, 0xB228, 0xB229, 0xB22A, 0xB22B, 0xB22C, 0xB22D, 0xB22E, 0xB22F,
+ 0xB230, 0xB231, 0xB232, 0xB233, 0xB235, 0xB236, 0xB237, 0xB238, 0xB239,
+ 0xB23A, 0xB23B, 0xB23D, 0xB23E, 0xB23F, 0xB240, 0xB241, 0xB242, 0xB243,
+ 0xB244, 0xB245, 0xB246, 0xB247, 0xB248, 0xB249, 0xB24A, 0xB24B, 0xB24C,
+ 0xB24D, 0xB24E, 0xB24F, 0xB250, 0xB251, 0xB252, 0xB253, 0xB254, 0xB255,
+ 0xB256, 0xB257, 0xB259, 0xB25A, 0xB25B, 0xB25D, 0xB25E, 0xB25F, 0xB261,
+ 0xB262, 0xB263, 0xB264, 0xB265, 0xB266, 0xB267, 0xB26A, 0xB26B, 0xB26C,
+ 0xB26D, 0xB26E, ERROR},
+ { ERROR, 0xB26F, 0xB270, 0xB271, 0xB272, 0xB273, 0xB276, 0xB277, 0xB278,
+ 0xB279, 0xB27A, 0xB27B, 0xB27D, 0xB27E, 0xB27F, 0xB280, 0xB281, 0xB282,
+ 0xB283, 0xB286, 0xB287, 0xB288, 0xB28A, 0xB28B, 0xB28C, 0xB28D, 0xB28E,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB28F, 0xB292, 0xB293,
+ 0xB295, 0xB296, 0xB297, 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xB2A2,
+ 0xB2A4, 0xB2A7, 0xB2A8, 0xB2A9, 0xB2AB, 0xB2AD, 0xB2AE, 0xB2AF, 0xB2B1,
+ 0xB2B2, 0xB2B3, 0xB2B5, 0xB2B6, 0xB2B7, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB2B8, 0xB2B9, 0xB2BA, 0xB2BB, 0xB2BC, 0xB2BD, 0xB2BE,
+ 0xB2BF, 0xB2C0, 0xB2C1, 0xB2C2, 0xB2C3, 0xB2C4, 0xB2C5, 0xB2C6, 0xB2C7,
+ 0xB2CA, 0xB2CB, 0xB2CD, 0xB2CE, 0xB2CF, 0xB2D1, 0xB2D3, 0xB2D4, 0xB2D5,
+ 0xB2D6, 0xB2D7, 0xB2DA, 0xB2DC, 0xB2DE, 0xB2DF, 0xB2E0, 0xB2E1, 0xB2E3,
+ 0xB2E7, 0xB2E9, 0xB2EA, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F6, 0xB2FC, 0xB2FD,
+ 0xB2FE, 0xB302, 0xB303, 0xB305, 0xB306, 0xB307, 0xB309, 0xB30A, 0xB30B,
+ 0xB30C, 0xB30D, 0xB30E, 0xB30F, 0xB312, 0xB316, 0xB317, 0xB318, 0xB319,
+ 0xB31A, 0xB31B, 0xB31D, 0xB31E, 0xB31F, 0xB320, 0xB321, 0xB322, 0xB323,
+ 0xB324, 0xB325, 0xB326, 0xB327, 0xB328, 0xB329, 0xB32A, 0xB32B, 0xB32C,
+ 0xB32D, 0xB32E, 0xB32F, 0xB330, 0xB331, 0xB332, 0xB333, 0xB334, 0xB335,
+ 0xB336, 0xB337, 0xB338, 0xB339, 0xB33A, 0xB33B, 0xB33C, 0xB33D, 0xB33E,
+ 0xB33F, 0xB340, 0xB341, 0xB342, 0xB343, 0xB344, 0xB345, 0xB346, 0xB347,
+ 0xB348, 0xB349, 0xB34A, 0xB34B, 0xB34C, 0xB34D, 0xB34E, 0xB34F, 0xB350,
+ 0xB351, 0xB352, 0xB353, 0xB357, 0xB359, 0xB35A, 0xB35D, 0xB360, 0xB361,
+ 0xB362, 0xB363, ERROR},
+ { ERROR, 0xB366, 0xB368, 0xB36A, 0xB36C, 0xB36D, 0xB36F, 0xB372, 0xB373,
+ 0xB375, 0xB376, 0xB377, 0xB379, 0xB37A, 0xB37B, 0xB37C, 0xB37D, 0xB37E,
+ 0xB37F, 0xB382, 0xB386, 0xB387, 0xB388, 0xB389, 0xB38A, 0xB38B, 0xB38D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB38E, 0xB38F, 0xB391,
+ 0xB392, 0xB393, 0xB395, 0xB396, 0xB397, 0xB398, 0xB399, 0xB39A, 0xB39B,
+ 0xB39C, 0xB39D, 0xB39E, 0xB39F, 0xB3A2, 0xB3A3, 0xB3A4, 0xB3A5, 0xB3A6,
+ 0xB3A7, 0xB3A9, 0xB3AA, 0xB3AB, 0xB3AD, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB3AE, 0xB3AF, 0xB3B0, 0xB3B1, 0xB3B2, 0xB3B3, 0xB3B4,
+ 0xB3B5, 0xB3B6, 0xB3B7, 0xB3B8, 0xB3B9, 0xB3BA, 0xB3BB, 0xB3BC, 0xB3BD,
+ 0xB3BE, 0xB3BF, 0xB3C0, 0xB3C1, 0xB3C2, 0xB3C3, 0xB3C6, 0xB3C7, 0xB3C9,
+ 0xB3CA, 0xB3CD, 0xB3CF, 0xB3D1, 0xB3D2, 0xB3D3, 0xB3D6, 0xB3D8, 0xB3DA,
+ 0xB3DC, 0xB3DE, 0xB3DF, 0xB3E1, 0xB3E2, 0xB3E3, 0xB3E5, 0xB3E6, 0xB3E7,
+ 0xB3E9, 0xB3EA, 0xB3EB, 0xB3EC, 0xB3ED, 0xB3EE, 0xB3EF, 0xB3F0, 0xB3F1,
+ 0xB3F2, 0xB3F3, 0xB3F4, 0xB3F5, 0xB3F6, 0xB3F7, 0xB3F8, 0xB3F9, 0xB3FA,
+ 0xB3FB, 0xB3FD, 0xB3FE, 0xB3FF, 0xB400, 0xB401, 0xB402, 0xB403, 0xB404,
+ 0xB405, 0xB406, 0xB407, 0xB408, 0xB409, 0xB40A, 0xB40B, 0xB40C, 0xB40D,
+ 0xB40E, 0xB40F, 0xB411, 0xB412, 0xB413, 0xB414, 0xB415, 0xB416, 0xB417,
+ 0xB419, 0xB41A, 0xB41B, 0xB41D, 0xB41E, 0xB41F, 0xB421, 0xB422, 0xB423,
+ 0xB424, 0xB425, 0xB426, 0xB427, 0xB42A, 0xB42C, 0xB42D, 0xB42E, 0xB42F,
+ 0xB430, 0xB431, 0xB432, 0xB433, 0xB435, 0xB436, 0xB437, 0xB438, 0xB439,
+ 0xB43A, 0xB43B, 0xB43C, 0xB43D, 0xB43E, 0xB43F, 0xB440, 0xB441, 0xB442,
+ 0xB443, 0xB444, ERROR},
+ { ERROR, 0xB445, 0xB446, 0xB447, 0xB448, 0xB449, 0xB44A, 0xB44B, 0xB44C,
+ 0xB44D, 0xB44E, 0xB44F, 0xB452, 0xB453, 0xB455, 0xB456, 0xB457, 0xB459,
+ 0xB45A, 0xB45B, 0xB45C, 0xB45D, 0xB45E, 0xB45F, 0xB462, 0xB464, 0xB466,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB467, 0xB468, 0xB469,
+ 0xB46A, 0xB46B, 0xB46D, 0xB46E, 0xB46F, 0xB470, 0xB471, 0xB472, 0xB473,
+ 0xB474, 0xB475, 0xB476, 0xB477, 0xB478, 0xB479, 0xB47A, 0xB47B, 0xB47C,
+ 0xB47D, 0xB47E, 0xB47F, 0xB481, 0xB482, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB483, 0xB484, 0xB485, 0xB486, 0xB487, 0xB489, 0xB48A,
+ 0xB48B, 0xB48C, 0xB48D, 0xB48E, 0xB48F, 0xB490, 0xB491, 0xB492, 0xB493,
+ 0xB494, 0xB495, 0xB496, 0xB497, 0xB498, 0xB499, 0xB49A, 0xB49B, 0xB49C,
+ 0xB49E, 0xB49F, 0xB4A0, 0xB4A1, 0xB4A2, 0xB4A3, 0xB4A5, 0xB4A6, 0xB4A7,
+ 0xB4A9, 0xB4AA, 0xB4AB, 0xB4AD, 0xB4AE, 0xB4AF, 0xB4B0, 0xB4B1, 0xB4B2,
+ 0xB4B3, 0xB4B4, 0xB4B6, 0xB4B8, 0xB4BA, 0xB4BB, 0xB4BC, 0xB4BD, 0xB4BE,
+ 0xB4BF, 0xB4C1, 0xB4C2, 0xB4C3, 0xB4C5, 0xB4C6, 0xB4C7, 0xB4C9, 0xB4CA,
+ 0xB4CB, 0xB4CC, 0xB4CD, 0xB4CE, 0xB4CF, 0xB4D1, 0xB4D2, 0xB4D3, 0xB4D4,
+ 0xB4D6, 0xB4D7, 0xB4D8, 0xB4D9, 0xB4DA, 0xB4DB, 0xB4DE, 0xB4DF, 0xB4E1,
+ 0xB4E2, 0xB4E5, 0xB4E7, 0xB4E8, 0xB4E9, 0xB4EA, 0xB4EB, 0xB4EE, 0xB4F0,
+ 0xB4F2, 0xB4F3, 0xB4F4, 0xB4F5, 0xB4F6, 0xB4F7, 0xB4F9, 0xB4FA, 0xB4FB,
+ 0xB4FC, 0xB4FD, 0xB4FE, 0xB4FF, 0xB500, 0xB501, 0xB502, 0xB503, 0xB504,
+ 0xB505, 0xB506, 0xB507, 0xB508, 0xB509, 0xB50A, 0xB50B, 0xB50C, 0xB50D,
+ 0xB50E, 0xB50F, 0xB510, 0xB511, 0xB512, 0xB513, 0xB516, 0xB517, 0xB519,
+ 0xB51A, 0xB51D, ERROR},
+ { ERROR, 0xB51E, 0xB51F, 0xB520, 0xB521, 0xB522, 0xB523, 0xB526, 0xB52B,
+ 0xB52C, 0xB52D, 0xB52E, 0xB52F, 0xB532, 0xB533, 0xB535, 0xB536, 0xB537,
+ 0xB539, 0xB53A, 0xB53B, 0xB53C, 0xB53D, 0xB53E, 0xB53F, 0xB542, 0xB546,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB547, 0xB548, 0xB549,
+ 0xB54A, 0xB54E, 0xB54F, 0xB551, 0xB552, 0xB553, 0xB555, 0xB556, 0xB557,
+ 0xB558, 0xB559, 0xB55A, 0xB55B, 0xB55E, 0xB562, 0xB563, 0xB564, 0xB565,
+ 0xB566, 0xB567, 0xB568, 0xB569, 0xB56A, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB56B, 0xB56C, 0xB56D, 0xB56E, 0xB56F, 0xB570, 0xB571,
+ 0xB572, 0xB573, 0xB574, 0xB575, 0xB576, 0xB577, 0xB578, 0xB579, 0xB57A,
+ 0xB57B, 0xB57C, 0xB57D, 0xB57E, 0xB57F, 0xB580, 0xB581, 0xB582, 0xB583,
+ 0xB584, 0xB585, 0xB586, 0xB587, 0xB588, 0xB589, 0xB58A, 0xB58B, 0xB58C,
+ 0xB58D, 0xB58E, 0xB58F, 0xB590, 0xB591, 0xB592, 0xB593, 0xB594, 0xB595,
+ 0xB596, 0xB597, 0xB598, 0xB599, 0xB59A, 0xB59B, 0xB59C, 0xB59D, 0xB59E,
+ 0xB59F, 0xB5A2, 0xB5A3, 0xB5A5, 0xB5A6, 0xB5A7, 0xB5A9, 0xB5AC, 0xB5AD,
+ 0xB5AE, 0xB5AF, 0xB5B2, 0xB5B6, 0xB5B7, 0xB5B8, 0xB5B9, 0xB5BA, 0xB5BE,
+ 0xB5BF, 0xB5C1, 0xB5C2, 0xB5C3, 0xB5C5, 0xB5C6, 0xB5C7, 0xB5C8, 0xB5C9,
+ 0xB5CA, 0xB5CB, 0xB5CE, 0xB5D2, 0xB5D3, 0xB5D4, 0xB5D5, 0xB5D6, 0xB5D7,
+ 0xB5D9, 0xB5DA, 0xB5DB, 0xB5DC, 0xB5DD, 0xB5DE, 0xB5DF, 0xB5E0, 0xB5E1,
+ 0xB5E2, 0xB5E3, 0xB5E4, 0xB5E5, 0xB5E6, 0xB5E7, 0xB5E8, 0xB5E9, 0xB5EA,
+ 0xB5EB, 0xB5ED, 0xB5EE, 0xB5EF, 0xB5F0, 0xB5F1, 0xB5F2, 0xB5F3, 0xB5F4,
+ 0xB5F5, 0xB5F6, 0xB5F7, 0xB5F8, 0xB5F9, 0xB5FA, 0xB5FB, 0xB5FC, 0xB5FD,
+ 0xB5FE, 0xB5FF, ERROR},
+ { ERROR, 0xB600, 0xB601, 0xB602, 0xB603, 0xB604, 0xB605, 0xB606, 0xB607,
+ 0xB608, 0xB609, 0xB60A, 0xB60B, 0xB60C, 0xB60D, 0xB60E, 0xB60F, 0xB612,
+ 0xB613, 0xB615, 0xB616, 0xB617, 0xB619, 0xB61A, 0xB61B, 0xB61C, 0xB61D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB61E, 0xB61F, 0xB620,
+ 0xB621, 0xB622, 0xB623, 0xB624, 0xB626, 0xB627, 0xB628, 0xB629, 0xB62A,
+ 0xB62B, 0xB62D, 0xB62E, 0xB62F, 0xB630, 0xB631, 0xB632, 0xB633, 0xB635,
+ 0xB636, 0xB637, 0xB638, 0xB639, 0xB63A, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB63B, 0xB63C, 0xB63D, 0xB63E, 0xB63F, 0xB640, 0xB641,
+ 0xB642, 0xB643, 0xB644, 0xB645, 0xB646, 0xB647, 0xB649, 0xB64A, 0xB64B,
+ 0xB64C, 0xB64D, 0xB64E, 0xB64F, 0xB650, 0xB651, 0xB652, 0xB653, 0xB654,
+ 0xB655, 0xB656, 0xB657, 0xB658, 0xB659, 0xB65A, 0xB65B, 0xB65C, 0xB65D,
+ 0xB65E, 0xB65F, 0xB660, 0xB661, 0xB662, 0xB663, 0xB665, 0xB666, 0xB667,
+ 0xB669, 0xB66A, 0xB66B, 0xB66C, 0xB66D, 0xB66E, 0xB66F, 0xB670, 0xB671,
+ 0xB672, 0xB673, 0xB674, 0xB675, 0xB676, 0xB677, 0xB678, 0xB679, 0xB67A,
+ 0xB67B, 0xB67C, 0xB67D, 0xB67E, 0xB67F, 0xB680, 0xB681, 0xB682, 0xB683,
+ 0xB684, 0xB685, 0xB686, 0xB687, 0xB688, 0xB689, 0xB68A, 0xB68B, 0xB68C,
+ 0xB68D, 0xB68E, 0xB68F, 0xB690, 0xB691, 0xB692, 0xB693, 0xB694, 0xB695,
+ 0xB696, 0xB697, 0xB698, 0xB699, 0xB69A, 0xB69B, 0xB69E, 0xB69F, 0xB6A1,
+ 0xB6A2, 0xB6A3, 0xB6A5, 0xB6A6, 0xB6A7, 0xB6A8, 0xB6A9, 0xB6AA, 0xB6AD,
+ 0xB6AE, 0xB6AF, 0xB6B0, 0xB6B2, 0xB6B3, 0xB6B4, 0xB6B5, 0xB6B6, 0xB6B7,
+ 0xB6B8, 0xB6B9, 0xB6BA, 0xB6BB, 0xB6BC, 0xB6BD, 0xB6BE, 0xB6BF, 0xB6C0,
+ 0xB6C1, 0xB6C2, ERROR},
+ { ERROR, 0xB6C3, 0xB6C4, 0xB6C5, 0xB6C6, 0xB6C7, 0xB6C8, 0xB6C9, 0xB6CA,
+ 0xB6CB, 0xB6CC, 0xB6CD, 0xB6CE, 0xB6CF, 0xB6D0, 0xB6D1, 0xB6D2, 0xB6D3,
+ 0xB6D5, 0xB6D6, 0xB6D7, 0xB6D8, 0xB6D9, 0xB6DA, 0xB6DB, 0xB6DC, 0xB6DD,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB6DE, 0xB6DF, 0xB6E0,
+ 0xB6E1, 0xB6E2, 0xB6E3, 0xB6E4, 0xB6E5, 0xB6E6, 0xB6E7, 0xB6E8, 0xB6E9,
+ 0xB6EA, 0xB6EB, 0xB6EC, 0xB6ED, 0xB6EE, 0xB6EF, 0xB6F1, 0xB6F2, 0xB6F3,
+ 0xB6F5, 0xB6F6, 0xB6F7, 0xB6F9, 0xB6FA, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB6FB, 0xB6FC, 0xB6FD, 0xB6FE, 0xB6FF, 0xB702, 0xB703,
+ 0xB704, 0xB706, 0xB707, 0xB708, 0xB709, 0xB70A, 0xB70B, 0xB70C, 0xB70D,
+ 0xB70E, 0xB70F, 0xB710, 0xB711, 0xB712, 0xB713, 0xB714, 0xB715, 0xB716,
+ 0xB717, 0xB718, 0xB719, 0xB71A, 0xB71B, 0xB71C, 0xB71D, 0xB71E, 0xB71F,
+ 0xB720, 0xB721, 0xB722, 0xB723, 0xB724, 0xB725, 0xB726, 0xB727, 0xB72A,
+ 0xB72B, 0xB72D, 0xB72E, 0xB731, 0xB732, 0xB733, 0xB734, 0xB735, 0xB736,
+ 0xB737, 0xB73A, 0xB73C, 0xB73D, 0xB73E, 0xB73F, 0xB740, 0xB741, 0xB742,
+ 0xB743, 0xB745, 0xB746, 0xB747, 0xB749, 0xB74A, 0xB74B, 0xB74D, 0xB74E,
+ 0xB74F, 0xB750, 0xB751, 0xB752, 0xB753, 0xB756, 0xB757, 0xB758, 0xB759,
+ 0xB75A, 0xB75B, 0xB75C, 0xB75D, 0xB75E, 0xB75F, 0xB761, 0xB762, 0xB763,
+ 0xB765, 0xB766, 0xB767, 0xB769, 0xB76A, 0xB76B, 0xB76C, 0xB76D, 0xB76E,
+ 0xB76F, 0xB772, 0xB774, 0xB776, 0xB777, 0xB778, 0xB779, 0xB77A, 0xB77B,
+ 0xB77E, 0xB77F, 0xB781, 0xB782, 0xB783, 0xB785, 0xB786, 0xB787, 0xB788,
+ 0xB789, 0xB78A, 0xB78B, 0xB78E, 0xB793, 0xB794, 0xB795, 0xB79A, 0xB79B,
+ 0xB79D, 0xB79E, ERROR},
+ { ERROR, 0xB79F, 0xB7A1, 0xB7A2, 0xB7A3, 0xB7A4, 0xB7A5, 0xB7A6, 0xB7A7,
+ 0xB7AA, 0xB7AE, 0xB7AF, 0xB7B0, 0xB7B1, 0xB7B2, 0xB7B3, 0xB7B6, 0xB7B7,
+ 0xB7B9, 0xB7BA, 0xB7BB, 0xB7BC, 0xB7BD, 0xB7BE, 0xB7BF, 0xB7C0, 0xB7C1,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB7C2, 0xB7C3, 0xB7C4,
+ 0xB7C5, 0xB7C6, 0xB7C8, 0xB7CA, 0xB7CB, 0xB7CC, 0xB7CD, 0xB7CE, 0xB7CF,
+ 0xB7D0, 0xB7D1, 0xB7D2, 0xB7D3, 0xB7D4, 0xB7D5, 0xB7D6, 0xB7D7, 0xB7D8,
+ 0xB7D9, 0xB7DA, 0xB7DB, 0xB7DC, 0xB7DD, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB7DE, 0xB7DF, 0xB7E0, 0xB7E1, 0xB7E2, 0xB7E3, 0xB7E4,
+ 0xB7E5, 0xB7E6, 0xB7E7, 0xB7E8, 0xB7E9, 0xB7EA, 0xB7EB, 0xB7EE, 0xB7EF,
+ 0xB7F1, 0xB7F2, 0xB7F3, 0xB7F5, 0xB7F6, 0xB7F7, 0xB7F8, 0xB7F9, 0xB7FA,
+ 0xB7FB, 0xB7FE, 0xB802, 0xB803, 0xB804, 0xB805, 0xB806, 0xB80A, 0xB80B,
+ 0xB80D, 0xB80E, 0xB80F, 0xB811, 0xB812, 0xB813, 0xB814, 0xB815, 0xB816,
+ 0xB817, 0xB81A, 0xB81C, 0xB81E, 0xB81F, 0xB820, 0xB821, 0xB822, 0xB823,
+ 0xB826, 0xB827, 0xB829, 0xB82A, 0xB82B, 0xB82D, 0xB82E, 0xB82F, 0xB830,
+ 0xB831, 0xB832, 0xB833, 0xB836, 0xB83A, 0xB83B, 0xB83C, 0xB83D, 0xB83E,
+ 0xB83F, 0xB841, 0xB842, 0xB843, 0xB845, 0xB846, 0xB847, 0xB848, 0xB849,
+ 0xB84A, 0xB84B, 0xB84C, 0xB84D, 0xB84E, 0xB84F, 0xB850, 0xB852, 0xB854,
+ 0xB855, 0xB856, 0xB857, 0xB858, 0xB859, 0xB85A, 0xB85B, 0xB85E, 0xB85F,
+ 0xB861, 0xB862, 0xB863, 0xB865, 0xB866, 0xB867, 0xB868, 0xB869, 0xB86A,
+ 0xB86B, 0xB86E, 0xB870, 0xB872, 0xB873, 0xB874, 0xB875, 0xB876, 0xB877,
+ 0xB879, 0xB87A, 0xB87B, 0xB87D, 0xB87E, 0xB87F, 0xB880, 0xB881, 0xB882,
+ 0xB883, 0xB884, ERROR},
+ { ERROR, 0xB885, 0xB886, 0xB887, 0xB888, 0xB889, 0xB88A, 0xB88B, 0xB88C,
+ 0xB88E, 0xB88F, 0xB890, 0xB891, 0xB892, 0xB893, 0xB894, 0xB895, 0xB896,
+ 0xB897, 0xB898, 0xB899, 0xB89A, 0xB89B, 0xB89C, 0xB89D, 0xB89E, 0xB89F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB8A0, 0xB8A1, 0xB8A2,
+ 0xB8A3, 0xB8A4, 0xB8A5, 0xB8A6, 0xB8A7, 0xB8A9, 0xB8AA, 0xB8AB, 0xB8AC,
+ 0xB8AD, 0xB8AE, 0xB8AF, 0xB8B1, 0xB8B2, 0xB8B3, 0xB8B5, 0xB8B6, 0xB8B7,
+ 0xB8B9, 0xB8BA, 0xB8BB, 0xB8BC, 0xB8BD, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB8BE, 0xB8BF, 0xB8C2, 0xB8C4, 0xB8C6, 0xB8C7, 0xB8C8,
+ 0xB8C9, 0xB8CA, 0xB8CB, 0xB8CD, 0xB8CE, 0xB8CF, 0xB8D1, 0xB8D2, 0xB8D3,
+ 0xB8D5, 0xB8D6, 0xB8D7, 0xB8D8, 0xB8D9, 0xB8DA, 0xB8DB, 0xB8DC, 0xB8DE,
+ 0xB8E0, 0xB8E2, 0xB8E3, 0xB8E4, 0xB8E5, 0xB8E6, 0xB8E7, 0xB8EA, 0xB8EB,
+ 0xB8ED, 0xB8EE, 0xB8EF, 0xB8F1, 0xB8F2, 0xB8F3, 0xB8F4, 0xB8F5, 0xB8F6,
+ 0xB8F7, 0xB8FA, 0xB8FC, 0xB8FE, 0xB8FF, 0xB900, 0xB901, 0xB902, 0xB903,
+ 0xB905, 0xB906, 0xB907, 0xB908, 0xB909, 0xB90A, 0xB90B, 0xB90C, 0xB90D,
+ 0xB90E, 0xB90F, 0xB910, 0xB911, 0xB912, 0xB913, 0xB914, 0xB915, 0xB916,
+ 0xB917, 0xB919, 0xB91A, 0xB91B, 0xB91C, 0xB91D, 0xB91E, 0xB91F, 0xB921,
+ 0xB922, 0xB923, 0xB924, 0xB925, 0xB926, 0xB927, 0xB928, 0xB929, 0xB92A,
+ 0xB92B, 0xB92C, 0xB92D, 0xB92E, 0xB92F, 0xB930, 0xB931, 0xB932, 0xB933,
+ 0xB934, 0xB935, 0xB936, 0xB937, 0xB938, 0xB939, 0xB93A, 0xB93B, 0xB93E,
+ 0xB93F, 0xB941, 0xB942, 0xB943, 0xB945, 0xB946, 0xB947, 0xB948, 0xB949,
+ 0xB94A, 0xB94B, 0xB94D, 0xB94E, 0xB950, 0xB952, 0xB953, 0xB954, 0xB955,
+ 0xB956, 0xB957, ERROR},
+ { ERROR, 0xB95A, 0xB95B, 0xB95D, 0xB95E, 0xB95F, 0xB961, 0xB962, 0xB963,
+ 0xB964, 0xB965, 0xB966, 0xB967, 0xB96A, 0xB96C, 0xB96E, 0xB96F, 0xB970,
+ 0xB971, 0xB972, 0xB973, 0xB976, 0xB977, 0xB979, 0xB97A, 0xB97B, 0xB97D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xB97E, 0xB97F, 0xB980,
+ 0xB981, 0xB982, 0xB983, 0xB986, 0xB988, 0xB98B, 0xB98C, 0xB98F, 0xB990,
+ 0xB991, 0xB992, 0xB993, 0xB994, 0xB995, 0xB996, 0xB997, 0xB998, 0xB999,
+ 0xB99A, 0xB99B, 0xB99C, 0xB99D, 0xB99E, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xB99F, 0xB9A0, 0xB9A1, 0xB9A2, 0xB9A3, 0xB9A4, 0xB9A5,
+ 0xB9A6, 0xB9A7, 0xB9A8, 0xB9A9, 0xB9AA, 0xB9AB, 0xB9AE, 0xB9AF, 0xB9B1,
+ 0xB9B2, 0xB9B3, 0xB9B5, 0xB9B6, 0xB9B7, 0xB9B8, 0xB9B9, 0xB9BA, 0xB9BB,
+ 0xB9BE, 0xB9C0, 0xB9C2, 0xB9C3, 0xB9C4, 0xB9C5, 0xB9C6, 0xB9C7, 0xB9CA,
+ 0xB9CB, 0xB9CD, 0xB9D3, 0xB9D4, 0xB9D5, 0xB9D6, 0xB9D7, 0xB9DA, 0xB9DC,
+ 0xB9DF, 0xB9E0, 0xB9E2, 0xB9E6, 0xB9E7, 0xB9E9, 0xB9EA, 0xB9EB, 0xB9ED,
+ 0xB9EE, 0xB9EF, 0xB9F0, 0xB9F1, 0xB9F2, 0xB9F3, 0xB9F6, 0xB9FB, 0xB9FC,
+ 0xB9FD, 0xB9FE, 0xB9FF, 0xBA02, 0xBA03, 0xBA04, 0xBA05, 0xBA06, 0xBA07,
+ 0xBA09, 0xBA0A, 0xBA0B, 0xBA0C, 0xBA0D, 0xBA0E, 0xBA0F, 0xBA10, 0xBA11,
+ 0xBA12, 0xBA13, 0xBA14, 0xBA16, 0xBA17, 0xBA18, 0xBA19, 0xBA1A, 0xBA1B,
+ 0xBA1C, 0xBA1D, 0xBA1E, 0xBA1F, 0xBA20, 0xBA21, 0xBA22, 0xBA23, 0xBA24,
+ 0xBA25, 0xBA26, 0xBA27, 0xBA28, 0xBA29, 0xBA2A, 0xBA2B, 0xBA2C, 0xBA2D,
+ 0xBA2E, 0xBA2F, 0xBA30, 0xBA31, 0xBA32, 0xBA33, 0xBA34, 0xBA35, 0xBA36,
+ 0xBA37, 0xBA3A, 0xBA3B, 0xBA3D, 0xBA3E, 0xBA3F, 0xBA41, 0xBA43, 0xBA44,
+ 0xBA45, 0xBA46, ERROR},
+ { ERROR, 0xBA47, 0xBA4A, 0xBA4C, 0xBA4F, 0xBA50, 0xBA51, 0xBA52, 0xBA56,
+ 0xBA57, 0xBA59, 0xBA5A, 0xBA5B, 0xBA5D, 0xBA5E, 0xBA5F, 0xBA60, 0xBA61,
+ 0xBA62, 0xBA63, 0xBA66, 0xBA6A, 0xBA6B, 0xBA6C, 0xBA6D, 0xBA6E, 0xBA6F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBA72, 0xBA73, 0xBA75,
+ 0xBA76, 0xBA77, 0xBA79, 0xBA7A, 0xBA7B, 0xBA7C, 0xBA7D, 0xBA7E, 0xBA7F,
+ 0xBA80, 0xBA81, 0xBA82, 0xBA86, 0xBA88, 0xBA89, 0xBA8A, 0xBA8B, 0xBA8D,
+ 0xBA8E, 0xBA8F, 0xBA90, 0xBA91, 0xBA92, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBA93, 0xBA94, 0xBA95, 0xBA96, 0xBA97, 0xBA98, 0xBA99,
+ 0xBA9A, 0xBA9B, 0xBA9C, 0xBA9D, 0xBA9E, 0xBA9F, 0xBAA0, 0xBAA1, 0xBAA2,
+ 0xBAA3, 0xBAA4, 0xBAA5, 0xBAA6, 0xBAA7, 0xBAAA, 0xBAAD, 0xBAAE, 0xBAAF,
+ 0xBAB1, 0xBAB3, 0xBAB4, 0xBAB5, 0xBAB6, 0xBAB7, 0xBABA, 0xBABC, 0xBABE,
+ 0xBABF, 0xBAC0, 0xBAC1, 0xBAC2, 0xBAC3, 0xBAC5, 0xBAC6, 0xBAC7, 0xBAC9,
+ 0xBACA, 0xBACB, 0xBACC, 0xBACD, 0xBACE, 0xBACF, 0xBAD0, 0xBAD1, 0xBAD2,
+ 0xBAD3, 0xBAD4, 0xBAD5, 0xBAD6, 0xBAD7, 0xBADA, 0xBADB, 0xBADC, 0xBADD,
+ 0xBADE, 0xBADF, 0xBAE0, 0xBAE1, 0xBAE2, 0xBAE3, 0xBAE4, 0xBAE5, 0xBAE6,
+ 0xBAE7, 0xBAE8, 0xBAE9, 0xBAEA, 0xBAEB, 0xBAEC, 0xBAED, 0xBAEE, 0xBAEF,
+ 0xBAF0, 0xBAF1, 0xBAF2, 0xBAF3, 0xBAF4, 0xBAF5, 0xBAF6, 0xBAF7, 0xBAF8,
+ 0xBAF9, 0xBAFA, 0xBAFB, 0xBAFD, 0xBAFE, 0xBAFF, 0xBB01, 0xBB02, 0xBB03,
+ 0xBB05, 0xBB06, 0xBB07, 0xBB08, 0xBB09, 0xBB0A, 0xBB0B, 0xBB0C, 0xBB0E,
+ 0xBB10, 0xBB12, 0xBB13, 0xBB14, 0xBB15, 0xBB16, 0xBB17, 0xBB19, 0xBB1A,
+ 0xBB1B, 0xBB1D, 0xBB1E, 0xBB1F, 0xBB21, 0xBB22, 0xBB23, 0xBB24, 0xBB25,
+ 0xBB26, 0xBB27, ERROR},
+ { ERROR, 0xBB28, 0xBB2A, 0xBB2C, 0xBB2D, 0xBB2E, 0xBB2F, 0xBB30, 0xBB31,
+ 0xBB32, 0xBB33, 0xBB37, 0xBB39, 0xBB3A, 0xBB3F, 0xBB40, 0xBB41, 0xBB42,
+ 0xBB43, 0xBB46, 0xBB48, 0xBB4A, 0xBB4B, 0xBB4C, 0xBB4E, 0xBB51, 0xBB52,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBB53, 0xBB55, 0xBB56,
+ 0xBB57, 0xBB59, 0xBB5A, 0xBB5B, 0xBB5C, 0xBB5D, 0xBB5E, 0xBB5F, 0xBB60,
+ 0xBB62, 0xBB64, 0xBB65, 0xBB66, 0xBB67, 0xBB68, 0xBB69, 0xBB6A, 0xBB6B,
+ 0xBB6D, 0xBB6E, 0xBB6F, 0xBB70, 0xBB71, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBB72, 0xBB73, 0xBB74, 0xBB75, 0xBB76, 0xBB77, 0xBB78,
+ 0xBB79, 0xBB7A, 0xBB7B, 0xBB7C, 0xBB7D, 0xBB7E, 0xBB7F, 0xBB80, 0xBB81,
+ 0xBB82, 0xBB83, 0xBB84, 0xBB85, 0xBB86, 0xBB87, 0xBB89, 0xBB8A, 0xBB8B,
+ 0xBB8D, 0xBB8E, 0xBB8F, 0xBB91, 0xBB92, 0xBB93, 0xBB94, 0xBB95, 0xBB96,
+ 0xBB97, 0xBB98, 0xBB99, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D, 0xBB9E, 0xBB9F,
+ 0xBBA0, 0xBBA1, 0xBBA2, 0xBBA3, 0xBBA5, 0xBBA6, 0xBBA7, 0xBBA9, 0xBBAA,
+ 0xBBAB, 0xBBAD, 0xBBAE, 0xBBAF, 0xBBB0, 0xBBB1, 0xBBB2, 0xBBB3, 0xBBB5,
+ 0xBBB6, 0xBBB8, 0xBBB9, 0xBBBA, 0xBBBB, 0xBBBC, 0xBBBD, 0xBBBE, 0xBBBF,
+ 0xBBC1, 0xBBC2, 0xBBC3, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBC9, 0xBBCA, 0xBBCB,
+ 0xBBCC, 0xBBCD, 0xBBCE, 0xBBCF, 0xBBD1, 0xBBD2, 0xBBD4, 0xBBD5, 0xBBD6,
+ 0xBBD7, 0xBBD8, 0xBBD9, 0xBBDA, 0xBBDB, 0xBBDC, 0xBBDD, 0xBBDE, 0xBBDF,
+ 0xBBE0, 0xBBE1, 0xBBE2, 0xBBE3, 0xBBE4, 0xBBE5, 0xBBE6, 0xBBE7, 0xBBE8,
+ 0xBBE9, 0xBBEA, 0xBBEB, 0xBBEC, 0xBBED, 0xBBEE, 0xBBEF, 0xBBF0, 0xBBF1,
+ 0xBBF2, 0xBBF3, 0xBBF4, 0xBBF5, 0xBBF6, 0xBBF7, 0xBBFA, 0xBBFB, 0xBBFD,
+ 0xBBFE, 0xBC01, ERROR},
+ { ERROR, 0xBC03, 0xBC04, 0xBC05, 0xBC06, 0xBC07, 0xBC0A, 0xBC0E, 0xBC10,
+ 0xBC12, 0xBC13, 0xBC19, 0xBC1A, 0xBC20, 0xBC21, 0xBC22, 0xBC23, 0xBC26,
+ 0xBC28, 0xBC2A, 0xBC2B, 0xBC2C, 0xBC2E, 0xBC2F, 0xBC32, 0xBC33, 0xBC35,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBC36, 0xBC37, 0xBC39,
+ 0xBC3A, 0xBC3B, 0xBC3C, 0xBC3D, 0xBC3E, 0xBC3F, 0xBC42, 0xBC46, 0xBC47,
+ 0xBC48, 0xBC4A, 0xBC4B, 0xBC4E, 0xBC4F, 0xBC51, 0xBC52, 0xBC53, 0xBC54,
+ 0xBC55, 0xBC56, 0xBC57, 0xBC58, 0xBC59, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBC5A, 0xBC5B, 0xBC5C, 0xBC5E, 0xBC5F, 0xBC60, 0xBC61,
+ 0xBC62, 0xBC63, 0xBC64, 0xBC65, 0xBC66, 0xBC67, 0xBC68, 0xBC69, 0xBC6A,
+ 0xBC6B, 0xBC6C, 0xBC6D, 0xBC6E, 0xBC6F, 0xBC70, 0xBC71, 0xBC72, 0xBC73,
+ 0xBC74, 0xBC75, 0xBC76, 0xBC77, 0xBC78, 0xBC79, 0xBC7A, 0xBC7B, 0xBC7C,
+ 0xBC7D, 0xBC7E, 0xBC7F, 0xBC80, 0xBC81, 0xBC82, 0xBC83, 0xBC86, 0xBC87,
+ 0xBC89, 0xBC8A, 0xBC8D, 0xBC8F, 0xBC90, 0xBC91, 0xBC92, 0xBC93, 0xBC96,
+ 0xBC98, 0xBC9B, 0xBC9C, 0xBC9D, 0xBC9E, 0xBC9F, 0xBCA2, 0xBCA3, 0xBCA5,
+ 0xBCA6, 0xBCA9, 0xBCAA, 0xBCAB, 0xBCAC, 0xBCAD, 0xBCAE, 0xBCAF, 0xBCB2,
+ 0xBCB6, 0xBCB7, 0xBCB8, 0xBCB9, 0xBCBA, 0xBCBB, 0xBCBE, 0xBCBF, 0xBCC1,
+ 0xBCC2, 0xBCC3, 0xBCC5, 0xBCC6, 0xBCC7, 0xBCC8, 0xBCC9, 0xBCCA, 0xBCCB,
+ 0xBCCC, 0xBCCE, 0xBCD2, 0xBCD3, 0xBCD4, 0xBCD6, 0xBCD7, 0xBCD9, 0xBCDA,
+ 0xBCDB, 0xBCDD, 0xBCDE, 0xBCDF, 0xBCE0, 0xBCE1, 0xBCE2, 0xBCE3, 0xBCE4,
+ 0xBCE5, 0xBCE6, 0xBCE7, 0xBCE8, 0xBCE9, 0xBCEA, 0xBCEB, 0xBCEC, 0xBCED,
+ 0xBCEE, 0xBCEF, 0xBCF0, 0xBCF1, 0xBCF2, 0xBCF3, 0xBCF7, 0xBCF9, 0xBCFA,
+ 0xBCFB, 0xBCFD, ERROR},
+ { ERROR, 0xBCFE, 0xBCFF, 0xBD00, 0xBD01, 0xBD02, 0xBD03, 0xBD06, 0xBD08,
+ 0xBD0A, 0xBD0B, 0xBD0C, 0xBD0D, 0xBD0E, 0xBD0F, 0xBD11, 0xBD12, 0xBD13,
+ 0xBD15, 0xBD16, 0xBD17, 0xBD18, 0xBD19, 0xBD1A, 0xBD1B, 0xBD1C, 0xBD1D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBD1E, 0xBD1F, 0xBD20,
+ 0xBD21, 0xBD22, 0xBD23, 0xBD25, 0xBD26, 0xBD27, 0xBD28, 0xBD29, 0xBD2A,
+ 0xBD2B, 0xBD2D, 0xBD2E, 0xBD2F, 0xBD30, 0xBD31, 0xBD32, 0xBD33, 0xBD34,
+ 0xBD35, 0xBD36, 0xBD37, 0xBD38, 0xBD39, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBD3A, 0xBD3B, 0xBD3C, 0xBD3D, 0xBD3E, 0xBD3F, 0xBD41,
+ 0xBD42, 0xBD43, 0xBD44, 0xBD45, 0xBD46, 0xBD47, 0xBD4A, 0xBD4B, 0xBD4D,
+ 0xBD4E, 0xBD4F, 0xBD51, 0xBD52, 0xBD53, 0xBD54, 0xBD55, 0xBD56, 0xBD57,
+ 0xBD5A, 0xBD5B, 0xBD5C, 0xBD5D, 0xBD5E, 0xBD5F, 0xBD60, 0xBD61, 0xBD62,
+ 0xBD63, 0xBD65, 0xBD66, 0xBD67, 0xBD69, 0xBD6A, 0xBD6B, 0xBD6C, 0xBD6D,
+ 0xBD6E, 0xBD6F, 0xBD70, 0xBD71, 0xBD72, 0xBD73, 0xBD74, 0xBD75, 0xBD76,
+ 0xBD77, 0xBD78, 0xBD79, 0xBD7A, 0xBD7B, 0xBD7C, 0xBD7D, 0xBD7E, 0xBD7F,
+ 0xBD82, 0xBD83, 0xBD85, 0xBD86, 0xBD8B, 0xBD8C, 0xBD8D, 0xBD8E, 0xBD8F,
+ 0xBD92, 0xBD94, 0xBD96, 0xBD97, 0xBD98, 0xBD9B, 0xBD9D, 0xBD9E, 0xBD9F,
+ 0xBDA0, 0xBDA1, 0xBDA2, 0xBDA3, 0xBDA5, 0xBDA6, 0xBDA7, 0xBDA8, 0xBDA9,
+ 0xBDAA, 0xBDAB, 0xBDAC, 0xBDAD, 0xBDAE, 0xBDAF, 0xBDB1, 0xBDB2, 0xBDB3,
+ 0xBDB4, 0xBDB5, 0xBDB6, 0xBDB7, 0xBDB9, 0xBDBA, 0xBDBB, 0xBDBC, 0xBDBD,
+ 0xBDBE, 0xBDBF, 0xBDC0, 0xBDC1, 0xBDC2, 0xBDC3, 0xBDC4, 0xBDC5, 0xBDC6,
+ 0xBDC7, 0xBDC8, 0xBDC9, 0xBDCA, 0xBDCB, 0xBDCC, 0xBDCD, 0xBDCE, 0xBDCF,
+ 0xBDD0, 0xBDD1, ERROR},
+ { ERROR, 0xBDD2, 0xBDD3, 0xBDD6, 0xBDD7, 0xBDD9, 0xBDDA, 0xBDDB, 0xBDDD,
+ 0xBDDE, 0xBDDF, 0xBDE0, 0xBDE1, 0xBDE2, 0xBDE3, 0xBDE4, 0xBDE5, 0xBDE6,
+ 0xBDE7, 0xBDE8, 0xBDEA, 0xBDEB, 0xBDEC, 0xBDED, 0xBDEE, 0xBDEF, 0xBDF1,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBDF2, 0xBDF3, 0xBDF5,
+ 0xBDF6, 0xBDF7, 0xBDF9, 0xBDFA, 0xBDFB, 0xBDFC, 0xBDFD, 0xBDFE, 0xBDFF,
+ 0xBE01, 0xBE02, 0xBE04, 0xBE06, 0xBE07, 0xBE08, 0xBE09, 0xBE0A, 0xBE0B,
+ 0xBE0E, 0xBE0F, 0xBE11, 0xBE12, 0xBE13, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBE15, 0xBE16, 0xBE17, 0xBE18, 0xBE19, 0xBE1A, 0xBE1B,
+ 0xBE1E, 0xBE20, 0xBE21, 0xBE22, 0xBE23, 0xBE24, 0xBE25, 0xBE26, 0xBE27,
+ 0xBE28, 0xBE29, 0xBE2A, 0xBE2B, 0xBE2C, 0xBE2D, 0xBE2E, 0xBE2F, 0xBE30,
+ 0xBE31, 0xBE32, 0xBE33, 0xBE34, 0xBE35, 0xBE36, 0xBE37, 0xBE38, 0xBE39,
+ 0xBE3A, 0xBE3B, 0xBE3C, 0xBE3D, 0xBE3E, 0xBE3F, 0xBE40, 0xBE41, 0xBE42,
+ 0xBE43, 0xBE46, 0xBE47, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4D, 0xBE4F, 0xBE50,
+ 0xBE51, 0xBE52, 0xBE53, 0xBE56, 0xBE58, 0xBE5C, 0xBE5D, 0xBE5E, 0xBE5F,
+ 0xBE62, 0xBE63, 0xBE65, 0xBE66, 0xBE67, 0xBE69, 0xBE6B, 0xBE6C, 0xBE6D,
+ 0xBE6E, 0xBE6F, 0xBE72, 0xBE76, 0xBE77, 0xBE78, 0xBE79, 0xBE7A, 0xBE7E,
+ 0xBE7F, 0xBE81, 0xBE82, 0xBE83, 0xBE85, 0xBE86, 0xBE87, 0xBE88, 0xBE89,
+ 0xBE8A, 0xBE8B, 0xBE8E, 0xBE92, 0xBE93, 0xBE94, 0xBE95, 0xBE96, 0xBE97,
+ 0xBE9A, 0xBE9B, 0xBE9C, 0xBE9D, 0xBE9E, 0xBE9F, 0xBEA0, 0xBEA1, 0xBEA2,
+ 0xBEA3, 0xBEA4, 0xBEA5, 0xBEA6, 0xBEA7, 0xBEA9, 0xBEAA, 0xBEAB, 0xBEAC,
+ 0xBEAD, 0xBEAE, 0xBEAF, 0xBEB0, 0xBEB1, 0xBEB2, 0xBEB3, 0xBEB4, 0xBEB5,
+ 0xBEB6, 0xBEB7, ERROR},
+ { ERROR, 0xBEB8, 0xBEB9, 0xBEBA, 0xBEBB, 0xBEBC, 0xBEBD, 0xBEBE, 0xBEBF,
+ 0xBEC0, 0xBEC1, 0xBEC2, 0xBEC3, 0xBEC4, 0xBEC5, 0xBEC6, 0xBEC7, 0xBEC8,
+ 0xBEC9, 0xBECA, 0xBECB, 0xBECC, 0xBECD, 0xBECE, 0xBECF, 0xBED2, 0xBED3,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBED5, 0xBED6, 0xBED9,
+ 0xBEDA, 0xBEDB, 0xBEDC, 0xBEDD, 0xBEDE, 0xBEDF, 0xBEE1, 0xBEE2, 0xBEE6,
+ 0xBEE7, 0xBEE8, 0xBEE9, 0xBEEA, 0xBEEB, 0xBEED, 0xBEEE, 0xBEEF, 0xBEF0,
+ 0xBEF1, 0xBEF2, 0xBEF3, 0xBEF4, 0xBEF5, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBEF6, 0xBEF7, 0xBEF8, 0xBEF9, 0xBEFA, 0xBEFB, 0xBEFC,
+ 0xBEFD, 0xBEFE, 0xBEFF, 0xBF00, 0xBF02, 0xBF03, 0xBF04, 0xBF05, 0xBF06,
+ 0xBF07, 0xBF0A, 0xBF0B, 0xBF0C, 0xBF0D, 0xBF0E, 0xBF0F, 0xBF10, 0xBF11,
+ 0xBF12, 0xBF13, 0xBF14, 0xBF15, 0xBF16, 0xBF17, 0xBF1A, 0xBF1E, 0xBF1F,
+ 0xBF20, 0xBF21, 0xBF22, 0xBF23, 0xBF24, 0xBF25, 0xBF26, 0xBF27, 0xBF28,
+ 0xBF29, 0xBF2A, 0xBF2B, 0xBF2C, 0xBF2D, 0xBF2E, 0xBF2F, 0xBF30, 0xBF31,
+ 0xBF32, 0xBF33, 0xBF34, 0xBF35, 0xBF36, 0xBF37, 0xBF38, 0xBF39, 0xBF3A,
+ 0xBF3B, 0xBF3C, 0xBF3D, 0xBF3E, 0xBF3F, 0xBF42, 0xBF43, 0xBF45, 0xBF46,
+ 0xBF47, 0xBF49, 0xBF4A, 0xBF4B, 0xBF4C, 0xBF4D, 0xBF4E, 0xBF4F, 0xBF52,
+ 0xBF53, 0xBF54, 0xBF56, 0xBF57, 0xBF58, 0xBF59, 0xBF5A, 0xBF5B, 0xBF5C,
+ 0xBF5D, 0xBF5E, 0xBF5F, 0xBF60, 0xBF61, 0xBF62, 0xBF63, 0xBF64, 0xBF65,
+ 0xBF66, 0xBF67, 0xBF68, 0xBF69, 0xBF6A, 0xBF6B, 0xBF6C, 0xBF6D, 0xBF6E,
+ 0xBF6F, 0xBF70, 0xBF71, 0xBF72, 0xBF73, 0xBF74, 0xBF75, 0xBF76, 0xBF77,
+ 0xBF78, 0xBF79, 0xBF7A, 0xBF7B, 0xBF7C, 0xBF7D, 0xBF7E, 0xBF7F, 0xBF80,
+ 0xBF81, 0xBF82, ERROR},
+ { ERROR, 0xBF83, 0xBF84, 0xBF85, 0xBF86, 0xBF87, 0xBF88, 0xBF89, 0xBF8A,
+ 0xBF8B, 0xBF8C, 0xBF8D, 0xBF8E, 0xBF8F, 0xBF90, 0xBF91, 0xBF92, 0xBF93,
+ 0xBF95, 0xBF96, 0xBF97, 0xBF98, 0xBF99, 0xBF9A, 0xBF9B, 0xBF9C, 0xBF9D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xBF9E, 0xBF9F, 0xBFA0,
+ 0xBFA1, 0xBFA2, 0xBFA3, 0xBFA4, 0xBFA5, 0xBFA6, 0xBFA7, 0xBFA8, 0xBFA9,
+ 0xBFAA, 0xBFAB, 0xBFAC, 0xBFAD, 0xBFAE, 0xBFAF, 0xBFB1, 0xBFB2, 0xBFB3,
+ 0xBFB4, 0xBFB5, 0xBFB6, 0xBFB7, 0xBFB8, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xBFB9, 0xBFBA, 0xBFBB, 0xBFBC, 0xBFBD, 0xBFBE, 0xBFBF,
+ 0xBFC0, 0xBFC1, 0xBFC2, 0xBFC3, 0xBFC4, 0xBFC6, 0xBFC7, 0xBFC8, 0xBFC9,
+ 0xBFCA, 0xBFCB, 0xBFCE, 0xBFCF, 0xBFD1, 0xBFD2, 0xBFD3, 0xBFD5, 0xBFD6,
+ 0xBFD7, 0xBFD8, 0xBFD9, 0xBFDA, 0xBFDB, 0xBFDD, 0xBFDE, 0xBFE0, 0xBFE2,
+ 0xBFE3, 0xBFE4, 0xBFE5, 0xBFE6, 0xBFE7, 0xBFE8, 0xBFE9, 0xBFEA, 0xBFEB,
+ 0xBFEC, 0xBFED, 0xBFEE, 0xBFEF, 0xBFF0, 0xBFF1, 0xBFF2, 0xBFF3, 0xBFF4,
+ 0xBFF5, 0xBFF6, 0xBFF7, 0xBFF8, 0xBFF9, 0xBFFA, 0xBFFB, 0xBFFC, 0xBFFD,
+ 0xBFFE, 0xBFFF, 0xC000, 0xC001, 0xC002, 0xC003, 0xC004, 0xC005, 0xC006,
+ 0xC007, 0xC008, 0xC009, 0xC00A, 0xC00B, 0xC00C, 0xC00D, 0xC00E, 0xC00F,
+ 0xC010, 0xC011, 0xC012, 0xC013, 0xC014, 0xC015, 0xC016, 0xC017, 0xC018,
+ 0xC019, 0xC01A, 0xC01B, 0xC01C, 0xC01D, 0xC01E, 0xC01F, 0xC020, 0xC021,
+ 0xC022, 0xC023, 0xC024, 0xC025, 0xC026, 0xC027, 0xC028, 0xC029, 0xC02A,
+ 0xC02B, 0xC02C, 0xC02D, 0xC02E, 0xC02F, 0xC030, 0xC031, 0xC032, 0xC033,
+ 0xC034, 0xC035, 0xC036, 0xC037, 0xC038, 0xC039, 0xC03A, 0xC03B, 0xC03D,
+ 0xC03E, 0xC03F, ERROR},
+ { ERROR, 0xC040, 0xC041, 0xC042, 0xC043, 0xC044, 0xC045, 0xC046, 0xC047,
+ 0xC048, 0xC049, 0xC04A, 0xC04B, 0xC04C, 0xC04D, 0xC04E, 0xC04F, 0xC050,
+ 0xC052, 0xC053, 0xC054, 0xC055, 0xC056, 0xC057, 0xC059, 0xC05A, 0xC05B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC05D, 0xC05E, 0xC05F,
+ 0xC061, 0xC062, 0xC063, 0xC064, 0xC065, 0xC066, 0xC067, 0xC06A, 0xC06B,
+ 0xC06C, 0xC06D, 0xC06E, 0xC06F, 0xC070, 0xC071, 0xC072, 0xC073, 0xC074,
+ 0xC075, 0xC076, 0xC077, 0xC078, 0xC079, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC07A, 0xC07B, 0xC07C, 0xC07D, 0xC07E, 0xC07F, 0xC080,
+ 0xC081, 0xC082, 0xC083, 0xC084, 0xC085, 0xC086, 0xC087, 0xC088, 0xC089,
+ 0xC08A, 0xC08B, 0xC08C, 0xC08D, 0xC08E, 0xC08F, 0xC092, 0xC093, 0xC095,
+ 0xC096, 0xC097, 0xC099, 0xC09A, 0xC09B, 0xC09C, 0xC09D, 0xC09E, 0xC09F,
+ 0xC0A2, 0xC0A4, 0xC0A6, 0xC0A7, 0xC0A8, 0xC0A9, 0xC0AA, 0xC0AB, 0xC0AE,
+ 0xC0B1, 0xC0B2, 0xC0B7, 0xC0B8, 0xC0B9, 0xC0BA, 0xC0BB, 0xC0BE, 0xC0C2,
+ 0xC0C3, 0xC0C4, 0xC0C6, 0xC0C7, 0xC0CA, 0xC0CB, 0xC0CD, 0xC0CE, 0xC0CF,
+ 0xC0D1, 0xC0D2, 0xC0D3, 0xC0D4, 0xC0D5, 0xC0D6, 0xC0D7, 0xC0DA, 0xC0DE,
+ 0xC0DF, 0xC0E0, 0xC0E1, 0xC0E2, 0xC0E3, 0xC0E6, 0xC0E7, 0xC0E9, 0xC0EA,
+ 0xC0EB, 0xC0ED, 0xC0EE, 0xC0EF, 0xC0F0, 0xC0F1, 0xC0F2, 0xC0F3, 0xC0F6,
+ 0xC0F8, 0xC0FA, 0xC0FB, 0xC0FC, 0xC0FD, 0xC0FE, 0xC0FF, 0xC101, 0xC102,
+ 0xC103, 0xC105, 0xC106, 0xC107, 0xC109, 0xC10A, 0xC10B, 0xC10C, 0xC10D,
+ 0xC10E, 0xC10F, 0xC111, 0xC112, 0xC113, 0xC114, 0xC116, 0xC117, 0xC118,
+ 0xC119, 0xC11A, 0xC11B, 0xC121, 0xC122, 0xC125, 0xC128, 0xC129, 0xC12A,
+ 0xC12B, 0xC12E, ERROR},
+ { ERROR, 0xC132, 0xC133, 0xC134, 0xC135, 0xC137, 0xC13A, 0xC13B, 0xC13D,
+ 0xC13E, 0xC13F, 0xC141, 0xC142, 0xC143, 0xC144, 0xC145, 0xC146, 0xC147,
+ 0xC14A, 0xC14E, 0xC14F, 0xC150, 0xC151, 0xC152, 0xC153, 0xC156, 0xC157,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC159, 0xC15A, 0xC15B,
+ 0xC15D, 0xC15E, 0xC15F, 0xC160, 0xC161, 0xC162, 0xC163, 0xC166, 0xC16A,
+ 0xC16B, 0xC16C, 0xC16D, 0xC16E, 0xC16F, 0xC171, 0xC172, 0xC173, 0xC175,
+ 0xC176, 0xC177, 0xC179, 0xC17A, 0xC17B, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC17C, 0xC17D, 0xC17E, 0xC17F, 0xC180, 0xC181, 0xC182,
+ 0xC183, 0xC184, 0xC186, 0xC187, 0xC188, 0xC189, 0xC18A, 0xC18B, 0xC18F,
+ 0xC191, 0xC192, 0xC193, 0xC195, 0xC197, 0xC198, 0xC199, 0xC19A, 0xC19B,
+ 0xC19E, 0xC1A0, 0xC1A2, 0xC1A3, 0xC1A4, 0xC1A6, 0xC1A7, 0xC1AA, 0xC1AB,
+ 0xC1AD, 0xC1AE, 0xC1AF, 0xC1B1, 0xC1B2, 0xC1B3, 0xC1B4, 0xC1B5, 0xC1B6,
+ 0xC1B7, 0xC1B8, 0xC1B9, 0xC1BA, 0xC1BB, 0xC1BC, 0xC1BE, 0xC1BF, 0xC1C0,
+ 0xC1C1, 0xC1C2, 0xC1C3, 0xC1C5, 0xC1C6, 0xC1C7, 0xC1C9, 0xC1CA, 0xC1CB,
+ 0xC1CD, 0xC1CE, 0xC1CF, 0xC1D0, 0xC1D1, 0xC1D2, 0xC1D3, 0xC1D5, 0xC1D6,
+ 0xC1D9, 0xC1DA, 0xC1DB, 0xC1DC, 0xC1DD, 0xC1DE, 0xC1DF, 0xC1E1, 0xC1E2,
+ 0xC1E3, 0xC1E5, 0xC1E6, 0xC1E7, 0xC1E9, 0xC1EA, 0xC1EB, 0xC1EC, 0xC1ED,
+ 0xC1EE, 0xC1EF, 0xC1F2, 0xC1F4, 0xC1F5, 0xC1F6, 0xC1F7, 0xC1F8, 0xC1F9,
+ 0xC1FA, 0xC1FB, 0xC1FE, 0xC1FF, 0xC201, 0xC202, 0xC203, 0xC205, 0xC206,
+ 0xC207, 0xC208, 0xC209, 0xC20A, 0xC20B, 0xC20E, 0xC210, 0xC212, 0xC213,
+ 0xC214, 0xC215, 0xC216, 0xC217, 0xC21A, 0xC21B, 0xC21D, 0xC21E, 0xC221,
+ 0xC222, 0xC223, ERROR},
+ { ERROR, 0xC224, 0xC225, 0xC226, 0xC227, 0xC22A, 0xC22C, 0xC22E, 0xC230,
+ 0xC233, 0xC235, 0xC236, 0xC237, 0xC238, 0xC239, 0xC23A, 0xC23B, 0xC23C,
+ 0xC23D, 0xC23E, 0xC23F, 0xC240, 0xC241, 0xC242, 0xC243, 0xC244, 0xC245,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC246, 0xC247, 0xC249,
+ 0xC24A, 0xC24B, 0xC24C, 0xC24D, 0xC24E, 0xC24F, 0xC252, 0xC253, 0xC255,
+ 0xC256, 0xC257, 0xC259, 0xC25A, 0xC25B, 0xC25C, 0xC25D, 0xC25E, 0xC25F,
+ 0xC261, 0xC262, 0xC263, 0xC264, 0xC266, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC267, 0xC268, 0xC269, 0xC26A, 0xC26B, 0xC26E, 0xC26F,
+ 0xC271, 0xC272, 0xC273, 0xC275, 0xC276, 0xC277, 0xC278, 0xC279, 0xC27A,
+ 0xC27B, 0xC27E, 0xC280, 0xC282, 0xC283, 0xC284, 0xC285, 0xC286, 0xC287,
+ 0xC28A, 0xC28B, 0xC28C, 0xC28D, 0xC28E, 0xC28F, 0xC291, 0xC292, 0xC293,
+ 0xC294, 0xC295, 0xC296, 0xC297, 0xC299, 0xC29A, 0xC29C, 0xC29E, 0xC29F,
+ 0xC2A0, 0xC2A1, 0xC2A2, 0xC2A3, 0xC2A6, 0xC2A7, 0xC2A9, 0xC2AA, 0xC2AB,
+ 0xC2AE, 0xC2AF, 0xC2B0, 0xC2B1, 0xC2B2, 0xC2B3, 0xC2B6, 0xC2B8, 0xC2BA,
+ 0xC2BB, 0xC2BC, 0xC2BD, 0xC2BE, 0xC2BF, 0xC2C0, 0xC2C1, 0xC2C2, 0xC2C3,
+ 0xC2C4, 0xC2C5, 0xC2C6, 0xC2C7, 0xC2C8, 0xC2C9, 0xC2CA, 0xC2CB, 0xC2CC,
+ 0xC2CD, 0xC2CE, 0xC2CF, 0xC2D0, 0xC2D1, 0xC2D2, 0xC2D3, 0xC2D4, 0xC2D5,
+ 0xC2D6, 0xC2D7, 0xC2D8, 0xC2D9, 0xC2DA, 0xC2DB, 0xC2DE, 0xC2DF, 0xC2E1,
+ 0xC2E2, 0xC2E5, 0xC2E6, 0xC2E7, 0xC2E8, 0xC2E9, 0xC2EA, 0xC2EE, 0xC2F0,
+ 0xC2F2, 0xC2F3, 0xC2F4, 0xC2F5, 0xC2F7, 0xC2FA, 0xC2FD, 0xC2FE, 0xC2FF,
+ 0xC301, 0xC302, 0xC303, 0xC304, 0xC305, 0xC306, 0xC307, 0xC30A, 0xC30B,
+ 0xC30E, 0xC30F, ERROR},
+ { ERROR, 0xC310, 0xC311, 0xC312, 0xC316, 0xC317, 0xC319, 0xC31A, 0xC31B,
+ 0xC31D, 0xC31E, 0xC31F, 0xC320, 0xC321, 0xC322, 0xC323, 0xC326, 0xC327,
+ 0xC32A, 0xC32B, 0xC32C, 0xC32D, 0xC32E, 0xC32F, 0xC330, 0xC331, 0xC332,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC333, 0xC334, 0xC335,
+ 0xC336, 0xC337, 0xC338, 0xC339, 0xC33A, 0xC33B, 0xC33C, 0xC33D, 0xC33E,
+ 0xC33F, 0xC340, 0xC341, 0xC342, 0xC343, 0xC344, 0xC346, 0xC347, 0xC348,
+ 0xC349, 0xC34A, 0xC34B, 0xC34C, 0xC34D, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC34E, 0xC34F, 0xC350, 0xC351, 0xC352, 0xC353, 0xC354,
+ 0xC355, 0xC356, 0xC357, 0xC358, 0xC359, 0xC35A, 0xC35B, 0xC35C, 0xC35D,
+ 0xC35E, 0xC35F, 0xC360, 0xC361, 0xC362, 0xC363, 0xC364, 0xC365, 0xC366,
+ 0xC367, 0xC36A, 0xC36B, 0xC36D, 0xC36E, 0xC36F, 0xC371, 0xC373, 0xC374,
+ 0xC375, 0xC376, 0xC377, 0xC37A, 0xC37B, 0xC37E, 0xC37F, 0xC380, 0xC381,
+ 0xC382, 0xC383, 0xC385, 0xC386, 0xC387, 0xC389, 0xC38A, 0xC38B, 0xC38D,
+ 0xC38E, 0xC38F, 0xC390, 0xC391, 0xC392, 0xC393, 0xC394, 0xC395, 0xC396,
+ 0xC397, 0xC398, 0xC399, 0xC39A, 0xC39B, 0xC39C, 0xC39D, 0xC39E, 0xC39F,
+ 0xC3A0, 0xC3A1, 0xC3A2, 0xC3A3, 0xC3A4, 0xC3A5, 0xC3A6, 0xC3A7, 0xC3A8,
+ 0xC3A9, 0xC3AA, 0xC3AB, 0xC3AC, 0xC3AD, 0xC3AE, 0xC3AF, 0xC3B0, 0xC3B1,
+ 0xC3B2, 0xC3B3, 0xC3B4, 0xC3B5, 0xC3B6, 0xC3B7, 0xC3B8, 0xC3B9, 0xC3BA,
+ 0xC3BB, 0xC3BC, 0xC3BD, 0xC3BE, 0xC3BF, 0xC3C1, 0xC3C2, 0xC3C3, 0xC3C4,
+ 0xC3C5, 0xC3C6, 0xC3C7, 0xC3C8, 0xC3C9, 0xC3CA, 0xC3CB, 0xC3CC, 0xC3CD,
+ 0xC3CE, 0xC3CF, 0xC3D0, 0xC3D1, 0xC3D2, 0xC3D3, 0xC3D4, 0xC3D5, 0xC3D6,
+ 0xC3D7, 0xC3DA, ERROR},
+ { ERROR, 0xC3DB, 0xC3DD, 0xC3DE, 0xC3E1, 0xC3E3, 0xC3E4, 0xC3E5, 0xC3E6,
+ 0xC3E7, 0xC3EA, 0xC3EB, 0xC3EC, 0xC3EE, 0xC3EF, 0xC3F0, 0xC3F1, 0xC3F2,
+ 0xC3F3, 0xC3F6, 0xC3F7, 0xC3F9, 0xC3FA, 0xC3FB, 0xC3FC, 0xC3FD, 0xC3FE,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC3FF, 0xC400, 0xC401,
+ 0xC402, 0xC403, 0xC404, 0xC405, 0xC406, 0xC407, 0xC409, 0xC40A, 0xC40B,
+ 0xC40C, 0xC40D, 0xC40E, 0xC40F, 0xC411, 0xC412, 0xC413, 0xC414, 0xC415,
+ 0xC416, 0xC417, 0xC418, 0xC419, 0xC41A, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC41B, 0xC41C, 0xC41D, 0xC41E, 0xC41F, 0xC420, 0xC421,
+ 0xC422, 0xC423, 0xC425, 0xC426, 0xC427, 0xC428, 0xC429, 0xC42A, 0xC42B,
+ 0xC42D, 0xC42E, 0xC42F, 0xC431, 0xC432, 0xC433, 0xC435, 0xC436, 0xC437,
+ 0xC438, 0xC439, 0xC43A, 0xC43B, 0xC43E, 0xC43F, 0xC440, 0xC441, 0xC442,
+ 0xC443, 0xC444, 0xC445, 0xC446, 0xC447, 0xC449, 0xC44A, 0xC44B, 0xC44C,
+ 0xC44D, 0xC44E, 0xC44F, 0xC450, 0xC451, 0xC452, 0xC453, 0xC454, 0xC455,
+ 0xC456, 0xC457, 0xC458, 0xC459, 0xC45A, 0xC45B, 0xC45C, 0xC45D, 0xC45E,
+ 0xC45F, 0xC460, 0xC461, 0xC462, 0xC463, 0xC466, 0xC467, 0xC469, 0xC46A,
+ 0xC46B, 0xC46D, 0xC46E, 0xC46F, 0xC470, 0xC471, 0xC472, 0xC473, 0xC476,
+ 0xC477, 0xC478, 0xC47A, 0xC47B, 0xC47C, 0xC47D, 0xC47E, 0xC47F, 0xC481,
+ 0xC482, 0xC483, 0xC484, 0xC485, 0xC486, 0xC487, 0xC488, 0xC489, 0xC48A,
+ 0xC48B, 0xC48C, 0xC48D, 0xC48E, 0xC48F, 0xC490, 0xC491, 0xC492, 0xC493,
+ 0xC495, 0xC496, 0xC497, 0xC498, 0xC499, 0xC49A, 0xC49B, 0xC49D, 0xC49E,
+ 0xC49F, 0xC4A0, 0xC4A1, 0xC4A2, 0xC4A3, 0xC4A4, 0xC4A5, 0xC4A6, 0xC4A7,
+ 0xC4A8, 0xC4A9, ERROR},
+ { ERROR, 0xC4AA, 0xC4AB, 0xC4AC, 0xC4AD, 0xC4AE, 0xC4AF, 0xC4B0, 0xC4B1,
+ 0xC4B2, 0xC4B3, 0xC4B4, 0xC4B5, 0xC4B6, 0xC4B7, 0xC4B9, 0xC4BA, 0xC4BB,
+ 0xC4BD, 0xC4BE, 0xC4BF, 0xC4C0, 0xC4C1, 0xC4C2, 0xC4C3, 0xC4C4, 0xC4C5,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC4C6, 0xC4C7, 0xC4C8,
+ 0xC4C9, 0xC4CA, 0xC4CB, 0xC4CC, 0xC4CD, 0xC4CE, 0xC4CF, 0xC4D0, 0xC4D1,
+ 0xC4D2, 0xC4D3, 0xC4D4, 0xC4D5, 0xC4D6, 0xC4D7, 0xC4D8, 0xC4D9, 0xC4DA,
+ 0xC4DB, 0xC4DC, 0xC4DD, 0xC4DE, 0xC4DF, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC4E0, 0xC4E1, 0xC4E2, 0xC4E3, 0xC4E4, 0xC4E5, 0xC4E6,
+ 0xC4E7, 0xC4E8, 0xC4EA, 0xC4EB, 0xC4EC, 0xC4ED, 0xC4EE, 0xC4EF, 0xC4F2,
+ 0xC4F3, 0xC4F5, 0xC4F6, 0xC4F7, 0xC4F9, 0xC4FB, 0xC4FC, 0xC4FD, 0xC4FE,
+ 0xC502, 0xC503, 0xC504, 0xC505, 0xC506, 0xC507, 0xC508, 0xC509, 0xC50A,
+ 0xC50B, 0xC50D, 0xC50E, 0xC50F, 0xC511, 0xC512, 0xC513, 0xC515, 0xC516,
+ 0xC517, 0xC518, 0xC519, 0xC51A, 0xC51B, 0xC51D, 0xC51E, 0xC51F, 0xC520,
+ 0xC521, 0xC522, 0xC523, 0xC524, 0xC525, 0xC526, 0xC527, 0xC52A, 0xC52B,
+ 0xC52D, 0xC52E, 0xC52F, 0xC531, 0xC532, 0xC533, 0xC534, 0xC535, 0xC536,
+ 0xC537, 0xC53A, 0xC53C, 0xC53E, 0xC53F, 0xC540, 0xC541, 0xC542, 0xC543,
+ 0xC546, 0xC547, 0xC54B, 0xC54F, 0xC550, 0xC551, 0xC552, 0xC556, 0xC55A,
+ 0xC55B, 0xC55C, 0xC55F, 0xC562, 0xC563, 0xC565, 0xC566, 0xC567, 0xC569,
+ 0xC56A, 0xC56B, 0xC56C, 0xC56D, 0xC56E, 0xC56F, 0xC572, 0xC576, 0xC577,
+ 0xC578, 0xC579, 0xC57A, 0xC57B, 0xC57E, 0xC57F, 0xC581, 0xC582, 0xC583,
+ 0xC585, 0xC586, 0xC588, 0xC589, 0xC58A, 0xC58B, 0xC58E, 0xC590, 0xC592,
+ 0xC593, 0xC594, ERROR},
+ { ERROR, 0xC596, 0xC599, 0xC59A, 0xC59B, 0xC59D, 0xC59E, 0xC59F, 0xC5A1,
+ 0xC5A2, 0xC5A3, 0xC5A4, 0xC5A5, 0xC5A6, 0xC5A7, 0xC5A8, 0xC5AA, 0xC5AB,
+ 0xC5AC, 0xC5AD, 0xC5AE, 0xC5AF, 0xC5B0, 0xC5B1, 0xC5B2, 0xC5B3, 0xC5B6,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC5B7, 0xC5BA, 0xC5BF,
+ 0xC5C0, 0xC5C1, 0xC5C2, 0xC5C3, 0xC5CB, 0xC5CD, 0xC5CF, 0xC5D2, 0xC5D3,
+ 0xC5D5, 0xC5D6, 0xC5D7, 0xC5D9, 0xC5DA, 0xC5DB, 0xC5DC, 0xC5DD, 0xC5DE,
+ 0xC5DF, 0xC5E2, 0xC5E4, 0xC5E6, 0xC5E7, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC5E8, 0xC5E9, 0xC5EA, 0xC5EB, 0xC5EF, 0xC5F1, 0xC5F2,
+ 0xC5F3, 0xC5F5, 0xC5F8, 0xC5F9, 0xC5FA, 0xC5FB, 0xC602, 0xC603, 0xC604,
+ 0xC609, 0xC60A, 0xC60B, 0xC60D, 0xC60E, 0xC60F, 0xC611, 0xC612, 0xC613,
+ 0xC614, 0xC615, 0xC616, 0xC617, 0xC61A, 0xC61D, 0xC61E, 0xC61F, 0xC620,
+ 0xC621, 0xC622, 0xC623, 0xC626, 0xC627, 0xC629, 0xC62A, 0xC62B, 0xC62F,
+ 0xC631, 0xC632, 0xC636, 0xC638, 0xC63A, 0xC63C, 0xC63D, 0xC63E, 0xC63F,
+ 0xC642, 0xC643, 0xC645, 0xC646, 0xC647, 0xC649, 0xC64A, 0xC64B, 0xC64C,
+ 0xC64D, 0xC64E, 0xC64F, 0xC652, 0xC656, 0xC657, 0xC658, 0xC659, 0xC65A,
+ 0xC65B, 0xC65E, 0xC65F, 0xC661, 0xC662, 0xC663, 0xC664, 0xC665, 0xC666,
+ 0xC667, 0xC668, 0xC669, 0xC66A, 0xC66B, 0xC66D, 0xC66E, 0xC670, 0xC672,
+ 0xC673, 0xC674, 0xC675, 0xC676, 0xC677, 0xC67A, 0xC67B, 0xC67D, 0xC67E,
+ 0xC67F, 0xC681, 0xC682, 0xC683, 0xC684, 0xC685, 0xC686, 0xC687, 0xC68A,
+ 0xC68C, 0xC68E, 0xC68F, 0xC690, 0xC691, 0xC692, 0xC693, 0xC696, 0xC697,
+ 0xC699, 0xC69A, 0xC69B, 0xC69D, 0xC69E, 0xC69F, 0xC6A0, 0xC6A1, 0xC6A2,
+ 0xC6A3, 0xC6A6, ERROR},
+ { ERROR, 0xC6A8, 0xC6AA, 0xC6AB, 0xC6AC, 0xC6AD, 0xC6AE, 0xC6AF, 0xC6B2,
+ 0xC6B3, 0xC6B5, 0xC6B6, 0xC6B7, 0xC6BB, 0xC6BC, 0xC6BD, 0xC6BE, 0xC6BF,
+ 0xC6C2, 0xC6C4, 0xC6C6, 0xC6C7, 0xC6C8, 0xC6C9, 0xC6CA, 0xC6CB, 0xC6CE,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC6CF, 0xC6D1, 0xC6D2,
+ 0xC6D3, 0xC6D5, 0xC6D6, 0xC6D7, 0xC6D8, 0xC6D9, 0xC6DA, 0xC6DB, 0xC6DE,
+ 0xC6DF, 0xC6E2, 0xC6E3, 0xC6E4, 0xC6E5, 0xC6E6, 0xC6E7, 0xC6EA, 0xC6EB,
+ 0xC6ED, 0xC6EE, 0xC6EF, 0xC6F1, 0xC6F2, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC6F3, 0xC6F4, 0xC6F5, 0xC6F6, 0xC6F7, 0xC6FA, 0xC6FB,
+ 0xC6FC, 0xC6FE, 0xC6FF, 0xC700, 0xC701, 0xC702, 0xC703, 0xC706, 0xC707,
+ 0xC709, 0xC70A, 0xC70B, 0xC70D, 0xC70E, 0xC70F, 0xC710, 0xC711, 0xC712,
+ 0xC713, 0xC716, 0xC718, 0xC71A, 0xC71B, 0xC71C, 0xC71D, 0xC71E, 0xC71F,
+ 0xC722, 0xC723, 0xC725, 0xC726, 0xC727, 0xC729, 0xC72A, 0xC72B, 0xC72C,
+ 0xC72D, 0xC72E, 0xC72F, 0xC732, 0xC734, 0xC736, 0xC738, 0xC739, 0xC73A,
+ 0xC73B, 0xC73E, 0xC73F, 0xC741, 0xC742, 0xC743, 0xC745, 0xC746, 0xC747,
+ 0xC748, 0xC749, 0xC74B, 0xC74E, 0xC750, 0xC759, 0xC75A, 0xC75B, 0xC75D,
+ 0xC75E, 0xC75F, 0xC761, 0xC762, 0xC763, 0xC764, 0xC765, 0xC766, 0xC767,
+ 0xC769, 0xC76A, 0xC76C, 0xC76D, 0xC76E, 0xC76F, 0xC770, 0xC771, 0xC772,
+ 0xC773, 0xC776, 0xC777, 0xC779, 0xC77A, 0xC77B, 0xC77F, 0xC780, 0xC781,
+ 0xC782, 0xC786, 0xC78B, 0xC78C, 0xC78D, 0xC78F, 0xC792, 0xC793, 0xC795,
+ 0xC799, 0xC79B, 0xC79C, 0xC79D, 0xC79E, 0xC79F, 0xC7A2, 0xC7A7, 0xC7A8,
+ 0xC7A9, 0xC7AA, 0xC7AB, 0xC7AE, 0xC7AF, 0xC7B1, 0xC7B2, 0xC7B3, 0xC7B5,
+ 0xC7B6, 0xC7B7, ERROR},
+ { ERROR, 0xC7B8, 0xC7B9, 0xC7BA, 0xC7BB, 0xC7BE, 0xC7C2, 0xC7C3, 0xC7C4,
+ 0xC7C5, 0xC7C6, 0xC7C7, 0xC7CA, 0xC7CB, 0xC7CD, 0xC7CF, 0xC7D1, 0xC7D2,
+ 0xC7D3, 0xC7D4, 0xC7D5, 0xC7D6, 0xC7D7, 0xC7D9, 0xC7DA, 0xC7DB, 0xC7DC,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC7DE, 0xC7DF, 0xC7E0,
+ 0xC7E1, 0xC7E2, 0xC7E3, 0xC7E5, 0xC7E6, 0xC7E7, 0xC7E9, 0xC7EA, 0xC7EB,
+ 0xC7ED, 0xC7EE, 0xC7EF, 0xC7F0, 0xC7F1, 0xC7F2, 0xC7F3, 0xC7F4, 0xC7F5,
+ 0xC7F6, 0xC7F7, 0xC7F8, 0xC7F9, 0xC7FA, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC7FB, 0xC7FC, 0xC7FD, 0xC7FE, 0xC7FF, 0xC802, 0xC803,
+ 0xC805, 0xC806, 0xC807, 0xC809, 0xC80B, 0xC80C, 0xC80D, 0xC80E, 0xC80F,
+ 0xC812, 0xC814, 0xC817, 0xC818, 0xC819, 0xC81A, 0xC81B, 0xC81E, 0xC81F,
+ 0xC821, 0xC822, 0xC823, 0xC825, 0xC826, 0xC827, 0xC828, 0xC829, 0xC82A,
+ 0xC82B, 0xC82E, 0xC830, 0xC832, 0xC833, 0xC834, 0xC835, 0xC836, 0xC837,
+ 0xC839, 0xC83A, 0xC83B, 0xC83D, 0xC83E, 0xC83F, 0xC841, 0xC842, 0xC843,
+ 0xC844, 0xC845, 0xC846, 0xC847, 0xC84A, 0xC84B, 0xC84E, 0xC84F, 0xC850,
+ 0xC851, 0xC852, 0xC853, 0xC855, 0xC856, 0xC857, 0xC858, 0xC859, 0xC85A,
+ 0xC85B, 0xC85C, 0xC85D, 0xC85E, 0xC85F, 0xC860, 0xC861, 0xC862, 0xC863,
+ 0xC864, 0xC865, 0xC866, 0xC867, 0xC868, 0xC869, 0xC86A, 0xC86B, 0xC86C,
+ 0xC86D, 0xC86E, 0xC86F, 0xC872, 0xC873, 0xC875, 0xC876, 0xC877, 0xC879,
+ 0xC87B, 0xC87C, 0xC87D, 0xC87E, 0xC87F, 0xC882, 0xC884, 0xC888, 0xC889,
+ 0xC88A, 0xC88E, 0xC88F, 0xC890, 0xC891, 0xC892, 0xC893, 0xC895, 0xC896,
+ 0xC897, 0xC898, 0xC899, 0xC89A, 0xC89B, 0xC89C, 0xC89E, 0xC8A0, 0xC8A2,
+ 0xC8A3, 0xC8A4, ERROR},
+ { ERROR, 0xC8A5, 0xC8A6, 0xC8A7, 0xC8A9, 0xC8AA, 0xC8AB, 0xC8AC, 0xC8AD,
+ 0xC8AE, 0xC8AF, 0xC8B0, 0xC8B1, 0xC8B2, 0xC8B3, 0xC8B4, 0xC8B5, 0xC8B6,
+ 0xC8B7, 0xC8B8, 0xC8B9, 0xC8BA, 0xC8BB, 0xC8BE, 0xC8BF, 0xC8C0, 0xC8C1,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC8C2, 0xC8C3, 0xC8C5,
+ 0xC8C6, 0xC8C7, 0xC8C9, 0xC8CA, 0xC8CB, 0xC8CD, 0xC8CE, 0xC8CF, 0xC8D0,
+ 0xC8D1, 0xC8D2, 0xC8D3, 0xC8D6, 0xC8D8, 0xC8DA, 0xC8DB, 0xC8DC, 0xC8DD,
+ 0xC8DE, 0xC8DF, 0xC8E2, 0xC8E3, 0xC8E5, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC8E6, 0xC8E7, 0xC8E8, 0xC8E9, 0xC8EA, 0xC8EB, 0xC8EC,
+ 0xC8ED, 0xC8EE, 0xC8EF, 0xC8F0, 0xC8F1, 0xC8F2, 0xC8F3, 0xC8F4, 0xC8F6,
+ 0xC8F7, 0xC8F8, 0xC8F9, 0xC8FA, 0xC8FB, 0xC8FE, 0xC8FF, 0xC901, 0xC902,
+ 0xC903, 0xC907, 0xC908, 0xC909, 0xC90A, 0xC90B, 0xC90E, 0x3000, 0x3001,
+ 0x3002, 0x00B7, 0x2025, 0x2026, 0x00A8, 0x3003, 0x00AD, 0x2015, 0x2225,
+ 0xFF3C, 0x223C, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x3008,
+ 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011,
+ 0x00B1, 0x00D7, 0x00F7, 0x2260, 0x2264, 0x2265, 0x221E, 0x2234, 0x00B0,
+ 0x2032, 0x2033, 0x2103, 0x212B, 0xFFE0, 0xFFE1, 0xFFE5, 0x2642, 0x2640,
+ 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00A7, 0x203B,
+ 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0,
+ 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x2192, 0x2190, 0x2191, 0x2193, 0x2194,
+ 0x3013, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C,
+ 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229, 0x2227,
+ 0x2228, 0xFFE2, ERROR},
+ { ERROR, 0xC910, 0xC912, 0xC913, 0xC914, 0xC915, 0xC916, 0xC917, 0xC919,
+ 0xC91A, 0xC91B, 0xC91C, 0xC91D, 0xC91E, 0xC91F, 0xC920, 0xC921, 0xC922,
+ 0xC923, 0xC924, 0xC925, 0xC926, 0xC927, 0xC928, 0xC929, 0xC92A, 0xC92B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC92D, 0xC92E, 0xC92F,
+ 0xC930, 0xC931, 0xC932, 0xC933, 0xC935, 0xC936, 0xC937, 0xC938, 0xC939,
+ 0xC93A, 0xC93B, 0xC93C, 0xC93D, 0xC93E, 0xC93F, 0xC940, 0xC941, 0xC942,
+ 0xC943, 0xC944, 0xC945, 0xC946, 0xC947, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC948, 0xC949, 0xC94A, 0xC94B, 0xC94C, 0xC94D, 0xC94E,
+ 0xC94F, 0xC952, 0xC953, 0xC955, 0xC956, 0xC957, 0xC959, 0xC95A, 0xC95B,
+ 0xC95C, 0xC95D, 0xC95E, 0xC95F, 0xC962, 0xC964, 0xC965, 0xC966, 0xC967,
+ 0xC968, 0xC969, 0xC96A, 0xC96B, 0xC96D, 0xC96E, 0xC96F, 0x21D2, 0x21D4,
+ 0x2200, 0x2203, 0x00B4, 0xFF5E, 0x02C7, 0x02D8, 0x02DD, 0x02DA, 0x02D9,
+ 0x00B8, 0x02DB, 0x00A1, 0x00BF, 0x02D0, 0x222E, 0x2211, 0x220F, 0x00A4,
+ 0x2109, 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, 0x2664, 0x2660, 0x2661,
+ 0x2665, 0x2667, 0x2663, 0x2299, 0x25C8, 0x25A3, 0x25D0, 0x25D1, 0x2592,
+ 0x25A4, 0x25A5, 0x25A8, 0x25A7, 0x25A6, 0x25A9, 0x2668, 0x260F, 0x260E,
+ 0x261C, 0x261E, 0x00B6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196,
+ 0x2198, 0x266D, 0x2669, 0x266A, 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7,
+ 0x2122, 0x33C2, 0x33D8, 0x2121, 0x20AC, 0x00AE, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xC971, 0xC972, 0xC973, 0xC975, 0xC976, 0xC977, 0xC978, 0xC979,
+ 0xC97A, 0xC97B, 0xC97D, 0xC97E, 0xC97F, 0xC980, 0xC981, 0xC982, 0xC983,
+ 0xC984, 0xC985, 0xC986, 0xC987, 0xC98A, 0xC98B, 0xC98D, 0xC98E, 0xC98F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xC991, 0xC992, 0xC993,
+ 0xC994, 0xC995, 0xC996, 0xC997, 0xC99A, 0xC99C, 0xC99E, 0xC99F, 0xC9A0,
+ 0xC9A1, 0xC9A2, 0xC9A3, 0xC9A4, 0xC9A5, 0xC9A6, 0xC9A7, 0xC9A8, 0xC9A9,
+ 0xC9AA, 0xC9AB, 0xC9AC, 0xC9AD, 0xC9AE, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xC9AF, 0xC9B0, 0xC9B1, 0xC9B2, 0xC9B3, 0xC9B4, 0xC9B5,
+ 0xC9B6, 0xC9B7, 0xC9B8, 0xC9B9, 0xC9BA, 0xC9BB, 0xC9BC, 0xC9BD, 0xC9BE,
+ 0xC9BF, 0xC9C2, 0xC9C3, 0xC9C5, 0xC9C6, 0xC9C9, 0xC9CB, 0xC9CC, 0xC9CD,
+ 0xC9CE, 0xC9CF, 0xC9D2, 0xC9D4, 0xC9D7, 0xC9D8, 0xC9DB, 0xFF01, 0xFF02,
+ 0xFF03, 0xFF04, 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B,
+ 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14,
+ 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D,
+ 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26,
+ 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
+ 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38,
+ 0xFF39, 0xFF3A, 0xFF3B, 0xFFE6, 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41,
+ 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A,
+ 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53,
+ 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C,
+ 0xFF5D, 0xFFE3, ERROR},
+ { ERROR, 0xC9DE, 0xC9DF, 0xC9E1, 0xC9E3, 0xC9E5, 0xC9E6, 0xC9E8, 0xC9E9,
+ 0xC9EA, 0xC9EB, 0xC9EE, 0xC9F2, 0xC9F3, 0xC9F4, 0xC9F5, 0xC9F6, 0xC9F7,
+ 0xC9FA, 0xC9FB, 0xC9FD, 0xC9FE, 0xC9FF, 0xCA01, 0xCA02, 0xCA03, 0xCA04,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCA05, 0xCA06, 0xCA07,
+ 0xCA0A, 0xCA0E, 0xCA0F, 0xCA10, 0xCA11, 0xCA12, 0xCA13, 0xCA15, 0xCA16,
+ 0xCA17, 0xCA19, 0xCA1A, 0xCA1B, 0xCA1C, 0xCA1D, 0xCA1E, 0xCA1F, 0xCA20,
+ 0xCA21, 0xCA22, 0xCA23, 0xCA24, 0xCA25, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCA26, 0xCA27, 0xCA28, 0xCA2A, 0xCA2B, 0xCA2C, 0xCA2D,
+ 0xCA2E, 0xCA2F, 0xCA30, 0xCA31, 0xCA32, 0xCA33, 0xCA34, 0xCA35, 0xCA36,
+ 0xCA37, 0xCA38, 0xCA39, 0xCA3A, 0xCA3B, 0xCA3C, 0xCA3D, 0xCA3E, 0xCA3F,
+ 0xCA40, 0xCA41, 0xCA42, 0xCA43, 0xCA44, 0xCA45, 0xCA46, 0x3131, 0x3132,
+ 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313A, 0x313B,
+ 0x313C, 0x313D, 0x313E, 0x313F, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144,
+ 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314A, 0x314B, 0x314C, 0x314D,
+ 0x314E, 0x314F, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156,
+ 0x3157, 0x3158, 0x3159, 0x315A, 0x315B, 0x315C, 0x315D, 0x315E, 0x315F,
+ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
+ 0x3169, 0x316A, 0x316B, 0x316C, 0x316D, 0x316E, 0x316F, 0x3170, 0x3171,
+ 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178, 0x3179, 0x317A,
+ 0x317B, 0x317C, 0x317D, 0x317E, 0x317F, 0x3180, 0x3181, 0x3182, 0x3183,
+ 0x3184, 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x318A, 0x318B, 0x318C,
+ 0x318D, 0x318E, ERROR},
+ { ERROR, 0xCA47, 0xCA48, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4E, 0xCA4F, 0xCA51,
+ 0xCA52, 0xCA53, 0xCA55, 0xCA56, 0xCA57, 0xCA58, 0xCA59, 0xCA5A, 0xCA5B,
+ 0xCA5E, 0xCA62, 0xCA63, 0xCA64, 0xCA65, 0xCA66, 0xCA67, 0xCA69, 0xCA6A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCA6B, 0xCA6C, 0xCA6D,
+ 0xCA6E, 0xCA6F, 0xCA70, 0xCA71, 0xCA72, 0xCA73, 0xCA74, 0xCA75, 0xCA76,
+ 0xCA77, 0xCA78, 0xCA79, 0xCA7A, 0xCA7B, 0xCA7C, 0xCA7E, 0xCA7F, 0xCA80,
+ 0xCA81, 0xCA82, 0xCA83, 0xCA85, 0xCA86, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xCA8B, 0xCA8C, 0xCA8D,
+ 0xCA8E, 0xCA8F, 0xCA90, 0xCA91, 0xCA92, 0xCA93, 0xCA94, 0xCA95, 0xCA96,
+ 0xCA97, 0xCA99, 0xCA9A, 0xCA9B, 0xCA9C, 0xCA9D, 0xCA9E, 0xCA9F, 0xCAA0,
+ 0xCAA1, 0xCAA2, 0xCAA3, 0xCAA4, 0xCAA5, 0xCAA6, 0xCAA7, 0x2170, 0x2171,
+ 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, ERROR,
+ ERROR, ERROR, ERROR, ERROR, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164,
+ 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396,
+ 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x03B1,
+ 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA,
+ 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4,
+ 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCAA8, 0xCAA9, 0xCAAA, 0xCAAB, 0xCAAC, 0xCAAD, 0xCAAE, 0xCAAF,
+ 0xCAB0, 0xCAB1, 0xCAB2, 0xCAB3, 0xCAB4, 0xCAB5, 0xCAB6, 0xCAB7, 0xCAB8,
+ 0xCAB9, 0xCABA, 0xCABB, 0xCABE, 0xCABF, 0xCAC1, 0xCAC2, 0xCAC3, 0xCAC5,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCAC6, 0xCAC7, 0xCAC8,
+ 0xCAC9, 0xCACA, 0xCACB, 0xCACE, 0xCAD0, 0xCAD2, 0xCAD4, 0xCAD5, 0xCAD6,
+ 0xCAD7, 0xCADA, 0xCADB, 0xCADC, 0xCADD, 0xCADE, 0xCADF, 0xCAE1, 0xCAE2,
+ 0xCAE3, 0xCAE4, 0xCAE5, 0xCAE6, 0xCAE7, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCAE8, 0xCAE9, 0xCAEA, 0xCAEB, 0xCAED, 0xCAEE, 0xCAEF,
+ 0xCAF0, 0xCAF1, 0xCAF2, 0xCAF3, 0xCAF5, 0xCAF6, 0xCAF7, 0xCAF8, 0xCAF9,
+ 0xCAFA, 0xCAFB, 0xCAFC, 0xCAFD, 0xCAFE, 0xCAFF, 0xCB00, 0xCB01, 0xCB02,
+ 0xCB03, 0xCB04, 0xCB05, 0xCB06, 0xCB07, 0xCB09, 0xCB0A, 0x2500, 0x2502,
+ 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C,
+ 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B,
+ 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530,
+ 0x2525, 0x2538, 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, 0x2515,
+ 0x250E, 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529,
+ 0x252A, 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253A,
+ 0x253D, 0x253E, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
+ 0x2548, 0x2549, 0x254A, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCB0B, 0xCB0C, 0xCB0D, 0xCB0E, 0xCB0F, 0xCB11, 0xCB12, 0xCB13,
+ 0xCB15, 0xCB16, 0xCB17, 0xCB19, 0xCB1A, 0xCB1B, 0xCB1C, 0xCB1D, 0xCB1E,
+ 0xCB1F, 0xCB22, 0xCB23, 0xCB24, 0xCB25, 0xCB26, 0xCB27, 0xCB28, 0xCB29,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCB2A, 0xCB2B, 0xCB2C,
+ 0xCB2D, 0xCB2E, 0xCB2F, 0xCB30, 0xCB31, 0xCB32, 0xCB33, 0xCB34, 0xCB35,
+ 0xCB36, 0xCB37, 0xCB38, 0xCB39, 0xCB3A, 0xCB3B, 0xCB3C, 0xCB3D, 0xCB3E,
+ 0xCB3F, 0xCB40, 0xCB42, 0xCB43, 0xCB44, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCB45, 0xCB46, 0xCB47, 0xCB4A, 0xCB4B, 0xCB4D, 0xCB4E,
+ 0xCB4F, 0xCB51, 0xCB52, 0xCB53, 0xCB54, 0xCB55, 0xCB56, 0xCB57, 0xCB5A,
+ 0xCB5B, 0xCB5C, 0xCB5E, 0xCB5F, 0xCB60, 0xCB61, 0xCB62, 0xCB63, 0xCB65,
+ 0xCB66, 0xCB67, 0xCB68, 0xCB69, 0xCB6A, 0xCB6B, 0xCB6C, 0x3395, 0x3396,
+ 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3, 0x33A4, 0x33A5, 0x33A6, 0x3399,
+ 0x339A, 0x339B, 0x339C, 0x339D, 0x339E, 0x339F, 0x33A0, 0x33A1, 0x33A2,
+ 0x33CA, 0x338D, 0x338E, 0x338F, 0x33CF, 0x3388, 0x3389, 0x33C8, 0x33A7,
+ 0x33A8, 0x33B0, 0x33B1, 0x33B2, 0x33B3, 0x33B4, 0x33B5, 0x33B6, 0x33B7,
+ 0x33B8, 0x33B9, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33BA, 0x33BB,
+ 0x33BC, 0x33BD, 0x33BE, 0x33BF, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394,
+ 0x2126, 0x33C0, 0x33C1, 0x338A, 0x338B, 0x338C, 0x33D6, 0x33C5, 0x33AD,
+ 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA, 0x33AB, 0x33AC, 0x33DD, 0x33D0,
+ 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCB6D, 0xCB6E, 0xCB6F, 0xCB70, 0xCB71, 0xCB72, 0xCB73, 0xCB74,
+ 0xCB75, 0xCB76, 0xCB77, 0xCB7A, 0xCB7B, 0xCB7C, 0xCB7D, 0xCB7E, 0xCB7F,
+ 0xCB80, 0xCB81, 0xCB82, 0xCB83, 0xCB84, 0xCB85, 0xCB86, 0xCB87, 0xCB88,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCB89, 0xCB8A, 0xCB8B,
+ 0xCB8C, 0xCB8D, 0xCB8E, 0xCB8F, 0xCB90, 0xCB91, 0xCB92, 0xCB93, 0xCB94,
+ 0xCB95, 0xCB96, 0xCB97, 0xCB98, 0xCB99, 0xCB9A, 0xCB9B, 0xCB9D, 0xCB9E,
+ 0xCB9F, 0xCBA0, 0xCBA1, 0xCBA2, 0xCBA3, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCBA4, 0xCBA5, 0xCBA6, 0xCBA7, 0xCBA8, 0xCBA9, 0xCBAA,
+ 0xCBAB, 0xCBAC, 0xCBAD, 0xCBAE, 0xCBAF, 0xCBB0, 0xCBB1, 0xCBB2, 0xCBB3,
+ 0xCBB4, 0xCBB5, 0xCBB6, 0xCBB7, 0xCBB9, 0xCBBA, 0xCBBB, 0xCBBC, 0xCBBD,
+ 0xCBBE, 0xCBBF, 0xCBC0, 0xCBC1, 0xCBC2, 0xCBC3, 0xCBC4, 0x00C6, 0x00D0,
+ 0x00AA, 0x0126, ERROR, 0x0132, ERROR, 0x013F, 0x0141, 0x00D8, 0x0152,
+ 0x00BA, 0x00DE, 0x0166, 0x014A, ERROR, 0x3260, 0x3261, 0x3262, 0x3263,
+ 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326A, 0x326B, 0x326C,
+ 0x326D, 0x326E, 0x326F, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275,
+ 0x3276, 0x3277, 0x3278, 0x3279, 0x327A, 0x327B, 0x24D0, 0x24D1, 0x24D2,
+ 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB,
+ 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4,
+ 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x2460, 0x2461, 0x2462, 0x2463,
+ 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C,
+ 0x246D, 0x246E, 0x00BD, 0x2153, 0x2154, 0x00BC, 0x00BE, 0x215B, 0x215C,
+ 0x215D, 0x215E, ERROR},
+ { ERROR, 0xCBC5, 0xCBC6, 0xCBC7, 0xCBC8, 0xCBC9, 0xCBCA, 0xCBCB, 0xCBCC,
+ 0xCBCD, 0xCBCE, 0xCBCF, 0xCBD0, 0xCBD1, 0xCBD2, 0xCBD3, 0xCBD5, 0xCBD6,
+ 0xCBD7, 0xCBD8, 0xCBD9, 0xCBDA, 0xCBDB, 0xCBDC, 0xCBDD, 0xCBDE, 0xCBDF,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCBE0, 0xCBE1, 0xCBE2,
+ 0xCBE3, 0xCBE5, 0xCBE6, 0xCBE8, 0xCBEA, 0xCBEB, 0xCBEC, 0xCBED, 0xCBEE,
+ 0xCBEF, 0xCBF0, 0xCBF1, 0xCBF2, 0xCBF3, 0xCBF4, 0xCBF5, 0xCBF6, 0xCBF7,
+ 0xCBF8, 0xCBF9, 0xCBFA, 0xCBFB, 0xCBFC, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCBFD, 0xCBFE, 0xCBFF, 0xCC00, 0xCC01, 0xCC02, 0xCC03,
+ 0xCC04, 0xCC05, 0xCC06, 0xCC07, 0xCC08, 0xCC09, 0xCC0A, 0xCC0B, 0xCC0E,
+ 0xCC0F, 0xCC11, 0xCC12, 0xCC13, 0xCC15, 0xCC16, 0xCC17, 0xCC18, 0xCC19,
+ 0xCC1A, 0xCC1B, 0xCC1E, 0xCC1F, 0xCC20, 0xCC23, 0xCC24, 0x00E6, 0x0111,
+ 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, 0x0142, 0x00F8, 0x0153,
+ 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, 0x3200, 0x3201, 0x3202, 0x3203,
+ 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209, 0x320A, 0x320B, 0x320C,
+ 0x320D, 0x320E, 0x320F, 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215,
+ 0x3216, 0x3217, 0x3218, 0x3219, 0x321A, 0x321B, 0x249C, 0x249D, 0x249E,
+ 0x249F, 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7,
+ 0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF, 0x24B0,
+ 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480,
+ 0x2481, 0x2482, 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x207F, 0x2081, 0x2082,
+ 0x2083, 0x2084, ERROR},
+ { ERROR, 0xCC25, 0xCC26, 0xCC2A, 0xCC2B, 0xCC2D, 0xCC2F, 0xCC31, 0xCC32,
+ 0xCC33, 0xCC34, 0xCC35, 0xCC36, 0xCC37, 0xCC3A, 0xCC3F, 0xCC40, 0xCC41,
+ 0xCC42, 0xCC43, 0xCC46, 0xCC47, 0xCC49, 0xCC4A, 0xCC4B, 0xCC4D, 0xCC4E,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCC4F, 0xCC50, 0xCC51,
+ 0xCC52, 0xCC53, 0xCC56, 0xCC5A, 0xCC5B, 0xCC5C, 0xCC5D, 0xCC5E, 0xCC5F,
+ 0xCC61, 0xCC62, 0xCC63, 0xCC65, 0xCC67, 0xCC69, 0xCC6A, 0xCC6B, 0xCC6C,
+ 0xCC6D, 0xCC6E, 0xCC6F, 0xCC71, 0xCC72, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCC73, 0xCC74, 0xCC76, 0xCC77, 0xCC78, 0xCC79, 0xCC7A,
+ 0xCC7B, 0xCC7C, 0xCC7D, 0xCC7E, 0xCC7F, 0xCC80, 0xCC81, 0xCC82, 0xCC83,
+ 0xCC84, 0xCC85, 0xCC86, 0xCC87, 0xCC88, 0xCC89, 0xCC8A, 0xCC8B, 0xCC8C,
+ 0xCC8D, 0xCC8E, 0xCC8F, 0xCC90, 0xCC91, 0xCC92, 0xCC93, 0x3041, 0x3042,
+ 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B,
+ 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054,
+ 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D,
+ 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+ 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
+ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081,
+ 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A,
+ 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCC94, 0xCC95, 0xCC96, 0xCC97, 0xCC9A, 0xCC9B, 0xCC9D, 0xCC9E,
+ 0xCC9F, 0xCCA1, 0xCCA2, 0xCCA3, 0xCCA4, 0xCCA5, 0xCCA6, 0xCCA7, 0xCCAA,
+ 0xCCAE, 0xCCAF, 0xCCB0, 0xCCB1, 0xCCB2, 0xCCB3, 0xCCB6, 0xCCB7, 0xCCB9,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCCBA, 0xCCBB, 0xCCBD,
+ 0xCCBE, 0xCCBF, 0xCCC0, 0xCCC1, 0xCCC2, 0xCCC3, 0xCCC6, 0xCCC8, 0xCCCA,
+ 0xCCCB, 0xCCCC, 0xCCCD, 0xCCCE, 0xCCCF, 0xCCD1, 0xCCD2, 0xCCD3, 0xCCD5,
+ 0xCCD6, 0xCCD7, 0xCCD8, 0xCCD9, 0xCCDA, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCCDB, 0xCCDC, 0xCCDD, 0xCCDE, 0xCCDF, 0xCCE0, 0xCCE1,
+ 0xCCE2, 0xCCE3, 0xCCE5, 0xCCE6, 0xCCE7, 0xCCE8, 0xCCE9, 0xCCEA, 0xCCEB,
+ 0xCCED, 0xCCEE, 0xCCEF, 0xCCF1, 0xCCF2, 0xCCF3, 0xCCF4, 0xCCF5, 0xCCF6,
+ 0xCCF7, 0xCCF8, 0xCCF9, 0xCCFA, 0xCCFB, 0xCCFC, 0xCCFD, 0x30A1, 0x30A2,
+ 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
+ 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4,
+ 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD,
+ 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6,
+ 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
+ 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+ 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1,
+ 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA,
+ 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
+ 0x30F4, 0x30F5, 0x30F6, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCCFE, 0xCCFF, 0xCD00, 0xCD02, 0xCD03, 0xCD04, 0xCD05, 0xCD06,
+ 0xCD07, 0xCD0A, 0xCD0B, 0xCD0D, 0xCD0E, 0xCD0F, 0xCD11, 0xCD12, 0xCD13,
+ 0xCD14, 0xCD15, 0xCD16, 0xCD17, 0xCD1A, 0xCD1C, 0xCD1E, 0xCD1F, 0xCD20,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCD21, 0xCD22, 0xCD23,
+ 0xCD25, 0xCD26, 0xCD27, 0xCD29, 0xCD2A, 0xCD2B, 0xCD2D, 0xCD2E, 0xCD2F,
+ 0xCD30, 0xCD31, 0xCD32, 0xCD33, 0xCD34, 0xCD35, 0xCD36, 0xCD37, 0xCD38,
+ 0xCD3A, 0xCD3B, 0xCD3C, 0xCD3D, 0xCD3E, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCD3F, 0xCD40, 0xCD41, 0xCD42, 0xCD43, 0xCD44, 0xCD45,
+ 0xCD46, 0xCD47, 0xCD48, 0xCD49, 0xCD4A, 0xCD4B, 0xCD4C, 0xCD4D, 0xCD4E,
+ 0xCD4F, 0xCD50, 0xCD51, 0xCD52, 0xCD53, 0xCD54, 0xCD55, 0xCD56, 0xCD57,
+ 0xCD58, 0xCD59, 0xCD5A, 0xCD5B, 0xCD5D, 0xCD5E, 0xCD5F, 0x0410, 0x0411,
+ 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419,
+ 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B,
+ 0x042C, 0x042D, 0x042E, 0x042F, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
+ 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCD61, 0xCD62, 0xCD63, 0xCD65, 0xCD66, 0xCD67, 0xCD68, 0xCD69,
+ 0xCD6A, 0xCD6B, 0xCD6E, 0xCD70, 0xCD72, 0xCD73, 0xCD74, 0xCD75, 0xCD76,
+ 0xCD77, 0xCD79, 0xCD7A, 0xCD7B, 0xCD7C, 0xCD7D, 0xCD7E, 0xCD7F, 0xCD80,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCD81, 0xCD82, 0xCD83,
+ 0xCD84, 0xCD85, 0xCD86, 0xCD87, 0xCD89, 0xCD8A, 0xCD8B, 0xCD8C, 0xCD8D,
+ 0xCD8E, 0xCD8F, 0xCD90, 0xCD91, 0xCD92, 0xCD93, 0xCD96, 0xCD97, 0xCD99,
+ 0xCD9A, 0xCD9B, 0xCD9D, 0xCD9E, 0xCD9F, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCDA0, 0xCDA1, 0xCDA2, 0xCDA3, 0xCDA6, 0xCDA8, 0xCDAA,
+ 0xCDAB, 0xCDAC, 0xCDAD, 0xCDAE, 0xCDAF, 0xCDB1, 0xCDB2, 0xCDB3, 0xCDB4,
+ 0xCDB5, 0xCDB6, 0xCDB7, 0xCDB8, 0xCDB9, 0xCDBA, 0xCDBB, 0xCDBC, 0xCDBD,
+ 0xCDBE, 0xCDBF, 0xCDC0, 0xCDC1, 0xCDC2, 0xCDC3, 0xCDC5, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCDC6, 0xCDC7, 0xCDC8, 0xCDC9, 0xCDCA, 0xCDCB, 0xCDCD, 0xCDCE,
+ 0xCDCF, 0xCDD1, 0xCDD2, 0xCDD3, 0xCDD4, 0xCDD5, 0xCDD6, 0xCDD7, 0xCDD8,
+ 0xCDD9, 0xCDDA, 0xCDDB, 0xCDDC, 0xCDDD, 0xCDDE, 0xCDDF, 0xCDE0, 0xCDE1,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCDE2, 0xCDE3, 0xCDE4,
+ 0xCDE5, 0xCDE6, 0xCDE7, 0xCDE9, 0xCDEA, 0xCDEB, 0xCDED, 0xCDEE, 0xCDEF,
+ 0xCDF1, 0xCDF2, 0xCDF3, 0xCDF4, 0xCDF5, 0xCDF6, 0xCDF7, 0xCDFA, 0xCDFC,
+ 0xCDFE, 0xCDFF, 0xCE00, 0xCE01, 0xCE02, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCE03, 0xCE05, 0xCE06, 0xCE07, 0xCE09, 0xCE0A, 0xCE0B,
+ 0xCE0D, 0xCE0E, 0xCE0F, 0xCE10, 0xCE11, 0xCE12, 0xCE13, 0xCE15, 0xCE16,
+ 0xCE17, 0xCE18, 0xCE1A, 0xCE1B, 0xCE1C, 0xCE1D, 0xCE1E, 0xCE1F, 0xCE22,
+ 0xCE23, 0xCE25, 0xCE26, 0xCE27, 0xCE29, 0xCE2A, 0xCE2B, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCE2C, 0xCE2D, 0xCE2E, 0xCE2F, 0xCE32, 0xCE34, 0xCE36, 0xCE37,
+ 0xCE38, 0xCE39, 0xCE3A, 0xCE3B, 0xCE3C, 0xCE3D, 0xCE3E, 0xCE3F, 0xCE40,
+ 0xCE41, 0xCE42, 0xCE43, 0xCE44, 0xCE45, 0xCE46, 0xCE47, 0xCE48, 0xCE49,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCE4A, 0xCE4B, 0xCE4C,
+ 0xCE4D, 0xCE4E, 0xCE4F, 0xCE50, 0xCE51, 0xCE52, 0xCE53, 0xCE54, 0xCE55,
+ 0xCE56, 0xCE57, 0xCE5A, 0xCE5B, 0xCE5D, 0xCE5E, 0xCE62, 0xCE63, 0xCE64,
+ 0xCE65, 0xCE66, 0xCE67, 0xCE6A, 0xCE6C, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCE6E, 0xCE6F, 0xCE70, 0xCE71, 0xCE72, 0xCE73, 0xCE76,
+ 0xCE77, 0xCE79, 0xCE7A, 0xCE7B, 0xCE7D, 0xCE7E, 0xCE7F, 0xCE80, 0xCE81,
+ 0xCE82, 0xCE83, 0xCE86, 0xCE88, 0xCE8A, 0xCE8B, 0xCE8C, 0xCE8D, 0xCE8E,
+ 0xCE8F, 0xCE92, 0xCE93, 0xCE95, 0xCE96, 0xCE97, 0xCE99, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, 0xCE9A, 0xCE9B, 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA2, 0xCEA6,
+ 0xCEA7, 0xCEA8, 0xCEA9, 0xCEAA, 0xCEAB, 0xCEAE, 0xCEAF, 0xCEB0, 0xCEB1,
+ 0xCEB2, 0xCEB3, 0xCEB4, 0xCEB5, 0xCEB6, 0xCEB7, 0xCEB8, 0xCEB9, 0xCEBA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCEBB, 0xCEBC, 0xCEBD,
+ 0xCEBE, 0xCEBF, 0xCEC0, 0xCEC2, 0xCEC3, 0xCEC4, 0xCEC5, 0xCEC6, 0xCEC7,
+ 0xCEC8, 0xCEC9, 0xCECA, 0xCECB, 0xCECC, 0xCECD, 0xCECE, 0xCECF, 0xCED0,
+ 0xCED1, 0xCED2, 0xCED3, 0xCED4, 0xCED5, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCED6, 0xCED7, 0xCED8, 0xCED9, 0xCEDA, 0xCEDB, 0xCEDC,
+ 0xCEDD, 0xCEDE, 0xCEDF, 0xCEE0, 0xCEE1, 0xCEE2, 0xCEE3, 0xCEE6, 0xCEE7,
+ 0xCEE9, 0xCEEA, 0xCEED, 0xCEEE, 0xCEEF, 0xCEF0, 0xCEF1, 0xCEF2, 0xCEF3,
+ 0xCEF6, 0xCEFA, 0xCEFB, 0xCEFC, 0xCEFD, 0xCEFE, 0xCEFF, 0xAC00, 0xAC01,
+ 0xAC04, 0xAC07, 0xAC08, 0xAC09, 0xAC0A, 0xAC10, 0xAC11, 0xAC12, 0xAC13,
+ 0xAC14, 0xAC15, 0xAC16, 0xAC17, 0xAC19, 0xAC1A, 0xAC1B, 0xAC1C, 0xAC1D,
+ 0xAC20, 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, 0xAC38, 0xAC39,
+ 0xAC3C, 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, 0xAC5C, 0xAC70, 0xAC71,
+ 0xAC74, 0xAC77, 0xAC78, 0xAC7A, 0xAC80, 0xAC81, 0xAC83, 0xAC84, 0xAC85,
+ 0xAC86, 0xAC89, 0xAC8A, 0xAC8B, 0xAC8C, 0xAC90, 0xAC94, 0xAC9C, 0xAC9D,
+ 0xAC9F, 0xACA0, 0xACA1, 0xACA8, 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0,
+ 0xACB8, 0xACB9, 0xACBB, 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC,
+ 0xACD5, 0xACD7, 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC,
+ 0xACEF, 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, 0xAD00,
+ 0xAD04, 0xAD06, ERROR},
+ { ERROR, 0xCF02, 0xCF03, 0xCF05, 0xCF06, 0xCF07, 0xCF09, 0xCF0A, 0xCF0B,
+ 0xCF0C, 0xCF0D, 0xCF0E, 0xCF0F, 0xCF12, 0xCF14, 0xCF16, 0xCF17, 0xCF18,
+ 0xCF19, 0xCF1A, 0xCF1B, 0xCF1D, 0xCF1E, 0xCF1F, 0xCF21, 0xCF22, 0xCF23,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCF25, 0xCF26, 0xCF27,
+ 0xCF28, 0xCF29, 0xCF2A, 0xCF2B, 0xCF2E, 0xCF32, 0xCF33, 0xCF34, 0xCF35,
+ 0xCF36, 0xCF37, 0xCF39, 0xCF3A, 0xCF3B, 0xCF3C, 0xCF3D, 0xCF3E, 0xCF3F,
+ 0xCF40, 0xCF41, 0xCF42, 0xCF43, 0xCF44, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCF45, 0xCF46, 0xCF47, 0xCF48, 0xCF49, 0xCF4A, 0xCF4B,
+ 0xCF4C, 0xCF4D, 0xCF4E, 0xCF4F, 0xCF50, 0xCF51, 0xCF52, 0xCF53, 0xCF56,
+ 0xCF57, 0xCF59, 0xCF5A, 0xCF5B, 0xCF5D, 0xCF5E, 0xCF5F, 0xCF60, 0xCF61,
+ 0xCF62, 0xCF63, 0xCF66, 0xCF68, 0xCF6A, 0xCF6B, 0xCF6C, 0xAD0C, 0xAD0D,
+ 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, 0xAD20, 0xAD29, 0xAD2C, 0xAD2D, 0xAD34,
+ 0xAD35, 0xAD38, 0xAD3C, 0xAD44, 0xAD45, 0xAD47, 0xAD49, 0xAD50, 0xAD54,
+ 0xAD58, 0xAD61, 0xAD63, 0xAD6C, 0xAD6D, 0xAD70, 0xAD73, 0xAD74, 0xAD75,
+ 0xAD76, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7F, 0xAD81, 0xAD82, 0xAD88, 0xAD89,
+ 0xAD8C, 0xAD90, 0xAD9C, 0xAD9D, 0xADA4, 0xADB7, 0xADC0, 0xADC1, 0xADC4,
+ 0xADC8, 0xADD0, 0xADD1, 0xADD3, 0xADDC, 0xADE0, 0xADE4, 0xADF8, 0xADF9,
+ 0xADFC, 0xADFF, 0xAE00, 0xAE01, 0xAE08, 0xAE09, 0xAE0B, 0xAE0D, 0xAE14,
+ 0xAE30, 0xAE31, 0xAE34, 0xAE37, 0xAE38, 0xAE3A, 0xAE40, 0xAE41, 0xAE43,
+ 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, 0xAE4D, 0xAE4E, 0xAE50, 0xAE54, 0xAE56,
+ 0xAE5C, 0xAE5D, 0xAE5F, 0xAE60, 0xAE61, 0xAE65, 0xAE68, 0xAE69, 0xAE6C,
+ 0xAE70, 0xAE78, ERROR},
+ { ERROR, 0xCF6D, 0xCF6E, 0xCF6F, 0xCF72, 0xCF73, 0xCF75, 0xCF76, 0xCF77,
+ 0xCF79, 0xCF7A, 0xCF7B, 0xCF7C, 0xCF7D, 0xCF7E, 0xCF7F, 0xCF81, 0xCF82,
+ 0xCF83, 0xCF84, 0xCF86, 0xCF87, 0xCF88, 0xCF89, 0xCF8A, 0xCF8B, 0xCF8D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCF8E, 0xCF8F, 0xCF90,
+ 0xCF91, 0xCF92, 0xCF93, 0xCF94, 0xCF95, 0xCF96, 0xCF97, 0xCF98, 0xCF99,
+ 0xCF9A, 0xCF9B, 0xCF9C, 0xCF9D, 0xCF9E, 0xCF9F, 0xCFA0, 0xCFA2, 0xCFA3,
+ 0xCFA4, 0xCFA5, 0xCFA6, 0xCFA7, 0xCFA9, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xCFAA, 0xCFAB, 0xCFAC, 0xCFAD, 0xCFAE, 0xCFAF, 0xCFB1,
+ 0xCFB2, 0xCFB3, 0xCFB4, 0xCFB5, 0xCFB6, 0xCFB7, 0xCFB8, 0xCFB9, 0xCFBA,
+ 0xCFBB, 0xCFBC, 0xCFBD, 0xCFBE, 0xCFBF, 0xCFC0, 0xCFC1, 0xCFC2, 0xCFC3,
+ 0xCFC5, 0xCFC6, 0xCFC7, 0xCFC8, 0xCFC9, 0xCFCA, 0xCFCB, 0xAE79, 0xAE7B,
+ 0xAE7C, 0xAE7D, 0xAE84, 0xAE85, 0xAE8C, 0xAEBC, 0xAEBD, 0xAEBE, 0xAEC0,
+ 0xAEC4, 0xAECC, 0xAECD, 0xAECF, 0xAED0, 0xAED1, 0xAED8, 0xAED9, 0xAEDC,
+ 0xAEE8, 0xAEEB, 0xAEED, 0xAEF4, 0xAEF8, 0xAEFC, 0xAF07, 0xAF08, 0xAF0D,
+ 0xAF10, 0xAF2C, 0xAF2D, 0xAF30, 0xAF32, 0xAF34, 0xAF3C, 0xAF3D, 0xAF3F,
+ 0xAF41, 0xAF42, 0xAF43, 0xAF48, 0xAF49, 0xAF50, 0xAF5C, 0xAF5D, 0xAF64,
+ 0xAF65, 0xAF79, 0xAF80, 0xAF84, 0xAF88, 0xAF90, 0xAF91, 0xAF95, 0xAF9C,
+ 0xAFB8, 0xAFB9, 0xAFBC, 0xAFC0, 0xAFC7, 0xAFC8, 0xAFC9, 0xAFCB, 0xAFCD,
+ 0xAFCE, 0xAFD4, 0xAFDC, 0xAFE8, 0xAFE9, 0xAFF0, 0xAFF1, 0xAFF4, 0xAFF8,
+ 0xB000, 0xB001, 0xB004, 0xB00C, 0xB010, 0xB014, 0xB01C, 0xB01D, 0xB028,
+ 0xB044, 0xB045, 0xB048, 0xB04A, 0xB04C, 0xB04E, 0xB053, 0xB054, 0xB055,
+ 0xB057, 0xB059, ERROR},
+ { ERROR, 0xCFCC, 0xCFCD, 0xCFCE, 0xCFCF, 0xCFD0, 0xCFD1, 0xCFD2, 0xCFD3,
+ 0xCFD4, 0xCFD5, 0xCFD6, 0xCFD7, 0xCFD8, 0xCFD9, 0xCFDA, 0xCFDB, 0xCFDC,
+ 0xCFDD, 0xCFDE, 0xCFDF, 0xCFE2, 0xCFE3, 0xCFE5, 0xCFE6, 0xCFE7, 0xCFE9,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xCFEA, 0xCFEB, 0xCFEC,
+ 0xCFED, 0xCFEE, 0xCFEF, 0xCFF2, 0xCFF4, 0xCFF6, 0xCFF7, 0xCFF8, 0xCFF9,
+ 0xCFFA, 0xCFFB, 0xCFFD, 0xCFFE, 0xCFFF, 0xD001, 0xD002, 0xD003, 0xD005,
+ 0xD006, 0xD007, 0xD008, 0xD009, 0xD00A, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD00B, 0xD00C, 0xD00D, 0xD00E, 0xD00F, 0xD010, 0xD012,
+ 0xD013, 0xD014, 0xD015, 0xD016, 0xD017, 0xD019, 0xD01A, 0xD01B, 0xD01C,
+ 0xD01D, 0xD01E, 0xD01F, 0xD020, 0xD021, 0xD022, 0xD023, 0xD024, 0xD025,
+ 0xD026, 0xD027, 0xD028, 0xD029, 0xD02A, 0xD02B, 0xD02C, 0xB05D, 0xB07C,
+ 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, 0xB091, 0xB098, 0xB099,
+ 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, 0xB0A2, 0xB0A8, 0xB0A9, 0xB0AB,
+ 0xB0AC, 0xB0AD, 0xB0AE, 0xB0AF, 0xB0B1, 0xB0B3, 0xB0B4, 0xB0B5, 0xB0B8,
+ 0xB0BC, 0xB0C4, 0xB0C5, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0, 0xB0D1, 0xB0D4,
+ 0xB0D8, 0xB0E0, 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C, 0xB110, 0xB112,
+ 0xB113, 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123, 0xB124, 0xB125,
+ 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, 0xB139, 0xB140, 0xB141,
+ 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, 0xB155, 0xB158, 0xB15C, 0xB160,
+ 0xB178, 0xB179, 0xB17C, 0xB180, 0xB182, 0xB188, 0xB189, 0xB18B, 0xB18D,
+ 0xB192, 0xB193, 0xB194, 0xB198, 0xB19C, 0xB1A8, 0xB1CC, 0xB1D0, 0xB1D4,
+ 0xB1DC, 0xB1DD, ERROR},
+ { ERROR, 0xD02E, 0xD02F, 0xD030, 0xD031, 0xD032, 0xD033, 0xD036, 0xD037,
+ 0xD039, 0xD03A, 0xD03B, 0xD03D, 0xD03E, 0xD03F, 0xD040, 0xD041, 0xD042,
+ 0xD043, 0xD046, 0xD048, 0xD04A, 0xD04B, 0xD04C, 0xD04D, 0xD04E, 0xD04F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD051, 0xD052, 0xD053,
+ 0xD055, 0xD056, 0xD057, 0xD059, 0xD05A, 0xD05B, 0xD05C, 0xD05D, 0xD05E,
+ 0xD05F, 0xD061, 0xD062, 0xD063, 0xD064, 0xD065, 0xD066, 0xD067, 0xD068,
+ 0xD069, 0xD06A, 0xD06B, 0xD06E, 0xD06F, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD071, 0xD072, 0xD073, 0xD075, 0xD076, 0xD077, 0xD078,
+ 0xD079, 0xD07A, 0xD07B, 0xD07E, 0xD07F, 0xD080, 0xD082, 0xD083, 0xD084,
+ 0xD085, 0xD086, 0xD087, 0xD088, 0xD089, 0xD08A, 0xD08B, 0xD08C, 0xD08D,
+ 0xD08E, 0xD08F, 0xD090, 0xD091, 0xD092, 0xD093, 0xD094, 0xB1DF, 0xB1E8,
+ 0xB1E9, 0xB1EC, 0xB1F0, 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, 0xB205, 0xB208,
+ 0xB20B, 0xB20C, 0xB214, 0xB215, 0xB217, 0xB219, 0xB220, 0xB234, 0xB23C,
+ 0xB258, 0xB25C, 0xB260, 0xB268, 0xB269, 0xB274, 0xB275, 0xB27C, 0xB284,
+ 0xB285, 0xB289, 0xB290, 0xB291, 0xB294, 0xB298, 0xB299, 0xB29A, 0xB2A0,
+ 0xB2A1, 0xB2A3, 0xB2A5, 0xB2A6, 0xB2AA, 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8,
+ 0xB2C9, 0xB2CC, 0xB2D0, 0xB2D2, 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2,
+ 0xB2E4, 0xB2E5, 0xB2E6, 0xB2E8, 0xB2EB, 0xB2EC, 0xB2ED, 0xB2EE, 0xB2EF,
+ 0xB2F3, 0xB2F4, 0xB2F5, 0xB2F7, 0xB2F8, 0xB2F9, 0xB2FA, 0xB2FB, 0xB2FF,
+ 0xB300, 0xB301, 0xB304, 0xB308, 0xB310, 0xB311, 0xB313, 0xB314, 0xB315,
+ 0xB31C, 0xB354, 0xB355, 0xB356, 0xB358, 0xB35B, 0xB35C, 0xB35E, 0xB35F,
+ 0xB364, 0xB365, ERROR},
+ { ERROR, 0xD095, 0xD096, 0xD097, 0xD098, 0xD099, 0xD09A, 0xD09B, 0xD09C,
+ 0xD09D, 0xD09E, 0xD09F, 0xD0A0, 0xD0A1, 0xD0A2, 0xD0A3, 0xD0A6, 0xD0A7,
+ 0xD0A9, 0xD0AA, 0xD0AB, 0xD0AD, 0xD0AE, 0xD0AF, 0xD0B0, 0xD0B1, 0xD0B2,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD0B3, 0xD0B6, 0xD0B8,
+ 0xD0BA, 0xD0BB, 0xD0BC, 0xD0BD, 0xD0BE, 0xD0BF, 0xD0C2, 0xD0C3, 0xD0C5,
+ 0xD0C6, 0xD0C7, 0xD0CA, 0xD0CB, 0xD0CC, 0xD0CD, 0xD0CE, 0xD0CF, 0xD0D2,
+ 0xD0D6, 0xD0D7, 0xD0D8, 0xD0D9, 0xD0DA, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD0DB, 0xD0DE, 0xD0DF, 0xD0E1, 0xD0E2, 0xD0E3, 0xD0E5,
+ 0xD0E6, 0xD0E7, 0xD0E8, 0xD0E9, 0xD0EA, 0xD0EB, 0xD0EE, 0xD0F2, 0xD0F3,
+ 0xD0F4, 0xD0F5, 0xD0F6, 0xD0F7, 0xD0F9, 0xD0FA, 0xD0FB, 0xD0FC, 0xD0FD,
+ 0xD0FE, 0xD0FF, 0xD100, 0xD101, 0xD102, 0xD103, 0xD104, 0xB367, 0xB369,
+ 0xB36B, 0xB36E, 0xB370, 0xB371, 0xB374, 0xB378, 0xB380, 0xB381, 0xB383,
+ 0xB384, 0xB385, 0xB38C, 0xB390, 0xB394, 0xB3A0, 0xB3A1, 0xB3A8, 0xB3AC,
+ 0xB3C4, 0xB3C5, 0xB3C8, 0xB3CB, 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4, 0xB3D5,
+ 0xB3D7, 0xB3D9, 0xB3DB, 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, 0xB3FC, 0xB410,
+ 0xB418, 0xB41C, 0xB420, 0xB428, 0xB429, 0xB42B, 0xB434, 0xB450, 0xB451,
+ 0xB454, 0xB458, 0xB460, 0xB461, 0xB463, 0xB465, 0xB46C, 0xB480, 0xB488,
+ 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, 0xB4B5, 0xB4B7, 0xB4B9, 0xB4C0, 0xB4C4,
+ 0xB4C8, 0xB4D0, 0xB4D5, 0xB4DC, 0xB4DD, 0xB4E0, 0xB4E3, 0xB4E4, 0xB4E6,
+ 0xB4EC, 0xB4ED, 0xB4EF, 0xB4F1, 0xB4F8, 0xB514, 0xB515, 0xB518, 0xB51B,
+ 0xB51C, 0xB524, 0xB525, 0xB527, 0xB528, 0xB529, 0xB52A, 0xB530, 0xB531,
+ 0xB534, 0xB538, ERROR},
+ { ERROR, 0xD105, 0xD106, 0xD107, 0xD108, 0xD109, 0xD10A, 0xD10B, 0xD10C,
+ 0xD10E, 0xD10F, 0xD110, 0xD111, 0xD112, 0xD113, 0xD114, 0xD115, 0xD116,
+ 0xD117, 0xD118, 0xD119, 0xD11A, 0xD11B, 0xD11C, 0xD11D, 0xD11E, 0xD11F,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD120, 0xD121, 0xD122,
+ 0xD123, 0xD124, 0xD125, 0xD126, 0xD127, 0xD128, 0xD129, 0xD12A, 0xD12B,
+ 0xD12C, 0xD12D, 0xD12E, 0xD12F, 0xD132, 0xD133, 0xD135, 0xD136, 0xD137,
+ 0xD139, 0xD13B, 0xD13C, 0xD13D, 0xD13E, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD13F, 0xD142, 0xD146, 0xD147, 0xD148, 0xD149, 0xD14A,
+ 0xD14B, 0xD14E, 0xD14F, 0xD151, 0xD152, 0xD153, 0xD155, 0xD156, 0xD157,
+ 0xD158, 0xD159, 0xD15A, 0xD15B, 0xD15E, 0xD160, 0xD162, 0xD163, 0xD164,
+ 0xD165, 0xD166, 0xD167, 0xD169, 0xD16A, 0xD16B, 0xD16D, 0xB540, 0xB541,
+ 0xB543, 0xB544, 0xB545, 0xB54B, 0xB54C, 0xB54D, 0xB550, 0xB554, 0xB55C,
+ 0xB55D, 0xB55F, 0xB560, 0xB561, 0xB5A0, 0xB5A1, 0xB5A4, 0xB5A8, 0xB5AA,
+ 0xB5AB, 0xB5B0, 0xB5B1, 0xB5B3, 0xB5B4, 0xB5B5, 0xB5BB, 0xB5BC, 0xB5BD,
+ 0xB5C0, 0xB5C4, 0xB5CC, 0xB5CD, 0xB5CF, 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC,
+ 0xB610, 0xB611, 0xB614, 0xB618, 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664,
+ 0xB668, 0xB69C, 0xB69D, 0xB6A0, 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, 0xB6D4,
+ 0xB6F0, 0xB6F4, 0xB6F8, 0xB700, 0xB701, 0xB705, 0xB728, 0xB729, 0xB72C,
+ 0xB72F, 0xB730, 0xB738, 0xB739, 0xB73B, 0xB744, 0xB748, 0xB74C, 0xB754,
+ 0xB755, 0xB760, 0xB764, 0xB768, 0xB770, 0xB771, 0xB773, 0xB775, 0xB77C,
+ 0xB77D, 0xB780, 0xB784, 0xB78C, 0xB78D, 0xB78F, 0xB790, 0xB791, 0xB792,
+ 0xB796, 0xB797, ERROR},
+ { ERROR, 0xD16E, 0xD16F, 0xD170, 0xD171, 0xD172, 0xD173, 0xD174, 0xD175,
+ 0xD176, 0xD177, 0xD178, 0xD179, 0xD17A, 0xD17B, 0xD17D, 0xD17E, 0xD17F,
+ 0xD180, 0xD181, 0xD182, 0xD183, 0xD185, 0xD186, 0xD187, 0xD189, 0xD18A,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD18B, 0xD18C, 0xD18D,
+ 0xD18E, 0xD18F, 0xD190, 0xD191, 0xD192, 0xD193, 0xD194, 0xD195, 0xD196,
+ 0xD197, 0xD198, 0xD199, 0xD19A, 0xD19B, 0xD19C, 0xD19D, 0xD19E, 0xD19F,
+ 0xD1A2, 0xD1A3, 0xD1A5, 0xD1A6, 0xD1A7, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD1A9, 0xD1AA, 0xD1AB, 0xD1AC, 0xD1AD, 0xD1AE, 0xD1AF,
+ 0xD1B2, 0xD1B4, 0xD1B6, 0xD1B7, 0xD1B8, 0xD1B9, 0xD1BB, 0xD1BD, 0xD1BE,
+ 0xD1BF, 0xD1C1, 0xD1C2, 0xD1C3, 0xD1C4, 0xD1C5, 0xD1C6, 0xD1C7, 0xD1C8,
+ 0xD1C9, 0xD1CA, 0xD1CB, 0xD1CC, 0xD1CD, 0xD1CE, 0xD1CF, 0xB798, 0xB799,
+ 0xB79C, 0xB7A0, 0xB7A8, 0xB7A9, 0xB7AB, 0xB7AC, 0xB7AD, 0xB7B4, 0xB7B5,
+ 0xB7B8, 0xB7C7, 0xB7C9, 0xB7EC, 0xB7ED, 0xB7F0, 0xB7F4, 0xB7FC, 0xB7FD,
+ 0xB7FF, 0xB800, 0xB801, 0xB807, 0xB808, 0xB809, 0xB80C, 0xB810, 0xB818,
+ 0xB819, 0xB81B, 0xB81D, 0xB824, 0xB825, 0xB828, 0xB82C, 0xB834, 0xB835,
+ 0xB837, 0xB838, 0xB839, 0xB840, 0xB844, 0xB851, 0xB853, 0xB85C, 0xB85D,
+ 0xB860, 0xB864, 0xB86C, 0xB86D, 0xB86F, 0xB871, 0xB878, 0xB87C, 0xB88D,
+ 0xB8A8, 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, 0xB8C1, 0xB8C3, 0xB8C5, 0xB8CC,
+ 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, 0xB8E1, 0xB8E8, 0xB8E9, 0xB8EC, 0xB8F0,
+ 0xB8F8, 0xB8F9, 0xB8FB, 0xB8FD, 0xB904, 0xB918, 0xB920, 0xB93C, 0xB93D,
+ 0xB940, 0xB944, 0xB94C, 0xB94F, 0xB951, 0xB958, 0xB959, 0xB95C, 0xB960,
+ 0xB968, 0xB969, ERROR},
+ { ERROR, 0xD1D0, 0xD1D1, 0xD1D2, 0xD1D3, 0xD1D4, 0xD1D5, 0xD1D6, 0xD1D7,
+ 0xD1D9, 0xD1DA, 0xD1DB, 0xD1DC, 0xD1DD, 0xD1DE, 0xD1DF, 0xD1E0, 0xD1E1,
+ 0xD1E2, 0xD1E3, 0xD1E4, 0xD1E5, 0xD1E6, 0xD1E7, 0xD1E8, 0xD1E9, 0xD1EA,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD1EB, 0xD1EC, 0xD1ED,
+ 0xD1EE, 0xD1EF, 0xD1F0, 0xD1F1, 0xD1F2, 0xD1F3, 0xD1F5, 0xD1F6, 0xD1F7,
+ 0xD1F9, 0xD1FA, 0xD1FB, 0xD1FC, 0xD1FD, 0xD1FE, 0xD1FF, 0xD200, 0xD201,
+ 0xD202, 0xD203, 0xD204, 0xD205, 0xD206, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD208, 0xD20A, 0xD20B, 0xD20C, 0xD20D, 0xD20E, 0xD20F,
+ 0xD211, 0xD212, 0xD213, 0xD214, 0xD215, 0xD216, 0xD217, 0xD218, 0xD219,
+ 0xD21A, 0xD21B, 0xD21C, 0xD21D, 0xD21E, 0xD21F, 0xD220, 0xD221, 0xD222,
+ 0xD223, 0xD224, 0xD225, 0xD226, 0xD227, 0xD228, 0xD229, 0xB96B, 0xB96D,
+ 0xB974, 0xB975, 0xB978, 0xB97C, 0xB984, 0xB985, 0xB987, 0xB989, 0xB98A,
+ 0xB98D, 0xB98E, 0xB9AC, 0xB9AD, 0xB9B0, 0xB9B4, 0xB9BC, 0xB9BD, 0xB9BF,
+ 0xB9C1, 0xB9C8, 0xB9C9, 0xB9CC, 0xB9CE, 0xB9CF, 0xB9D0, 0xB9D1, 0xB9D2,
+ 0xB9D8, 0xB9D9, 0xB9DB, 0xB9DD, 0xB9DE, 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5,
+ 0xB9E8, 0xB9EC, 0xB9F4, 0xB9F5, 0xB9F7, 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00,
+ 0xBA01, 0xBA08, 0xBA15, 0xBA38, 0xBA39, 0xBA3C, 0xBA40, 0xBA42, 0xBA48,
+ 0xBA49, 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53, 0xBA54, 0xBA55, 0xBA58, 0xBA5C,
+ 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69, 0xBA70, 0xBA71, 0xBA74, 0xBA78,
+ 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C, 0xBAA8, 0xBAA9, 0xBAAB, 0xBAAC,
+ 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, 0xBABB, 0xBABD, 0xBAC4, 0xBAC8, 0xBAD8,
+ 0xBAD9, 0xBAFC, ERROR},
+ { ERROR, 0xD22A, 0xD22B, 0xD22E, 0xD22F, 0xD231, 0xD232, 0xD233, 0xD235,
+ 0xD236, 0xD237, 0xD238, 0xD239, 0xD23A, 0xD23B, 0xD23E, 0xD240, 0xD242,
+ 0xD243, 0xD244, 0xD245, 0xD246, 0xD247, 0xD249, 0xD24A, 0xD24B, 0xD24C,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD24D, 0xD24E, 0xD24F,
+ 0xD250, 0xD251, 0xD252, 0xD253, 0xD254, 0xD255, 0xD256, 0xD257, 0xD258,
+ 0xD259, 0xD25A, 0xD25B, 0xD25D, 0xD25E, 0xD25F, 0xD260, 0xD261, 0xD262,
+ 0xD263, 0xD265, 0xD266, 0xD267, 0xD268, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD269, 0xD26A, 0xD26B, 0xD26C, 0xD26D, 0xD26E, 0xD26F,
+ 0xD270, 0xD271, 0xD272, 0xD273, 0xD274, 0xD275, 0xD276, 0xD277, 0xD278,
+ 0xD279, 0xD27A, 0xD27B, 0xD27C, 0xD27D, 0xD27E, 0xD27F, 0xD282, 0xD283,
+ 0xD285, 0xD286, 0xD287, 0xD289, 0xD28A, 0xD28B, 0xD28C, 0xBB00, 0xBB04,
+ 0xBB0D, 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, 0xBB2B, 0xBB34,
+ 0xBB35, 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, 0xBB3E, 0xBB44, 0xBB45,
+ 0xBB47, 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, 0xBB54, 0xBB58, 0xBB61, 0xBB63,
+ 0xBB6C, 0xBB88, 0xBB8C, 0xBB90, 0xBBA4, 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7,
+ 0xBBC0, 0xBBC4, 0xBBC8, 0xBBD0, 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF,
+ 0xBC00, 0xBC02, 0xBC08, 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11,
+ 0xBC14, 0xBC15, 0xBC16, 0xBC17, 0xBC18, 0xBC1B, 0xBC1C, 0xBC1D, 0xBC1E,
+ 0xBC1F, 0xBC24, 0xBC25, 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34,
+ 0xBC38, 0xBC40, 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, 0xBC4D,
+ 0xBC50, 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, 0xBC8E, 0xBC94,
+ 0xBC95, 0xBC97, ERROR},
+ { ERROR, 0xD28D, 0xD28E, 0xD28F, 0xD292, 0xD293, 0xD294, 0xD296, 0xD297,
+ 0xD298, 0xD299, 0xD29A, 0xD29B, 0xD29D, 0xD29E, 0xD29F, 0xD2A1, 0xD2A2,
+ 0xD2A3, 0xD2A5, 0xD2A6, 0xD2A7, 0xD2A8, 0xD2A9, 0xD2AA, 0xD2AB, 0xD2AD,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD2AE, 0xD2AF, 0xD2B0,
+ 0xD2B2, 0xD2B3, 0xD2B4, 0xD2B5, 0xD2B6, 0xD2B7, 0xD2BA, 0xD2BB, 0xD2BD,
+ 0xD2BE, 0xD2C1, 0xD2C3, 0xD2C4, 0xD2C5, 0xD2C6, 0xD2C7, 0xD2CA, 0xD2CC,
+ 0xD2CD, 0xD2CE, 0xD2CF, 0xD2D0, 0xD2D1, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD2D2, 0xD2D3, 0xD2D5, 0xD2D6, 0xD2D7, 0xD2D9, 0xD2DA,
+ 0xD2DB, 0xD2DD, 0xD2DE, 0xD2DF, 0xD2E0, 0xD2E1, 0xD2E2, 0xD2E3, 0xD2E6,
+ 0xD2E7, 0xD2E8, 0xD2E9, 0xD2EA, 0xD2EB, 0xD2EC, 0xD2ED, 0xD2EE, 0xD2EF,
+ 0xD2F2, 0xD2F3, 0xD2F5, 0xD2F6, 0xD2F7, 0xD2F9, 0xD2FA, 0xBC99, 0xBC9A,
+ 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, 0xBCA8, 0xBCB0, 0xBCB1, 0xBCB3, 0xBCB4,
+ 0xBCB5, 0xBCBC, 0xBCBD, 0xBCC0, 0xBCC4, 0xBCCD, 0xBCCF, 0xBCD0, 0xBCD1,
+ 0xBCD5, 0xBCD8, 0xBCDC, 0xBCF4, 0xBCF5, 0xBCF6, 0xBCF8, 0xBCFC, 0xBD04,
+ 0xBD05, 0xBD07, 0xBD09, 0xBD10, 0xBD14, 0xBD24, 0xBD2C, 0xBD40, 0xBD48,
+ 0xBD49, 0xBD4C, 0xBD50, 0xBD58, 0xBD59, 0xBD64, 0xBD68, 0xBD80, 0xBD81,
+ 0xBD84, 0xBD87, 0xBD88, 0xBD89, 0xBD8A, 0xBD90, 0xBD91, 0xBD93, 0xBD95,
+ 0xBD99, 0xBD9A, 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8, 0xBDD4, 0xBDD5, 0xBDD8,
+ 0xBDDC, 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, 0xBE00, 0xBE03, 0xBE05, 0xBE0C,
+ 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, 0xBE1D, 0xBE1F, 0xBE44, 0xBE45, 0xBE48,
+ 0xBE4C, 0xBE4E, 0xBE54, 0xBE55, 0xBE57, 0xBE59, 0xBE5A, 0xBE5B, 0xBE60,
+ 0xBE61, 0xBE64, ERROR},
+ { ERROR, 0xD2FB, 0xD2FC, 0xD2FD, 0xD2FE, 0xD2FF, 0xD302, 0xD304, 0xD306,
+ 0xD307, 0xD308, 0xD309, 0xD30A, 0xD30B, 0xD30F, 0xD311, 0xD312, 0xD313,
+ 0xD315, 0xD317, 0xD318, 0xD319, 0xD31A, 0xD31B, 0xD31E, 0xD322, 0xD323,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD324, 0xD326, 0xD327,
+ 0xD32A, 0xD32B, 0xD32D, 0xD32E, 0xD32F, 0xD331, 0xD332, 0xD333, 0xD334,
+ 0xD335, 0xD336, 0xD337, 0xD33A, 0xD33E, 0xD33F, 0xD340, 0xD341, 0xD342,
+ 0xD343, 0xD346, 0xD347, 0xD348, 0xD349, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD34A, 0xD34B, 0xD34C, 0xD34D, 0xD34E, 0xD34F, 0xD350,
+ 0xD351, 0xD352, 0xD353, 0xD354, 0xD355, 0xD356, 0xD357, 0xD358, 0xD359,
+ 0xD35A, 0xD35B, 0xD35C, 0xD35D, 0xD35E, 0xD35F, 0xD360, 0xD361, 0xD362,
+ 0xD363, 0xD364, 0xD365, 0xD366, 0xD367, 0xD368, 0xD369, 0xBE68, 0xBE6A,
+ 0xBE70, 0xBE71, 0xBE73, 0xBE74, 0xBE75, 0xBE7B, 0xBE7C, 0xBE7D, 0xBE80,
+ 0xBE84, 0xBE8C, 0xBE8D, 0xBE8F, 0xBE90, 0xBE91, 0xBE98, 0xBE99, 0xBEA8,
+ 0xBED0, 0xBED1, 0xBED4, 0xBED7, 0xBED8, 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5,
+ 0xBEEC, 0xBF01, 0xBF08, 0xBF09, 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D,
+ 0xBF40, 0xBF41, 0xBF44, 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, 0xBFB0,
+ 0xBFC5, 0xBFCC, 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, 0xBFE1, 0xC03C,
+ 0xC051, 0xC058, 0xC05C, 0xC060, 0xC068, 0xC069, 0xC090, 0xC091, 0xC094,
+ 0xC098, 0xC0A0, 0xC0A1, 0xC0A3, 0xC0A5, 0xC0AC, 0xC0AD, 0xC0AF, 0xC0B0,
+ 0xC0B3, 0xC0B4, 0xC0B5, 0xC0B6, 0xC0BC, 0xC0BD, 0xC0BF, 0xC0C0, 0xC0C1,
+ 0xC0C5, 0xC0C8, 0xC0C9, 0xC0CC, 0xC0D0, 0xC0D8, 0xC0D9, 0xC0DB, 0xC0DC,
+ 0xC0DD, 0xC0E4, ERROR},
+ { ERROR, 0xD36A, 0xD36B, 0xD36C, 0xD36D, 0xD36E, 0xD36F, 0xD370, 0xD371,
+ 0xD372, 0xD373, 0xD374, 0xD375, 0xD376, 0xD377, 0xD378, 0xD379, 0xD37A,
+ 0xD37B, 0xD37E, 0xD37F, 0xD381, 0xD382, 0xD383, 0xD385, 0xD386, 0xD387,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD388, 0xD389, 0xD38A,
+ 0xD38B, 0xD38E, 0xD392, 0xD393, 0xD394, 0xD395, 0xD396, 0xD397, 0xD39A,
+ 0xD39B, 0xD39D, 0xD39E, 0xD39F, 0xD3A1, 0xD3A2, 0xD3A3, 0xD3A4, 0xD3A5,
+ 0xD3A6, 0xD3A7, 0xD3AA, 0xD3AC, 0xD3AE, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD3AF, 0xD3B0, 0xD3B1, 0xD3B2, 0xD3B3, 0xD3B5, 0xD3B6,
+ 0xD3B7, 0xD3B9, 0xD3BA, 0xD3BB, 0xD3BD, 0xD3BE, 0xD3BF, 0xD3C0, 0xD3C1,
+ 0xD3C2, 0xD3C3, 0xD3C6, 0xD3C7, 0xD3CA, 0xD3CB, 0xD3CC, 0xD3CD, 0xD3CE,
+ 0xD3CF, 0xD3D1, 0xD3D2, 0xD3D3, 0xD3D4, 0xD3D5, 0xD3D6, 0xC0E5, 0xC0E8,
+ 0xC0EC, 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104, 0xC108, 0xC110,
+ 0xC115, 0xC11C, 0xC11D, 0xC11E, 0xC11F, 0xC120, 0xC123, 0xC124, 0xC126,
+ 0xC127, 0xC12C, 0xC12D, 0xC12F, 0xC130, 0xC131, 0xC136, 0xC138, 0xC139,
+ 0xC13C, 0xC140, 0xC148, 0xC149, 0xC14B, 0xC14C, 0xC14D, 0xC154, 0xC155,
+ 0xC158, 0xC15C, 0xC164, 0xC165, 0xC167, 0xC168, 0xC169, 0xC170, 0xC174,
+ 0xC178, 0xC185, 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194, 0xC196, 0xC19C,
+ 0xC19D, 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC, 0xC1B0, 0xC1BD,
+ 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, 0xC1E0, 0xC1E4, 0xC1E8,
+ 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, 0xC200, 0xC204, 0xC20C, 0xC20D,
+ 0xC20F, 0xC211, 0xC218, 0xC219, 0xC21C, 0xC21F, 0xC220, 0xC228, 0xC229,
+ 0xC22B, 0xC22D, ERROR},
+ { ERROR, 0xD3D7, 0xD3D9, 0xD3DA, 0xD3DB, 0xD3DC, 0xD3DD, 0xD3DE, 0xD3DF,
+ 0xD3E0, 0xD3E2, 0xD3E4, 0xD3E5, 0xD3E6, 0xD3E7, 0xD3E8, 0xD3E9, 0xD3EA,
+ 0xD3EB, 0xD3EE, 0xD3EF, 0xD3F1, 0xD3F2, 0xD3F3, 0xD3F5, 0xD3F6, 0xD3F7,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD3F8, 0xD3F9, 0xD3FA,
+ 0xD3FB, 0xD3FE, 0xD400, 0xD402, 0xD403, 0xD404, 0xD405, 0xD406, 0xD407,
+ 0xD409, 0xD40A, 0xD40B, 0xD40C, 0xD40D, 0xD40E, 0xD40F, 0xD410, 0xD411,
+ 0xD412, 0xD413, 0xD414, 0xD415, 0xD416, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD417, 0xD418, 0xD419, 0xD41A, 0xD41B, 0xD41C, 0xD41E,
+ 0xD41F, 0xD420, 0xD421, 0xD422, 0xD423, 0xD424, 0xD425, 0xD426, 0xD427,
+ 0xD428, 0xD429, 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0xD42E, 0xD42F, 0xD430,
+ 0xD431, 0xD432, 0xD433, 0xD434, 0xD435, 0xD436, 0xD437, 0xC22F, 0xC231,
+ 0xC232, 0xC234, 0xC248, 0xC250, 0xC251, 0xC254, 0xC258, 0xC260, 0xC265,
+ 0xC26C, 0xC26D, 0xC270, 0xC274, 0xC27C, 0xC27D, 0xC27F, 0xC281, 0xC288,
+ 0xC289, 0xC290, 0xC298, 0xC29B, 0xC29D, 0xC2A4, 0xC2A5, 0xC2A8, 0xC2AC,
+ 0xC2AD, 0xC2B4, 0xC2B5, 0xC2B7, 0xC2B9, 0xC2DC, 0xC2DD, 0xC2E0, 0xC2E3,
+ 0xC2E4, 0xC2EB, 0xC2EC, 0xC2ED, 0xC2EF, 0xC2F1, 0xC2F6, 0xC2F8, 0xC2F9,
+ 0xC2FB, 0xC2FC, 0xC300, 0xC308, 0xC309, 0xC30C, 0xC30D, 0xC313, 0xC314,
+ 0xC315, 0xC318, 0xC31C, 0xC324, 0xC325, 0xC328, 0xC329, 0xC345, 0xC368,
+ 0xC369, 0xC36C, 0xC370, 0xC372, 0xC378, 0xC379, 0xC37C, 0xC37D, 0xC384,
+ 0xC388, 0xC38C, 0xC3C0, 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, 0xC3E0, 0xC3E2,
+ 0xC3E8, 0xC3E9, 0xC3ED, 0xC3F4, 0xC3F5, 0xC3F8, 0xC408, 0xC410, 0xC424,
+ 0xC42C, 0xC430, ERROR},
+ { ERROR, 0xD438, 0xD439, 0xD43A, 0xD43B, 0xD43C, 0xD43D, 0xD43E, 0xD43F,
+ 0xD441, 0xD442, 0xD443, 0xD445, 0xD446, 0xD447, 0xD448, 0xD449, 0xD44A,
+ 0xD44B, 0xD44C, 0xD44D, 0xD44E, 0xD44F, 0xD450, 0xD451, 0xD452, 0xD453,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD454, 0xD455, 0xD456,
+ 0xD457, 0xD458, 0xD459, 0xD45A, 0xD45B, 0xD45D, 0xD45E, 0xD45F, 0xD461,
+ 0xD462, 0xD463, 0xD465, 0xD466, 0xD467, 0xD468, 0xD469, 0xD46A, 0xD46B,
+ 0xD46C, 0xD46E, 0xD470, 0xD471, 0xD472, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD473, 0xD474, 0xD475, 0xD476, 0xD477, 0xD47A, 0xD47B,
+ 0xD47D, 0xD47E, 0xD481, 0xD483, 0xD484, 0xD485, 0xD486, 0xD487, 0xD48A,
+ 0xD48C, 0xD48E, 0xD48F, 0xD490, 0xD491, 0xD492, 0xD493, 0xD495, 0xD496,
+ 0xD497, 0xD498, 0xD499, 0xD49A, 0xD49B, 0xD49C, 0xD49D, 0xC434, 0xC43C,
+ 0xC43D, 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475, 0xC479,
+ 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, 0xC4F1, 0xC4F4,
+ 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, 0xC510, 0xC514, 0xC51C,
+ 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, 0xC539, 0xC53B, 0xC53D, 0xC544,
+ 0xC545, 0xC548, 0xC549, 0xC54A, 0xC54C, 0xC54D, 0xC54E, 0xC553, 0xC554,
+ 0xC555, 0xC557, 0xC558, 0xC559, 0xC55D, 0xC55E, 0xC560, 0xC561, 0xC564,
+ 0xC568, 0xC570, 0xC571, 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D, 0xC580,
+ 0xC584, 0xC587, 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597, 0xC598,
+ 0xC59C, 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB, 0xC5BC,
+ 0xC5BD, 0xC5BE, 0xC5C4, 0xC5C5, 0xC5C6, 0xC5C7, 0xC5C8, 0xC5C9, 0xC5CA,
+ 0xC5CC, 0xC5CE, ERROR},
+ { ERROR, 0xD49E, 0xD49F, 0xD4A0, 0xD4A1, 0xD4A2, 0xD4A3, 0xD4A4, 0xD4A5,
+ 0xD4A6, 0xD4A7, 0xD4A8, 0xD4AA, 0xD4AB, 0xD4AC, 0xD4AD, 0xD4AE, 0xD4AF,
+ 0xD4B0, 0xD4B1, 0xD4B2, 0xD4B3, 0xD4B4, 0xD4B5, 0xD4B6, 0xD4B7, 0xD4B8,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD4B9, 0xD4BA, 0xD4BB,
+ 0xD4BC, 0xD4BD, 0xD4BE, 0xD4BF, 0xD4C0, 0xD4C1, 0xD4C2, 0xD4C3, 0xD4C4,
+ 0xD4C5, 0xD4C6, 0xD4C7, 0xD4C8, 0xD4C9, 0xD4CA, 0xD4CB, 0xD4CD, 0xD4CE,
+ 0xD4CF, 0xD4D1, 0xD4D2, 0xD4D3, 0xD4D5, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD4D6, 0xD4D7, 0xD4D8, 0xD4D9, 0xD4DA, 0xD4DB, 0xD4DD,
+ 0xD4DE, 0xD4E0, 0xD4E1, 0xD4E2, 0xD4E3, 0xD4E4, 0xD4E5, 0xD4E6, 0xD4E7,
+ 0xD4E9, 0xD4EA, 0xD4EB, 0xD4ED, 0xD4EE, 0xD4EF, 0xD4F1, 0xD4F2, 0xD4F3,
+ 0xD4F4, 0xD4F5, 0xD4F6, 0xD4F7, 0xD4F9, 0xD4FA, 0xD4FC, 0xC5D0, 0xC5D1,
+ 0xC5D4, 0xC5D8, 0xC5E0, 0xC5E1, 0xC5E3, 0xC5E5, 0xC5EC, 0xC5ED, 0xC5EE,
+ 0xC5F0, 0xC5F4, 0xC5F6, 0xC5F7, 0xC5FC, 0xC5FD, 0xC5FE, 0xC5FF, 0xC600,
+ 0xC601, 0xC605, 0xC606, 0xC607, 0xC608, 0xC60C, 0xC610, 0xC618, 0xC619,
+ 0xC61B, 0xC61C, 0xC624, 0xC625, 0xC628, 0xC62C, 0xC62D, 0xC62E, 0xC630,
+ 0xC633, 0xC634, 0xC635, 0xC637, 0xC639, 0xC63B, 0xC640, 0xC641, 0xC644,
+ 0xC648, 0xC650, 0xC651, 0xC653, 0xC654, 0xC655, 0xC65C, 0xC65D, 0xC660,
+ 0xC66C, 0xC66F, 0xC671, 0xC678, 0xC679, 0xC67C, 0xC680, 0xC688, 0xC689,
+ 0xC68B, 0xC68D, 0xC694, 0xC695, 0xC698, 0xC69C, 0xC6A4, 0xC6A5, 0xC6A7,
+ 0xC6A9, 0xC6B0, 0xC6B1, 0xC6B4, 0xC6B8, 0xC6B9, 0xC6BA, 0xC6C0, 0xC6C1,
+ 0xC6C3, 0xC6C5, 0xC6CC, 0xC6CD, 0xC6D0, 0xC6D4, 0xC6DC, 0xC6DD, 0xC6E0,
+ 0xC6E1, 0xC6E8, ERROR},
+ { ERROR, 0xD4FE, 0xD4FF, 0xD500, 0xD501, 0xD502, 0xD503, 0xD505, 0xD506,
+ 0xD507, 0xD509, 0xD50A, 0xD50B, 0xD50D, 0xD50E, 0xD50F, 0xD510, 0xD511,
+ 0xD512, 0xD513, 0xD516, 0xD518, 0xD519, 0xD51A, 0xD51B, 0xD51C, 0xD51D,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD51E, 0xD51F, 0xD520,
+ 0xD521, 0xD522, 0xD523, 0xD524, 0xD525, 0xD526, 0xD527, 0xD528, 0xD529,
+ 0xD52A, 0xD52B, 0xD52C, 0xD52D, 0xD52E, 0xD52F, 0xD530, 0xD531, 0xD532,
+ 0xD533, 0xD534, 0xD535, 0xD536, 0xD537, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD538, 0xD539, 0xD53A, 0xD53B, 0xD53E, 0xD53F, 0xD541,
+ 0xD542, 0xD543, 0xD545, 0xD546, 0xD547, 0xD548, 0xD549, 0xD54A, 0xD54B,
+ 0xD54E, 0xD550, 0xD552, 0xD553, 0xD554, 0xD555, 0xD556, 0xD557, 0xD55A,
+ 0xD55B, 0xD55D, 0xD55E, 0xD55F, 0xD561, 0xD562, 0xD563, 0xC6E9, 0xC6EC,
+ 0xC6F0, 0xC6F8, 0xC6F9, 0xC6FD, 0xC704, 0xC705, 0xC708, 0xC70C, 0xC714,
+ 0xC715, 0xC717, 0xC719, 0xC720, 0xC721, 0xC724, 0xC728, 0xC730, 0xC731,
+ 0xC733, 0xC735, 0xC737, 0xC73C, 0xC73D, 0xC740, 0xC744, 0xC74A, 0xC74C,
+ 0xC74D, 0xC74F, 0xC751, 0xC752, 0xC753, 0xC754, 0xC755, 0xC756, 0xC757,
+ 0xC758, 0xC75C, 0xC760, 0xC768, 0xC76B, 0xC774, 0xC775, 0xC778, 0xC77C,
+ 0xC77D, 0xC77E, 0xC783, 0xC784, 0xC785, 0xC787, 0xC788, 0xC789, 0xC78A,
+ 0xC78E, 0xC790, 0xC791, 0xC794, 0xC796, 0xC797, 0xC798, 0xC79A, 0xC7A0,
+ 0xC7A1, 0xC7A3, 0xC7A4, 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, 0xC7B0, 0xC7B4,
+ 0xC7BC, 0xC7BD, 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, 0xC7C9, 0xC7CC, 0xC7CE,
+ 0xC7D0, 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, 0xC7EC, 0xC800, 0xC801, 0xC804,
+ 0xC808, 0xC80A, ERROR},
+ { ERROR, 0xD564, 0xD566, 0xD567, 0xD56A, 0xD56C, 0xD56E, 0xD56F, 0xD570,
+ 0xD571, 0xD572, 0xD573, 0xD576, 0xD577, 0xD579, 0xD57A, 0xD57B, 0xD57D,
+ 0xD57E, 0xD57F, 0xD580, 0xD581, 0xD582, 0xD583, 0xD586, 0xD58A, 0xD58B,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD58C, 0xD58D, 0xD58E,
+ 0xD58F, 0xD591, 0xD592, 0xD593, 0xD594, 0xD595, 0xD596, 0xD597, 0xD598,
+ 0xD599, 0xD59A, 0xD59B, 0xD59C, 0xD59D, 0xD59E, 0xD59F, 0xD5A0, 0xD5A1,
+ 0xD5A2, 0xD5A3, 0xD5A4, 0xD5A6, 0xD5A7, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD5A8, 0xD5A9, 0xD5AA, 0xD5AB, 0xD5AC, 0xD5AD, 0xD5AE,
+ 0xD5AF, 0xD5B0, 0xD5B1, 0xD5B2, 0xD5B3, 0xD5B4, 0xD5B5, 0xD5B6, 0xD5B7,
+ 0xD5B8, 0xD5B9, 0xD5BA, 0xD5BB, 0xD5BC, 0xD5BD, 0xD5BE, 0xD5BF, 0xD5C0,
+ 0xD5C1, 0xD5C2, 0xD5C3, 0xD5C4, 0xD5C5, 0xD5C6, 0xD5C7, 0xC810, 0xC811,
+ 0xC813, 0xC815, 0xC816, 0xC81C, 0xC81D, 0xC820, 0xC824, 0xC82C, 0xC82D,
+ 0xC82F, 0xC831, 0xC838, 0xC83C, 0xC840, 0xC848, 0xC849, 0xC84C, 0xC84D,
+ 0xC854, 0xC870, 0xC871, 0xC874, 0xC878, 0xC87A, 0xC880, 0xC881, 0xC883,
+ 0xC885, 0xC886, 0xC887, 0xC88B, 0xC88C, 0xC88D, 0xC894, 0xC89D, 0xC89F,
+ 0xC8A1, 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4, 0xC8C8, 0xC8CC, 0xC8D4, 0xC8D5,
+ 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4, 0xC8F5, 0xC8FC, 0xC8FD, 0xC900,
+ 0xC904, 0xC905, 0xC906, 0xC90C, 0xC90D, 0xC90F, 0xC911, 0xC918, 0xC92C,
+ 0xC934, 0xC950, 0xC951, 0xC954, 0xC958, 0xC960, 0xC961, 0xC963, 0xC96C,
+ 0xC970, 0xC974, 0xC97C, 0xC988, 0xC989, 0xC98C, 0xC990, 0xC998, 0xC999,
+ 0xC99B, 0xC99D, 0xC9C0, 0xC9C1, 0xC9C4, 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0,
+ 0xC9D1, 0xC9D3, ERROR},
+ { ERROR, 0xD5CA, 0xD5CB, 0xD5CD, 0xD5CE, 0xD5CF, 0xD5D1, 0xD5D3, 0xD5D4,
+ 0xD5D5, 0xD5D6, 0xD5D7, 0xD5DA, 0xD5DC, 0xD5DE, 0xD5DF, 0xD5E0, 0xD5E1,
+ 0xD5E2, 0xD5E3, 0xD5E6, 0xD5E7, 0xD5E9, 0xD5EA, 0xD5EB, 0xD5ED, 0xD5EE,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD5EF, 0xD5F0, 0xD5F1,
+ 0xD5F2, 0xD5F3, 0xD5F6, 0xD5F8, 0xD5FA, 0xD5FB, 0xD5FC, 0xD5FD, 0xD5FE,
+ 0xD5FF, 0xD602, 0xD603, 0xD605, 0xD606, 0xD607, 0xD609, 0xD60A, 0xD60B,
+ 0xD60C, 0xD60D, 0xD60E, 0xD60F, 0xD612, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD616, 0xD617, 0xD618, 0xD619, 0xD61A, 0xD61B, 0xD61D,
+ 0xD61E, 0xD61F, 0xD621, 0xD622, 0xD623, 0xD625, 0xD626, 0xD627, 0xD628,
+ 0xD629, 0xD62A, 0xD62B, 0xD62C, 0xD62E, 0xD62F, 0xD630, 0xD631, 0xD632,
+ 0xD633, 0xD634, 0xD635, 0xD636, 0xD637, 0xD63A, 0xD63B, 0xC9D5, 0xC9D6,
+ 0xC9D9, 0xC9DA, 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, 0xC9E4, 0xC9E7, 0xC9EC,
+ 0xC9ED, 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, 0xC9F9, 0xC9FC, 0xCA00, 0xCA08,
+ 0xCA09, 0xCA0B, 0xCA0C, 0xCA0D, 0xCA14, 0xCA18, 0xCA29, 0xCA4C, 0xCA4D,
+ 0xCA50, 0xCA54, 0xCA5C, 0xCA5D, 0xCA5F, 0xCA60, 0xCA61, 0xCA68, 0xCA7D,
+ 0xCA84, 0xCA98, 0xCABC, 0xCABD, 0xCAC0, 0xCAC4, 0xCACC, 0xCACD, 0xCACF,
+ 0xCAD1, 0xCAD3, 0xCAD8, 0xCAD9, 0xCAE0, 0xCAEC, 0xCAF4, 0xCB08, 0xCB10,
+ 0xCB14, 0xCB18, 0xCB20, 0xCB21, 0xCB41, 0xCB48, 0xCB49, 0xCB4C, 0xCB50,
+ 0xCB58, 0xCB59, 0xCB5D, 0xCB64, 0xCB78, 0xCB79, 0xCB9C, 0xCBB8, 0xCBD4,
+ 0xCBE4, 0xCBE7, 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, 0xCC14, 0xCC1C, 0xCC1D,
+ 0xCC21, 0xCC22, 0xCC27, 0xCC28, 0xCC29, 0xCC2C, 0xCC2E, 0xCC30, 0xCC38,
+ 0xCC39, 0xCC3B, ERROR},
+ { ERROR, 0xD63D, 0xD63E, 0xD63F, 0xD641, 0xD642, 0xD643, 0xD644, 0xD646,
+ 0xD647, 0xD64A, 0xD64C, 0xD64E, 0xD64F, 0xD650, 0xD652, 0xD653, 0xD656,
+ 0xD657, 0xD659, 0xD65A, 0xD65B, 0xD65D, 0xD65E, 0xD65F, 0xD660, 0xD661,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD662, 0xD663, 0xD664,
+ 0xD665, 0xD666, 0xD668, 0xD66A, 0xD66B, 0xD66C, 0xD66D, 0xD66E, 0xD66F,
+ 0xD672, 0xD673, 0xD675, 0xD676, 0xD677, 0xD678, 0xD679, 0xD67A, 0xD67B,
+ 0xD67C, 0xD67D, 0xD67E, 0xD67F, 0xD680, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD681, 0xD682, 0xD684, 0xD686, 0xD687, 0xD688, 0xD689,
+ 0xD68A, 0xD68B, 0xD68E, 0xD68F, 0xD691, 0xD692, 0xD693, 0xD695, 0xD696,
+ 0xD697, 0xD698, 0xD699, 0xD69A, 0xD69B, 0xD69C, 0xD69E, 0xD6A0, 0xD6A2,
+ 0xD6A3, 0xD6A4, 0xD6A5, 0xD6A6, 0xD6A7, 0xD6A9, 0xD6AA, 0xCC3C, 0xCC3D,
+ 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54, 0xCC55, 0xCC57, 0xCC58,
+ 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, 0xCC70, 0xCC75, 0xCC98, 0xCC99,
+ 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, 0xCCAB, 0xCCAC, 0xCCAD, 0xCCB4, 0xCCB5,
+ 0xCCB8, 0xCCBC, 0xCCC4, 0xCCC5, 0xCCC7, 0xCCC9, 0xCCD0, 0xCCD4, 0xCCE4,
+ 0xCCEC, 0xCCF0, 0xCD01, 0xCD08, 0xCD09, 0xCD0C, 0xCD10, 0xCD18, 0xCD19,
+ 0xCD1B, 0xCD1D, 0xCD24, 0xCD28, 0xCD2C, 0xCD39, 0xCD5C, 0xCD60, 0xCD64,
+ 0xCD6C, 0xCD6D, 0xCD6F, 0xCD71, 0xCD78, 0xCD88, 0xCD94, 0xCD95, 0xCD98,
+ 0xCD9C, 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0, 0xCDC4, 0xCDCC, 0xCDD0,
+ 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB, 0xCDFD, 0xCE04, 0xCE08,
+ 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, 0xCE24, 0xCE28, 0xCE30, 0xCE31,
+ 0xCE33, 0xCE35, ERROR},
+ { ERROR, 0xD6AB, 0xD6AD, 0xD6AE, 0xD6AF, 0xD6B1, 0xD6B2, 0xD6B3, 0xD6B4,
+ 0xD6B5, 0xD6B6, 0xD6B7, 0xD6B8, 0xD6BA, 0xD6BC, 0xD6BD, 0xD6BE, 0xD6BF,
+ 0xD6C0, 0xD6C1, 0xD6C2, 0xD6C3, 0xD6C6, 0xD6C7, 0xD6C9, 0xD6CA, 0xD6CB,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD6CD, 0xD6CE, 0xD6CF,
+ 0xD6D0, 0xD6D2, 0xD6D3, 0xD6D5, 0xD6D6, 0xD6D8, 0xD6DA, 0xD6DB, 0xD6DC,
+ 0xD6DD, 0xD6DE, 0xD6DF, 0xD6E1, 0xD6E2, 0xD6E3, 0xD6E5, 0xD6E6, 0xD6E7,
+ 0xD6E9, 0xD6EA, 0xD6EB, 0xD6EC, 0xD6ED, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD6EE, 0xD6EF, 0xD6F1, 0xD6F2, 0xD6F3, 0xD6F4, 0xD6F6,
+ 0xD6F7, 0xD6F8, 0xD6F9, 0xD6FA, 0xD6FB, 0xD6FE, 0xD6FF, 0xD701, 0xD702,
+ 0xD703, 0xD705, 0xD706, 0xD707, 0xD708, 0xD709, 0xD70A, 0xD70B, 0xD70C,
+ 0xD70D, 0xD70E, 0xD70F, 0xD710, 0xD712, 0xD713, 0xD714, 0xCE58, 0xCE59,
+ 0xCE5C, 0xCE5F, 0xCE60, 0xCE61, 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74,
+ 0xCE75, 0xCE78, 0xCE7C, 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91,
+ 0xCE94, 0xCE98, 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, 0xCEAD,
+ 0xCEC1, 0xCEE4, 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, 0xCEF5, 0xCEF7,
+ 0xCEF8, 0xCEF9, 0xCF00, 0xCF01, 0xCF04, 0xCF08, 0xCF10, 0xCF11, 0xCF13,
+ 0xCF15, 0xCF1C, 0xCF20, 0xCF24, 0xCF2C, 0xCF2D, 0xCF2F, 0xCF30, 0xCF31,
+ 0xCF38, 0xCF54, 0xCF55, 0xCF58, 0xCF5C, 0xCF64, 0xCF65, 0xCF67, 0xCF69,
+ 0xCF70, 0xCF71, 0xCF74, 0xCF78, 0xCF80, 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8,
+ 0xCFB0, 0xCFC4, 0xCFE0, 0xCFE1, 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3,
+ 0xCFF5, 0xCFFC, 0xD000, 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035,
+ 0xD038, 0xD03C, ERROR},
+ { ERROR, 0xD715, 0xD716, 0xD717, 0xD71A, 0xD71B, 0xD71D, 0xD71E, 0xD71F,
+ 0xD721, 0xD722, 0xD723, 0xD724, 0xD725, 0xD726, 0xD727, 0xD72A, 0xD72C,
+ 0xD72E, 0xD72F, 0xD730, 0xD731, 0xD732, 0xD733, 0xD736, 0xD737, 0xD739,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD73A, 0xD73B, 0xD73D,
+ 0xD73E, 0xD73F, 0xD740, 0xD741, 0xD742, 0xD743, 0xD745, 0xD746, 0xD748,
+ 0xD74A, 0xD74B, 0xD74C, 0xD74D, 0xD74E, 0xD74F, 0xD752, 0xD753, 0xD755,
+ 0xD75A, 0xD75B, 0xD75C, 0xD75D, 0xD75E, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, 0xD75F, 0xD762, 0xD764, 0xD766, 0xD767, 0xD768, 0xD76A,
+ 0xD76B, 0xD76D, 0xD76E, 0xD76F, 0xD771, 0xD772, 0xD773, 0xD775, 0xD776,
+ 0xD777, 0xD778, 0xD779, 0xD77A, 0xD77B, 0xD77E, 0xD77F, 0xD780, 0xD782,
+ 0xD783, 0xD784, 0xD785, 0xD786, 0xD787, 0xD78A, 0xD78B, 0xD044, 0xD045,
+ 0xD047, 0xD049, 0xD050, 0xD054, 0xD058, 0xD060, 0xD06C, 0xD06D, 0xD070,
+ 0xD074, 0xD07C, 0xD07D, 0xD081, 0xD0A4, 0xD0A5, 0xD0A8, 0xD0AC, 0xD0B4,
+ 0xD0B5, 0xD0B7, 0xD0B9, 0xD0C0, 0xD0C1, 0xD0C4, 0xD0C8, 0xD0C9, 0xD0D0,
+ 0xD0D1, 0xD0D3, 0xD0D4, 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0, 0xD0E4, 0xD0EC,
+ 0xD0ED, 0xD0EF, 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130, 0xD131, 0xD134,
+ 0xD138, 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145, 0xD14C, 0xD14D,
+ 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, 0xD168, 0xD16C, 0xD17C,
+ 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, 0xD1A8, 0xD1B0, 0xD1B1, 0xD1B3,
+ 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, 0xD1D8, 0xD1F4, 0xD1F8, 0xD207, 0xD209,
+ 0xD210, 0xD22C, 0xD22D, 0xD230, 0xD234, 0xD23C, 0xD23D, 0xD23F, 0xD241,
+ 0xD248, 0xD25C, ERROR},
+ { ERROR, 0xD78D, 0xD78E, 0xD78F, 0xD791, 0xD792, 0xD793, 0xD794, 0xD795,
+ 0xD796, 0xD797, 0xD79A, 0xD79C, 0xD79E, 0xD79F, 0xD7A0, 0xD7A1, 0xD7A2,
+ 0xD7A3, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD264, 0xD280,
+ 0xD281, 0xD284, 0xD288, 0xD290, 0xD291, 0xD295, 0xD29C, 0xD2A0, 0xD2A4,
+ 0xD2AC, 0xD2B1, 0xD2B8, 0xD2B9, 0xD2BC, 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8,
+ 0xD2C9, 0xD2CB, 0xD2D4, 0xD2D8, 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1,
+ 0xD2F4, 0xD2F8, 0xD300, 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, 0xD30E,
+ 0xD310, 0xD314, 0xD316, 0xD31C, 0xD31D, 0xD31F, 0xD320, 0xD321, 0xD325,
+ 0xD328, 0xD329, 0xD32C, 0xD330, 0xD338, 0xD339, 0xD33B, 0xD33C, 0xD33D,
+ 0xD344, 0xD345, 0xD37C, 0xD37D, 0xD380, 0xD384, 0xD38C, 0xD38D, 0xD38F,
+ 0xD390, 0xD391, 0xD398, 0xD399, 0xD39C, 0xD3A0, 0xD3A8, 0xD3A9, 0xD3AB,
+ 0xD3AD, 0xD3B4, 0xD3B8, 0xD3BC, 0xD3C4, 0xD3C5, 0xD3C8, 0xD3C9, 0xD3D0,
+ 0xD3D8, 0xD3E1, 0xD3E3, 0xD3EC, 0xD3ED, 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD,
+ 0xD3FF, 0xD401, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD408, 0xD41D,
+ 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, 0xD46D, 0xD46F, 0xD478, 0xD479,
+ 0xD47C, 0xD47F, 0xD480, 0xD482, 0xD488, 0xD489, 0xD48B, 0xD48D, 0xD494,
+ 0xD4A9, 0xD4CC, 0xD4D0, 0xD4D4, 0xD4DC, 0xD4DF, 0xD4E8, 0xD4EC, 0xD4F0,
+ 0xD4F8, 0xD4FB, 0xD4FD, 0xD504, 0xD508, 0xD50C, 0xD514, 0xD515, 0xD517,
+ 0xD53C, 0xD53D, 0xD540, 0xD544, 0xD54C, 0xD54D, 0xD54F, 0xD551, 0xD558,
+ 0xD559, 0xD55C, 0xD560, 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D, 0xD574,
+ 0xD575, 0xD578, 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, 0xD589, 0xD590,
+ 0xD5A5, 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, 0xD5D8, 0xD5D9, 0xD5DB,
+ 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, 0xD5F4, 0xD5F5, 0xD5F7, 0xD5F9,
+ 0xD600, 0xD601, 0xD604, 0xD608, 0xD610, 0xD611, 0xD613, 0xD614, 0xD615,
+ 0xD61C, 0xD620, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xD624, 0xD62D,
+ 0xD638, 0xD639, 0xD63C, 0xD640, 0xD645, 0xD648, 0xD649, 0xD64B, 0xD64D,
+ 0xD651, 0xD654, 0xD655, 0xD658, 0xD65C, 0xD667, 0xD669, 0xD670, 0xD671,
+ 0xD674, 0xD683, 0xD685, 0xD68C, 0xD68D, 0xD690, 0xD694, 0xD69D, 0xD69F,
+ 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0, 0xD6B9, 0xD6BB, 0xD6C4, 0xD6C5, 0xD6C8,
+ 0xD6CC, 0xD6D1, 0xD6D4, 0xD6D7, 0xD6D9, 0xD6E0, 0xD6E4, 0xD6E8, 0xD6F0,
+ 0xD6F5, 0xD6FC, 0xD6FD, 0xD700, 0xD704, 0xD711, 0xD718, 0xD719, 0xD71C,
+ 0xD720, 0xD728, 0xD729, 0xD72B, 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C,
+ 0xD744, 0xD747, 0xD749, 0xD750, 0xD751, 0xD754, 0xD756, 0xD757, 0xD758,
+ 0xD759, 0xD760, 0xD761, 0xD763, 0xD765, 0xD769, 0xD76C, 0xD770, 0xD774,
+ 0xD77C, 0xD77D, 0xD781, 0xD788, 0xD789, 0xD78C, 0xD790, 0xD798, 0xD799,
+ 0xD79B, 0xD79D, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x4F3D, 0x4F73,
+ 0x5047, 0x50F9, 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6,
+ 0x6687, 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, 0x82DB,
+ 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, 0x8FE6, 0x99D5,
+ 0x523B, 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, 0x73CF, 0x811A, 0x89BA,
+ 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, 0x5978, 0x59E6, 0x5E72, 0x5E79,
+ 0x61C7, 0x63C0, 0x6746, 0x67EC, 0x687F, 0x6F97, 0x764E, 0x770B, 0x78F5,
+ 0x7A08, 0x7AFF, 0x7C21, 0x809D, 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B,
+ 0x559D, 0x66F7, 0x6E34, 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, 0x97A8,
+ 0x52D8, 0x574E, 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1,
+ 0x6A44, 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, 0x9451,
+ 0x9452, 0x9F95, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5323, 0x5CAC,
+ 0x7532, 0x80DB, 0x9240, 0x9598, 0x525B, 0x5808, 0x59DC, 0x5CA1, 0x5D17,
+ 0x5EB7, 0x5F3A, 0x5F4A, 0x6177, 0x6C5F, 0x757A, 0x7586, 0x7CE0, 0x7D73,
+ 0x7DB1, 0x7F8C, 0x8154, 0x8221, 0x8591, 0x8941, 0x8B1B, 0x92FC, 0x964D,
+ 0x9C47, 0x4ECB, 0x4EF7, 0x500B, 0x51F1, 0x584F, 0x6137, 0x613E, 0x6168,
+ 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686, 0x76D6, 0x7B87, 0x82A5, 0x84CB,
+ 0xF900, 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751, 0xF901, 0x7CB3, 0x7FB9,
+ 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x636E, 0x64DA, 0x64E7,
+ 0x6E20, 0x70AC, 0x795B, 0x8DDD, 0x8E1E, 0xF902, 0x907D, 0x9245, 0x92F8,
+ 0x4E7E, 0x4EF6, 0x5065, 0x5DFE, 0x5EFA, 0x6106, 0x6957, 0x8171, 0x8654,
+ 0x8E47, 0x9375, 0x9A2B, 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109, 0x528D,
+ 0x5292, 0x6AA2, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x77BC, 0x9210,
+ 0x9ED4, 0x52AB, 0x602F, 0x8FF2, 0x5048, 0x61A9, 0x63ED, 0x64CA, 0x683C,
+ 0x6A84, 0x6FC0, 0x8188, 0x89A1, 0x9694, 0x5805, 0x727D, 0x72AC, 0x7504,
+ 0x7D79, 0x7E6D, 0x80A9, 0x898B, 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A,
+ 0x6F54, 0x7D50, 0x7F3A, 0x8A23, 0x517C, 0x614A, 0x7B9D, 0x8B19, 0x9257,
+ 0x938C, 0x4EAC, 0x4FD3, 0x501E, 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F,
+ 0x5770, 0x5883, 0x5E9A, 0x5F91, 0x6176, 0x61AC, 0x64CE, 0x656C, 0x666F,
+ 0x66BB, 0x66F4, 0x6897, 0x6D87, 0x7085, 0x70F1, 0x749F, 0x74A5, 0x74CA,
+ 0x75D9, 0x786C, 0x78EC, 0x7ADF, 0x7AF6, 0x7D45, 0x7D93, 0x8015, 0x803F,
+ 0x811B, 0x8396, 0x8B66, 0x8F15, 0x9015, 0x93E1, 0x9803, 0x9838, 0x9A5A,
+ 0x9BE8, 0x4FC2, 0x5553, 0x583A, 0x5951, 0x5B63, 0x5C46, 0x60B8, 0x6212,
+ 0x6842, 0x68B0, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x68E8, 0x6EAA,
+ 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, 0x8A08, 0x8AA1,
+ 0x8C3F, 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, 0x5471, 0x56FA, 0x59D1,
+ 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, 0x6545, 0x6572, 0x66A0, 0x67AF,
+ 0x69C1, 0x6CBD, 0x75FC, 0x7690, 0x777E, 0x7A3F, 0x7F94, 0x8003, 0x80A1,
+ 0x818F, 0x82E6, 0x82FD, 0x83F0, 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0xF903,
+ 0x8F9C, 0x932E, 0x96C7, 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, 0x66F2,
+ 0x688F, 0x7A40, 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1,
+ 0x68CD, 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, 0xF904, 0x9AA8, 0x4F9B,
+ 0x516C, 0x5171, 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, 0x62F1, 0x63A7,
+ 0x653B, 0x73D9, 0x7A7A, 0x86A3, 0x8CA2, 0x978F, 0x4E32, 0x5BE1, 0x6208,
+ 0x679C, 0x74DC, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x79D1, 0x83D3,
+ 0x8A87, 0x8AB2, 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3, 0x69E8, 0x85FF,
+ 0x90ED, 0xF905, 0x51A0, 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E, 0x704C,
+ 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, 0x95DC, 0x9928,
+ 0x522E, 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, 0x5321, 0x58D9, 0x5EE3,
+ 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, 0x7B50, 0x80F1, 0x945B, 0x5366,
+ 0x639B, 0x7F6B, 0x4E56, 0x5080, 0x584A, 0x58DE, 0x602A, 0x6127, 0x62D0,
+ 0x69D0, 0x9B41, 0x5B8F, 0x7D18, 0x80B1, 0x8F5F, 0x4EA4, 0x50D1, 0x54AC,
+ 0x55AC, 0x5B0C, 0x5DA0, 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B, 0x72E1,
+ 0x768E, 0x77EF, 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, 0x8F03, 0x8F4E,
+ 0x90CA, 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7, 0x4FF1,
+ 0x5177, 0x52FE, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5340, 0x53E3,
+ 0x53E5, 0x548E, 0x5614, 0x5775, 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC,
+ 0x62D8, 0x6551, 0x67B8, 0x67E9, 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, 0x6C42,
+ 0x6E9D, 0x7078, 0x72D7, 0x7396, 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F,
+ 0x8009, 0x81FC, 0x8205, 0x820A, 0x82DF, 0x8862, 0x8B33, 0x8CFC, 0x8EC0,
+ 0x9011, 0x90B1, 0x9264, 0x92B6, 0x99D2, 0x9A45, 0x9CE9, 0x9DD7, 0x9F9C,
+ 0x570B, 0x5C40, 0x83CA, 0x97A0, 0x97AB, 0x9EB4, 0x541B, 0x7A98, 0x7FA4,
+ 0x88D9, 0x8ECD, 0x90E1, 0x5800, 0x5C48, 0x6398, 0x7A9F, 0x5BAE, 0x5F13,
+ 0x7A79, 0x7AAE, 0x828E, 0x8EAC, 0x5026, 0x5238, 0x52F8, 0x5377, 0x5708,
+ 0x62F3, 0x6372, 0x6B0A, 0x6DC3, 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76,
+ 0x95D5, 0x673A, 0x6AC3, 0x6F70, 0x8A6D, 0x8ECC, 0x994B, 0xF906, 0x6677,
+ 0x6B78, 0x8CB4, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9B3C, 0xF907,
+ 0x53EB, 0x572D, 0x594E, 0x63C6, 0x69FB, 0x73EA, 0x7845, 0x7ABA, 0x7AC5,
+ 0x7CFE, 0x8475, 0x898F, 0x8D73, 0x9035, 0x95A8, 0x52FB, 0x5747, 0x7547,
+ 0x7B60, 0x83CC, 0x921E, 0xF908, 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F,
+ 0x68D8, 0x6975, 0x9699, 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, 0x6839,
+ 0x69FF, 0x747E, 0x7B4B, 0x82B9, 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949,
+ 0xF909, 0x4ECA, 0x5997, 0x64D2, 0x6611, 0x6A8E, 0x7434, 0x7981, 0x79BD,
+ 0x82A9, 0x887E, 0x887F, 0x895F, 0xF90A, 0x9326, 0x4F0B, 0x53CA, 0x6025,
+ 0x6271, 0x6C72, 0x7D1A, 0x7D66, 0x4E98, 0x5162, 0x77DC, 0x80AF, 0x4F01,
+ 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668, 0x573B, 0x57FA, 0x57FC, 0x5914,
+ 0x5947, 0x5993, 0x5BC4, 0x5C90, 0x5D0E, 0x5DF1, 0x5E7E, 0x5FCC, 0x6280,
+ 0x65D7, 0x65E3, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x671E, 0x671F,
+ 0x675E, 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, 0x6C82, 0x6DC7,
+ 0x7398, 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, 0x757F, 0x7881, 0x78EF,
+ 0x7941, 0x7947, 0x7948, 0x797A, 0x7B95, 0x7D00, 0x7DBA, 0x7F88, 0x8006,
+ 0x802D, 0x808C, 0x8A18, 0x8B4F, 0x8C48, 0x8D77, 0x9321, 0x9324, 0x98E2,
+ 0x9951, 0x9A0E, 0x9A0F, 0x9A65, 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE,
+ 0x6854, 0x91D1, 0x55AB, 0x513A, 0xF90B, 0xF90C, 0x5A1C, 0x61E6, 0xF90D,
+ 0x62CF, 0x62FF, 0xF90E, 0xF90F, 0xF910, 0xF911, 0xF912, 0xF913, 0x90A3,
+ 0xF914, 0xF915, 0xF916, 0xF917, 0xF918, 0x8AFE, 0xF919, 0xF91A, 0xF91B,
+ 0xF91C, 0x6696, 0xF91D, 0x7156, 0xF91E, 0xF91F, 0x96E3, 0xF920, 0x634F,
+ 0x637A, 0x5357, 0xF921, 0x678F, 0x6960, 0x6E73, 0xF922, 0x7537, 0xF923,
+ 0xF924, 0xF925, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7D0D, 0xF926,
+ 0xF927, 0x8872, 0x56CA, 0x5A18, 0xF928, 0xF929, 0xF92A, 0xF92B, 0xF92C,
+ 0x4E43, 0xF92D, 0x5167, 0x5948, 0x67F0, 0x8010, 0xF92E, 0x5973, 0x5E74,
+ 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, 0x637B, 0x5BE7, 0x5BD7, 0x52AA,
+ 0xF92F, 0x5974, 0x5F29, 0x6012, 0xF930, 0xF931, 0xF932, 0x7459, 0xF933,
+ 0xF934, 0xF935, 0xF936, 0xF937, 0xF938, 0x99D1, 0xF939, 0xF93A, 0xF93B,
+ 0xF93C, 0xF93D, 0xF93E, 0xF93F, 0xF940, 0xF941, 0xF942, 0xF943, 0x6FC3,
+ 0xF944, 0xF945, 0x81BF, 0x8FB2, 0x60F1, 0xF946, 0xF947, 0x8166, 0xF948,
+ 0xF949, 0x5C3F, 0xF94A, 0xF94B, 0xF94C, 0xF94D, 0xF94E, 0xF94F, 0xF950,
+ 0xF951, 0x5AE9, 0x8A25, 0x677B, 0x7D10, 0xF952, 0xF953, 0xF954, 0xF955,
+ 0xF956, 0xF957, 0x80FD, 0xF958, 0xF959, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA,
+ 0x591A, 0x8336, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x4E39, 0x4EB6,
+ 0x4F46, 0x55AE, 0x5718, 0x58C7, 0x5F56, 0x65B7, 0x65E6, 0x6A80, 0x6BB5,
+ 0x6E4D, 0x77ED, 0x7AEF, 0x7C1E, 0x7DDE, 0x86CB, 0x8892, 0x9132, 0x935B,
+ 0x64BB, 0x6FBE, 0x737A, 0x75B8, 0x9054, 0x5556, 0x574D, 0x61BA, 0x64D4,
+ 0x66C7, 0x6DE1, 0x6E5B, 0x6F6D, 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541,
+ 0x8983, 0x8AC7, 0x8B5A, 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, 0x905D,
+ 0x5510, 0x5802, 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, 0x7576, 0x7CD6,
+ 0x87B3, 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, 0x5C0D, 0x5CB1, 0x5E36,
+ 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, 0x888B, 0x8CB8, 0x968A, 0x9EDB,
+ 0x5B85, 0x5FB7, 0x60B3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857,
+ 0x5C0E, 0x5C60, 0x5CF6, 0x5D8B, 0x5EA6, 0x5F92, 0x60BC, 0x6311, 0x6389,
+ 0x6417, 0x6843, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x68F9, 0x6AC2,
+ 0x6DD8, 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, 0x76DC, 0x7779, 0x79B1, 0x7A3B,
+ 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, 0x9003, 0x9014, 0x9053, 0x90FD,
+ 0x934D, 0x9676, 0x97DC, 0x6BD2, 0x7006, 0x7258, 0x72A2, 0x7368, 0x7763,
+ 0x79BF, 0x7BE4, 0x7E9B, 0x8B80, 0x58A9, 0x60C7, 0x6566, 0x65FD, 0x66BE,
+ 0x6C8C, 0x711E, 0x71C9, 0x8C5A, 0x9813, 0x4E6D, 0x7A81, 0x4EDD, 0x51AC,
+ 0x51CD, 0x52D5, 0x540C, 0x61A7, 0x6771, 0x6850, 0x68DF, 0x6D1E, 0x6F7C,
+ 0x75BC, 0x77B3, 0x7AE5, 0x80F4, 0x8463, 0x9285, 0x515C, 0x6597, 0x675C,
+ 0x6793, 0x75D8, 0x7AC7, 0x8373, 0xF95A, 0x8C46, 0x9017, 0x982D, 0x5C6F,
+ 0x81C0, 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, 0x5D9D, 0x6A59, 0x71C8,
+ 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, 0x9A30, 0x5587, 0x61F6, 0xF95B,
+ 0x7669, 0x7F85, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x863F, 0x87BA,
+ 0x88F8, 0x908F, 0xF95C, 0x6D1B, 0x70D9, 0x73DE, 0x7D61, 0x843D, 0xF95D,
+ 0x916A, 0x99F1, 0xF95E, 0x4E82, 0x5375, 0x6B04, 0x6B12, 0x703E, 0x721B,
+ 0x862D, 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, 0x652C, 0x6B16, 0x6FEB,
+ 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, 0x62C9, 0x81D8, 0x881F, 0x5ECA,
+ 0x6717, 0x6D6A, 0x72FC, 0x7405, 0x746F, 0x8782, 0x90DE, 0x4F86, 0x5D0D,
+ 0x5FA0, 0x840A, 0x51B7, 0x63A0, 0x7565, 0x4EAE, 0x5006, 0x5169, 0x51C9,
+ 0x6881, 0x6A11, 0x7CAE, 0x7CB1, 0x7CE7, 0x826F, 0x8AD2, 0x8F1B, 0x91CF,
+ 0x4FB6, 0x5137, 0x52F5, 0x5442, 0x5EEC, 0x616E, 0x623E, 0x65C5, 0x6ADA,
+ 0x6FFE, 0x792A, 0x85DC, 0x8823, 0x95AD, 0x9A62, 0x9A6A, 0x9E97, 0x9ECE,
+ 0x529B, 0x66C6, 0x6B77, 0x701D, 0x792B, 0x8F62, 0x9742, 0x6190, 0x6200,
+ 0x6523, 0x6F23, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7149, 0x7489,
+ 0x7DF4, 0x806F, 0x84EE, 0x8F26, 0x9023, 0x934A, 0x51BD, 0x5217, 0x52A3,
+ 0x6D0C, 0x70C8, 0x88C2, 0x5EC9, 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375,
+ 0x4EE4, 0x4F36, 0x56F9, 0xF95F, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, 0x7B2D,
+ 0x7F9A, 0x7FCE, 0x8046, 0x901E, 0x9234, 0x96F6, 0x9748, 0x9818, 0x9F61,
+ 0x4F8B, 0x6FA7, 0x79AE, 0x91B4, 0x96B7, 0x52DE, 0xF960, 0x6488, 0x64C4,
+ 0x6AD3, 0x6F5E, 0x7018, 0x7210, 0x76E7, 0x8001, 0x8606, 0x865C, 0x8DEF,
+ 0x8F05, 0x9732, 0x9B6F, 0x9DFA, 0x9E75, 0x788C, 0x797F, 0x7DA0, 0x83C9,
+ 0x9304, 0x9E7F, 0x9E93, 0x8AD6, 0x58DF, 0x5F04, 0x6727, 0x7027, 0x74CF,
+ 0x7C60, 0x807E, 0x5121, 0x7028, 0x7262, 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4,
+ 0x96F7, 0x4E86, 0x50DA, 0x5BEE, 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD,
+ 0x804A, 0x84FC, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x907C, 0x9B27,
+ 0x9F8D, 0x58D8, 0x5A41, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, 0x763B, 0x7D2F,
+ 0x7E37, 0x851E, 0x8938, 0x93E4, 0x964B, 0x5289, 0x65D2, 0x67F3, 0x69B4,
+ 0x6D41, 0x6E9C, 0x700F, 0x7409, 0x7460, 0x7559, 0x7624, 0x786B, 0x8B2C,
+ 0x985E, 0x516D, 0x622E, 0x9678, 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8,
+ 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0xF961, 0x9686, 0x52D2, 0x808B, 0x51DC,
+ 0x51CC, 0x695E, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, 0x5229, 0x5398,
+ 0x540F, 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, 0x6D6C, 0x7281, 0x72F8,
+ 0x7406, 0x7483, 0xF962, 0x75E2, 0x7C6C, 0x7F79, 0x7FB8, 0x8389, 0x88CF,
+ 0x88E1, 0x91CC, 0x91D0, 0x96E2, 0x9BC9, 0x541D, 0x6F7E, 0x71D0, 0x7498,
+ 0x85FA, 0x8EAA, 0x96A3, 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x7433, 0x81E8,
+ 0x9716, 0x782C, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7ACB, 0x7B20,
+ 0x7C92, 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, 0x99AC, 0x9B54, 0x9EBB,
+ 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, 0x9088, 0x4E07, 0x534D, 0x5A29,
+ 0x5DD2, 0x5F4E, 0x6162, 0x633D, 0x6669, 0x66FC, 0x6EFF, 0x6F2B, 0x7063,
+ 0x779E, 0x842C, 0x8513, 0x883B, 0x8F13, 0x9945, 0x9C3B, 0x551C, 0x62B9,
+ 0x672B, 0x6CAB, 0x8309, 0x896A, 0x977A, 0x4EA1, 0x5984, 0x5FD8, 0x5FD9,
+ 0x671B, 0x7DB2, 0x7F54, 0x8292, 0x832B, 0x83BD, 0x8F1E, 0x9099, 0x57CB,
+ 0x59B9, 0x5A92, 0x5BD0, 0x6627, 0x679A, 0x6885, 0x6BCF, 0x7164, 0x7F75,
+ 0x8CB7, 0x8CE3, 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, 0x9A40, 0x9EA5,
+ 0x5B5F, 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, 0x51AA, 0x8993, 0x514D,
+ 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, 0x7720, 0x7DBF, 0x7DEC, 0x9762,
+ 0x9EB5, 0x6EC5, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8511, 0x51A5,
+ 0x540D, 0x547D, 0x660E, 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, 0x8317,
+ 0x84C2, 0x879F, 0x9169, 0x9298, 0x9CF4, 0x8882, 0x4FAE, 0x5192, 0x52DF,
+ 0x59C6, 0x5E3D, 0x6155, 0x6478, 0x6479, 0x66AE, 0x67D0, 0x6A21, 0x6BCD,
+ 0x6BDB, 0x725F, 0x7261, 0x7441, 0x7738, 0x77DB, 0x8017, 0x82BC, 0x8305,
+ 0x8B00, 0x8B28, 0x8C8C, 0x6728, 0x6C90, 0x7267, 0x76EE, 0x7766, 0x7A46,
+ 0x9DA9, 0x6B7F, 0x6C92, 0x5922, 0x6726, 0x8499, 0x536F, 0x5893, 0x5999,
+ 0x5EDF, 0x63CF, 0x6634, 0x6773, 0x6E3A, 0x732B, 0x7AD7, 0x82D7, 0x9328,
+ 0x52D9, 0x5DEB, 0x61AE, 0x61CB, 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959,
+ 0x6B66, 0x6BCB, 0x7121, 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, 0x856A,
+ 0x8AA3, 0x8CBF, 0x9727, 0x9D61, 0x58A8, 0x9ED8, 0x5011, 0x520E, 0x543B,
+ 0x554F, 0x6587, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6C76, 0x7D0A,
+ 0x7D0B, 0x805E, 0x868A, 0x9580, 0x96EF, 0x52FF, 0x6C95, 0x7269, 0x5473,
+ 0x5A9A, 0x5C3E, 0x5D4B, 0x5F4C, 0x5FAE, 0x672A, 0x68B6, 0x6963, 0x6E3C,
+ 0x6E44, 0x7709, 0x7C73, 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, 0x9EF4,
+ 0x5CB7, 0x60B6, 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, 0x6C11, 0x6CEF,
+ 0x739F, 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, 0x8B10, 0x525D, 0x535A,
+ 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, 0x6CCA, 0x73C0, 0x749E, 0x7B94,
+ 0x7C95, 0x7E1B, 0x818A, 0x8236, 0x8584, 0x8FEB, 0x96F9, 0x99C1, 0x4F34,
+ 0x534A, 0x53CD, 0x53DB, 0x62CC, 0x642C, 0x6500, 0x6591, 0x69C3, 0x6CEE,
+ 0x6F58, 0x73ED, 0x7554, 0x7622, 0x76E4, 0x76FC, 0x78D0, 0x78FB, 0x792C,
+ 0x7D46, 0x822C, 0x87E0, 0x8FD4, 0x9812, 0x98EF, 0x52C3, 0x62D4, 0x64A5,
+ 0x6E24, 0x6F51, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x767C, 0x8DCB,
+ 0x91B1, 0x9262, 0x9AEE, 0x9B43, 0x5023, 0x508D, 0x574A, 0x59A8, 0x5C28,
+ 0x5E47, 0x5F77, 0x623F, 0x653E, 0x65B9, 0x65C1, 0x6609, 0x678B, 0x699C,
+ 0x6EC2, 0x78C5, 0x7D21, 0x80AA, 0x8180, 0x822B, 0x82B3, 0x84A1, 0x868C,
+ 0x8A2A, 0x8B17, 0x90A6, 0x9632, 0x9F90, 0x500D, 0x4FF3, 0xF963, 0x57F9,
+ 0x5F98, 0x62DC, 0x6392, 0x676F, 0x6E43, 0x7119, 0x76C3, 0x80CC, 0x80DA,
+ 0x88F4, 0x88F5, 0x8919, 0x8CE0, 0x8F29, 0x914D, 0x966A, 0x4F2F, 0x4F70,
+ 0x5E1B, 0x67CF, 0x6822, 0x767D, 0x767E, 0x9B44, 0x5E61, 0x6A0A, 0x7169,
+ 0x71D4, 0x756A, 0xF964, 0x7E41, 0x8543, 0x85E9, 0x98DC, 0x4F10, 0x7B4F,
+ 0x7F70, 0x95A5, 0x51E1, 0x5E06, 0x68B5, 0x6C3E, 0x6C4E, 0x6CDB, 0x72AF,
+ 0x7BC4, 0x8303, 0x6CD5, 0x743A, 0x50FB, 0x5288, 0x58C1, 0x64D8, 0x6A97,
+ 0x74A7, 0x7656, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x78A7, 0x8617,
+ 0x95E2, 0x9739, 0xF965, 0x535E, 0x5F01, 0x8B8A, 0x8FA8, 0x8FAF, 0x908A,
+ 0x5225, 0x77A5, 0x9C49, 0x9F08, 0x4E19, 0x5002, 0x5175, 0x5C5B, 0x5E77,
+ 0x661E, 0x663A, 0x67C4, 0x68C5, 0x70B3, 0x7501, 0x75C5, 0x79C9, 0x7ADD,
+ 0x8F27, 0x9920, 0x9A08, 0x4FDD, 0x5821, 0x5831, 0x5BF6, 0x666E, 0x6B65,
+ 0x6D11, 0x6E7A, 0x6F7D, 0x73E4, 0x752B, 0x83E9, 0x88DC, 0x8913, 0x8B5C,
+ 0x8F14, 0x4F0F, 0x50D5, 0x5310, 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F,
+ 0x8179, 0x832F, 0x8514, 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, 0x9C12,
+ 0x672C, 0x4E76, 0x4FF8, 0x5949, 0x5C01, 0x5CEF, 0x5CF0, 0x6367, 0x68D2,
+ 0x70FD, 0x71A2, 0x742B, 0x7E2B, 0x84EC, 0x8702, 0x9022, 0x92D2, 0x9CF3,
+ 0x4E0D, 0x4ED8, 0x4FEF, 0x5085, 0x5256, 0x526F, 0x5426, 0x5490, 0x57E0,
+ 0x592B, 0x5A66, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5B5A, 0x5B75,
+ 0x5BCC, 0x5E9C, 0xF966, 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, 0x7236,
+ 0x7B26, 0x7C3F, 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, 0x8299, 0x83A9,
+ 0x8A03, 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, 0x90E8, 0x91DC, 0x961C,
+ 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58B3, 0x5954,
+ 0x596E, 0x5FFF, 0x61A4, 0x626E, 0x6610, 0x6C7E, 0x711A, 0x76C6, 0x7C89,
+ 0x7CDE, 0x7D1B, 0x82AC, 0x8CC1, 0x96F0, 0xF967, 0x4F5B, 0x5F17, 0x5F7F,
+ 0x62C2, 0x5D29, 0x670B, 0x68DA, 0x787C, 0x7E43, 0x9D6C, 0x4E15, 0x5099,
+ 0x5315, 0x532A, 0x5351, 0x5983, 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249,
+ 0x6279, 0x6590, 0x6787, 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6CB8,
+ 0xF968, 0x7435, 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, 0x7C83, 0x7DCB,
+ 0x7FE1, 0x80A5, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x813E, 0x81C2,
+ 0x83F2, 0x871A, 0x88E8, 0x8AB9, 0x8B6C, 0x8CBB, 0x9119, 0x975E, 0x98DB,
+ 0x9F3B, 0x56AC, 0x5B2A, 0x5F6C, 0x658C, 0x6AB3, 0x6BAF, 0x6D5C, 0x6FF1,
+ 0x7015, 0x725D, 0x73AD, 0x8CA7, 0x8CD3, 0x983B, 0x6191, 0x6C37, 0x8058,
+ 0x9A01, 0x4E4D, 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, 0x4F7F, 0x4FDF,
+ 0x50FF, 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, 0x58EB, 0x5962, 0x5A11,
+ 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, 0x5F99, 0x601D, 0x6368, 0x659C,
+ 0x65AF, 0x67F6, 0x67FB, 0x68AD, 0x6B7B, 0x6C99, 0x6CD7, 0x6E23, 0x7009,
+ 0x7345, 0x7802, 0x793E, 0x7940, 0x7960, 0x79C1, 0x7BE9, 0x7D17, 0x7D72,
+ 0x8086, 0x820D, 0x838E, 0x84D1, 0x86C7, 0x88DF, 0x8A50, 0x8A5E, 0x8B1D,
+ 0x8CDC, 0x8D66, 0x8FAD, 0x90AA, 0x98FC, 0x99DF, 0x9E9D, 0x524A, 0xF969,
+ 0x6714, 0xF96A, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5098, 0x522A,
+ 0x5C71, 0x6563, 0x6C55, 0x73CA, 0x7523, 0x759D, 0x7B97, 0x849C, 0x9178,
+ 0x9730, 0x4E77, 0x6492, 0x6BBA, 0x715E, 0x85A9, 0x4E09, 0xF96B, 0x6749,
+ 0x68EE, 0x6E17, 0x829F, 0x8518, 0x886B, 0x63F7, 0x6F81, 0x9212, 0x98AF,
+ 0x4E0A, 0x50B7, 0x50CF, 0x511F, 0x5546, 0x55AA, 0x5617, 0x5B40, 0x5C19,
+ 0x5CE0, 0x5E38, 0x5E8A, 0x5EA0, 0x5EC2, 0x60F3, 0x6851, 0x6A61, 0x6E58,
+ 0x723D, 0x7240, 0x72C0, 0x76F8, 0x7965, 0x7BB1, 0x7FD4, 0x88F3, 0x89F4,
+ 0x8A73, 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, 0x8CFD, 0x55C7, 0xF96C,
+ 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, 0x7525, 0xF96D, 0x7B19, 0x5885,
+ 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, 0x5F90, 0x6055, 0x6292, 0x637F, 0x654D,
+ 0x6691, 0x66D9, 0x66F8, 0x6816, 0x68F2, 0x7280, 0x745E, 0x7B6E, 0x7D6E,
+ 0x7DD6, 0x7F72, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x80E5, 0x8212,
+ 0x85AF, 0x897F, 0x8A93, 0x901D, 0x92E4, 0x9ECD, 0x9F20, 0x5915, 0x596D,
+ 0x5E2D, 0x60DC, 0x6614, 0x6673, 0x6790, 0x6C50, 0x6DC5, 0x6F5F, 0x77F3,
+ 0x78A9, 0x84C6, 0x91CB, 0x932B, 0x4ED9, 0x50CA, 0x5148, 0x5584, 0x5B0B,
+ 0x5BA3, 0x6247, 0x657E, 0x65CB, 0x6E32, 0x717D, 0x7401, 0x7444, 0x7487,
+ 0x74BF, 0x766C, 0x79AA, 0x7DDA, 0x7E55, 0x7FA8, 0x817A, 0x81B3, 0x8239,
+ 0x861A, 0x87EC, 0x8A75, 0x8DE3, 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE,
+ 0x5368, 0x5C51, 0x6954, 0x6CC4, 0x6D29, 0x6E2B, 0x820C, 0x859B, 0x893B,
+ 0x8A2D, 0x8AAA, 0x96EA, 0x9F67, 0x5261, 0x66B9, 0x6BB2, 0x7E96, 0x87FE,
+ 0x8D0D, 0x9583, 0x965D, 0x651D, 0x6D89, 0x71EE, 0xF96E, 0x57CE, 0x59D3,
+ 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, 0x665F, 0x7329, 0x73F9, 0x76DB,
+ 0x7701, 0x7B6C, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8056, 0x8072,
+ 0x8165, 0x8AA0, 0x9192, 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, 0x7B39,
+ 0x7D30, 0xF96F, 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, 0x5C0F, 0x5C11,
+ 0x5DE2, 0x6240, 0x6383, 0x6414, 0x662D, 0x68B3, 0x6CBC, 0x6D88, 0x6EAF,
+ 0x701F, 0x70A4, 0x71D2, 0x7526, 0x758F, 0x758E, 0x7619, 0x7B11, 0x7BE0,
+ 0x7C2B, 0x7D20, 0x7D39, 0x852C, 0x856D, 0x8607, 0x8A34, 0x900D, 0x9061,
+ 0x90B5, 0x92B7, 0x97F6, 0x9A37, 0x4FD7, 0x5C6C, 0x675F, 0x6D91, 0x7C9F,
+ 0x7E8C, 0x8B16, 0x8D16, 0x901F, 0x5B6B, 0x5DFD, 0x640D, 0x84C0, 0x905C,
+ 0x98E1, 0x7387, 0x5B8B, 0x609A, 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001,
+ 0x980C, 0x5237, 0xF970, 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, 0x4FEE,
+ 0x53D7, 0x55FD, 0x56DA, 0x5782, 0x58FD, 0x5AC2, 0x5B88, 0x5CAB, 0x5CC0,
+ 0x5E25, 0x6101, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x620D, 0x624B,
+ 0x6388, 0x641C, 0x6536, 0x6578, 0x6A39, 0x6B8A, 0x6C34, 0x6D19, 0x6F31,
+ 0x71E7, 0x72E9, 0x7378, 0x7407, 0x74B2, 0x7626, 0x7761, 0x79C0, 0x7A57,
+ 0x7AEA, 0x7CB9, 0x7D8F, 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, 0x8490,
+ 0x84DA, 0x85EA, 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, 0x9083, 0x916C,
+ 0x9296, 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, 0x9700, 0x9808, 0x9996,
+ 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, 0x5B70, 0x5BBF, 0x6DD1, 0x6F5A,
+ 0x719F, 0x7421, 0x74B9, 0x8085, 0x83FD, 0x5DE1, 0x5F87, 0x5FAA, 0x6042,
+ 0x65EC, 0x6812, 0x696F, 0x6A53, 0x6B89, 0x6D35, 0x6DF3, 0x73E3, 0x76FE,
+ 0x77AC, 0x7B4D, 0x7D14, 0x8123, 0x821C, 0x8340, 0x84F4, 0x8563, 0x8A62,
+ 0x8AC4, 0x9187, 0x931E, 0x9806, 0x99B4, 0x620C, 0x8853, 0x8FF0, 0x9265,
+ 0x5D07, 0x5D27, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5D69, 0x745F,
+ 0x819D, 0x8768, 0x6FD5, 0x62FE, 0x7FD2, 0x8936, 0x8972, 0x4E1E, 0x4E58,
+ 0x50E7, 0x52DD, 0x5347, 0x627F, 0x6607, 0x7E69, 0x8805, 0x965E, 0x4F8D,
+ 0x5319, 0x5636, 0x59CB, 0x5AA4, 0x5C38, 0x5C4E, 0x5C4D, 0x5E02, 0x5F11,
+ 0x6043, 0x65BD, 0x662F, 0x6642, 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A,
+ 0x7FC5, 0x8494, 0x84CD, 0x8996, 0x8A66, 0x8A69, 0x8AE1, 0x8C55, 0x8C7A,
+ 0x57F4, 0x5BD4, 0x5F0F, 0x606F, 0x62ED, 0x690D, 0x6B96, 0x6E5C, 0x7184,
+ 0x7BD2, 0x8755, 0x8B58, 0x8EFE, 0x98DF, 0x98FE, 0x4F38, 0x4F81, 0x4FE1,
+ 0x547B, 0x5A20, 0x5BB8, 0x613C, 0x65B0, 0x6668, 0x71FC, 0x7533, 0x795E,
+ 0x7D33, 0x814E, 0x81E3, 0x8398, 0x85AA, 0x85CE, 0x8703, 0x8A0A, 0x8EAB,
+ 0x8F9B, 0xF971, 0x8FC5, 0x5931, 0x5BA4, 0x5BE6, 0x6089, 0x5BE9, 0x5C0B,
+ 0x5FC3, 0x6C81, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xF972, 0x6DF1,
+ 0x700B, 0x751A, 0x82AF, 0x8AF6, 0x4EC0, 0x5341, 0xF973, 0x96D9, 0x6C0F,
+ 0x4E9E, 0x4FC4, 0x5152, 0x555E, 0x5A25, 0x5CE8, 0x6211, 0x7259, 0x82BD,
+ 0x83AA, 0x86FE, 0x8859, 0x8A1D, 0x963F, 0x96C5, 0x9913, 0x9D09, 0x9D5D,
+ 0x580A, 0x5CB3, 0x5DBD, 0x5E44, 0x60E1, 0x6115, 0x63E1, 0x6A02, 0x6E25,
+ 0x9102, 0x9354, 0x984E, 0x9C10, 0x9F77, 0x5B89, 0x5CB8, 0x6309, 0x664F,
+ 0x6848, 0x773C, 0x96C1, 0x978D, 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB,
+ 0x95BC, 0x5535, 0x5CA9, 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, 0x95C7,
+ 0x58D3, 0x62BC, 0x72CE, 0x9D28, 0x4EF0, 0x592E, 0x600F, 0x663B, 0x6B83,
+ 0x79E7, 0x9D26, 0x5393, 0x54C0, 0x57C3, 0x5D16, 0x611B, 0x66D6, 0x6DAF,
+ 0x788D, 0x827E, 0x9698, 0x9744, 0x5384, 0x627C, 0x6396, 0x6DB2, 0x7E0A,
+ 0x814B, 0x984D, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6AFB, 0x7F4C,
+ 0x9DAF, 0x9E1A, 0x4E5F, 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, 0x6930,
+ 0x723A, 0x8036, 0xF974, 0x91CE, 0x5F31, 0xF975, 0xF976, 0x7D04, 0x82E5,
+ 0x846F, 0x84BB, 0x85E5, 0x8E8D, 0xF977, 0x4F6F, 0xF978, 0xF979, 0x58E4,
+ 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, 0x6698, 0xF97A, 0x694A, 0x6A23,
+ 0x6D0B, 0x7001, 0x716C, 0x75D2, 0x760D, 0x79B3, 0x7A70, 0xF97B, 0x7F8A,
+ 0xF97C, 0x8944, 0xF97D, 0x8B93, 0x91C0, 0x967D, 0xF97E, 0x990A, 0x5704,
+ 0x5FA1, 0x65BC, 0x6F01, 0x7600, 0x79A6, 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C,
+ 0x5104, 0x61B6, 0x6291, 0x6A8D, 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109,
+ 0x8A00, 0x8AFA, 0x5B7C, 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, 0x63A9,
+ 0x6DF9, 0x5DAA, 0x696D, 0x5186, 0x4E88, 0x4F59, 0xF97F, 0xF980, 0xF981,
+ 0x5982, 0xF982, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xF983, 0x6B5F,
+ 0x6C5D, 0xF984, 0x74B5, 0x7916, 0xF985, 0x8207, 0x8245, 0x8339, 0x8F3F,
+ 0x8F5D, 0xF986, 0x9918, 0xF987, 0xF988, 0xF989, 0x4EA6, 0xF98A, 0x57DF,
+ 0x5F79, 0x6613, 0xF98B, 0xF98C, 0x75AB, 0x7E79, 0x8B6F, 0xF98D, 0x9006,
+ 0x9A5B, 0x56A5, 0x5827, 0x59F8, 0x5A1F, 0x5BB4, 0xF98E, 0x5EF6, 0xF98F,
+ 0xF990, 0x6350, 0x633B, 0xF991, 0x693D, 0x6C87, 0x6CBF, 0x6D8E, 0x6D93,
+ 0x6DF5, 0x6F14, 0xF992, 0x70DF, 0x7136, 0x7159, 0xF993, 0x71C3, 0x71D5,
+ 0xF994, 0x784F, 0x786F, 0xF995, 0x7B75, 0x7DE3, 0xF996, 0x7E2F, 0xF997,
+ 0x884D, 0x8EDF, 0xF998, 0xF999, 0xF99A, 0x925B, 0xF99B, 0x9CF6, 0xF99C,
+ 0xF99D, 0xF99E, 0x6085, 0x6D85, 0xF99F, 0x71B1, 0xF9A0, 0xF9A1, 0x95B1,
+ 0x53AD, 0xF9A2, 0xF9A3, 0xF9A4, 0x67D3, 0xF9A5, 0x708E, 0x7130, 0x7430,
+ 0x8276, 0x82D2, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xF9A6, 0x95BB,
+ 0x9AE5, 0x9E7D, 0x66C4, 0xF9A7, 0x71C1, 0x8449, 0xF9A8, 0xF9A9, 0x584B,
+ 0xF9AA, 0xF9AB, 0x5DB8, 0x5F71, 0xF9AC, 0x6620, 0x668E, 0x6979, 0x69AE,
+ 0x6C38, 0x6CF3, 0x6E36, 0x6F41, 0x6FDA, 0x701B, 0x702F, 0x7150, 0x71DF,
+ 0x7370, 0xF9AD, 0x745B, 0xF9AE, 0x74D4, 0x76C8, 0x7A4E, 0x7E93, 0xF9AF,
+ 0xF9B0, 0x82F1, 0x8A60, 0x8FCE, 0xF9B1, 0x9348, 0xF9B2, 0x9719, 0xF9B3,
+ 0xF9B4, 0x4E42, 0x502A, 0xF9B5, 0x5208, 0x53E1, 0x66F3, 0x6C6D, 0x6FCA,
+ 0x730A, 0x777F, 0x7A62, 0x82AE, 0x85DD, 0x8602, 0xF9B6, 0x88D4, 0x8A63,
+ 0x8B7D, 0x8C6B, 0xF9B7, 0x92B3, 0xF9B8, 0x9713, 0x9810, 0x4E94, 0x4F0D,
+ 0x4FC9, 0x50B2, 0x5348, 0x543E, 0x5433, 0x55DA, 0x5862, 0x58BA, 0x5967,
+ 0x5A1B, 0x5BE4, 0x609F, 0xF9B9, 0x61CA, 0x6556, 0x65FF, 0x6664, 0x68A7,
+ 0x6C5A, 0x6FB3, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x70CF, 0x71AC,
+ 0x7352, 0x7B7D, 0x8708, 0x8AA4, 0x9C32, 0x9F07, 0x5C4B, 0x6C83, 0x7344,
+ 0x7389, 0x923A, 0x6EAB, 0x7465, 0x761F, 0x7A69, 0x7E15, 0x860A, 0x5140,
+ 0x58C5, 0x64C1, 0x74EE, 0x7515, 0x7670, 0x7FC1, 0x9095, 0x96CD, 0x9954,
+ 0x6E26, 0x74E6, 0x7AA9, 0x7AAA, 0x81E5, 0x86D9, 0x8778, 0x8A1B, 0x5A49,
+ 0x5B8C, 0x5B9B, 0x68A1, 0x6900, 0x6D63, 0x73A9, 0x7413, 0x742C, 0x7897,
+ 0x7DE9, 0x7FEB, 0x8118, 0x8155, 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0,
+ 0x5F80, 0x65FA, 0x6789, 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, 0x77EE,
+ 0x5916, 0x5D6C, 0x5DCD, 0x7325, 0x754F, 0xF9BA, 0xF9BB, 0x50E5, 0x51F9,
+ 0x582F, 0x592D, 0x5996, 0x59DA, 0x5BE5, 0xF9BC, 0xF9BD, 0x5DA2, 0x62D7,
+ 0x6416, 0x6493, 0x64FE, 0xF9BE, 0x66DC, 0xF9BF, 0x6A48, 0xF9C0, 0x71FF,
+ 0x7464, 0xF9C1, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x7A88, 0x7AAF,
+ 0x7E47, 0x7E5E, 0x8000, 0x8170, 0xF9C2, 0x87EF, 0x8981, 0x8B20, 0x9059,
+ 0xF9C3, 0x9080, 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, 0x8925, 0x8FB1,
+ 0x4FD1, 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, 0x5BB9, 0x5EB8, 0x6142,
+ 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, 0x7462, 0x7528, 0x752C, 0x8073,
+ 0x8338, 0x84C9, 0x8E0A, 0x9394, 0x93DE, 0xF9C4, 0x4E8E, 0x4F51, 0x5076,
+ 0x512A, 0x53C8, 0x53CB, 0x53F3, 0x5B87, 0x5BD3, 0x5C24, 0x611A, 0x6182,
+ 0x65F4, 0x725B, 0x7397, 0x7440, 0x76C2, 0x7950, 0x7991, 0x79B9, 0x7D06,
+ 0x7FBD, 0x828B, 0x85D5, 0x865E, 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685,
+ 0x96E8, 0x96E9, 0x52D6, 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, 0x7A36,
+ 0x90C1, 0x980A, 0x4E91, 0xF9C5, 0x6A52, 0x6B9E, 0x6F90, 0x7189, 0x8018,
+ 0x82B8, 0x8553, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x904B, 0x9695,
+ 0x96F2, 0x97FB, 0x851A, 0x9B31, 0x4E90, 0x718A, 0x96C4, 0x5143, 0x539F,
+ 0x54E1, 0x5713, 0x5712, 0x57A3, 0x5A9B, 0x5AC4, 0x5BC3, 0x6028, 0x613F,
+ 0x63F4, 0x6C85, 0x6D39, 0x6E72, 0x6E90, 0x7230, 0x733F, 0x7457, 0x82D1,
+ 0x8881, 0x8F45, 0x9060, 0xF9C6, 0x9662, 0x9858, 0x9D1B, 0x6708, 0x8D8A,
+ 0x925E, 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, 0x59D4, 0x5A01, 0x5C09,
+ 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, 0x7DEF, 0x80C3, 0x840E, 0x8466,
+ 0x853F, 0x875F, 0x885B, 0x8918, 0x8B02, 0x9055, 0x97CB, 0x9B4F, 0x4E73,
+ 0x4F91, 0x5112, 0x516A, 0xF9C7, 0x552F, 0x55A9, 0x5B7A, 0x5BA5, 0x5E7C,
+ 0x5E7D, 0x5EBE, 0x60A0, 0x60DF, 0x6108, 0x6109, 0x63C4, 0x6538, 0x6709,
+ 0xF9C8, 0x67D4, 0x67DA, 0xF9C9, 0x6961, 0x6962, 0x6CB9, 0x6D27, 0xF9CA,
+ 0x6E38, 0xF9CB, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6FE1, 0x7336,
+ 0x7337, 0xF9CC, 0x745C, 0x7531, 0xF9CD, 0x7652, 0xF9CE, 0xF9CF, 0x7DAD,
+ 0x81FE, 0x8438, 0x88D5, 0x8A98, 0x8ADB, 0x8AED, 0x8E30, 0x8E42, 0x904A,
+ 0x903E, 0x907A, 0x9149, 0x91C9, 0x936E, 0xF9D0, 0xF9D1, 0x5809, 0xF9D2,
+ 0x6BD3, 0x8089, 0x80B2, 0xF9D3, 0xF9D4, 0x5141, 0x596B, 0x5C39, 0xF9D5,
+ 0xF9D6, 0x6F64, 0x73A7, 0x80E4, 0x8D07, 0xF9D7, 0x9217, 0x958F, 0xF9D8,
+ 0xF9D9, 0xF9DA, 0xF9DB, 0x807F, 0x620E, 0x701C, 0x7D68, 0x878D, 0xF9DC,
+ 0x57A0, 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, 0x96B1, 0x4E59, 0x541F,
+ 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, 0x63D6, 0x6CE3, 0x9091, 0x51DD,
+ 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, 0x501A, 0x5100, 0x5B9C, 0x610F, 0x61FF,
+ 0x64EC, 0x6905, 0x6BC5, 0x7591, 0x77E3, 0x7FA9, 0x8264, 0x858F, 0x87FB,
+ 0x8863, 0x8ABC, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8B70, 0x91AB,
+ 0x4E8C, 0x4EE5, 0x4F0A, 0xF9DD, 0xF9DE, 0x5937, 0x59E8, 0xF9DF, 0x5DF2,
+ 0x5F1B, 0x5F5B, 0x6021, 0xF9E0, 0xF9E1, 0xF9E2, 0xF9E3, 0x723E, 0x73E5,
+ 0xF9E4, 0x7570, 0x75CD, 0xF9E5, 0x79FB, 0xF9E6, 0x800C, 0x8033, 0x8084,
+ 0x82E1, 0x8351, 0xF9E7, 0xF9E8, 0x8CBD, 0x8CB3, 0x9087, 0xF9E9, 0xF9EA,
+ 0x98F4, 0x990C, 0xF9EB, 0xF9EC, 0x7037, 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC,
+ 0x8B1A, 0x4EBA, 0x4EC1, 0x5203, 0x5370, 0xF9ED, 0x54BD, 0x56E0, 0x59FB,
+ 0x5BC5, 0x5F15, 0x5FCD, 0x6E6E, 0xF9EE, 0xF9EF, 0x7D6A, 0x8335, 0xF9F0,
+ 0x8693, 0x8A8D, 0xF9F1, 0x976D, 0x9777, 0xF9F2, 0xF9F3, 0x4E00, 0x4F5A,
+ 0x4F7E, 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, 0x99B9, 0x4EFB, 0x58EC,
+ 0x598A, 0x59D9, 0x6041, 0xF9F4, 0xF9F5, 0x7A14, 0xF9F6, 0x834F, 0x8CC3,
+ 0x5165, 0x5344, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xF9F7, 0xF9F8,
+ 0xF9F9, 0x4ECD, 0x5269, 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, 0x59C9,
+ 0x59FF, 0x5B50, 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, 0x7099, 0x716E,
+ 0x7386, 0x74F7, 0x75B5, 0x78C1, 0x7D2B, 0x8005, 0x81EA, 0x8328, 0x8517,
+ 0x85C9, 0x8AEE, 0x8CC7, 0x96CC, 0x4F5C, 0x52FA, 0x56BC, 0x65AB, 0x6628,
+ 0x707C, 0x70B8, 0x7235, 0x7DBD, 0x828D, 0x914C, 0x96C0, 0x9D72, 0x5B71,
+ 0x68E7, 0x6B98, 0x6F7A, 0x76DE, 0x5C91, 0x66AB, 0x6F5B, 0x7BB4, 0x7C2A,
+ 0x8836, 0x96DC, 0x4E08, 0x4ED7, 0x5320, 0x5834, 0x58BB, 0x58EF, 0x596C,
+ 0x5C07, 0x5E33, 0x5E84, 0x5F35, 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3,
+ 0x6B0C, 0x6F3F, 0x7246, 0xF9FA, 0x7350, 0x748B, 0x7AE0, 0x7CA7, 0x8178,
+ 0x81DF, 0x81E7, 0x838A, 0x846C, 0x8523, 0x8594, 0x85CF, 0x88DD, 0x8D13,
+ 0x91AC, 0x9577, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x969C, 0x518D,
+ 0x54C9, 0x5728, 0x5BB0, 0x624D, 0x6750, 0x683D, 0x6893, 0x6E3D, 0x6ED3,
+ 0x707D, 0x7E21, 0x88C1, 0x8CA1, 0x8F09, 0x9F4B, 0x9F4E, 0x722D, 0x7B8F,
+ 0x8ACD, 0x931A, 0x4F47, 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, 0x62B5,
+ 0x6775, 0x696E, 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, 0x75BD, 0x7BB8,
+ 0x7D35, 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, 0x8CAF, 0x8E87, 0x9019,
+ 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, 0x5AE1, 0x5BC2, 0x6458, 0x6575,
+ 0x6EF4, 0x72C4, 0xF9FB, 0x7684, 0x7A4D, 0x7B1B, 0x7C4D, 0x7E3E, 0x7FDF,
+ 0x837B, 0x8B2B, 0x8CCA, 0x8D64, 0x8DE1, 0x8E5F, 0x8FEA, 0x8FF9, 0x9069,
+ 0x93D1, 0x4F43, 0x4F7A, 0x50B3, 0x5168, 0x5178, 0x524D, 0x526A, 0x5861,
+ 0x587C, 0x5960, 0x5C08, 0x5C55, 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF,
+ 0x6C08, 0x6FB1, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x714E, 0x7420,
+ 0x7530, 0x7538, 0x7551, 0x7672, 0x7B4C, 0x7B8B, 0x7BAD, 0x7BC6, 0x7E8F,
+ 0x8A6E, 0x8F3E, 0x8F49, 0x923F, 0x9293, 0x9322, 0x942B, 0x96FB, 0x985A,
+ 0x986B, 0x991E, 0x5207, 0x622A, 0x6298, 0x6D59, 0x7664, 0x7ACA, 0x7BC0,
+ 0x7D76, 0x5360, 0x5CBE, 0x5E97, 0x6F38, 0x70B9, 0x7C98, 0x9711, 0x9B8E,
+ 0x9EDE, 0x63A5, 0x647A, 0x8776, 0x4E01, 0x4E95, 0x4EAD, 0x505C, 0x5075,
+ 0x5448, 0x59C3, 0x5B9A, 0x5E40, 0x5EAD, 0x5EF7, 0x5F81, 0x60C5, 0x633A,
+ 0x653F, 0x6574, 0x65CC, 0x6676, 0x6678, 0x67FE, 0x6968, 0x6A89, 0x6B63,
+ 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, 0x701E, 0x70A1, 0x738E, 0x73FD,
+ 0x753A, 0x775B, 0x7887, 0x798E, 0x7A0B, 0x7A7D, 0x7CBE, 0x7D8E, 0x8247,
+ 0x8A02, 0x8AEA, 0x8C9E, 0x912D, 0x914A, 0x91D8, 0x9266, 0x92CC, 0x9320,
+ 0x9706, 0x9756, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x975C, 0x9802,
+ 0x9F0E, 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, 0x5F1F, 0x608C, 0x63D0,
+ 0x68AF, 0x6FDF, 0x796D, 0x7B2C, 0x81CD, 0x85BA, 0x88FD, 0x8AF8, 0x8E44,
+ 0x918D, 0x9664, 0x969B, 0x973D, 0x984C, 0x9F4A, 0x4FCE, 0x5146, 0x51CB,
+ 0x52A9, 0x5632, 0x5F14, 0x5F6B, 0x63AA, 0x64CD, 0x65E9, 0x6641, 0x66FA,
+ 0x66F9, 0x671D, 0x689D, 0x68D7, 0x69FD, 0x6F15, 0x6F6E, 0x7167, 0x71E5,
+ 0x722A, 0x74AA, 0x773A, 0x7956, 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97,
+ 0x7CDF, 0x7D44, 0x7E70, 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, 0x8D99,
+ 0x8E81, 0x9020, 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, 0x65CF, 0x7C07,
+ 0x8DB3, 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, 0x731D, 0x5027, 0x5B97,
+ 0x5F9E, 0x60B0, 0x616B, 0x68D5, 0x6DD9, 0x742E, 0x7A2E, 0x7D42, 0x7D9C,
+ 0x7E31, 0x816B, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8E2A, 0x8E35,
+ 0x937E, 0x9418, 0x4F50, 0x5750, 0x5DE6, 0x5EA7, 0x632B, 0x7F6A, 0x4E3B,
+ 0x4F4F, 0x4F8F, 0x505A, 0x59DD, 0x80C4, 0x546A, 0x5468, 0x55FE, 0x594F,
+ 0x5B99, 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, 0x682A, 0x6CE8, 0x6D32,
+ 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, 0x7C4C, 0x7D02, 0x7D2C, 0x7DA2,
+ 0x821F, 0x86DB, 0x8A3B, 0x8A85, 0x8D70, 0x8E8A, 0x8F33, 0x9031, 0x914E,
+ 0x9152, 0x9444, 0x99D0, 0x7AF9, 0x7CA5, 0x4FCA, 0x5101, 0x51C6, 0x57C8,
+ 0x5BEF, 0x5CFB, 0x6659, 0x6A3D, 0x6D5A, 0x6E96, 0x6FEC, 0x710C, 0x756F,
+ 0x7AE3, 0x8822, 0x9021, 0x9075, 0x96CB, 0x99FF, 0x8301, 0x4E2D, 0x4EF2,
+ 0x8846, 0x91CD, 0x537D, 0x6ADB, 0x696B, 0x6C41, 0x847A, 0x589E, 0x618E,
+ 0x66FE, 0x62EF, 0x70DD, 0x7511, 0x75C7, 0x7E52, 0x84B8, 0x8B49, 0x8D08,
+ 0x4E4B, 0x53EA, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x54AB, 0x5730,
+ 0x5740, 0x5FD7, 0x6301, 0x6307, 0x646F, 0x652F, 0x65E8, 0x667A, 0x679D,
+ 0x67B3, 0x6B62, 0x6C60, 0x6C9A, 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957,
+ 0x7D19, 0x80A2, 0x8102, 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, 0xF9FC,
+ 0x8D04, 0x8DBE, 0x9072, 0x76F4, 0x7A19, 0x7A37, 0x7E54, 0x8077, 0x5507,
+ 0x55D4, 0x5875, 0x632F, 0x6422, 0x6649, 0x664B, 0x686D, 0x699B, 0x6B84,
+ 0x6D25, 0x6EB1, 0x73CD, 0x7468, 0x74A1, 0x755B, 0x75B9, 0x76E1, 0x771E,
+ 0x778B, 0x79E6, 0x7E09, 0x7E1D, 0x81FB, 0x852F, 0x8897, 0x8A3A, 0x8CD1,
+ 0x8EEB, 0x8FB0, 0x9032, 0x93AD, 0x9663, 0x9673, 0x9707, 0x4F84, 0x53F1,
+ 0x59EA, 0x5AC9, 0x5E19, 0x684E, 0x74C6, 0x75BE, 0x79E9, 0x7A92, 0x81A3,
+ 0x86ED, 0x8CEA, 0x8DCC, 0x8FED, 0x659F, 0x6715, 0xF9FD, 0x57F7, 0x6F57,
+ 0x7DDD, 0x8F2F, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x93F6, 0x96C6,
+ 0x5FB5, 0x61F2, 0x6F84, 0x4E14, 0x4F98, 0x501F, 0x53C9, 0x55DF, 0x5D6F,
+ 0x5DEE, 0x6B21, 0x6B64, 0x78CB, 0x7B9A, 0xF9FE, 0x8E49, 0x8ECA, 0x906E,
+ 0x6349, 0x643E, 0x7740, 0x7A84, 0x932F, 0x947F, 0x9F6A, 0x64B0, 0x6FAF,
+ 0x71E6, 0x74A8, 0x74DA, 0x7AC4, 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A,
+ 0x8D0A, 0x947D, 0x9910, 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, 0x7D2E,
+ 0x50ED, 0x53C3, 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, 0x7AD9, 0x8B92,
+ 0x8B96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, 0x5EE0, 0x5F70, 0x6134,
+ 0x655E, 0x660C, 0x6636, 0x66A2, 0x69CD, 0x6EC4, 0x6F32, 0x7316, 0x7621,
+ 0x7A93, 0x8139, 0x8259, 0x83D6, 0x84BC, 0x50B5, 0x57F0, 0x5BC0, 0x5BE8,
+ 0x5F69, 0x63A1, 0x7826, 0x7DB5, 0x83DC, 0x8521, 0x91C7, 0x91F5, 0x518A,
+ 0x67F5, 0x7B56, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8CAC, 0x51C4,
+ 0x59BB, 0x60BD, 0x8655, 0x501C, 0xF9FF, 0x5254, 0x5C3A, 0x617D, 0x621A,
+ 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, 0x810A, 0x8E60, 0x965F, 0x96BB,
+ 0x4EDF, 0x5343, 0x5598, 0x5929, 0x5DDD, 0x64C5, 0x6CC9, 0x6DFA, 0x7394,
+ 0x7A7F, 0x821B, 0x85A6, 0x8CE4, 0x8E10, 0x9077, 0x91E7, 0x95E1, 0x9621,
+ 0x97C6, 0x51F8, 0x54F2, 0x5586, 0x5FB9, 0x64A4, 0x6F88, 0x7DB4, 0x8F1F,
+ 0x8F4D, 0x9435, 0x50C9, 0x5C16, 0x6CBE, 0x6DFB, 0x751B, 0x77BB, 0x7C3D,
+ 0x7C64, 0x8A79, 0x8AC2, 0x581E, 0x59BE, 0x5E16, 0x6377, 0x7252, 0x758A,
+ 0x776B, 0x8ADC, 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, 0x807D, 0x83C1,
+ 0x8ACB, 0x9751, 0x9BD6, 0xFA00, 0x5243, 0x66FF, 0x6D95, 0x6EEF, 0x7DE0,
+ 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, 0x527F, 0x54E8, 0x6194, 0x6284,
+ 0x62DB, 0x68A2, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x6912, 0x695A,
+ 0x6A35, 0x7092, 0x7126, 0x785D, 0x7901, 0x790E, 0x79D2, 0x7A0D, 0x8096,
+ 0x8278, 0x82D5, 0x8349, 0x8549, 0x8C82, 0x8D85, 0x9162, 0x918B, 0x91AE,
+ 0x4FC3, 0x56D1, 0x71ED, 0x77D7, 0x8700, 0x89F8, 0x5BF8, 0x5FD6, 0x6751,
+ 0x90A8, 0x53E2, 0x585A, 0x5BF5, 0x60A4, 0x6181, 0x6460, 0x7E3D, 0x8070,
+ 0x8525, 0x9283, 0x64AE, 0x50AC, 0x5D14, 0x6700, 0x589C, 0x62BD, 0x63A8,
+ 0x690E, 0x6978, 0x6A1E, 0x6E6B, 0x76BA, 0x79CB, 0x82BB, 0x8429, 0x8ACF,
+ 0x8DA8, 0x8FFD, 0x9112, 0x914B, 0x919C, 0x9310, 0x9318, 0x939A, 0x96DB,
+ 0x9A36, 0x9C0D, 0x4E11, 0x755C, 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E,
+ 0x84C4, 0x8E59, 0x8E74, 0x8EF8, 0x9010, 0x6625, 0x693F, 0x7443, 0x51FA,
+ 0x672E, 0x9EDC, 0x5145, 0x5FE0, 0x6C96, 0x87F2, 0x885D, 0x8877, 0x60B4,
+ 0x81B5, 0x8403, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x8D05, 0x53D6,
+ 0x5439, 0x5634, 0x5A36, 0x5C31, 0x708A, 0x7FE0, 0x805A, 0x8106, 0x81ED,
+ 0x8DA3, 0x9189, 0x9A5F, 0x9DF2, 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C,
+ 0x5C64, 0x4F88, 0x5024, 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, 0x6CBB,
+ 0x6DC4, 0x71BE, 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, 0x7DC7, 0x7DFB,
+ 0x7F6E, 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, 0x9F52, 0x5247, 0x52C5,
+ 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, 0x4FB5, 0x5BE2, 0x6795, 0x6C88,
+ 0x6D78, 0x741B, 0x7827, 0x91DD, 0x937C, 0x87C4, 0x79E4, 0x7A31, 0x5FEB,
+ 0x4ED6, 0x54A4, 0x553E, 0x58AE, 0x59A5, 0x60F0, 0x6253, 0x62D6, 0x6736,
+ 0x6955, 0x8235, 0x9640, 0x99B1, 0x99DD, 0x502C, 0x5353, 0x5544, 0x577C,
+ 0xFA01, 0x6258, 0xFA02, 0x64E2, 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422,
+ 0x7438, 0x8A17, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x9438, 0x5451,
+ 0x5606, 0x5766, 0x5F48, 0x619A, 0x6B4E, 0x7058, 0x70AD, 0x7DBB, 0x8A95,
+ 0x596A, 0x812B, 0x63A2, 0x7708, 0x803D, 0x8CAA, 0x5854, 0x642D, 0x69BB,
+ 0x5B95, 0x5E11, 0x6E6F, 0xFA03, 0x8569, 0x514C, 0x53F0, 0x592A, 0x6020,
+ 0x614B, 0x6B86, 0x6C70, 0x6CF0, 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, 0x90B0,
+ 0x98B1, 0xFA04, 0x64C7, 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, 0x571F,
+ 0x8A0E, 0x615F, 0x6876, 0xFA05, 0x75DB, 0x7B52, 0x7D71, 0x901A, 0x5806,
+ 0x69CC, 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, 0x5957, 0x59AC, 0x6295,
+ 0x900F, 0x9B2A, 0x615D, 0x7279, 0x95D6, 0x5761, 0x5A46, 0x5DF4, 0x628A,
+ 0x64AD, 0x64FA, 0x6777, 0x6CE2, 0x6D3E, 0x722C, 0x7436, 0x7834, 0x7F77,
+ 0x82AD, 0x8DDB, 0x9817, 0x5224, 0x5742, 0x677F, 0x7248, 0x74E3, 0x8CA9,
+ 0x8FA6, 0x9211, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x962A, 0x516B,
+ 0x53ED, 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, 0x6C9B, 0x6D7F, 0x724C,
+ 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, 0x6F8E, 0x70F9, 0x81A8, 0x610E,
+ 0x4FBF, 0x504F, 0x6241, 0x7247, 0x7BC7, 0x7DE8, 0x7FE9, 0x904D, 0x97AD,
+ 0x9A19, 0x8CB6, 0x576A, 0x5E73, 0x67B0, 0x840D, 0x8A55, 0x5420, 0x5B16,
+ 0x5E63, 0x5EE2, 0x5F0A, 0x6583, 0x80BA, 0x853D, 0x9589, 0x965B, 0x4F48,
+ 0x5305, 0x530D, 0x530F, 0x5486, 0x54FA, 0x5703, 0x5E03, 0x6016, 0x629B,
+ 0x62B1, 0x6355, 0xFA06, 0x6CE1, 0x6D66, 0x75B1, 0x7832, 0x80DE, 0x812F,
+ 0x82DE, 0x8461, 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, 0x98FD, 0x9B91,
+ 0x5E45, 0x66B4, 0x66DD, 0x7011, 0x7206, 0xFA07, 0x4FF5, 0x527D, 0x5F6A,
+ 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8C79, 0x98C7,
+ 0x98C4, 0x9A43, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x54C1, 0x7A1F,
+ 0x6953, 0x8AF7, 0x8C4A, 0x98A8, 0x99AE, 0x5F7C, 0x62AB, 0x75B2, 0x76AE,
+ 0x88AB, 0x907F, 0x9642, 0x5339, 0x5F3C, 0x5FC5, 0x6CCC, 0x73CC, 0x7562,
+ 0x758B, 0x7B46, 0x82FE, 0x999D, 0x4E4F, 0x903C, 0x4E0B, 0x4F55, 0x53A6,
+ 0x590F, 0x5EC8, 0x6630, 0x6CB3, 0x7455, 0x8377, 0x8766, 0x8CC0, 0x9050,
+ 0x971E, 0x9C15, 0x58D1, 0x5B78, 0x8650, 0x8B14, 0x9DB4, 0x5BD2, 0x6068,
+ 0x608D, 0x65F1, 0x6C57, 0x6F22, 0x6FA3, 0x701A, 0x7F55, 0x7FF0, 0x9591,
+ 0x9592, 0x9650, 0x97D3, 0x5272, 0x8F44, 0x51FD, 0x542B, 0x54B8, 0x5563,
+ 0x558A, 0x6ABB, 0x6DB5, 0x7DD8, 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408,
+ 0x54C8, 0x76D2, 0x86E4, 0x95A4, 0x95D4, 0x965C, 0x4EA2, 0x4F09, 0x59EE,
+ 0x5AE6, 0x5DF7, 0x6052, 0x6297, 0x676D, 0x6841, 0x6C86, 0x6E2F, 0x7F38,
+ 0x809B, 0x822A, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0xFA08, 0xFA09,
+ 0x9805, 0x4EA5, 0x5055, 0x54B3, 0x5793, 0x595A, 0x5B69, 0x5BB3, 0x61C8,
+ 0x6977, 0x6D77, 0x7023, 0x87F9, 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED,
+ 0x9AB8, 0x52BE, 0x6838, 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, 0x4EAB,
+ 0x5411, 0x56AE, 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, 0x9999, 0x5653,
+ 0x589F, 0x865B, 0x8A31, 0x61B2, 0x6AF6, 0x737B, 0x8ED2, 0x6B47, 0x96AA,
+ 0x9A57, 0x5955, 0x7200, 0x8D6B, 0x9769, 0x4FD4, 0x5CF4, 0x5F26, 0x61F8,
+ 0x665B, 0x6CEB, 0x70AB, 0x7384, 0x73B9, 0x73FE, 0x7729, 0x774D, 0x7D43,
+ 0x7D62, 0x7E23, 0x8237, 0x8852, 0xFA0A, 0x8CE2, 0x9249, 0x986F, 0x5B51,
+ 0x7A74, 0x8840, 0x9801, 0x5ACC, 0x4FE0, 0x5354, 0x593E, 0x5CFD, 0x633E,
+ 0x6D79, 0x72F9, 0x8105, 0x8107, 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144,
+ 0x5211, 0x578B, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x5F62, 0x6CC2,
+ 0x6ECE, 0x7005, 0x7050, 0x70AF, 0x7192, 0x73E9, 0x7469, 0x834A, 0x87A2,
+ 0x8861, 0x9008, 0x90A2, 0x93A3, 0x99A8, 0x516E, 0x5F57, 0x60E0, 0x6167,
+ 0x66B3, 0x8559, 0x8E4A, 0x91AF, 0x978B, 0x4E4E, 0x4E92, 0x547C, 0x58D5,
+ 0x58FA, 0x597D, 0x5CB5, 0x5F27, 0x6236, 0x6248, 0x660A, 0x6667, 0x6BEB,
+ 0x6D69, 0x6DCF, 0x6E56, 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, 0x72D0,
+ 0x7425, 0x745A, 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, 0x80E1, 0x82A6,
+ 0x846B, 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, 0x8C6A, 0x93AC, 0x9800,
+ 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, 0x660F, 0x6DF7, 0x6E3E, 0x743F,
+ 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, 0x54C4, 0x5F18, 0x6C5E, 0x6CD3, 0x6D2A,
+ 0x70D8, 0x7D05, 0x8679, 0x8A0C, 0x9D3B, 0x5316, 0x548C, 0x5B05, 0x6A3A,
+ 0x706B, 0x7575, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x798D, 0x79BE,
+ 0x82B1, 0x83EF, 0x8A71, 0x8B41, 0x8CA8, 0x9774, 0xFA0B, 0x64F4, 0x652B,
+ 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, 0x5950, 0x5BA6, 0x5E7B, 0x60A3,
+ 0x63DB, 0x6B61, 0x6665, 0x6853, 0x6E19, 0x7165, 0x74B0, 0x7D08, 0x9084,
+ 0x9A69, 0x9C25, 0x6D3B, 0x6ED1, 0x733E, 0x8C41, 0x95CA, 0x51F0, 0x5E4C,
+ 0x5FA8, 0x604D, 0x60F6, 0x6130, 0x614C, 0x6643, 0x6644, 0x69A5, 0x6CC1,
+ 0x6E5F, 0x6EC9, 0x6F62, 0x714C, 0x749C, 0x7687, 0x7BC1, 0x7C27, 0x8352,
+ 0x8757, 0x9051, 0x968D, 0x9EC3, 0x532F, 0x56DE, 0x5EFB, 0x5F8A, 0x6062,
+ 0x6094, 0x61F7, 0x6666, 0x6703, 0x6A9C, 0x6DEE, 0x6FAE, 0x7070, 0x736A,
+ 0x7E6A, 0x81BE, 0x8334, 0x86D4, 0x8AA8, 0x8CC4, 0x5283, 0x7372, 0x5B96,
+ 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, 0x6548, 0x6585, 0x66C9, 0x689F,
+ 0x6D8D, 0x6DC6, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 0x723B, 0x80B4,
+ 0x9175, 0x9A4D, 0x4FAF, 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, 0x55C5,
+ 0x5E3F, 0x5F8C, 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, 0x52F3, 0x5864,
+ 0x58CE, 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, 0x6688, 0x85A8, 0x55A7,
+ 0x6684, 0x714A, 0x8431, 0x5349, 0x5599, 0x6BC1, 0x5F59, 0x5FBD, 0x63EE,
+ 0x6689, 0x7147, 0x8AF1, 0x8F1D, 0x9EBE, 0x4F11, 0x643A, 0x70CB, 0x7566,
+ 0x8667, 0x6064, 0x8B4E, 0x9DF8, 0x5147, 0x51F6, 0x5308, 0x6D36, 0x80F8,
+ 0x9ED1, 0x6615, 0x6B23, 0x7098, 0x75D5, 0x5403, 0x5C79, 0x7D07, 0x8A16,
+ 0x6B20, 0x6B3D, 0x6B46, 0x5438, 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6,
+ 0x51DE, 0x559C, 0x566B, 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, 0x6198,
+ 0x6231, 0x665E, 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, 0x79A7, 0x7A00,
+ 0x7FB2, 0x8A70, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+ { ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR,
+ ERROR, ERROR, ERROR},
+};
+
+/*
+ * Mapping from Unicode back to KS X 1001.
+ *
+ * This inverse is done the same way the SBCS ones are done: I
+ * provide a list of KS X 1001 positions, sorted into ascending
+ * order of their Unicode values. Then we can binary-search through
+ * this list, referring to the above table for each comparison, to
+ * find the coordinates for a given code point.
+ *
+ * Generated by running the following sh+Perl over KSX1001.TXT:
+
+cat CP949.TXT | \
+perl -ne '$a{$3}=[hex$1,hex$2] if /^0x(\S\S)(\S\S)\s+(0x\S+)\s/;' \
+ -e 'END {$o=" ";for $k (sort keys %a) { ($r,$c) = @{$a{$k}}; ' \
+ -e '$o .= $C; $C = ", "; (print "$o\n"), $o=" " if length $o > 70;' \
+ -e '$o .= sprintf "{%d,%d}", $r-128,$c-64; } print "$o\n"; }'
+
+ */
+
+static const struct { unsigned char r, c; } cp949_backward[] = {
+ {34,110}, {34,116}, {33,151}, {33,103}, {40,99}, {33,105}, {34,167},
+ {33,134}, {33,126}, {41,183}, {41,184}, {34,101}, {34,146}, {33,100},
+ {34,108}, {41,182}, {40,108}, {40,185}, {40,182}, {40,186}, {34,111},
+ {40,97}, {40,98}, {33,127}, {40,106}, {40,109}, {41,108}, {41,97},
+ {41,99}, {33,128}, {41,106}, {41,109}, {41,98}, {40,100}, {41,100},
+ {41,101}, {40,102}, {41,102}, {41,103}, {40,104}, {41,104}, {40,105},
+ {41,105}, {41,112}, {40,111}, {41,111}, {40,107}, {41,107}, {40,110},
+ {41,110}, {34,103}, {34,112}, {34,104}, {34,107}, {34,106}, {34,109},
+ {34,105}, {37,129}, {37,130}, {37,131}, {37,132}, {37,133}, {37,134},
+ {37,135}, {37,136}, {37,137}, {37,138}, {37,139}, {37,140}, {37,141},
+ {37,142}, {37,143}, {37,144}, {37,145}, {37,146}, {37,147}, {37,148},
+ {37,149}, {37,150}, {37,151}, {37,152}, {37,161}, {37,162}, {37,163},
+ {37,164}, {37,165}, {37,166}, {37,167}, {37,168}, {37,169}, {37,170},
+ {37,171}, {37,172}, {37,173}, {37,174}, {37,175}, {37,176}, {37,177},
+ {37,178}, {37,179}, {37,180}, {37,181}, {37,182}, {37,183}, {37,184},
+ {44,103}, {44,97}, {44,98}, {44,99}, {44,100}, {44,101}, {44,102},
+ {44,104}, {44,105}, {44,106}, {44,107}, {44,108}, {44,109}, {44,110},
+ {44,111}, {44,112}, {44,113}, {44,114}, {44,115}, {44,116}, {44,117},
+ {44,118}, {44,119}, {44,120}, {44,121}, {44,122}, {44,123}, {44,124},
+ {44,125}, {44,126}, {44,127}, {44,128}, {44,129}, {44,145}, {44,146},
+ {44,147}, {44,148}, {44,149}, {44,150}, {44,152}, {44,153}, {44,154},
+ {44,155}, {44,156}, {44,157}, {44,158}, {44,159}, {44,160}, {44,161},
+ {44,162}, {44,163}, {44,164}, {44,165}, {44,166}, {44,167}, {44,168},
+ {44,169}, {44,170}, {44,171}, {44,172}, {44,173}, {44,174}, {44,175},
+ {44,176}, {44,177}, {44,151}, {33,106}, {33,110}, {33,111}, {33,112},
+ {33,113}, {34,147}, {34,148}, {33,101}, {33,102}, {34,118}, {33,135},
+ {33,136}, {33,152}, {41,185}, {41,186}, {41,187}, {41,188}, {41,189},
+ {41,190}, {34,166}, {33,137}, {34,117}, {39,100}, {34,160}, {34,165},
+ {34,162}, {39,153}, {33,138}, {40,183}, {40,184}, {40,187}, {40,188},
+ {40,189}, {40,190}, {37,112}, {37,113}, {37,114}, {37,115}, {37,116},
+ {37,117}, {37,118}, {37,119}, {37,120}, {37,121}, {37,97}, {37,98},
+ {37,99}, {37,100}, {37,101}, {37,102}, {37,103}, {37,104}, {37,105},
+ {37,106}, {33,167}, {33,168}, {33,166}, {33,169}, {33,170}, {34,149},
+ {34,152}, {34,150}, {34,153}, {34,151}, {34,97}, {34,98}, {34,99},
+ {33,147}, {34,100}, {33,148}, {33,180}, {33,181}, {34,115}, {34,114},
+ {33,174}, {33,176}, {33,132}, {33,144}, {33,107}, {33,188}, {33,189},
+ {33,187}, {33,186}, {33,178}, {33,179}, {34,113}, {33,133}, {33,177},
+ {33,109}, {33,175}, {33,150}, {33,129}, {33,149}, {33,130}, {33,131},
+ {33,172}, {33,173}, {33,184}, {33,185}, {33,182}, {33,183}, {34,129},
+ {33,145}, {33,146}, {40,167}, {40,168}, {40,169}, {40,170}, {40,171},
+ {40,172}, {40,173}, {40,174}, {40,175}, {40,176}, {40,177}, {40,178},
+ {40,179}, {40,180}, {40,181}, {41,167}, {41,168}, {41,169}, {41,170},
+ {41,171}, {41,172}, {41,173}, {41,174}, {41,175}, {41,176}, {41,177},
+ {41,178}, {41,179}, {41,180}, {41,181}, {41,141}, {41,142}, {41,143},
+ {41,144}, {41,145}, {41,146}, {41,147}, {41,148}, {41,149}, {41,150},
+ {41,151}, {41,152}, {41,153}, {41,154}, {41,155}, {41,156}, {41,157},
+ {41,158}, {41,159}, {41,160}, {41,161}, {41,162}, {41,163}, {41,164},
+ {41,165}, {41,166}, {40,141}, {40,142}, {40,143}, {40,144}, {40,145},
+ {40,146}, {40,147}, {40,148}, {40,149}, {40,150}, {40,151}, {40,152},
+ {40,153}, {40,154}, {40,155}, {40,156}, {40,157}, {40,158}, {40,159},
+ {40,160}, {40,161}, {40,162}, {40,163}, {40,164}, {40,165}, {40,166},
+ {38,97}, {38,108}, {38,98}, {38,109}, {38,99}, {38,136}, {38,135},
+ {38,110}, {38,100}, {38,130}, {38,129}, {38,111}, {38,102}, {38,134},
+ {38,133}, {38,113}, {38,101}, {38,132}, {38,131}, {38,112}, {38,103},
+ {38,124}, {38,137}, {38,138}, {38,119}, {38,139}, {38,140}, {38,114},
+ {38,105}, {38,126}, {38,141}, {38,142}, {38,121}, {38,143}, {38,144},
+ {38,116}, {38,104}, {38,145}, {38,146}, {38,120}, {38,125}, {38,147},
+ {38,148}, {38,115}, {38,106}, {38,149}, {38,150}, {38,122}, {38,127},
+ {38,151}, {38,152}, {38,117}, {38,107}, {38,153}, {38,154}, {38,123},
+ {38,155}, {38,156}, {38,128}, {38,157}, {38,158}, {38,159}, {38,160},
+ {38,161}, {38,162}, {38,163}, {38,164}, {38,118}, {34,134}, {33,161},
+ {33,160}, {34,131}, {34,135}, {34,136}, {34,139}, {34,138}, {34,137},
+ {34,140}, {33,163}, {33,162}, {34,122}, {34,121}, {33,165}, {33,164},
+ {34,120}, {34,119}, {33,159}, {33,158}, {34,130}, {33,155}, {33,157},
+ {33,156}, {34,132}, {34,133}, {33,154}, {33,153}, {34,143}, {34,142},
+ {34,144}, {34,145}, {33,143}, {33,142}, {34,124}, {34,125}, {34,128},
+ {34,123}, {34,126}, {34,127}, {34,141}, {34,155}, {34,156}, {34,157},
+ {34,154}, {33,97}, {33,98}, {33,99}, {33,104}, {33,116}, {33,117},
+ {33,118}, {33,119}, {33,120}, {33,121}, {33,122}, {33,123}, {33,124},
+ {33,125}, {33,171}, {33,114}, {33,115}, {42,97}, {42,98}, {42,99},
+ {42,100}, {42,101}, {42,102}, {42,103}, {42,104}, {42,105}, {42,106},
+ {42,107}, {42,108}, {42,109}, {42,110}, {42,111}, {42,112}, {42,113},
+ {42,114}, {42,115}, {42,116}, {42,117}, {42,118}, {42,119}, {42,120},
+ {42,121}, {42,122}, {42,123}, {42,124}, {42,125}, {42,126}, {42,127},
+ {42,128}, {42,129}, {42,130}, {42,131}, {42,132}, {42,133}, {42,134},
+ {42,135}, {42,136}, {42,137}, {42,138}, {42,139}, {42,140}, {42,141},
+ {42,142}, {42,143}, {42,144}, {42,145}, {42,146}, {42,147}, {42,148},
+ {42,149}, {42,150}, {42,151}, {42,152}, {42,153}, {42,154}, {42,155},
+ {42,156}, {42,157}, {42,158}, {42,159}, {42,160}, {42,161}, {42,162},
+ {42,163}, {42,164}, {42,165}, {42,166}, {42,167}, {42,168}, {42,169},
+ {42,170}, {42,171}, {42,172}, {42,173}, {42,174}, {42,175}, {42,176},
+ {42,177}, {42,178}, {42,179}, {43,97}, {43,98}, {43,99}, {43,100},
+ {43,101}, {43,102}, {43,103}, {43,104}, {43,105}, {43,106}, {43,107},
+ {43,108}, {43,109}, {43,110}, {43,111}, {43,112}, {43,113}, {43,114},
+ {43,115}, {43,116}, {43,117}, {43,118}, {43,119}, {43,120}, {43,121},
+ {43,122}, {43,123}, {43,124}, {43,125}, {43,126}, {43,127}, {43,128},
+ {43,129}, {43,130}, {43,131}, {43,132}, {43,133}, {43,134}, {43,135},
+ {43,136}, {43,137}, {43,138}, {43,139}, {43,140}, {43,141}, {43,142},
+ {43,143}, {43,144}, {43,145}, {43,146}, {43,147}, {43,148}, {43,149},
+ {43,150}, {43,151}, {43,152}, {43,153}, {43,154}, {43,155}, {43,156},
+ {43,157}, {43,158}, {43,159}, {43,160}, {43,161}, {43,162}, {43,163},
+ {43,164}, {43,165}, {43,166}, {43,167}, {43,168}, {43,169}, {43,170},
+ {43,171}, {43,172}, {43,173}, {43,174}, {43,175}, {43,176}, {43,177},
+ {43,178}, {43,179}, {43,180}, {43,181}, {43,182}, {36,97}, {36,98},
+ {36,99}, {36,100}, {36,101}, {36,102}, {36,103}, {36,104}, {36,105},
+ {36,106}, {36,107}, {36,108}, {36,109}, {36,110}, {36,111}, {36,112},
+ {36,113}, {36,114}, {36,115}, {36,116}, {36,117}, {36,118}, {36,119},
+ {36,120}, {36,121}, {36,122}, {36,123}, {36,124}, {36,125}, {36,126},
+ {36,127}, {36,128}, {36,129}, {36,130}, {36,131}, {36,132}, {36,133},
+ {36,134}, {36,135}, {36,136}, {36,137}, {36,138}, {36,139}, {36,140},
+ {36,141}, {36,142}, {36,143}, {36,144}, {36,145}, {36,146}, {36,147},
+ {36,148}, {36,149}, {36,150}, {36,151}, {36,152}, {36,153}, {36,154},
+ {36,155}, {36,156}, {36,157}, {36,158}, {36,159}, {36,160}, {36,161},
+ {36,162}, {36,163}, {36,164}, {36,165}, {36,166}, {36,167}, {36,168},
+ {36,169}, {36,170}, {36,171}, {36,172}, {36,173}, {36,174}, {36,175},
+ {36,176}, {36,177}, {36,178}, {36,179}, {36,180}, {36,181}, {36,182},
+ {36,183}, {36,184}, {36,185}, {36,186}, {36,187}, {36,188}, {36,189},
+ {36,190}, {41,113}, {41,114}, {41,115}, {41,116}, {41,117}, {41,118},
+ {41,119}, {41,120}, {41,121}, {41,122}, {41,123}, {41,124}, {41,125},
+ {41,126}, {41,127}, {41,128}, {41,129}, {41,130}, {41,131}, {41,132},
+ {41,133}, {41,134}, {41,135}, {41,136}, {41,137}, {41,138}, {41,139},
+ {41,140}, {34,159}, {40,113}, {40,114}, {40,115}, {40,116}, {40,117},
+ {40,118}, {40,119}, {40,120}, {40,121}, {40,122}, {40,123}, {40,124},
+ {40,125}, {40,126}, {40,127}, {40,128}, {40,129}, {40,130}, {40,131},
+ {40,132}, {40,133}, {40,134}, {40,135}, {40,136}, {40,137}, {40,138},
+ {40,139}, {40,140}, {34,158}, {39,137}, {39,138}, {39,139}, {39,140},
+ {39,141}, {39,122}, {39,123}, {39,156}, {39,157}, {39,158}, {39,118},
+ {39,119}, {39,120}, {39,148}, {39,149}, {39,150}, {39,151}, {39,152},
+ {39,97}, {39,98}, {39,99}, {39,101}, {39,107}, {39,108}, {39,109},
+ {39,110}, {39,111}, {39,112}, {39,113}, {39,114}, {39,115}, {39,116},
+ {39,103}, {39,104}, {39,105}, {39,106}, {39,125}, {39,126}, {39,165},
+ {39,166}, {39,167}, {39,168}, {39,161}, {39,162}, {39,163}, {39,127},
+ {39,128}, {39,129}, {39,130}, {39,131}, {39,132}, {39,133}, {39,134},
+ {39,135}, {39,136}, {39,142}, {39,143}, {39,144}, {39,145}, {39,146},
+ {39,147}, {39,154}, {39,155}, {34,163}, {39,172}, {39,102}, {39,160},
+ {39,175}, {34,161}, {39,124}, {39,173}, {39,117}, {39,121}, {39,170},
+ {39,171}, {39,159}, {34,164}, {39,164}, {39,174}, {39,169}, {108,169},
+ {111,139}, {118,146}, {88,114}, {109,155}, {95,114}, {95,126}, {121,123},
+ {92,180}, {117,164}, {115,102}, {93,160}, {97,102}, {78,184}, {92,112},
+ {99,106}, {113,169}, {77,186}, {124,111}, {83,97}, {113,107}, {103,145},
+ {82,108}, {78,185}, {113,189}, {94,127}, {123,122}, {121,121}, {78,146},
+ {99,107}, {107,160}, {78,186}, {75,183}, {101,101}, {74,161}, {84,140},
+ {106,161}, {92,163}, {95,109}, {75,171}, {85,111}, {86,181}, {101,184},
+ {94,128}, {108,99}, {105,141}, {106,103}, {105,182}, {123,123}, {103,169},
+ {111,140}, {80,166}, {94,129}, {100,108}, {88,140}, {121,177}, {78,159},
+ {122,100}, {102,114}, {122,187}, {122,125}, {76,136}, {111,141}, {85,149},
+ {83,98}, {108,145}, {100,103}, {108,146}, {118,113}, {78,187}, {80,145},
+ {75,127}, {109,100}, {109,104}, {94,130}, {118,162}, {109,156}, {92,181},
+ {96,121}, {84,142}, {116,117}, {83,155}, {86,117}, {108,100}, {100,166},
+ {113,170}, {75,172}, {75,128}, {108,178}, {80,170}, {121,178}, {108,101},
+ {80,159}, {103,170}, {80,171}, {92,145}, {91,169}, {125,140}, {91,151},
+ {90,161}, {86,118}, {99,159}, {94,131}, {94,132}, {74,97}, {110,172},
+ {83,99}, {110,119}, {120,143}, {106,136}, {110,120}, {113,108}, {113,101},
+ {105,142}, {121,124}, {101,185}, {108,170}, {93,150}, {109,130}, {120,101},
+ {101,122}, {91,152}, {74,98}, {81,141}, {110,173}, {108,171}, {94,133},
+ {99,160}, {74,137}, {114,169}, {85,142}, {118,118}, {78,130}, {86,135},
+ {99,116}, {113,109}, {106,162}, {87,130}, {115,103}, {77,170}, {107,174},
+ {89,114}, {125,101}, {118,149}, {85,162}, {120,117}, {76,181}, {117,117},
+ {100,109}, {103,171}, {113,149}, {112,123}, {105,117}, {76,137}, {122,149},
+ {97,148}, {87,150}, {92,129}, {94,134}, {122,175}, {99,161}, {97,179},
+ {92,182}, {78,188}, {91,132}, {120,177}, {92,164}, {101,175}, {92,113},
+ {85,150}, {115,154}, {75,129}, {91,131}, {89,186}, {83,174}, {122,120},
+ {125,102}, {107,175}, {116,102}, {76,138}, {115,104}, {115,155}, {91,103},
+ {118,119}, {79,166}, {112,178}, {75,154}, {103,146}, {87,131}, {118,176},
+ {104,158}, {101,102}, {101,167}, {74,99}, {76,103}, {106,137}, {120,118},
+ {122,101}, {113,110}, {111,142}, {75,173}, {118,112}, {111,143}, {105,143},
+ {119,158}, {78,147}, {92,183}, {91,104}, {75,184}, {95,97}, {93,161},
+ {117,138}, {105,118}, {103,172}, {110,174}, {115,176}, {95,127}, {76,139},
+ {80,129}, {116,146}, {96,122}, {95,128}, {78,160}, {92,146}, {125,170},
+ {86,182}, {106,138}, {104,169}, {99,108}, {115,144}, {74,100}, {91,184},
+ {94,135}, {107,176}, {113,150}, {101,162}, {76,140}, {75,187}, {106,163},
+ {95,129}, {86,173}, {105,144}, {110,121}, {85,163}, {81,147}, {101,176},
+ {104,116}, {107,131}, {106,106}, {122,188}, {117,182}, {112,124}, {125,148},
+ {96,123}, {78,131}, {80,122}, {119,122}, {88,179}, {119,141}, {100,110},
+ {84,159}, {80,167}, {108,189}, {82,110}, {110,175}, {85,151}, {106,164},
+ {120,98}, {77,171}, {87,127}, {123,113}, {77,172}, {92,114}, {80,172},
+ {78,189}, {110,176}, {76,130}, {80,173}, {101,183}, {115,188}, {110,98},
+ {89,115}, {88,180}, {105,119}, {78,110}, {89,98}, {88,177}, {84,143},
+ {101,103}, {85,146}, {86,105}, {116,98}, {113,151}, {85,152}, {112,125},
+ {87,144}, {84,144}, {87,143}, {107,170}, {125,171}, {91,173}, {124,133},
+ {75,130}, {125,149}, {116,136}, {104,170}, {117,179}, {121,158}, {83,175},
+ {108,147}, {93,130}, {111,119}, {103,148}, {74,138}, {89,187}, {122,189},
+ {86,106}, {116,184}, {119,183}, {92,108}, {87,151}, {95,98}, {78,126},
+ {83,176}, {112,100}, {97,172}, {79,167}, {115,139}, {109,105}, {74,126},
+ {116,175}, {118,142}, {94,187}, {80,123}, {85,119}, {110,177}, {116,104},
+ {92,184}, {75,103}, {90,142}, {96,166}, {109,101}, {110,178}, {92,185},
+ {121,156}, {115,156}, {120,178}, {116,185}, {124,177}, {80,124}, {91,185},
+ {87,113}, {75,188}, {112,101}, {75,189}, {85,180}, {77,173}, {74,101},
+ {86,107}, {80,130}, {112,126}, {82,125}, {76,100}, {122,118}, {76,141},
+ {90,186}, {118,143}, {105,120}, {88,181}, {76,142}, {87,141}, {84,145},
+ {105,173}, {74,171}, {89,162}, {125,114}, {99,109}, {86,140}, {89,116},
+ {97,103}, {110,147}, {80,131}, {125,115}, {85,164}, {79,168}, {109,131},
+ {80,114}, {78,190}, {90,104}, {120,144}, {125,150}, {120,145}, {120,146},
+ {92,147}, {93,162}, {123,185}, {93,129}, {99,117}, {109,157}, {78,132},
+ {75,97}, {93,163}, {124,157}, {121,111}, {82,187}, {79,97}, {100,104},
+ {116,118}, {108,190}, {99,110}, {103,173}, {125,129}, {90,162}, {88,115},
+ {93,164}, {112,175}, {118,177}, {122,176}, {81,181}, {90,143}, {92,148},
+ {92,102}, {111,127}, {78,143}, {96,153}, {89,150}, {108,148}, {106,139},
+ {74,127}, {85,112}, {79,169}, {113,173}, {76,143}, {100,184}, {100,173},
+ {87,152}, {125,103}, {106,107}, {118,114}, {79,176}, {121,125}, {102,180},
+ {75,155}, {115,145}, {105,145}, {115,105}, {80,160}, {105,146}, {90,163},
+ {98,146}, {118,98}, {97,180}, {90,164}, {103,149}, {117,127}, {79,98},
+ {77,111}, {79,99}, {77,112}, {113,190}, {80,99}, {97,111}, {120,99},
+ {74,102}, {119,123}, {114,170}, {94,136}, {105,147}, {94,137}, {125,158},
+ {74,128}, {121,170}, {81,142}, {110,148}, {84,146}, {89,99}, {125,104},
+ {87,153}, {119,142}, {122,126}, {79,150}, {87,176}, {107,161}, {120,133},
+ {92,186}, {93,131}, {121,159}, {103,175}, {125,165}, {118,99}, {89,188},
+ {125,105}, {103,174}, {85,165}, {111,144}, {77,113}, {119,98}, {113,114},
+ {113,113}, {77,114}, {90,107}, {74,103}, {99,162}, {123,124}, {89,100},
+ {110,122}, {120,147}, {123,186}, {79,100}, {92,187}, {118,163}, {109,106},
+ {114,97}, {78,161}, {122,102}, {121,160}, {108,150}, {100,174}, {121,97},
+ {123,175}, {121,171}, {110,99}, {106,108}, {74,104}, {116,186}, {77,150},
+ {124,182}, {116,137}, {120,148}, {120,102}, {94,138}, {114,134}, {87,154},
+ {83,144}, {88,133}, {106,166}, {115,157}, {100,154}, {118,164}, {118,178},
+ {95,130}, {89,189}, {76,182}, {83,122}, {100,111}, {121,161}, {112,102},
+ {75,147}, {96,124}, {116,138}, {84,186}, {125,106}, {121,162}, {116,119},
+ {125,130}, {124,112}, {125,172}, {74,162}, {125,125}, {106,167}, {95,131},
+ {81,146}, {78,162}, {83,100}, {125,107}, {95,160}, {114,135}, {103,176},
+ {80,174}, {115,106}, {94,139}, {118,120}, {97,181}, {113,115}, {119,99},
+ {74,105}, {79,101}, {95,132}, {97,112}, {112,127}, {118,100}, {99,118},
+ {122,134}, {80,175}, {125,173}, {93,132}, {124,183}, {102,127}, {94,109},
+ {122,127}, {101,177}, {109,132}, {82,101}, {125,174}, {117,118}, {97,182},
+ {94,140}, {124,158}, {108,151}, {77,157}, {86,119}, {77,115}, {120,149},
+ {101,152}, {79,170}, {79,144}, {106,140}, {106,110}, {106,109}, {83,177},
+ {83,101}, {119,143}, {110,100}, {80,100}, {114,98}, {80,176}, {114,99},
+ {119,184}, {80,115}, {91,105}, {83,123}, {74,172}, {113,102}, {75,149},
+ {119,167}, {77,158}, {119,100}, {120,128}, {83,157}, {76,144}, {79,102},
+ {118,179}, {97,183}, {83,156}, {122,190}, {122,103}, {107,153}, {79,103},
+ {106,111}, {100,175}, {105,121}, {113,152}, {88,152}, {96,178}, {102,116},
+ {92,188}, {115,177}, {99,144}, {114,187}, {91,134}, {80,177}, {80,178},
+ {79,156}, {83,145}, {76,113}, {119,152}, {75,104}, {107,124}, {100,126},
+ {116,156}, {92,130}, {112,103}, {102,128}, {74,173}, {104,171}, {101,168},
+ {92,131}, {109,158}, {83,178}, {76,183}, {78,148}, {103,107}, {75,131},
+ {97,113}, {119,114}, {83,179}, {83,146}, {117,128}, {95,157}, {110,179},
+ {103,177}, {125,116}, {114,136}, {115,146}, {110,180}, {98,147}, {76,145},
+ {95,170}, {105,122}, {89,151}, {117,141}, {113,178}, {122,135}, {89,184},
+ {84,130}, {118,165}, {93,133}, {103,178}, {109,159}, {74,139}, {91,186},
+ {104,117}, {83,102}, {125,117}, {121,137}, {100,162}, {123,125}, {87,100},
+ {78,133}, {78,149}, {86,166}, {101,125}, {94,141}, {108,179}, {109,160},
+ {108,172}, {123,126}, {95,171}, {97,184}, {121,126}, {80,179}, {96,106},
+ {104,162}, {98,148}, {82,189}, {101,104}, {89,147}, {83,158}, {116,120},
+ {119,124}, {92,189}, {104,172}, {100,167}, {99,183}, {108,104}, {122,177},
+ {101,178}, {80,180}, {82,111}, {92,165}, {80,101}, {113,116}, {124,113},
+ {76,184}, {93,134}, {122,145}, {119,159}, {122,104}, {110,181}, {94,142},
+ {103,179}, {119,108}, {107,132}, {109,161}, {96,107}, {93,135}, {82,115},
+ {82,127}, {74,140}, {123,127}, {101,189}, {93,165}, {88,141}, {108,180},
+ {80,181}, {104,173}, {80,146}, {89,152}, {118,166}, {91,106}, {119,160},
+ {88,153}, {116,99}, {116,157}, {111,145}, {89,117}, {109,107}, {99,119},
+ {110,123}, {77,116}, {96,179}, {106,141}, {108,181}, {104,174}, {75,105},
+ {113,111}, {74,141}, {108,105}, {114,171}, {125,175}, {121,179}, {102,129},
+ {108,152}, {109,108}, {106,142}, {104,159}, {94,143}, {82,102}, {103,180},
+ {81,150}, {102,130}, {99,163}, {100,112}, {88,116}, {118,101}, {115,158},
+ {87,101}, {119,168}, {104,134}, {123,166}, {93,166}, {92,190}, {88,154},
+ {90,108}, {106,112}, {99,120}, {74,106}, {97,185}, {106,113}, {114,172},
+ {122,174}, {110,149}, {121,180}, {82,172}, {123,187}, {125,176}, {96,125},
+ {78,163}, {120,134}, {94,110}, {95,133}, {101,126}, {109,109}, {122,170},
+ {77,174}, {109,102}, {109,110}, {112,173}, {93,97}, {109,111}, {124,184},
+ {88,171}, {76,185}, {77,117}, {122,105}, {97,157}, {98,149}, {109,143},
+ {93,98}, {121,138}, {106,168}, {101,173}, {83,171}, {105,148}, {97,186},
+ {100,140}, {97,164}, {104,135}, {78,155}, {92,149}, {119,117}, {124,179},
+ {112,179}, {78,111}, {113,117}, {111,146}, {104,136}, {107,177}, {75,148},
+ {96,126}, {99,184}, {106,169}, {124,114}, {96,180}, {79,160}, {110,101},
+ {122,106}, {102,131}, {97,114}, {74,107}, {99,164}, {105,123}, {98,150},
+ {115,178}, {110,150}, {106,114}, {80,182}, {108,153}, {90,139}, {79,104},
+ {93,99}, {88,155}, {121,142}, {105,149}, {99,145}, {82,124}, {88,108},
+ {115,140}, {77,187}, {118,150}, {103,181}, {104,175}, {99,185}, {82,123},
+ {115,179}, {99,187}, {94,144}, {78,112}, {86,183}, {113,153}, {117,129},
+ {92,132}, {117,123}, {94,145}, {92,166}, {94,146}, {109,162}, {110,182},
+ {106,143}, {112,174}, {99,188}, {83,159}, {83,180}, {97,115}, {97,116},
+ {116,147}, {95,134}, {105,150}, {91,107}, {118,102}, {99,121}, {107,133},
+ {116,105}, {77,118}, {82,185}, {90,109}, {82,163}, {79,145}, {75,156},
+ {76,186}, {79,157}, {104,105}, {99,123}, {99,122}, {96,154}, {110,183},
+ {92,115}, {83,181}, {87,102}, {118,117}, {87,155}, {97,149}, {84,170},
+ {95,99}, {125,159}, {80,183}, {109,148}, {75,106}, {100,155}, {97,187},
+ {75,98}, {83,160}, {100,127}, {123,128}, {90,126}, {100,141}, {86,121},
+ {111,128}, {97,188}, {118,121}, {95,135}, {100,113}, {92,167}, {92,168},
+ {122,150}, {83,182}, {113,154}, {122,178}, {98,189}, {85,143}, {80,184},
+ {77,159}, {117,139}, {100,176}, {75,107}, {87,132}, {98,190}, {93,154},
+ {90,110}, {74,174}, {85,121}, {99,97}, {104,163}, {115,107}, {79,105},
+ {83,183}, {84,177}, {78,164}, {104,178}, {101,181}, {103,110}, {86,122},
+ {95,172}, {100,128}, {104,164}, {88,117}, {100,156}, {116,121}, {113,118},
+ {98,158}, {97,117}, {77,175}, {113,103}, {78,165}, {75,157}, {89,163},
+ {115,108}, {80,185}, {108,107}, {94,147}, {119,169}, {121,181}, {97,158},
+ {75,174}, {99,124}, {120,150}, {91,174}, {125,177}, {119,118}, {116,158},
+ {114,173}, {91,153}, {112,104}, {97,189}, {94,148}, {96,108}, {109,163},
+ {83,161}, {95,136}, {89,118}, {125,108}, {111,147}, {100,129}, {120,171},
+ {91,108}, {124,134}, {88,109}, {118,122}, {91,159}, {83,147}, {120,135},
+ {74,142}, {120,129}, {82,116}, {92,116}, {122,121}, {74,143}, {124,115},
+ {106,170}, {106,171}, {80,186}, {109,164}, {93,167}, {95,137}, {95,173},
+ {110,124}, {111,129}, {76,146}, {93,100}, {95,138}, {83,184}, {113,104},
+ {77,119}, {111,148}, {100,157}, {95,174}, {75,108}, {105,124}, {106,172},
+ {95,139}, {121,127}, {86,111}, {85,134}, {79,106}, {78,105}, {86,184},
+ {113,119}, {110,184}, {89,153}, {115,159}, {120,136}, {78,134}, {85,166},
+ {116,166}, {102,133}, {111,149}, {75,175}, {124,159}, {92,103}, {86,167},
+ {120,137}, {99,146}, {99,125}, {79,161}, {112,128}, {108,154}, {93,151},
+ {123,176}, {108,108}, {112,105}, {122,151}, {123,129}, {82,128}, {101,112},
+ {109,165}, {75,109}, {121,112}, {119,101}, {75,110}, {90,111}, {88,118},
+ {83,103}, {123,114}, {125,132}, {108,109}, {123,97}, {101,169}, {105,174},
+ {115,180}, {120,179}, {112,129}, {94,111}, {120,112}, {115,160}, {103,111},
+ {91,109}, {102,117}, {121,104}, {93,152}, {104,153}, {111,150}, {83,162},
+ {98,159}, {124,160}, {87,136}, {125,109}, {95,175}, {76,147}, {83,185},
+ {84,176}, {91,135}, {94,149}, {112,180}, {85,144}, {101,153}, {124,135},
+ {92,150}, {98,160}, {90,112}, {115,99}, {83,172}, {116,139}, {125,133},
+ {99,189}, {121,113}, {80,187}, {108,155}, {117,124}, {114,100}, {88,142},
+ {88,143}, {117,183}, {118,161}, {82,119}, {123,172}, {93,136}, {100,168},
+ {82,129}, {120,151}, {86,123}, {94,150}, {119,125}, {108,110}, {80,161},
+ {96,181}, {106,115}, {78,150}, {76,101}, {108,182}, {98,161}, {99,126},
+ {124,136}, {77,176}, {121,182}, {95,176}, {101,127}, {78,127}, {124,161},
+ {109,112}, {125,145}, {118,123}, {121,143}, {107,154}, {74,129}, {82,120},
+ {77,177}, {99,147}, {125,166}, {102,173}, {99,186}, {112,106}, {121,144},
+ {124,162}, {120,103}, {97,165}, {110,185}, {103,182}, {106,173}, {124,116},
+ {117,130}, {87,156}, {112,181}, {93,168}, {83,173}, {117,188}, {90,127},
+ {76,187}, {83,186}, {116,100}, {111,151}, {84,131}, {123,163}, {123,173},
+ {96,109}, {106,174}, {123,115}, {100,130}, {118,167}, {82,157}, {95,140},
+ {124,137}, {101,105}, {96,182}, {118,115}, {97,190}, {75,176}, {106,175},
+ {106,176}, {90,128}, {120,116}, {107,178}, {100,131}, {105,151}, {100,177},
+ {74,175}, {78,151}, {124,138}, {115,161}, {75,132}, {99,165}, {75,133},
+ {106,116}, {105,125}, {87,137}, {107,155}, {109,113}, {76,131}, {119,126},
+ {124,139}, {120,180}, {89,119}, {115,147}, {115,148}, {119,164}, {119,145},
+ {88,119}, {78,113}, {74,130}, {123,116}, {75,134}, {112,182}, {85,167},
+ {106,144}, {76,148}, {75,111}, {116,106}, {105,111}, {117,131}, {105,152},
+ {93,169}, {113,179}, {85,187}, {94,123}, {116,187}, {125,179}, {125,178},
+ {119,102}, {93,137}, {84,147}, {76,104}, {90,129}, {76,149}, {89,164},
+ {122,138}, {101,163}, {83,124}, {74,176}, {80,132}, {74,144}, {122,107},
+ {107,171}, {103,184}, {89,165}, {81,151}, {115,100}, {84,187}, {124,163},
+ {122,152}, {115,149}, {79,107}, {107,179}, {85,188}, {83,148}, {77,188},
+ {89,166}, {98,185}, {98,97}, {107,148}, {96,183}, {100,114}, {76,188},
+ {123,164}, {116,107}, {80,125}, {74,177}, {111,120}, {87,128}, {110,186},
+ {125,180}, {83,163}, {123,130}, {85,168}, {91,110}, {97,118}, {120,119},
+ {96,127}, {123,131}, {93,170}, {98,98}, {110,102}, {118,168}, {118,181},
+ {93,138}, {80,162}, {93,102}, {93,171}, {100,185}, {99,111}, {80,188},
+ {116,188}, {76,124}, {119,170}, {101,164}, {95,177}, {119,161}, {121,183},
+ {111,121}, {120,152}, {121,105}, {120,153}, {110,125}, {88,134}, {100,163},
+ {117,142}, {93,153}, {89,167}, {82,121}, {85,131}, {90,165}, {90,144},
+ {81,153}, {78,152}, {75,158}, {116,108}, {90,187}, {118,169}, {104,179},
+ {79,108}, {112,176}, {116,189}, {91,136}, {78,128}, {99,148}, {81,143},
+ {113,181}, {77,178}, {79,171}, {77,120}, {99,102}, {81,154}, {114,101},
+ {114,102}, {100,142}, {83,187}, {113,105}, {114,137}, {111,152}, {102,137},
+ {88,120}, {122,179}, {115,117}, {120,100}, {81,179}, {102,136}, {120,154},
+ {92,169}, {94,151}, {75,159}, {79,172}, {116,159}, {81,180}, {82,122},
+ {95,178}, {97,119}, {98,99}, {83,188}, {109,166}, {91,137}, {100,186},
+ {79,158}, {78,144}, {85,147}, {115,181}, {119,110}, {111,136}, {77,179},
+ {117,143}, {101,179}, {112,130}, {74,145}, {106,177}, {80,102}, {89,154},
+ {112,107}, {107,167}, {101,128}, {124,117}, {100,132}, {76,105}, {125,134},
+ {106,117}, {101,106}, {95,122}, {97,159}, {90,145}, {97,120}, {104,180},
+ {83,189}, {98,100}, {114,138}, {90,166}, {119,115}, {125,141}, {115,118},
+ {110,151}, {117,132}, {88,100}, {114,103}, {89,120}, {89,121}, {111,137},
+ {86,142}, {119,139}, {95,110}, {104,181}, {82,117}, {83,149}, {116,140},
+ {90,188}, {89,168}, {119,171}, {117,137}, {115,124}, {90,146}, {83,117},
+ {104,118}, {86,143}, {116,122}, {119,137}, {76,106}, {112,131}, {76,150},
+ {80,147}, {83,125}, {91,187}, {75,160}, {83,164}, {118,183}, {85,122},
+ {115,141}, {75,161}, {107,180}, {116,109}, {124,106}, {119,172}, {104,182},
+ {90,167}, {119,140}, {101,129}, {96,174}, {85,189}, {78,166}, {124,107},
+ {85,123}, {114,104}, {98,101}, {77,121}, {106,178}, {75,135}, {77,180},
+ {91,111}, {111,153}, {77,122}, {124,185}, {95,179}, {78,167}, {90,130},
+ {79,109}, {103,185}, {120,104}, {115,162}, {74,178}, {95,100}, {84,132},
+ {76,151}, {101,130}, {77,123}, {111,154}, {110,152}, {93,103}, {98,102},
+ {96,128}, {86,112}, {120,138}, {124,186}, {89,190}, {94,112}, {93,172},
+ {90,168}, {84,160}, {86,185}, {77,151}, {94,152}, {114,184}, {100,150},
+ {80,133}, {116,110}, {93,104}, {109,133}, {115,150}, {94,153}, {99,166},
+ {83,104}, {91,112}, {101,154}, {99,127}, {91,113}, {85,169}, {96,129},
+ {111,155}, {112,169}, {87,114}, {80,189}, {89,169}, {80,190}, {108,173},
+ {83,105}, {114,105}, {112,132}, {98,162}, {105,175}, {121,145}, {105,153},
+ {104,154}, {90,131}, {90,132}, {84,133}, {103,186}, {77,160}, {99,112},
+ {91,114}, {123,132}, {115,163}, {89,101}, {123,167}, {93,139}, {80,148},
+ {102,118}, {96,110}, {125,154}, {92,117}, {96,184}, {103,113}, {117,176},
+ {88,156}, {109,134}, {97,121}, {99,128}, {121,128}, {105,176}, {89,155},
+ {115,164}, {92,118}, {100,169}, {112,133}, {99,129}, {124,140}, {124,141},
+ {114,139}, {114,140}, {100,143}, {113,155}, {122,153}, {113,120}, {125,181},
+ {96,185}, {103,187}, {124,119}, {124,164}, {123,133}, {99,167}, {88,121},
+ {118,184}, {92,133}, {76,152}, {96,111}, {116,167}, {111,156}, {79,188},
+ {111,157}, {114,106}, {125,126}, {74,108}, {125,123}, {125,135}, {103,114},
+ {106,145}, {95,180}, {81,172}, {100,158}, {101,131}, {89,102}, {77,124},
+ {115,165}, {109,149}, {89,122}, {109,167}, {123,117}, {120,172}, {96,167},
+ {76,153}, {84,134}, {103,101}, {85,181}, {83,126}, {124,187}, {100,178},
+ {95,181}, {104,184}, {120,173}, {78,135}, {125,182}, {104,152}, {77,152},
+ {103,150}, {76,154}, {74,163}, {95,182}, {112,135}, {112,134}, {88,122},
+ {113,180}, {116,176}, {117,140}, {124,165}, {106,133}, {106,179}, {93,155},
+ {92,151}, {94,189}, {114,185}, {85,135}, {88,144}, {112,136}, {81,97},
+ {81,98}, {89,148}, {86,168}, {89,138}, {90,113}, {88,135}, {92,162},
+ {115,142}, {117,180}, {113,121}, {90,147}, {118,170}, {79,181}, {125,110},
+ {74,146}, {95,116}, {87,157}, {122,122}, {110,103}, {117,125}, {120,181},
+ {109,168}, {84,161}, {81,99}, {97,150}, {121,184}, {91,138}, {75,185},
+ {84,148}, {89,156}, {110,126}, {119,173}, {82,174}, {97,166}, {119,185},
+ {93,173}, {104,155}, {91,115}, {81,183}, {96,112}, {84,162}, {118,151},
+ {87,185}, {88,157}, {77,189}, {114,107}, {77,125}, {120,130}, {114,108},
+ {74,109}, {74,110}, {79,110}, {99,130}, {92,119}, {91,154}, {89,123},
+ {74,179}, {118,147}, {102,184}, {106,181}, {106,182}, {118,185}, {79,111},
+ {74,147}, {74,111}, {82,112}, {113,122}, {87,115}, {99,131}, {115,189},
+ {94,154}, {94,155}, {111,158}, {98,163}, {110,187}, {95,183}, {87,138},
+ {78,168}, {91,155}, {113,123}, {105,177}, {122,119}, {80,134}, {76,107},
+ {110,104}, {75,186}, {121,185}, {76,189}, {83,190}, {100,144}, {114,174},
+ {84,149}, {95,141}, {124,120}, {81,144}, {114,141}, {119,146}, {74,148},
+ {85,153}, {88,158}, {77,153}, {110,105}, {118,124}, {76,155}, {112,137},
+ {124,188}, {104,137}, {116,190}, {103,188}, {87,158}, {94,156}, {112,108},
+ {76,190}, {77,161}, {97,122}, {91,175}, {90,114}, {81,101}, {92,120},
+ {88,182}, {81,100}, {77,162}, {92,170}, {112,183}, {112,138}, {80,126},
+ {93,156}, {84,150}, {83,150}, {109,144}, {77,97}, {95,117}, {95,184},
+ {84,97}, {78,114}, {104,138}, {107,181}, {99,149}, {117,144}, {117,97},
+ {89,103}, {101,107}, {102,139}, {117,177}, {101,133}, {121,99}, {96,155},
+ {118,171}, {75,177}, {89,170}, {117,98}, {87,145}, {81,184}, {106,184},
+ {106,185}, {90,115}, {111,159}, {113,175}, {101,182}, {110,127}, {98,164},
+ {80,127}, {122,108}, {117,145}, {103,115}, {105,126}, {114,142}, {91,116},
+ {124,142}, {93,174}, {103,116}, {87,116}, {119,116}, {77,126}, {90,169},
+ {79,112}, {119,153}, {115,166}, {78,153}, {78,106}, {75,136}, {80,103},
+ {112,139}, {80,135}, {100,133}, {91,160}, {85,154}, {87,103}, {110,128},
+ {120,182}, {117,146}, {109,169}, {89,124}, {101,134}, {117,99}, {90,148},
+ {98,103}, {123,188}, {113,156}, {74,180}, {104,186}, {78,169}, {105,184},
+ {98,165}, {80,121}, {84,178}, {81,102}, {95,142}, {124,180}, {83,106},
+ {76,108}, {111,160}, {101,165}, {80,149}, {91,188}, {124,166}, {75,190},
+ {109,170}, {94,113}, {121,163}, {84,98}, {79,182}, {86,144}, {85,170},
+ {113,174}, {122,139}, {101,97}, {85,113}, {79,173}, {109,171}, {85,114},
+ {85,124}, {125,162}, {115,109}, {125,155}, {105,112}, {81,103}, {125,163},
+ {78,115}, {125,164}, {122,142}, {74,112}, {119,103}, {79,113}, {102,98},
+ {124,118}, {114,109}, {111,161}, {115,110}, {92,134}, {89,171}, {104,160},
+ {97,104}, {85,182}, {79,189}, {94,157}, {89,145}, {100,170}, {114,143},
+ {119,127}, {98,166}, {98,104}, {99,150}, {109,145}, {105,185}, {86,113},
+ {94,114}, {96,168}, {83,107}, {107,156}, {95,111}, {74,131}, {110,188},
+ {125,131}, {107,182}, {79,114}, {89,172}, {89,125}, {88,159}, {84,120},
+ {107,126}, {93,175}, {93,176}, {93,177}, {93,178}, {89,126}, {123,134},
+ {79,115}, {110,189}, {100,107}, {90,133}, {88,172}, {81,104}, {98,105},
+ {94,124}, {103,117}, {91,176}, {111,162}, {113,176}, {79,116}, {91,177},
+ {96,113}, {95,101}, {121,146}, {103,189}, {102,99}, {123,177}, {75,112},
+ {114,110}, {77,167}, {104,156}, {103,151}, {119,128}, {80,163}, {90,97},
+ {76,125}, {81,105}, {93,140}, {99,190}, {81,106}, {104,106}, {106,118},
+ {121,186}, {102,140}, {118,152}, {84,135}, {89,139}, {89,146}, {83,139},
+ {88,183}, {90,105}, {117,184}, {94,158}, {114,111}, {120,105}, {88,136},
+ {110,129}, {121,129}, {93,179}, {106,186}, {118,125}, {97,123}, {77,127},
+ {116,148}, {102,141}, {124,143}, {123,98}, {96,156}, {116,123}, {90,149},
+ {121,114}, {123,178}, {91,182}, {94,159}, {91,178}, {120,156}, {119,174},
+ {107,168}, {82,186}, {113,124}, {122,154}, {90,170}, {90,134}, {119,129},
+ {103,118}, {101,135}, {86,108}, {92,135}, {97,105}, {98,106}, {85,102},
+ {84,151}, {114,144}, {106,187}, {96,157}, {123,179}, {113,125}, {98,167},
+ {125,151}, {78,136}, {106,119}, {124,128}, {125,167}, {119,175}, {87,117},
+ {111,122}, {113,157}, {94,115}, {104,139}, {120,157}, {123,135}, {85,136},
+ {87,159}, {93,105}, {105,113}, {122,109}, {118,153}, {122,180}, {120,106},
+ {102,174}, {76,156}, {97,124}, {96,175}, {105,127}, {124,189}, {102,142},
+ {97,151}, {102,143}, {116,177}, {100,179}, {100,187}, {121,164}, {111,163},
+ {79,174}, {118,126}, {96,114}, {124,190}, {81,107}, {87,186}, {123,136},
+ {98,151}, {84,99}, {112,184}, {87,104}, {97,167}, {83,127}, {111,164},
+ {87,133}, {107,162}, {124,167}, {100,98}, {98,168}, {102,144}, {123,168},
+ {116,168}, {101,180}, {116,124}, {116,149}, {95,118}, {124,121}, {110,130},
+ {74,181}, {111,165}, {75,162}, {84,100}, {94,160}, {90,189}, {100,134},
+ {104,126}, {96,158}, {118,116}, {106,146}, {121,187}, {96,130}, {74,164},
+ {103,119}, {106,189}, {89,157}, {90,116}, {110,106}, {123,169}, {91,139},
+ {90,117}, {113,126}, {83,108}, {123,137}, {95,143}, {83,128}, {99,151},
+ {111,166}, {124,144}, {105,128}, {117,147}, {108,156}, {119,119}, {106,120},
+ {81,185}, {92,136}, {106,121}, {113,158}, {87,118}, {79,117}, {89,104},
+ {108,174}, {93,106}, {77,98}, {104,110}, {97,125}, {114,145}, {105,129},
+ {82,188}, {91,117}, {115,167}, {88,190}, {124,145}, {109,114}, {116,111},
+ {123,99}, {124,129}, {110,107}, {84,101}, {116,178}, {110,153}, {123,138},
+ {77,163}, {88,123}, {101,155}, {120,183}, {118,148}, {87,105}, {75,137},
+ {102,145}, {112,140}, {88,110}, {121,147}, {85,190}, {88,124}, {114,112},
+ {98,107}, {115,168}, {111,130}, {109,172}, {103,120}, {90,190}, {76,126},
+ {114,188}, {90,171}, {98,152}, {109,150}, {86,145}, {96,115}, {124,146},
+ {107,136}, {83,129}, {112,141}, {79,183}, {109,146}, {84,152}, {92,137},
+ {87,177}, {95,123}, {115,101}, {116,141}, {113,127}, {120,113}, {105,186},
+ {123,139}, {74,149}, {121,148}, {119,138}, {86,136}, {124,168}, {115,125},
+ {110,190}, {103,190}, {83,130}, {83,118}, {76,109}, {118,186}, {86,114},
+ {82,152}, {103,152}, {99,101}, {103,121}, {112,109}, {123,140}, {107,97},
+ {84,102}, {123,141}, {85,125}, {113,159}, {118,187}, {94,116}, {85,171},
+ {101,136}, {123,100}, {84,121}, {94,161}, {100,99}, {87,119}, {120,174},
+ {94,117}, {86,146}, {121,149}, {103,122}, {107,149}, {85,183}, {111,167},
+ {97,126}, {122,110}, {86,169}, {86,174}, {103,123}, {108,139}, {85,115},
+ {78,116}, {123,101}, {97,174}, {119,104}, {123,142}, {88,125}, {123,189},
+ {124,169}, {79,118}, {109,135}, {110,108}, {76,157}, {118,103}, {102,186},
+ {117,100}, {125,156}, {109,115}, {78,137}, {111,168}, {97,127}, {122,155},
+ {75,163}, {119,105}, {123,102}, {92,121}, {113,128}, {109,136}, {111,131},
+ {86,109}, {125,142}, {104,97}, {123,180}, {85,103}, {113,182}, {102,147},
+ {76,158}, {120,114}, {92,171}, {125,118}, {101,170}, {113,160}, {91,140},
+ {93,141}, {84,136}, {89,173}, {117,101}, {102,187}, {102,148}, {125,136},
+ {86,97}, {125,127}, {124,147}, {111,97}, {103,124}, {81,174}, {102,149},
+ {105,178}, {95,112}, {88,160}, {124,122}, {125,111}, {112,142}, {91,161},
+ {101,137}, {109,116}, {96,131}, {99,152}, {105,187}, {106,104}, {125,119},
+ {123,103}, {105,130}, {125,183}, {98,153}, {92,172}, {104,98}, {102,176},
+ {125,184}, {125,185}, {118,127}, {103,103}, {102,151}, {84,179}, {84,137},
+ {86,186}, {87,178}, {97,128}, {91,162}, {102,152}, {103,125}, {112,143},
+ {115,126}, {98,108}, {117,119}, {96,176}, {125,120}, {99,168}, {84,103},
+ {104,188}, {122,146}, {120,175}, {86,147}, {85,116}, {112,144}, {119,176},
+ {110,115}, {106,122}, {106,147}, {109,137}, {93,107}, {101,108}, {125,97},
+ {95,144}, {108,115}, {95,145}, {109,173}, {120,120}, {119,186}, {120,107},
+ {116,160}, {84,122}, {100,115}, {105,154}, {94,118}, {89,127}, {89,128},
+ {86,175}, {89,140}, {90,106}, {95,165}, {119,165}, {76,114}, {95,185},
+ {87,160}, {84,123}, {125,186}, {76,115}, {91,179}, {95,146}, {78,138},
+ {110,154}, {100,164}, {123,143}, {79,119}, {110,131}, {78,170}, {98,109},
+ {87,161}, {122,181}, {85,137}, {120,108}, {103,153}, {115,169}, {88,173},
+ {99,132}, {112,177}, {104,165}, {96,186}, {110,132}, {89,158}, {107,98},
+ {107,99}, {124,130}, {106,123}, {104,107}, {94,162}, {109,175}, {104,99},
+ {79,177}, {84,124}, {124,170}, {103,126}, {124,178}, {86,116}, {98,110},
+ {83,119}, {122,140}, {122,156}, {109,117}, {97,163}, {104,108}, {104,157},
+ {111,169}, {116,125}, {79,120}, {105,155}, {81,108}, {90,135}, {107,137},
+ {104,140}, {94,119}, {86,124}, {83,165}, {122,157}, {90,150}, {74,113},
+ {90,136}, {95,102}, {121,115}, {114,146}, {74,132}, {78,139}, {77,181},
+ {125,112}, {85,104}, {113,129}, {98,169}, {92,138}, {108,116}, {122,128},
+ {123,104}, {80,104}, {90,172}, {89,174}, {96,187}, {111,170}, {122,158},
+ {96,132}, {79,121}, {85,138}, {87,162}, {98,111}, {87,120}, {104,141},
+ {118,154}, {111,98}, {98,154}, {118,188}, {123,144}, {81,109}, {77,164},
+ {81,110}, {92,173}, {104,142}, {112,185}, {78,117}, {102,188}, {87,187},
+ {80,150}, {93,181}, {119,177}, {118,189}, {91,183}, {123,170}, {105,156},
+ {89,129}, {117,178}, {96,133}, {106,148}, {121,130}, {106,124}, {82,133},
+ {123,145}, {103,128}, {107,101}, {95,186}, {99,98}, {87,121}, {105,131},
+ {104,189}, {104,111}, {114,147}, {123,105}, {88,101}, {85,139}, {80,136},
+ {81,111}, {87,163}, {96,134}, {86,98}, {109,176}, {87,179}, {124,148},
+ {90,151}, {76,159}, {114,148}, {81,112}, {76,160}, {91,189}, {115,127},
+ {112,145}, {124,123}, {98,112}, {102,101}, {98,155}, {95,158}, {96,135},
+ {114,175}, {76,161}, {86,170}, {103,130}, {78,118}, {115,128}, {77,190},
+ {123,146}, {120,184}, {119,187}, {104,127}, {104,119}, {109,118}, {92,122},
+ {76,116}, {113,183}, {104,120}, {74,182}, {100,100}, {116,150}, {95,166},
+ {95,103}, {95,167}, {97,129}, {105,132}, {92,139}, {105,133}, {111,99},
+ {107,102}, {75,99}, {99,169}, {81,187}, {111,100}, {111,171}, {80,116},
+ {77,99}, {104,166}, {111,101}, {83,140}, {90,173}, {87,122}, {114,149},
+ {117,165}, {89,175}, {121,116}, {85,148}, {125,143}, {91,163}, {113,161},
+ {108,118}, {123,190}, {83,151}, {81,113}, {75,113}, {81,114}, {75,114},
+ {113,130}, {116,161}, {121,117}, {97,131}, {97,130}, {107,183}, {95,104},
+ {75,138}, {102,121}, {120,158}, {121,106}, {74,183}, {109,119}, {83,120},
+ {114,150}, {84,153}, {110,133}, {114,176}, {74,114}, {92,123}, {113,184},
+ {108,119}, {101,138}, {118,128}, {125,157}, {84,163}, {76,162}, {119,148},
+ {87,165}, {83,131}, {88,102}, {118,129}, {93,182}, {77,128}, {101,156},
+ {101,139}, {97,132}, {104,112}, {116,112}, {115,170}, {90,174}, {87,123},
+ {98,113}, {87,106}, {86,187}, {100,159}, {74,150}, {107,104}, {91,190},
+ {118,130}, {111,123}, {84,189}, {96,136}, {104,121}, {111,102}, {77,100},
+ {84,180}, {91,97}, {91,156}, {91,157}, {110,156}, {75,139}, {124,149},
+ {78,171}, {77,129}, {123,147}, {121,107}, {117,148}, {89,105}, {105,157},
+ {91,141}, {93,142}, {103,131}, {108,140}, {121,172}, {75,140}, {96,188},
+ {84,104}, {109,147}, {88,175}, {114,151}, {74,184}, {90,175}, {86,148},
+ {89,141}, {88,174}, {114,129}, {95,147}, {90,176}, {98,170}, {96,189},
+ {88,184}, {119,111}, {90,118}, {74,151}, {114,152}, {88,185}, {122,159},
+ {79,175}, {89,130}, {112,146}, {100,145}, {115,119}, {122,160}, {111,172},
+ {98,114}, {84,125}, {89,142}, {116,162}, {84,105}, {77,130}, {103,154},
+ {114,153}, {89,106}, {88,126}, {92,109}, {98,171}, {86,188}, {74,185},
+ {84,154}, {116,151}, {76,97}, {79,122}, {117,120}, {89,131}, {80,168},
+ {99,133}, {107,184}, {114,113}, {79,123}, {83,109}, {104,161}, {78,172},
+ {96,116}, {94,163}, {93,183}, {114,114}, {115,182}, {118,155}, {87,190},
+ {120,159}, {119,178}, {80,105}, {102,154}, {117,102}, {87,124}, {76,163},
+ {102,155}, {93,157}, {81,115}, {111,173}, {86,158}, {100,180}, {97,175},
+ {93,184}, {104,143}, {74,165}, {92,97}, {96,117}, {124,108}, {124,109},
+ {88,103}, {109,120}, {91,118}, {86,176}, {115,111}, {77,101}, {90,177},
+ {88,104}, {76,164}, {81,116}, {74,152}, {90,178}, {117,103}, {117,104},
+ {102,102}, {85,172}, {85,184}, {90,179}, {99,134}, {94,164}, {94,165},
+ {81,117}, {81,118}, {81,119}, {114,115}, {105,158}, {112,147}, {114,116},
+ {112,148}, {75,164}, {123,148}, {117,166}, {99,170}, {94,166}, {95,148},
+ {120,185}, {112,110}, {81,120}, {86,159}, {80,151}, {124,97}, {111,174},
+ {92,152}, {105,159}, {101,157}, {125,187}, {96,137}, {86,137}, {84,106},
+ {101,140}, {105,160}, {80,152}, {124,98}, {84,126}, {98,115}, {94,167},
+ {92,124}, {82,118}, {117,149}, {78,97}, {117,105}, {93,185}, {93,186},
+ {112,149}, {118,159}, {114,154}, {100,171}, {114,177}, {108,121}, {125,188},
+ {97,106}, {74,153}, {111,175}, {117,106}, {108,185}, {120,109}, {114,130},
+ {118,131}, {87,146}, {121,98}, {112,150}, {112,186}, {118,160}, {105,179},
+ {114,131}, {84,107}, {74,115}, {77,102}, {77,131}, {77,154}, {89,143},
+ {118,132}, {110,157}, {103,132}, {98,116}, {95,162}, {103,155}, {104,113},
+ {124,110}, {101,141}, {122,171}, {79,124}, {79,162}, {77,182}, {111,176},
+ {116,126}, {84,141}, {115,120}, {105,97}, {114,178}, {115,171}, {112,151},
+ {79,151}, {79,159}, {104,128}, {104,129}, {79,163}, {105,98}, {80,106},
+ {115,129}, {80,107}, {84,164}, {111,124}, {88,97}, {89,159}, {115,151},
+ {92,125}, {76,165}, {109,177}, {113,162}, {84,155}, {98,117}, {74,166},
+ {83,110}, {76,166}, {113,147}, {117,167}, {74,154}, {123,174}, {97,133},
+ {95,169}, {110,158}, {119,130}, {88,98}, {93,108}, {112,111}, {86,125},
+ {97,107}, {121,118}, {84,181}, {80,137}, {111,103}, {98,172}, {91,170},
+ {78,140}, {117,168}, {119,149}, {83,141}, {115,190}, {80,117}, {96,190},
+ {95,187}, {102,157}, {104,100}, {75,141}, {111,104}, {110,116}, {90,152},
+ {81,121}, {95,105}, {115,112}, {76,132}, {78,119}, {111,105}, {95,149},
+ {109,151}, {110,134}, {111,125}, {124,150}, {91,180}, {111,106}, {120,121},
+ {117,169}, {99,153}, {97,134}, {84,127}, {94,168}, {112,170}, {115,130},
+ {83,111}, {74,155}, {124,151}, {109,152}, {97,135}, {116,152}, {86,115},
+ {93,109}, {85,126}, {113,131}, {110,159}, {86,171}, {116,153}, {87,166},
+ {90,119}, {93,187}, {93,143}, {88,99}, {90,153}, {112,152}, {111,132},
+ {97,152}, {113,148}, {109,178}, {85,155}, {85,156}, {115,132}, {75,151},
+ {98,118}, {111,177}, {123,149}, {83,152}, {93,144}, {112,153}, {75,115},
+ {85,157}, {77,103}, {80,108}, {81,122}, {113,132}, {101,115}, {123,181},
+ {105,161}, {125,160}, {124,124}, {90,98}, {90,99}, {82,97}, {82,175},
+ {98,173}, {94,169}, {78,156}, {114,117}, {80,164}, {93,145}, {97,136},
+ {91,119}, {95,163}, {109,121}, {113,133}, {115,143}, {87,107}, {97,108},
+ {99,171}, {110,135}, {97,137}, {74,186}, {112,187}, {122,161}, {112,154},
+ {76,167}, {90,180}, {76,127}, {78,173}, {85,105}, {122,162}, {80,165},
+ {107,150}, {108,159}, {95,188}, {119,150}, {94,170}, {75,116}, {111,126},
+ {76,117}, {79,125}, {111,178}, {98,119}, {76,168}, {112,188}, {86,160},
+ {113,134}, {98,120}, {107,107}, {75,117}, {88,145}, {116,142}, {115,183},
+ {87,134}, {81,123}, {119,106}, {109,138}, {87,147}, {88,186}, {118,133},
+ {81,140}, {93,188}, {95,189}, {121,165}, {96,138}, {114,189}, {83,112},
+ {116,179}, {90,137}, {102,158}, {120,122}, {104,144}, {88,187}, {106,149},
+ {86,99}, {118,134}, {114,155}, {100,188}, {104,114}, {90,154}, {114,156},
+ {123,150}, {105,114}, {110,109}, {122,163}, {92,174}, {117,170}, {102,160},
+ {112,189}, {87,108}, {117,133}, {110,160}, {91,165}, {93,158}, {89,176},
+ {105,99}, {113,185}, {114,132}, {96,139}, {105,100}, {98,121}, {99,113},
+ {124,171}, {77,104}, {76,118}, {112,155}, {102,122}, {77,105}, {115,131},
+ {97,153}, {111,107}, {103,133}, {96,169}, {115,133}, {84,128}, {85,127},
+ {93,110}, {121,188}, {76,128}, {101,98}, {78,120}, {88,146}, {121,150},
+ {113,106}, {78,145}, {118,135}, {91,171}, {95,190}, {88,161}, {119,179},
+ {87,167}, {84,190}, {81,124}, {101,143}, {75,118}, {90,120}, {77,132},
+ {86,126}, {98,122}, {79,152}, {96,140}, {107,185}, {125,189}, {87,168},
+ {75,152}, {105,162}, {104,122}, {99,135}, {108,141}, {108,142}, {86,127},
+ {99,103}, {95,150}, {125,168}, {110,161}, {118,104}, {93,189}, {120,123},
+ {104,145}, {121,151}, {78,174}, {108,143}, {105,101}, {86,149}, {77,133},
+ {109,122}, {81,125}, {79,126}, {108,123}, {82,113}, {76,169}, {89,132},
+ {105,188}, {81,126}, {108,124}, {101,109}, {119,112}, {76,170}, {83,132},
+ {86,128}, {86,189}, {97,97}, {94,125}, {118,105}, {90,100}, {86,100},
+ {117,134}, {97,98}, {105,134}, {114,133}, {116,169}, {86,172}, {107,147},
+ {108,125}, {98,156}, {94,171}, {112,156}, {107,127}, {87,142}, {81,127},
+ {117,107}, {121,189}, {74,156}, {77,134}, {114,118}, {93,190}, {76,119},
+ {91,120}, {80,169}, {78,157}, {107,128}, {125,98}, {120,139}, {106,150},
+ {113,112}, {91,142}, {119,131}, {91,143}, {75,100}, {120,160}, {123,151},
+ {107,138}, {96,97}, {78,141}, {84,156}, {125,152}, {82,182}, {114,119},
+ {122,182}, {118,106}, {122,183}, {88,166}, {116,113}, {104,146}, {74,133},
+ {76,171}, {98,174}, {98,123}, {119,109}, {120,161}, {115,172}, {94,97},
+ {100,189}, {99,172}, {93,111}, {93,112}, {75,119}, {104,147}, {97,99},
+ {82,160}, {112,190}, {105,102}, {75,178}, {109,179}, {92,153}, {96,141},
+ {119,154}, {91,121}, {76,110}, {90,155}, {77,135}, {93,113}, {88,111},
+ {99,99}, {78,175}, {114,179}, {120,115}, {96,142}, {117,189}, {107,172},
+ {83,133}, {124,172}, {82,155}, {84,171}, {94,98}, {101,166}, {112,112},
+ {85,132}, {109,180}, {99,173}, {104,130}, {109,181}, {87,188}, {109,123},
+ {118,107}, {114,120}, {118,136}, {83,166}, {114,157}, {79,127}, {107,108},
+ {79,128}, {102,104}, {125,169}, {79,129}, {96,159}, {94,172}, {96,98},
+ {116,127}, {98,175}, {89,177}, {113,135}, {75,120}, {121,190}, {91,122},
+ {90,181}, {118,172}, {90,156}, {122,164}, {96,143}, {93,114}, {102,105},
+ {111,179}, {115,173}, {107,186}, {121,166}, {74,157}, {85,158}, {74,158},
+ {95,164}, {102,189}, {117,108}, {100,181}, {105,163}, {109,139}, {79,164},
+ {88,147}, {93,115}, {84,172}, {114,121}, {95,119}, {75,142}, {123,152},
+ {80,153}, {93,146}, {119,180}, {103,156}, {100,101}, {124,99}, {91,123},
+ {114,122}, {105,189}, {80,138}, {117,150}, {89,133}, {100,116}, {109,103},
+ {106,125}, {102,190}, {119,132}, {117,109}, {89,160}, {74,116}, {120,162},
+ {79,130}, {108,126}, {101,116}, {77,136}, {110,136}, {103,136}, {77,137},
+ {121,119}, {113,168}, {89,178}, {91,181}, {74,117}, {89,134}, {88,137},
+ {89,107}, {109,124}, {88,148}, {92,154}, {98,124}, {124,173}, {108,160},
+ {82,190}, {105,135}, {102,106}, {98,176}, {122,123}, {117,110}, {123,106},
+ {108,187}, {108,127}, {124,152}, {84,165}, {121,131}, {110,162}, {87,169},
+ {109,182}, {94,173}, {76,172}, {99,174}, {104,148}, {122,184}, {93,116},
+ {100,117}, {88,112}, {88,149}, {116,170}, {78,121}, {86,161}, {79,146},
+ {80,118}, {78,98}, {115,174}, {115,184}, {92,140}, {80,139}, {124,100},
+ {77,138}, {87,148}, {94,99}, {100,160}, {110,137}, {98,157}, {117,190},
+ {84,108}, {85,145}, {88,176}, {120,131}, {106,151}, {117,151}, {88,127},
+ {125,128}, {107,109}, {85,106}, {103,104}, {110,138}, {74,167}, {120,163},
+ {84,157}, {106,152}, {123,153}, {109,183}, {101,117}, {80,109}, {113,177},
+ {98,125}, {99,136}, {89,149}, {95,106}, {91,124}, {120,164}, {113,186},
+ {101,118}, {115,175}, {123,154}, {97,160}, {89,108}, {117,171}, {96,118},
+ {105,136}, {75,143}, {99,137}, {94,174}, {98,126}, {92,175}, {86,101},
+ {98,177}, {86,190}, {89,97}, {88,128}, {92,155}, {109,125}, {95,120},
+ {106,101}, {87,109}, {115,185}, {109,184}, {117,135}, {97,138}, {107,163},
+ {114,158}, {120,140}, {106,153}, {83,134}, {91,166}, {117,111}, {78,176},
+ {105,190}, {123,118}, {98,178}, {79,178}, {119,121}, {89,179}, {97,139},
+ {90,157}, {90,121}, {107,187}, {75,121}, {109,185}, {96,160}, {116,128},
+ {125,124}, {95,113}, {99,175}, {96,99}, {125,121}, {112,113}, {77,139},
+ {109,126}, {85,128}, {99,176}, {109,186}, {105,164}, {85,173}, {103,157},
+ {84,182}, {101,119}, {91,167}, {98,127}, {110,139}, {87,180}, {112,157},
+ {78,107}, {103,158}, {86,150}, {97,140}, {104,115}, {101,174}, {92,98},
+ {96,144}, {85,117}, {85,97}, {123,155}, {121,139}, {75,179}, {116,101},
+ {122,136}, {86,151}, {105,165}, {123,156}, {125,144}, {123,182}, {90,101},
+ {91,125}, {108,162}, {77,183}, {112,158}, {118,137}, {94,175}, {83,113},
+ {124,174}, {104,131}, {113,136}, {78,177}, {121,173}, {114,180}, {100,118},
+ {117,121}, {92,176}, {99,177}, {104,101}, {114,123}, {94,100}, {90,140},
+ {74,169}, {99,154}, {124,153}, {106,154}, {121,132}, {99,100}, {123,157},
+ {111,138}, {104,132}, {85,140}, {107,151}, {89,109}, {123,107}, {83,153},
+ {85,98}, {118,158}, {90,182}, {96,145}, {105,104}, {117,185}, {122,111},
+ {107,188}, {96,170}, {99,114}, {85,133}, {113,163}, {85,174}, {77,140},
+ {109,153}, {88,129}, {122,172}, {113,171}, {122,124}, {102,162}, {122,165},
+ {98,186}, {74,118}, {100,119}, {106,155}, {117,186}, {123,108}, {79,131},
+ {107,189}, {120,186}, {95,121}, {97,177}, {82,100}, {117,187}, {80,154},
+ {80,155}, {106,126}, {89,113}, {74,119}, {83,167}, {120,165}, {83,114},
+ {98,128}, {114,159}, {77,165}, {121,108}, {77,141}, {110,110}, {86,110},
+ {87,170}, {103,160}, {107,110}, {79,153}, {92,141}, {109,187}, {94,176},
+ {87,171}, {94,101}, {95,151}, {91,144}, {91,145}, {85,99}, {112,114},
+ {92,156}, {74,168}, {120,166}, {92,142}, {106,156}, {91,146}, {105,115},
+ {119,155}, {99,104}, {87,110}, {96,161}, {75,122}, {101,145}, {80,156},
+ {85,129}, {88,138}, {99,105}, {96,100}, {105,105}, {83,135}, {92,157},
+ {120,110}, {76,120}, {80,110}, {88,178}, {99,138}, {76,111}, {84,109},
+ {118,145}, {80,140}, {74,134}, {85,130}, {78,122}, {74,135}, {122,112},
+ {95,152}, {117,122}, {101,171}, {111,180}, {93,117}, {77,106}, {99,178},
+ {123,183}, {119,144}, {125,122}, {125,161}, {118,190}, {81,128}, {104,133},
+ {100,120}, {97,168}, {76,129}, {82,173}, {91,126}, {96,162}, {122,137},
+ {97,141}, {74,120}, {114,160}, {113,137}, {94,177}, {112,159}, {120,132},
+ {110,140}, {94,178}, {103,137}, {98,179}, {103,161}, {99,139}, {99,140},
+ {79,184}, {111,108}, {125,190}, {124,101}, {122,113}, {95,153}, {96,146},
+ {116,154}, {113,138}, {78,99}, {114,124}, {108,163}, {96,101}, {119,107},
+ {107,111}, {101,158}, {97,100}, {77,107}, {89,180}, {104,102}, {77,142},
+ {97,169}, {124,175}, {96,163}, {98,129}, {78,100}, {94,102}, {107,190},
+ {107,157}, {112,160}, {116,155}, {98,180}, {83,136}, {116,171}, {110,117},
+ {117,152}, {85,159}, {86,165}, {107,112}, {116,163}, {99,141}, {116,180},
+ {122,114}, {111,181}, {74,159}, {107,113}, {109,127}, {125,137}, {100,102},
+ {121,100}, {112,115}, {101,172}, {81,167}, {89,135}, {100,151}, {106,157},
+ {84,183}, {90,122}, {90,141}, {121,140}, {97,154}, {91,127}, {76,133},
+ {108,144}, {75,123}, {94,179}, {105,106}, {89,136}, {110,163}, {87,125},
+ {79,132}, {80,141}, {124,102}, {113,187}, {125,146}, {81,129}, {99,155},
+ {83,137}, {92,143}, {76,173}, {94,103}, {102,123}, {108,97}, {76,121},
+ {123,158}, {103,162}, {84,129}, {92,104}, {98,130}, {115,152}, {101,147},
+ {115,153}, {115,134}, {77,155}, {77,108}, {124,131}, {84,167}, {81,130},
+ {121,101}, {104,149}, {99,142}, {84,138}, {95,154}, {123,159}, {103,163},
+ {120,187}, {99,143}, {117,112}, {88,167}, {89,137}, {120,111}, {111,182},
+ {93,118}, {110,111}, {77,184}, {94,120}, {124,103}, {119,188}, {119,113},
+ {78,123}, {116,97}, {110,141}, {97,110}, {108,131}, {79,190}, {120,127},
+ {88,162}, {83,168}, {94,104}, {116,164}, {108,130}, {89,181}, {121,133},
+ {93,147}, {86,177}, {108,188}, {124,176}, {109,128}, {74,121}, {110,164},
+ {114,161}, {94,121}, {86,178}, {94,180}, {95,155}, {91,147}, {122,167},
+ {88,163}, {116,129}, {93,119}, {114,181}, {84,110}, {86,179}, {93,120},
+ {79,133}, {95,159}, {114,126}, {118,97}, {107,139}, {113,188}, {115,135},
+ {96,171}, {109,188}, {97,155}, {110,165}, {94,181}, {122,147}, {113,139},
+ {80,111}, {93,121}, {81,131}, {117,113}, {106,134}, {112,161}, {118,108},
+ {117,153}, {112,171}, {93,122}, {114,127}, {119,133}, {91,98}, {114,182},
+ {74,122}, {119,181}, {75,165}, {110,166}, {96,147}, {78,101}, {86,152},
+ {84,111}, {105,137}, {83,142}, {116,130}, {75,166}, {113,97}, {107,114},
+ {113,98}, {107,115}, {112,116}, {75,180}, {84,112}, {115,114}, {123,119},
+ {117,172}, {110,167}, {116,114}, {117,173}, {79,179}, {112,162}, {110,142},
+ {113,140}, {101,120}, {87,181}, {99,179}, {79,165}, {79,134}, {115,115},
+ {100,152}, {79,185}, {79,154}, {122,141}, {102,163}, {114,162}, {117,174},
+ {74,123}, {99,156}, {78,178}, {86,153}, {110,112}, {116,165}, {88,130},
+ {92,144}, {76,174}, {85,160}, {118,138}, {125,138}, {88,150}, {116,143},
+ {86,102}, {92,126}, {91,148}, {87,135}, {114,190}, {113,141}, {98,131},
+ {92,158}, {92,159}, {111,109}, {102,107}, {121,157}, {106,127}, {111,110},
+ {116,144}, {78,179}, {102,108}, {78,158}, {85,185}, {99,180}, {77,144},
+ {85,120}, {119,189}, {92,105}, {94,182}, {92,106}, {114,163}, {105,116},
+ {82,156}, {105,166}, {99,182}, {103,138}, {80,142}, {90,183}, {74,124},
+ {110,168}, {90,158}, {114,183}, {98,187}, {76,102}, {90,123}, {110,169},
+ {117,154}, {119,156}, {97,170}, {78,129}, {84,113}, {125,113}, {102,125},
+ {123,109}, {120,167}, {97,142}, {119,162}, {117,175}, {79,135}, {84,114},
+ {76,175}, {84,168}, {110,143}, {119,151}, {96,102}, {86,129}, {97,156},
+ {112,163}, {113,164}, {92,177}, {86,103}, {116,181}, {113,142}, {114,164},
+ {80,112}, {108,175}, {121,122}, {107,117}, {84,173}, {98,132}, {105,167},
+ {107,116}, {106,97}, {120,124}, {78,102}, {121,134}, {124,154}, {84,115},
+ {83,121}, {106,158}, {105,107}, {97,161}, {83,143}, {116,182}, {106,128},
+ {97,143}, {76,122}, {110,170}, {112,164}, {115,116}, {84,174}, {114,128},
+ {113,165}, {116,131}, {96,148}, {107,118}, {87,97}, {75,168}, {121,109},
+ {105,109}, {88,164}, {122,115}, {98,133}, {124,125}, {108,132}, {88,113},
+ {92,107}, {85,100}, {107,169}, {104,123}, {88,151}, {123,110}, {81,161},
+ {91,128}, {117,126}, {94,183}, {74,187}, {119,134}, {79,136}, {97,144},
+ {110,144}, {105,180}, {78,180}, {85,141}, {79,155}, {93,123}, {78,108},
+ {105,168}, {84,116}, {100,135}, {117,155}, {122,129}, {94,105}, {84,184},
+ {111,183}, {83,115}, {107,119}, {111,184}, {117,156}, {109,140}, {91,149},
+ {113,143}, {113,144}, {117,114}, {89,110}, {85,108}, {98,134}, {125,99},
+ {123,165}, {95,107}, {98,181}, {118,109}, {117,115}, {112,117}, {97,101},
+ {117,157}, {108,98}, {109,189}, {117,116}, {123,120}, {91,99}, {86,138},
+ {75,153}, {101,148}, {115,186}, {107,120}, {96,119}, {87,172}, {113,172},
+ {101,111}, {85,161}, {87,173}, {81,145}, {97,178}, {111,185}, {93,124},
+ {118,156}, {112,165}, {116,132}, {105,169}, {115,187}, {84,175}, {76,98},
+ {119,190}, {95,124}, {107,141}, {80,119}, {86,130}, {104,109}, {111,111},
+ {75,101}, {75,169}, {122,168}, {76,134}, {102,167}, {106,135}, {91,100},
+ {79,137}, {98,188}, {111,186}, {107,158}, {117,136}, {84,158}, {96,149},
+ {111,112}, {98,135}, {89,111}, {121,167}, {103,165}, {79,138}, {97,145},
+ {98,136}, {111,187}, {122,185}, {92,178}, {96,103}, {120,168}, {75,170},
+ {75,124}, {86,162}, {117,158}, {117,159}, {110,118}, {98,182}, {83,138},
+ {111,188}, {81,132}, {111,113}, {81,133}, {80,158}, {89,161}, {96,120},
+ {77,145}, {115,121}, {103,140}, {86,104}, {78,103}, {84,117}, {100,136},
+ {83,116}, {107,121}, {75,181}, {118,157}, {113,99}, {76,135}, {105,138},
+ {97,176}, {117,160}, {123,111}, {75,145}, {123,160}, {114,165}, {108,176},
+ {112,172}, {110,171}, {105,139}, {76,176}, {87,111}, {115,97}, {124,181},
+ {113,100}, {96,150}, {111,114}, {116,145}, {119,97}, {113,145}, {74,188},
+ {74,189}, {78,142}, {115,136}, {115,122}, {109,190}, {90,102}, {96,172},
+ {120,141}, {75,146}, {107,142}, {121,152}, {121,153}, {74,160}, {90,138},
+ {75,102}, {74,136}, {121,174}, {91,172}, {80,113}, {85,175}, {102,179},
+ {103,98}, {100,153}, {100,161}, {124,132}, {121,175}, {79,180}, {119,166},
+ {78,124}, {116,133}, {92,99}, {93,125}, {116,134}, {120,97}, {104,150},
+ {91,129}, {112,166}, {100,121}, {118,173}, {121,110}, {93,126}, {87,112},
+ {88,168}, {75,125}, {121,154}, {120,142}, {121,176}, {96,173}, {99,115},
+ {116,115}, {106,130}, {114,166}, {112,118}, {91,150}, {107,164}, {114,167},
+ {87,149}, {84,118}, {121,168}, {87,129}, {101,149}, {105,170}, {87,140},
+ {83,169}, {98,137}, {124,155}, {77,109}, {76,112}, {106,98}, {100,182},
+ {80,128}, {112,119}, {110,97}, {87,182}, {98,138}, {98,139}, {122,143},
+ {107,159}, {86,139}, {116,116}, {109,141}, {100,146}, {106,105}, {100,122},
+ {115,98}, {77,146}, {118,139}, {113,166}, {109,129}, {104,124}, {110,145},
+ {112,167}, {98,140}, {100,106}, {117,161}, {109,154}, {87,174}, {81,177},
+ {105,171}, {105,172}, {96,164}, {90,103}, {93,148}, {106,99}, {86,131},
+ {86,180}, {90,159}, {111,115}, {98,141}, {111,189}, {114,168}, {111,133},
+ {103,167}, {87,189}, {103,142}, {95,156}, {121,135}, {89,182}, {95,108},
+ {86,154}, {92,100}, {112,120}, {85,186}, {100,183}, {86,132}, {116,172},
+ {111,190}, {112,97}, {94,106}, {90,124}, {88,188}, {122,148}, {108,165},
+ {124,104}, {108,166}, {88,139}, {123,121}, {100,147}, {77,185}, {79,147},
+ {74,170}, {79,148}, {120,125}, {116,135}, {106,159}, {121,155}, {84,119},
+ {107,165}, {97,146}, {106,100}, {122,130}, {123,161}, {122,173}, {112,98},
+ {76,177}, {122,99}, {98,183}, {98,142}, {105,181}, {97,171}, {103,168},
+ {104,151}, {90,184}, {84,139}, {119,182}, {86,133}, {84,169}, {122,186},
+ {76,178}, {119,157}, {94,122}, {78,104}, {112,121}, {100,190}, {100,137},
+ {100,148}, {106,131}, {111,116}, {87,126}, {123,162}, {77,147}, {111,117},
+ {122,169}, {121,102}, {95,125}, {119,135}, {120,189}, {120,188}, {94,107},
+ {91,168}, {99,157}, {97,162}, {81,134}, {118,144}, {107,166}, {90,185},
+ {108,135}, {94,184}, {120,169}, {99,158}, {78,181}, {122,131}, {101,151},
+ {108,136}, {115,137}, {100,123}, {102,110}, {111,118}, {92,127}, {78,125},
+ {88,131}, {80,143}, {79,186}, {115,138}, {96,151}, {81,135}, {105,110},
+ {104,125}, {122,132}, {98,143}, {122,133}, {121,120}, {92,160}, {123,112},
+ {88,105}, {101,159}, {121,103}, {118,174}, {118,140}, {98,184}, {108,177},
+ {90,160}, {113,146}, {82,140}, {79,139}, {74,125}, {93,127}, {118,175},
+ {94,185}, {122,116}, {85,109}, {113,167}, {94,126}, {92,128}, {81,136},
+ {81,137}, {120,126}, {75,182}, {84,185}, {117,162}, {97,147}, {88,169},
+ {120,190}, {79,140}, {125,100}, {78,182}, {122,144}, {76,179}, {102,126},
+ {118,110}, {85,176}, {81,138}, {124,126}, {85,177}, {77,169}, {122,117},
+ {98,144}, {116,183}, {77,148}, {103,99}, {91,101}, {98,145}, {87,98},
+ {119,163}, {106,102}, {80,97}, {78,154}, {123,171}, {91,102}, {91,158},
+ {88,165}, {106,160}, {88,106}, {101,160}, {86,155}, {111,134}, {120,170},
+ {100,149}, {78,183}, {96,152}, {87,175}, {116,173}, {77,166}, {76,180},
+ {117,163}, {100,138}, {92,161}, {121,136}, {124,127}, {104,103}, {88,132},
+ {75,126}, {92,110}, {87,183}, {112,168}, {93,128}, {79,141}, {92,179},
+ {89,112}, {102,169}, {100,124}, {106,132}, {100,172}, {100,165}, {123,184},
+ {76,123}, {100,125}, {77,156}, {89,183}, {93,159}, {109,142}, {89,144},
+ {101,99}, {121,141}, {77,110}, {79,142}, {118,111}, {125,147}, {107,173},
+ {86,156}, {101,100}, {85,118}, {86,157}, {121,169}, {103,100}, {86,163},
+ {81,139}, {86,164}, {85,178}, {94,186}, {87,184}, {88,170}, {79,149},
+ {88,189}, {88,107}, {125,139}, {124,156}, {96,104}, {85,179}, {125,153},
+ {76,99}, {89,185}, {83,170}, {117,181}, {111,135}, {83,154}, {90,125},
+ {104,104}, {92,111}, {112,99}, {77,149}, {96,105}, {94,108}, {112,122},
+ {110,113}, {110,114}, {118,141}, {110,146}, {86,134}, {96,165}, {115,123},
+ {101,161}, {100,139}, {87,99}, {91,130}, {74,190}, {79,143}, {48,97},
+ {48,98}, {1,1}, {1,2}, {48,99}, {1,3}, {1,4}, {48,100}, {48,101}, {48,102},
+ {48,103}, {1,5}, {1,6}, {1,7}, {1,8}, {1,9}, {48,104}, {48,105}, {48,106},
+ {48,107}, {48,108}, {48,109}, {48,110}, {48,111}, {1,10}, {48,112},
+ {48,113}, {48,114}, {48,115}, {48,116}, {1,11}, {1,12}, {48,117}, {1,13},
+ {1,14}, {1,15}, {48,118}, {1,16}, {1,17}, {1,18}, {1,19}, {1,20}, {1,21},
+ {1,22}, {48,119}, {48,120}, {1,23}, {48,121}, {48,122}, {48,123}, {1,24},
+ {1,25}, {1,26}, {1,33}, {1,34}, {1,35}, {48,124}, {48,125}, {1,36},
+ {1,37}, {48,126}, {1,38}, {1,39}, {1,40}, {48,127}, {1,41}, {1,42},
+ {1,43}, {1,44}, {1,45}, {1,46}, {1,47}, {1,48}, {1,49}, {1,50}, {48,128},
+ {1,51}, {48,129}, {1,52}, {1,53}, {1,54}, {1,55}, {1,56}, {1,57}, {48,130},
+ {1,58}, {1,65}, {1,66}, {48,131}, {1,67}, {1,68}, {1,69}, {48,132},
+ {1,70}, {1,71}, {1,72}, {1,73}, {1,74}, {1,75}, {1,76}, {1,77}, {1,78},
+ {1,79}, {1,80}, {1,81}, {1,82}, {1,83}, {1,84}, {1,85}, {1,86}, {1,87},
+ {1,88}, {48,133}, {48,134}, {1,89}, {1,90}, {48,135}, {1,91}, {1,92},
+ {48,136}, {48,137}, {1,93}, {48,138}, {1,94}, {1,95}, {1,96}, {1,97},
+ {1,98}, {48,139}, {48,140}, {1,99}, {48,141}, {48,142}, {48,143}, {48,144},
+ {1,100}, {1,101}, {48,145}, {48,146}, {48,147}, {48,148}, {1,102},
+ {1,103}, {1,104}, {48,149}, {1,105}, {1,106}, {1,107}, {48,150}, {1,108},
+ {1,109}, {1,110}, {1,111}, {1,112}, {1,113}, {1,114}, {48,151}, {48,152},
+ {1,115}, {48,153}, {48,154}, {48,155}, {1,116}, {1,117}, {1,118}, {1,119},
+ {1,120}, {1,121}, {48,156}, {48,157}, {48,158}, {1,122}, {48,159},
+ {1,123}, {1,124}, {48,160}, {48,161}, {1,125}, {1,126}, {1,127}, {1,128},
+ {1,129}, {1,130}, {1,131}, {48,162}, {48,163}, {1,132}, {48,164}, {48,165},
+ {48,166}, {1,133}, {1,134}, {1,135}, {48,167}, {1,136}, {1,137}, {48,168},
+ {1,138}, {1,139}, {1,140}, {48,169}, {1,141}, {1,142}, {1,143}, {48,170},
+ {1,144}, {1,145}, {1,146}, {1,147}, {1,148}, {1,149}, {1,150}, {1,151},
+ {48,171}, {1,152}, {48,172}, {1,153}, {1,154}, {1,155}, {1,156}, {1,157},
+ {1,158}, {1,159}, {1,160}, {48,173}, {48,174}, {1,161}, {1,162}, {48,175},
+ {1,163}, {1,164}, {48,176}, {48,177}, {1,165}, {48,178}, {1,166}, {48,179},
+ {1,167}, {1,168}, {48,180}, {48,181}, {48,182}, {1,169}, {48,183},
+ {1,170}, {48,184}, {48,185}, {1,171}, {1,172}, {1,173}, {1,174}, {1,175},
+ {48,186}, {48,187}, {1,176}, {1,177}, {48,188}, {1,178}, {1,179}, {1,180},
+ {48,189}, {1,181}, {48,190}, {1,182}, {1,183}, {1,184}, {1,185}, {1,186},
+ {49,97}, {49,98}, {1,187}, {49,99}, {1,188}, {49,100}, {1,189}, {1,190},
+ {2,1}, {2,2}, {2,3}, {2,4}, {49,101}, {2,5}, {2,6}, {2,7}, {49,102},
+ {2,8}, {2,9}, {2,10}, {49,103}, {2,11}, {2,12}, {2,13}, {2,14}, {2,15},
+ {2,16}, {2,17}, {2,18}, {49,104}, {2,19}, {2,20}, {49,105}, {49,106},
+ {2,21}, {2,22}, {2,23}, {2,24}, {2,25}, {2,26}, {49,107}, {49,108},
+ {2,33}, {2,34}, {49,109}, {2,35}, {2,36}, {2,37}, {49,110}, {2,38},
+ {2,39}, {2,40}, {2,41}, {2,42}, {2,43}, {2,44}, {49,111}, {49,112},
+ {2,45}, {49,113}, {2,46}, {49,114}, {2,47}, {2,48}, {2,49}, {2,50},
+ {2,51}, {2,52}, {49,115}, {2,53}, {2,54}, {2,55}, {49,116}, {2,56},
+ {2,57}, {2,58}, {49,117}, {2,65}, {2,66}, {2,67}, {2,68}, {2,69}, {2,70},
+ {2,71}, {2,72}, {49,118}, {2,73}, {49,119}, {2,74}, {2,75}, {2,76},
+ {2,77}, {2,78}, {2,79}, {2,80}, {2,81}, {49,120}, {49,121}, {2,82},
+ {2,83}, {49,122}, {2,84}, {2,85}, {49,123}, {49,124}, {49,125}, {49,126},
+ {2,86}, {2,87}, {2,88}, {2,89}, {49,127}, {49,128}, {49,129}, {2,90},
+ {49,130}, {2,91}, {49,131}, {49,132}, {2,92}, {2,93}, {2,94}, {2,95},
+ {2,96}, {49,133}, {49,134}, {2,97}, {2,98}, {49,135}, {2,99}, {2,100},
+ {2,101}, {49,136}, {2,102}, {2,103}, {2,104}, {2,105}, {2,106}, {2,107},
+ {2,108}, {2,109}, {2,110}, {2,111}, {2,112}, {49,137}, {49,138}, {2,113},
+ {2,114}, {2,115}, {2,116}, {2,117}, {2,118}, {49,139}, {2,119}, {2,120},
+ {2,121}, {2,122}, {2,123}, {2,124}, {2,125}, {2,126}, {2,127}, {2,128},
+ {2,129}, {2,130}, {2,131}, {2,132}, {2,133}, {2,134}, {2,135}, {2,136},
+ {49,140}, {2,137}, {2,138}, {2,139}, {2,140}, {2,141}, {2,142}, {2,143},
+ {2,144}, {49,141}, {49,142}, {2,145}, {2,146}, {49,143}, {2,147}, {2,148},
+ {2,149}, {49,144}, {2,150}, {2,151}, {2,152}, {2,153}, {2,154}, {2,155},
+ {2,156}, {49,145}, {49,146}, {2,157}, {49,147}, {2,158}, {2,159}, {2,160},
+ {2,161}, {2,162}, {2,163}, {2,164}, {2,165}, {49,148}, {2,166}, {2,167},
+ {2,168}, {49,149}, {2,169}, {2,170}, {2,171}, {49,150}, {2,172}, {2,173},
+ {2,174}, {2,175}, {2,176}, {2,177}, {2,178}, {2,179}, {2,180}, {2,181},
+ {2,182}, {2,183}, {2,184}, {2,185}, {2,186}, {2,187}, {2,188}, {2,189},
+ {2,190}, {49,151}, {49,152}, {3,1}, {3,2}, {49,153}, {3,3}, {3,4},
+ {49,154}, {49,155}, {49,156}, {3,5}, {3,6}, {3,7}, {3,8}, {3,9}, {3,10},
+ {49,157}, {49,158}, {3,11}, {49,159}, {3,12}, {49,160}, {3,13}, {3,14},
+ {3,15}, {3,16}, {3,17}, {3,18}, {49,161}, {3,19}, {3,20}, {3,21}, {3,22},
+ {3,23}, {3,24}, {3,25}, {3,26}, {3,33}, {3,34}, {3,35}, {3,36}, {3,37},
+ {3,38}, {3,39}, {3,40}, {3,41}, {3,42}, {3,43}, {3,44}, {3,45}, {3,46},
+ {3,47}, {3,48}, {3,49}, {3,50}, {3,51}, {49,162}, {49,163}, {3,52},
+ {3,53}, {49,164}, {3,54}, {3,55}, {49,165}, {49,166}, {3,56}, {49,167},
+ {3,57}, {3,58}, {3,65}, {3,66}, {3,67}, {49,168}, {49,169}, {3,68},
+ {49,170}, {3,69}, {49,171}, {49,172}, {3,70}, {3,71}, {3,72}, {49,173},
+ {3,73}, {49,174}, {49,175}, {49,176}, {3,74}, {49,177}, {3,75}, {3,76},
+ {3,77}, {49,178}, {3,78}, {49,179}, {3,79}, {3,80}, {3,81}, {3,82},
+ {3,83}, {49,180}, {49,181}, {3,84}, {49,182}, {49,183}, {49,184}, {3,85},
+ {3,86}, {3,87}, {49,185}, {3,88}, {3,89}, {49,186}, {49,187}, {3,90},
+ {3,91}, {49,188}, {3,92}, {3,93}, {3,94}, {49,189}, {3,95}, {3,96},
+ {3,97}, {3,98}, {3,99}, {3,100}, {3,101}, {49,190}, {50,97}, {3,102},
+ {50,98}, {50,99}, {50,100}, {3,103}, {3,104}, {3,105}, {3,106}, {3,107},
+ {3,108}, {50,101}, {50,102}, {3,109}, {3,110}, {3,111}, {3,112}, {3,113},
+ {3,114}, {50,103}, {3,115}, {3,116}, {3,117}, {3,118}, {3,119}, {3,120},
+ {3,121}, {3,122}, {3,123}, {3,124}, {3,125}, {3,126}, {3,127}, {3,128},
+ {3,129}, {3,130}, {3,131}, {3,132}, {3,133}, {3,134}, {3,135}, {3,136},
+ {3,137}, {3,138}, {3,139}, {3,140}, {3,141}, {3,142}, {3,143}, {3,144},
+ {3,145}, {3,146}, {3,147}, {3,148}, {3,149}, {3,150}, {3,151}, {3,152},
+ {3,153}, {3,154}, {3,155}, {3,156}, {3,157}, {3,158}, {3,159}, {3,160},
+ {3,161}, {50,104}, {50,105}, {50,106}, {3,162}, {50,107}, {3,163},
+ {3,164}, {3,165}, {50,108}, {3,166}, {3,167}, {3,168}, {3,169}, {3,170},
+ {3,171}, {3,172}, {50,109}, {50,110}, {3,173}, {50,111}, {50,112},
+ {50,113}, {3,174}, {3,175}, {3,176}, {3,177}, {3,178}, {3,179}, {50,114},
+ {50,115}, {3,180}, {3,181}, {50,116}, {3,182}, {3,183}, {3,184}, {3,185},
+ {3,186}, {3,187}, {3,188}, {3,189}, {3,190}, {4,1}, {4,2}, {50,117},
+ {4,3}, {4,4}, {50,118}, {4,5}, {50,119}, {4,6}, {4,7}, {4,8}, {4,9},
+ {4,10}, {4,11}, {50,120}, {4,12}, {4,13}, {4,14}, {50,121}, {4,15},
+ {4,16}, {4,17}, {50,122}, {4,18}, {4,19}, {4,20}, {4,21}, {4,22}, {4,23},
+ {4,24}, {4,25}, {4,26}, {4,33}, {50,123}, {50,124}, {4,34}, {4,35},
+ {4,36}, {4,37}, {50,125}, {4,38}, {4,39}, {50,126}, {4,40}, {4,41},
+ {4,42}, {4,43}, {4,44}, {4,45}, {4,46}, {4,47}, {4,48}, {4,49}, {4,50},
+ {4,51}, {4,52}, {4,53}, {4,54}, {4,55}, {4,56}, {4,57}, {4,58}, {4,65},
+ {4,66}, {4,67}, {4,68}, {4,69}, {4,70}, {4,71}, {4,72}, {50,127}, {50,128},
+ {4,73}, {4,74}, {50,129}, {4,75}, {50,130}, {4,76}, {50,131}, {4,77},
+ {4,78}, {4,79}, {4,80}, {4,81}, {4,82}, {4,83}, {50,132}, {50,133},
+ {4,84}, {50,134}, {4,85}, {50,135}, {50,136}, {50,137}, {4,86}, {4,87},
+ {4,88}, {4,89}, {50,138}, {50,139}, {4,90}, {4,91}, {4,92}, {4,93},
+ {4,94}, {4,95}, {50,140}, {4,96}, {4,97}, {4,98}, {4,99}, {4,100},
+ {4,101}, {4,102}, {4,103}, {4,104}, {4,105}, {4,106}, {50,141}, {50,142},
+ {4,107}, {4,108}, {4,109}, {4,110}, {4,111}, {4,112}, {50,143}, {50,144},
+ {4,113}, {4,114}, {4,115}, {4,116}, {4,117}, {4,118}, {4,119}, {4,120},
+ {4,121}, {4,122}, {4,123}, {4,124}, {4,125}, {4,126}, {4,127}, {4,128},
+ {4,129}, {4,130}, {4,131}, {50,145}, {4,132}, {4,133}, {4,134}, {4,135},
+ {4,136}, {4,137}, {50,146}, {4,138}, {4,139}, {4,140}, {50,147}, {4,141},
+ {4,142}, {4,143}, {50,148}, {4,144}, {4,145}, {4,146}, {4,147}, {4,148},
+ {4,149}, {4,150}, {50,149}, {50,150}, {4,151}, {4,152}, {4,153}, {50,151},
+ {4,154}, {4,155}, {4,156}, {4,157}, {4,158}, {4,159}, {50,152}, {4,160},
+ {4,161}, {4,162}, {4,163}, {4,164}, {4,165}, {4,166}, {4,167}, {4,168},
+ {4,169}, {4,170}, {4,171}, {4,172}, {4,173}, {4,174}, {4,175}, {4,176},
+ {4,177}, {4,178}, {4,179}, {4,180}, {4,181}, {4,182}, {4,183}, {4,184},
+ {4,185}, {4,186}, {50,153}, {50,154}, {4,187}, {4,188}, {50,155}, {4,189},
+ {4,190}, {5,1}, {50,156}, {5,2}, {5,3}, {5,4}, {5,5}, {5,6}, {5,7},
+ {50,157}, {50,158}, {50,159}, {5,8}, {50,160}, {5,9}, {50,161}, {50,162},
+ {5,10}, {5,11}, {5,12}, {5,13}, {5,14}, {50,163}, {5,15}, {5,16}, {5,17},
+ {5,18}, {5,19}, {5,20}, {5,21}, {50,164}, {5,22}, {5,23}, {5,24}, {5,25},
+ {5,26}, {5,33}, {5,34}, {5,35}, {5,36}, {5,37}, {5,38}, {50,165}, {50,166},
+ {5,39}, {5,40}, {5,41}, {5,42}, {5,43}, {5,44}, {50,167}, {50,168},
+ {5,45}, {5,46}, {50,169}, {5,47}, {5,48}, {5,49}, {50,170}, {5,50},
+ {5,51}, {5,52}, {5,53}, {5,54}, {5,55}, {5,56}, {50,171}, {50,172},
+ {5,57}, {5,58}, {50,173}, {5,65}, {5,66}, {5,67}, {5,68}, {5,69}, {5,70},
+ {5,71}, {50,174}, {5,72}, {5,73}, {5,74}, {50,175}, {5,75}, {5,76},
+ {5,77}, {50,176}, {5,78}, {5,79}, {5,80}, {5,81}, {5,82}, {5,83}, {5,84},
+ {50,177}, {50,178}, {5,85}, {5,86}, {5,87}, {5,88}, {5,89}, {5,90},
+ {5,91}, {5,92}, {5,93}, {5,94}, {50,179}, {5,95}, {5,96}, {5,97}, {5,98},
+ {5,99}, {5,100}, {5,101}, {5,102}, {5,103}, {5,104}, {5,105}, {5,106},
+ {5,107}, {5,108}, {5,109}, {5,110}, {5,111}, {5,112}, {5,113}, {5,114},
+ {5,115}, {5,116}, {5,117}, {5,118}, {5,119}, {5,120}, {5,121}, {50,180},
+ {50,181}, {5,122}, {5,123}, {50,182}, {5,124}, {50,183}, {5,125}, {50,184},
+ {5,126}, {50,185}, {5,127}, {5,128}, {5,129}, {5,130}, {50,186}, {50,187},
+ {50,188}, {5,131}, {50,189}, {5,132}, {50,190}, {5,133}, {5,134}, {5,135},
+ {51,97}, {5,136}, {5,137}, {5,138}, {5,139}, {5,140}, {5,141}, {5,142},
+ {5,143}, {5,144}, {5,145}, {5,146}, {5,147}, {5,148}, {5,149}, {5,150},
+ {5,151}, {5,152}, {5,153}, {5,154}, {5,155}, {5,156}, {5,157}, {5,158},
+ {5,159}, {5,160}, {5,161}, {5,162}, {5,163}, {5,164}, {5,165}, {51,98},
+ {51,99}, {5,166}, {5,167}, {51,100}, {5,168}, {5,169}, {5,170}, {51,101},
+ {5,171}, {5,172}, {5,173}, {5,174}, {5,175}, {5,176}, {5,177}, {51,102},
+ {51,103}, {5,178}, {51,104}, {5,179}, {51,105}, {5,180}, {5,181}, {5,182},
+ {5,183}, {5,184}, {5,185}, {51,106}, {51,107}, {51,108}, {5,186}, {51,109},
+ {5,187}, {5,188}, {51,110}, {51,111}, {51,112}, {51,113}, {5,189},
+ {5,190}, {6,1}, {6,2}, {6,3}, {51,114}, {51,115}, {6,4}, {51,116},
+ {51,117}, {51,118}, {51,119}, {51,120}, {6,5}, {51,121}, {6,6}, {51,122},
+ {51,123}, {51,124}, {6,7}, {6,8}, {51,125}, {6,9}, {6,10}, {6,11},
+ {51,126}, {6,12}, {6,13}, {6,14}, {6,15}, {6,16}, {6,17}, {6,18}, {51,127},
+ {51,128}, {6,19}, {51,129}, {51,130}, {51,131}, {6,20}, {6,21}, {6,22},
+ {6,23}, {6,24}, {6,25}, {51,132}, {51,133}, {6,26}, {6,33}, {51,134},
+ {6,34}, {6,35}, {6,36}, {51,135}, {6,37}, {6,38}, {6,39}, {6,40}, {6,41},
+ {6,42}, {6,43}, {51,136}, {6,44}, {6,45}, {6,46}, {6,47}, {51,137},
+ {6,48}, {6,49}, {6,50}, {6,51}, {6,52}, {6,53}, {6,54}, {6,55}, {6,56},
+ {6,57}, {6,58}, {6,65}, {6,66}, {6,67}, {6,68}, {6,69}, {6,70}, {6,71},
+ {6,72}, {6,73}, {6,74}, {6,75}, {6,76}, {6,77}, {6,78}, {6,79}, {6,80},
+ {6,81}, {6,82}, {6,83}, {6,84}, {6,85}, {6,86}, {6,87}, {51,138}, {51,139},
+ {6,88}, {51,140}, {51,141}, {6,89}, {6,90}, {6,91}, {51,142}, {6,92},
+ {51,143}, {51,144}, {6,93}, {6,94}, {6,95}, {6,96}, {51,145}, {51,146},
+ {6,97}, {51,147}, {51,148}, {51,149}, {6,98}, {6,99}, {6,100}, {6,101},
+ {6,102}, {51,150}, {51,151}, {51,152}, {6,103}, {6,104}, {51,153},
+ {6,105}, {6,106}, {6,107}, {51,154}, {6,108}, {6,109}, {6,110}, {6,111},
+ {6,112}, {6,113}, {6,114}, {51,155}, {51,156}, {6,115}, {51,157}, {51,158},
+ {51,159}, {6,116}, {6,117}, {6,118}, {6,119}, {6,120}, {6,121}, {51,160},
+ {51,161}, {6,122}, {6,123}, {51,162}, {6,124}, {6,125}, {6,126}, {51,163},
+ {6,127}, {6,128}, {6,129}, {6,130}, {6,131}, {6,132}, {6,133}, {51,164},
+ {51,165}, {6,134}, {6,135}, {51,166}, {51,167}, {6,136}, {6,137}, {51,168},
+ {6,138}, {6,139}, {6,140}, {51,169}, {6,141}, {6,142}, {6,143}, {51,170},
+ {6,144}, {6,145}, {6,146}, {6,147}, {6,148}, {6,149}, {6,150}, {6,151},
+ {6,152}, {6,153}, {6,154}, {6,155}, {6,156}, {6,157}, {6,158}, {6,159},
+ {6,160}, {6,161}, {6,162}, {6,163}, {6,164}, {6,165}, {6,166}, {51,171},
+ {51,172}, {6,167}, {6,168}, {51,173}, {6,169}, {6,170}, {6,171}, {51,174},
+ {6,172}, {51,175}, {6,173}, {6,174}, {6,175}, {6,176}, {6,177}, {51,176},
+ {51,177}, {6,178}, {51,178}, {6,179}, {51,179}, {6,180}, {6,181}, {6,182},
+ {6,183}, {51,180}, {51,181}, {51,182}, {6,184}, {6,185}, {6,186}, {51,183},
+ {6,187}, {6,188}, {6,189}, {51,184}, {6,190}, {7,1}, {7,2}, {7,3},
+ {7,4}, {7,5}, {7,6}, {7,7}, {7,8}, {7,9}, {7,10}, {51,185}, {7,11},
+ {7,12}, {7,13}, {7,14}, {7,15}, {7,16}, {7,17}, {7,18}, {7,19}, {7,20},
+ {7,21}, {7,22}, {7,23}, {7,24}, {7,25}, {7,26}, {7,33}, {7,34}, {7,35},
+ {7,36}, {7,37}, {7,38}, {7,39}, {7,40}, {7,41}, {7,42}, {7,43}, {7,44},
+ {7,45}, {7,46}, {7,47}, {7,48}, {7,49}, {7,50}, {7,51}, {51,186}, {7,52},
+ {7,53}, {7,54}, {51,187}, {7,55}, {7,56}, {7,57}, {51,188}, {7,58},
+ {7,65}, {7,66}, {7,67}, {7,68}, {7,69}, {7,70}, {51,189}, {51,190},
+ {7,71}, {52,97}, {7,72}, {7,73}, {7,74}, {7,75}, {7,76}, {7,77}, {7,78},
+ {7,79}, {52,98}, {52,99}, {7,80}, {7,81}, {52,100}, {7,82}, {7,83},
+ {7,84}, {52,101}, {7,85}, {7,86}, {7,87}, {7,88}, {7,89}, {7,90}, {7,91},
+ {7,92}, {52,102}, {7,93}, {52,103}, {7,94}, {52,104}, {7,95}, {7,96},
+ {7,97}, {7,98}, {7,99}, {7,100}, {52,105}, {52,106}, {7,101}, {7,102},
+ {52,107}, {7,103}, {7,104}, {52,108}, {52,109}, {7,105}, {7,106}, {7,107},
+ {7,108}, {7,109}, {7,110}, {7,111}, {52,110}, {52,111}, {7,112}, {52,112},
+ {7,113}, {52,113}, {7,114}, {7,115}, {7,116}, {7,117}, {7,118}, {7,119},
+ {52,114}, {7,120}, {7,121}, {7,122}, {7,123}, {7,124}, {7,125}, {7,126},
+ {7,127}, {7,128}, {7,129}, {7,130}, {7,131}, {7,132}, {7,133}, {7,134},
+ {7,135}, {7,136}, {7,137}, {7,138}, {52,115}, {7,139}, {7,140}, {7,141},
+ {7,142}, {7,143}, {7,144}, {7,145}, {52,116}, {7,146}, {7,147}, {7,148},
+ {7,149}, {7,150}, {7,151}, {7,152}, {7,153}, {7,154}, {7,155}, {7,156},
+ {7,157}, {7,158}, {7,159}, {7,160}, {7,161}, {7,162}, {7,163}, {7,164},
+ {7,165}, {7,166}, {7,167}, {7,168}, {7,169}, {7,170}, {7,171}, {7,172},
+ {52,117}, {7,173}, {7,174}, {7,175}, {52,118}, {7,176}, {7,177}, {7,178},
+ {52,119}, {7,179}, {7,180}, {7,181}, {7,182}, {7,183}, {7,184}, {7,185},
+ {52,120}, {52,121}, {7,186}, {7,187}, {7,188}, {7,189}, {7,190}, {8,1},
+ {8,2}, {8,3}, {8,4}, {8,5}, {52,122}, {52,123}, {8,6}, {8,7}, {8,8},
+ {8,9}, {8,10}, {8,11}, {52,124}, {8,12}, {8,13}, {8,14}, {8,15}, {8,16},
+ {8,17}, {8,18}, {52,125}, {52,126}, {8,19}, {8,20}, {8,21}, {52,127},
+ {8,22}, {8,23}, {8,24}, {8,25}, {8,26}, {8,33}, {52,128}, {52,129},
+ {8,34}, {8,35}, {52,130}, {8,36}, {8,37}, {8,38}, {52,131}, {52,132},
+ {52,133}, {8,39}, {8,40}, {8,41}, {8,42}, {8,43}, {52,134}, {52,135},
+ {8,44}, {52,136}, {8,45}, {52,137}, {52,138}, {8,46}, {8,47}, {8,48},
+ {52,139}, {8,49}, {52,140}, {8,50}, {8,51}, {8,52}, {52,141}, {8,53},
+ {8,54}, {8,55}, {52,142}, {8,56}, {8,57}, {8,58}, {8,65}, {8,66}, {8,67},
+ {8,68}, {8,69}, {8,70}, {8,71}, {8,72}, {8,73}, {8,74}, {8,75}, {8,76},
+ {8,77}, {8,78}, {8,79}, {8,80}, {52,143}, {52,144}, {8,81}, {8,82},
+ {52,145}, {8,83}, {8,84}, {8,85}, {52,146}, {8,86}, {52,147}, {8,87},
+ {8,88}, {8,89}, {8,90}, {8,91}, {52,148}, {52,149}, {8,92}, {52,150},
+ {8,93}, {52,151}, {8,94}, {8,95}, {8,96}, {8,97}, {52,152}, {8,98},
+ {52,153}, {52,154}, {52,155}, {8,99}, {52,156}, {8,100}, {8,101}, {52,157},
+ {52,158}, {52,159}, {52,160}, {52,161}, {8,102}, {8,103}, {8,104},
+ {52,162}, {52,163}, {52,164}, {8,105}, {52,165}, {52,166}, {52,167},
+ {52,168}, {52,169}, {8,106}, {8,107}, {8,108}, {52,170}, {52,171},
+ {52,172}, {8,109}, {8,110}, {52,173}, {8,111}, {8,112}, {8,113}, {52,174},
+ {8,114}, {8,115}, {8,116}, {8,117}, {8,118}, {8,119}, {8,120}, {52,175},
+ {52,176}, {8,121}, {52,177}, {52,178}, {52,179}, {8,122}, {8,123},
+ {8,124}, {8,125}, {8,126}, {8,127}, {52,180}, {8,128}, {8,129}, {8,130},
+ {8,131}, {8,132}, {8,133}, {8,134}, {8,135}, {8,136}, {8,137}, {8,138},
+ {8,139}, {8,140}, {8,141}, {8,142}, {8,143}, {8,144}, {8,145}, {8,146},
+ {8,147}, {8,148}, {8,149}, {8,150}, {8,151}, {8,152}, {8,153}, {8,154},
+ {8,155}, {8,156}, {8,157}, {8,158}, {8,159}, {8,160}, {8,161}, {8,162},
+ {8,163}, {8,164}, {8,165}, {8,166}, {8,167}, {8,168}, {8,169}, {8,170},
+ {8,171}, {8,172}, {8,173}, {8,174}, {8,175}, {8,176}, {8,177}, {8,178},
+ {8,179}, {8,180}, {8,181}, {8,182}, {52,181}, {52,182}, {52,183}, {8,183},
+ {52,184}, {8,184}, {8,185}, {52,185}, {52,186}, {8,186}, {52,187},
+ {52,188}, {8,187}, {8,188}, {8,189}, {8,190}, {52,189}, {52,190}, {9,1},
+ {53,97}, {9,2}, {53,98}, {9,3}, {53,99}, {9,4}, {9,5}, {53,100}, {9,6},
+ {53,101}, {53,102}, {9,7}, {9,8}, {53,103}, {9,9}, {9,10}, {9,11},
+ {53,104}, {9,12}, {9,13}, {9,14}, {9,15}, {9,16}, {9,17}, {9,18}, {53,105},
+ {53,106}, {9,19}, {53,107}, {53,108}, {53,109}, {9,20}, {9,21}, {9,22},
+ {9,23}, {9,24}, {9,25}, {53,110}, {9,26}, {9,33}, {9,34}, {53,111},
+ {9,35}, {9,36}, {9,37}, {53,112}, {9,38}, {9,39}, {9,40}, {9,41}, {9,42},
+ {9,43}, {9,44}, {9,45}, {9,46}, {9,47}, {9,48}, {53,113}, {53,114},
+ {9,49}, {9,50}, {9,51}, {9,52}, {9,53}, {9,54}, {53,115}, {9,55}, {9,56},
+ {9,57}, {53,116}, {9,58}, {9,65}, {9,66}, {9,67}, {9,68}, {9,69}, {9,70},
+ {9,71}, {9,72}, {9,73}, {9,74}, {9,75}, {9,76}, {9,77}, {9,78}, {9,79},
+ {9,80}, {9,81}, {9,82}, {9,83}, {9,84}, {9,85}, {9,86}, {53,117}, {53,118},
+ {9,87}, {9,88}, {53,119}, {9,89}, {9,90}, {53,120}, {53,121}, {9,91},
+ {53,122}, {9,92}, {53,123}, {9,93}, {9,94}, {9,95}, {53,124}, {53,125},
+ {9,96}, {53,126}, {9,97}, {53,127}, {9,98}, {53,128}, {9,99}, {53,129},
+ {9,100}, {9,101}, {53,130}, {9,102}, {9,103}, {9,104}, {53,131}, {9,105},
+ {9,106}, {9,107}, {53,132}, {9,108}, {9,109}, {9,110}, {9,111}, {9,112},
+ {9,113}, {9,114}, {9,115}, {9,116}, {9,117}, {9,118}, {9,119}, {9,120},
+ {9,121}, {9,122}, {9,123}, {9,124}, {9,125}, {9,126}, {53,133}, {9,127},
+ {9,128}, {9,129}, {9,130}, {9,131}, {9,132}, {9,133}, {9,134}, {9,135},
+ {9,136}, {9,137}, {9,138}, {9,139}, {9,140}, {9,141}, {9,142}, {9,143},
+ {9,144}, {9,145}, {53,134}, {9,146}, {9,147}, {9,148}, {9,149}, {9,150},
+ {9,151}, {9,152}, {53,135}, {9,153}, {9,154}, {9,155}, {53,136}, {9,156},
+ {9,157}, {9,158}, {53,137}, {9,159}, {9,160}, {9,161}, {9,162}, {9,163},
+ {9,164}, {9,165}, {53,138}, {53,139}, {9,166}, {53,140}, {9,167}, {9,168},
+ {9,169}, {9,170}, {9,171}, {9,172}, {9,173}, {9,174}, {53,141}, {9,175},
+ {9,176}, {9,177}, {9,178}, {9,179}, {9,180}, {9,181}, {9,182}, {9,183},
+ {9,184}, {9,185}, {9,186}, {9,187}, {9,188}, {9,189}, {9,190}, {10,1},
+ {10,2}, {10,3}, {10,4}, {10,5}, {10,6}, {10,7}, {10,8}, {10,9}, {10,10},
+ {10,11}, {53,142}, {53,143}, {10,12}, {10,13}, {53,144}, {10,14}, {10,15},
+ {10,16}, {53,145}, {10,17}, {10,18}, {10,19}, {10,20}, {10,21}, {10,22},
+ {10,23}, {53,146}, {53,147}, {10,24}, {53,148}, {10,25}, {53,149},
+ {10,26}, {10,33}, {10,34}, {10,35}, {10,36}, {10,37}, {53,150}, {10,38},
+ {10,39}, {10,40}, {10,41}, {10,42}, {10,43}, {10,44}, {10,45}, {10,46},
+ {10,47}, {10,48}, {10,49}, {10,50}, {10,51}, {10,52}, {10,53}, {10,54},
+ {10,55}, {10,56}, {53,151}, {10,57}, {10,58}, {10,65}, {10,66}, {10,67},
+ {10,68}, {10,69}, {53,152}, {10,70}, {10,71}, {10,72}, {10,73}, {10,74},
+ {10,75}, {10,76}, {10,77}, {10,78}, {10,79}, {10,80}, {10,81}, {10,82},
+ {10,83}, {10,84}, {10,85}, {10,86}, {10,87}, {10,88}, {10,89}, {53,153},
+ {10,90}, {10,91}, {10,92}, {10,93}, {10,94}, {10,95}, {53,154}, {10,96},
+ {10,97}, {10,98}, {53,155}, {10,99}, {10,100}, {10,101}, {53,156},
+ {10,102}, {10,103}, {10,104}, {10,105}, {10,106}, {10,107}, {10,108},
+ {10,109}, {53,157}, {10,110}, {53,158}, {10,111}, {53,159}, {10,112},
+ {10,113}, {10,114}, {10,115}, {10,116}, {10,117}, {53,160}, {10,118},
+ {10,119}, {10,120}, {53,161}, {10,121}, {10,122}, {10,123}, {53,162},
+ {10,124}, {10,125}, {10,126}, {10,127}, {10,128}, {10,129}, {10,130},
+ {53,163}, {10,131}, {10,132}, {10,133}, {10,134}, {53,164}, {10,135},
+ {10,136}, {10,137}, {10,138}, {10,139}, {10,140}, {53,165}, {53,166},
+ {10,141}, {10,142}, {53,167}, {10,143}, {10,144}, {53,168}, {53,169},
+ {10,145}, {53,170}, {10,146}, {10,147}, {10,148}, {10,149}, {10,150},
+ {53,171}, {53,172}, {10,151}, {53,173}, {10,152}, {53,174}, {10,153},
+ {10,154}, {10,155}, {10,156}, {10,157}, {10,158}, {53,175}, {10,159},
+ {10,160}, {10,161}, {10,162}, {10,163}, {10,164}, {10,165}, {10,166},
+ {10,167}, {10,168}, {10,169}, {10,170}, {10,171}, {10,172}, {10,173},
+ {10,174}, {10,175}, {10,176}, {10,177}, {10,178}, {10,179}, {10,180},
+ {10,181}, {10,182}, {10,183}, {10,184}, {10,185}, {53,176}, {53,177},
+ {10,186}, {10,187}, {53,178}, {10,188}, {10,189}, {53,179}, {53,180},
+ {10,190}, {11,1}, {11,2}, {11,3}, {11,4}, {11,5}, {11,6}, {53,181},
+ {53,182}, {11,7}, {53,183}, {53,184}, {53,185}, {53,186}, {11,8}, {11,9},
+ {11,10}, {11,11}, {11,12}, {53,187}, {53,188}, {11,13}, {11,14}, {53,189},
+ {11,15}, {11,16}, {11,17}, {53,190}, {11,18}, {11,19}, {11,20}, {11,21},
+ {11,22}, {11,23}, {11,24}, {54,97}, {54,98}, {11,25}, {54,99}, {54,100},
+ {54,101}, {11,26}, {11,33}, {11,34}, {11,35}, {11,36}, {54,102}, {54,103},
+ {54,104}, {11,37}, {11,38}, {54,105}, {11,39}, {11,40}, {11,41}, {54,106},
+ {11,42}, {11,43}, {11,44}, {11,45}, {11,46}, {11,47}, {11,48}, {54,107},
+ {54,108}, {11,49}, {54,109}, {54,110}, {54,111}, {11,50}, {11,51},
+ {11,52}, {11,53}, {11,54}, {11,55}, {11,56}, {11,57}, {11,58}, {11,65},
+ {11,66}, {11,67}, {11,68}, {11,69}, {11,70}, {11,71}, {11,72}, {11,73},
+ {11,74}, {11,75}, {11,76}, {11,77}, {11,78}, {11,79}, {11,80}, {11,81},
+ {11,82}, {11,83}, {11,84}, {11,85}, {11,86}, {11,87}, {11,88}, {11,89},
+ {11,90}, {11,91}, {11,92}, {11,93}, {11,94}, {11,95}, {11,96}, {11,97},
+ {11,98}, {11,99}, {11,100}, {11,101}, {11,102}, {11,103}, {11,104},
+ {11,105}, {11,106}, {11,107}, {11,108}, {11,109}, {11,110}, {11,111},
+ {11,112}, {11,113}, {11,114}, {11,115}, {11,116}, {11,117}, {54,112},
+ {54,113}, {11,118}, {11,119}, {54,114}, {11,120}, {11,121}, {11,122},
+ {54,115}, {11,123}, {54,116}, {54,117}, {11,124}, {11,125}, {11,126},
+ {11,127}, {54,118}, {54,119}, {11,128}, {54,120}, {54,121}, {54,122},
+ {11,129}, {11,130}, {11,131}, {11,132}, {11,133}, {54,123}, {54,124},
+ {54,125}, {11,134}, {11,135}, {54,126}, {11,136}, {11,137}, {11,138},
+ {54,127}, {11,139}, {11,140}, {11,141}, {11,142}, {11,143}, {11,144},
+ {11,145}, {54,128}, {54,129}, {11,146}, {54,130}, {54,131}, {54,132},
+ {11,147}, {11,148}, {11,149}, {11,150}, {11,151}, {11,152}, {54,133},
+ {11,153}, {11,154}, {11,155}, {11,156}, {11,157}, {11,158}, {11,159},
+ {11,160}, {11,161}, {11,162}, {11,163}, {11,164}, {11,165}, {11,166},
+ {11,167}, {11,168}, {11,169}, {11,170}, {11,171}, {54,134}, {11,172},
+ {11,173}, {11,174}, {11,175}, {11,176}, {11,177}, {11,178}, {11,179},
+ {11,180}, {11,181}, {11,182}, {11,183}, {11,184}, {11,185}, {11,186},
+ {11,187}, {11,188}, {11,189}, {11,190}, {12,1}, {12,2}, {12,3}, {12,4},
+ {12,5}, {12,6}, {12,7}, {12,8}, {12,9}, {12,10}, {12,11}, {12,12},
+ {12,13}, {12,14}, {12,15}, {12,16}, {54,135}, {54,136}, {12,17}, {12,18},
+ {54,137}, {12,19}, {12,20}, {12,21}, {54,138}, {12,22}, {12,23}, {12,24},
+ {12,25}, {12,26}, {12,33}, {12,34}, {12,35}, {12,36}, {12,37}, {12,38},
+ {12,39}, {54,139}, {12,40}, {12,41}, {12,42}, {12,43}, {12,44}, {12,45},
+ {54,140}, {12,46}, {12,47}, {12,48}, {12,49}, {12,50}, {12,51}, {12,52},
+ {54,141}, {12,53}, {12,54}, {12,55}, {12,56}, {12,57}, {12,58}, {12,65},
+ {12,66}, {12,67}, {12,68}, {12,69}, {12,70}, {12,71}, {12,72}, {12,73},
+ {12,74}, {12,75}, {12,76}, {12,77}, {54,142}, {12,78}, {12,79}, {12,80},
+ {12,81}, {12,82}, {12,83}, {12,84}, {12,85}, {12,86}, {12,87}, {12,88},
+ {12,89}, {12,90}, {12,91}, {12,92}, {12,93}, {12,94}, {12,95}, {12,96},
+ {12,97}, {12,98}, {12,99}, {12,100}, {12,101}, {12,102}, {12,103},
+ {12,104}, {54,143}, {12,105}, {12,106}, {12,107}, {54,144}, {12,108},
+ {12,109}, {12,110}, {12,111}, {12,112}, {12,113}, {12,114}, {12,115},
+ {12,116}, {12,117}, {12,118}, {12,119}, {12,120}, {12,121}, {12,122},
+ {12,123}, {12,124}, {12,125}, {12,126}, {12,127}, {12,128}, {12,129},
+ {12,130}, {12,131}, {12,132}, {12,133}, {12,134}, {12,135}, {12,136},
+ {12,137}, {12,138}, {12,139}, {12,140}, {12,141}, {12,142}, {12,143},
+ {12,144}, {12,145}, {12,146}, {12,147}, {12,148}, {12,149}, {12,150},
+ {12,151}, {12,152}, {12,153}, {12,154}, {12,155}, {12,156}, {12,157},
+ {12,158}, {54,145}, {54,146}, {12,159}, {12,160}, {54,147}, {12,161},
+ {12,162}, {12,163}, {54,148}, {12,164}, {12,165}, {12,166}, {12,167},
+ {12,168}, {12,169}, {54,149}, {54,150}, {12,170}, {12,171}, {12,172},
+ {12,173}, {54,151}, {12,174}, {12,175}, {12,176}, {12,177}, {12,178},
+ {12,179}, {12,180}, {12,181}, {12,182}, {12,183}, {12,184}, {12,185},
+ {12,186}, {12,187}, {12,188}, {12,189}, {12,190}, {13,1}, {13,2}, {13,3},
+ {13,4}, {13,5}, {13,6}, {13,7}, {13,8}, {13,9}, {13,10}, {13,11}, {13,12},
+ {13,13}, {13,14}, {13,15}, {13,16}, {13,17}, {54,152}, {13,18}, {13,19},
+ {13,20}, {13,21}, {13,22}, {13,23}, {13,24}, {13,25}, {13,26}, {13,33},
+ {13,34}, {13,35}, {13,36}, {13,37}, {13,38}, {13,39}, {13,40}, {13,41},
+ {13,42}, {13,43}, {13,44}, {13,45}, {13,46}, {13,47}, {13,48}, {13,49},
+ {13,50}, {54,153}, {13,51}, {13,52}, {13,53}, {54,154}, {13,54}, {13,55},
+ {13,56}, {54,155}, {13,57}, {13,58}, {13,65}, {13,66}, {13,67}, {13,68},
+ {13,69}, {54,156}, {54,157}, {13,70}, {13,71}, {13,72}, {54,158}, {13,73},
+ {13,74}, {13,75}, {13,76}, {13,77}, {13,78}, {13,79}, {13,80}, {13,81},
+ {13,82}, {13,83}, {13,84}, {13,85}, {13,86}, {13,87}, {13,88}, {13,89},
+ {13,90}, {13,91}, {13,92}, {13,93}, {13,94}, {13,95}, {13,96}, {13,97},
+ {13,98}, {13,99}, {13,100}, {13,101}, {13,102}, {13,103}, {13,104},
+ {13,105}, {13,106}, {54,159}, {54,160}, {13,107}, {13,108}, {54,161},
+ {13,109}, {13,110}, {54,162}, {54,163}, {13,111}, {13,112}, {13,113},
+ {13,114}, {13,115}, {13,116}, {13,117}, {54,164}, {54,165}, {13,118},
+ {54,166}, {13,119}, {13,120}, {13,121}, {13,122}, {13,123}, {13,124},
+ {13,125}, {13,126}, {54,167}, {13,127}, {13,128}, {13,129}, {54,168},
+ {13,130}, {13,131}, {13,132}, {54,169}, {13,133}, {13,134}, {13,135},
+ {13,136}, {13,137}, {13,138}, {13,139}, {54,170}, {54,171}, {13,140},
+ {13,141}, {13,142}, {13,143}, {13,144}, {13,145}, {13,146}, {13,147},
+ {13,148}, {13,149}, {54,172}, {13,150}, {13,151}, {13,152}, {54,173},
+ {13,153}, {13,154}, {13,155}, {54,174}, {13,156}, {13,157}, {13,158},
+ {13,159}, {13,160}, {13,161}, {13,162}, {54,175}, {54,176}, {13,163},
+ {54,177}, {13,164}, {54,178}, {13,165}, {13,166}, {13,167}, {13,168},
+ {13,169}, {13,170}, {54,179}, {54,180}, {13,171}, {13,172}, {54,181},
+ {13,173}, {13,174}, {13,175}, {54,182}, {13,176}, {13,177}, {13,178},
+ {13,179}, {13,180}, {13,181}, {13,182}, {54,183}, {54,184}, {13,183},
+ {54,185}, {54,186}, {54,187}, {54,188}, {13,184}, {13,185}, {13,186},
+ {54,189}, {54,190}, {55,97}, {55,98}, {13,187}, {13,188}, {55,99},
+ {13,189}, {13,190}, {14,1}, {55,100}, {14,2}, {14,3}, {14,4}, {14,5},
+ {14,6}, {14,7}, {14,8}, {55,101}, {55,102}, {14,9}, {55,103}, {55,104},
+ {55,105}, {14,10}, {14,11}, {14,12}, {14,13}, {14,14}, {14,15}, {55,106},
+ {55,107}, {14,16}, {14,17}, {55,108}, {14,18}, {14,19}, {14,20}, {14,21},
+ {14,22}, {14,23}, {14,24}, {14,25}, {14,26}, {14,33}, {14,34}, {14,35},
+ {14,36}, {14,37}, {55,109}, {14,38}, {55,110}, {14,39}, {14,40}, {14,41},
+ {14,42}, {14,43}, {14,44}, {14,45}, {14,46}, {14,47}, {14,48}, {14,49},
+ {14,50}, {14,51}, {14,52}, {14,53}, {14,54}, {14,55}, {14,56}, {14,57},
+ {14,58}, {14,65}, {14,66}, {14,67}, {14,68}, {14,69}, {14,70}, {14,71},
+ {14,72}, {14,73}, {14,74}, {14,75}, {14,76}, {14,77}, {14,78}, {55,111},
+ {55,112}, {14,79}, {14,80}, {55,113}, {14,81}, {14,82}, {14,83}, {55,114},
+ {14,84}, {14,85}, {14,86}, {14,87}, {14,88}, {14,89}, {14,90}, {55,115},
+ {55,116}, {14,91}, {55,117}, {55,118}, {55,119}, {14,92}, {14,93},
+ {14,94}, {14,95}, {14,96}, {55,120}, {55,121}, {55,122}, {14,97}, {14,98},
+ {55,123}, {14,99}, {14,100}, {14,101}, {55,124}, {14,102}, {14,103},
+ {14,104}, {14,105}, {14,106}, {14,107}, {14,108}, {55,125}, {55,126},
+ {14,109}, {55,127}, {14,110}, {55,128}, {14,111}, {14,112}, {14,113},
+ {14,114}, {14,115}, {14,116}, {55,129}, {55,130}, {14,117}, {14,118},
+ {55,131}, {14,119}, {14,120}, {14,121}, {55,132}, {14,122}, {14,123},
+ {14,124}, {14,125}, {14,126}, {14,127}, {14,128}, {55,133}, {55,134},
+ {14,129}, {55,135}, {55,136}, {55,137}, {14,130}, {14,131}, {14,132},
+ {14,133}, {14,134}, {14,135}, {55,138}, {14,136}, {14,137}, {14,138},
+ {55,139}, {14,139}, {14,140}, {14,141}, {14,142}, {14,143}, {14,144},
+ {14,145}, {14,146}, {14,147}, {14,148}, {14,149}, {14,150}, {55,140},
+ {14,151}, {55,141}, {14,152}, {14,153}, {14,154}, {14,155}, {14,156},
+ {14,157}, {14,158}, {14,159}, {55,142}, {55,143}, {14,160}, {14,161},
+ {55,144}, {14,162}, {14,163}, {14,164}, {55,145}, {14,165}, {14,166},
+ {14,167}, {14,168}, {14,169}, {14,170}, {14,171}, {55,146}, {55,147},
+ {14,172}, {55,148}, {14,173}, {55,149}, {14,174}, {14,175}, {14,176},
+ {14,177}, {14,178}, {14,179}, {55,150}, {14,180}, {14,181}, {14,182},
+ {55,151}, {14,183}, {14,184}, {14,185}, {14,186}, {14,187}, {14,188},
+ {14,189}, {14,190}, {15,1}, {15,2}, {15,3}, {15,4}, {15,5}, {15,6},
+ {15,7}, {15,8}, {55,152}, {15,9}, {15,10}, {15,11}, {15,12}, {15,13},
+ {15,14}, {15,15}, {15,16}, {15,17}, {15,18}, {15,19}, {15,20}, {15,21},
+ {15,22}, {15,23}, {15,24}, {15,25}, {15,26}, {15,33}, {15,34}, {15,35},
+ {15,36}, {15,37}, {15,38}, {15,39}, {15,40}, {55,153}, {15,41}, {15,42},
+ {15,43}, {15,44}, {15,45}, {15,46}, {15,47}, {55,154}, {15,48}, {15,49},
+ {15,50}, {55,155}, {15,51}, {15,52}, {15,53}, {55,156}, {15,54}, {15,55},
+ {15,56}, {15,57}, {15,58}, {15,65}, {15,66}, {55,157}, {55,158}, {15,67},
+ {55,159}, {15,68}, {55,160}, {15,69}, {15,70}, {15,71}, {15,72}, {15,73},
+ {15,74}, {55,161}, {15,75}, {15,76}, {15,77}, {55,162}, {15,78}, {15,79},
+ {15,80}, {55,163}, {15,81}, {15,82}, {15,83}, {15,84}, {15,85}, {15,86},
+ {15,87}, {15,88}, {55,164}, {15,89}, {55,165}, {15,90}, {55,166}, {15,91},
+ {15,92}, {15,93}, {15,94}, {15,95}, {15,96}, {55,167}, {55,168}, {15,97},
+ {15,98}, {55,169}, {15,99}, {15,100}, {15,101}, {55,170}, {15,102},
+ {15,103}, {15,104}, {15,105}, {15,106}, {15,107}, {15,108}, {55,171},
+ {55,172}, {15,109}, {55,173}, {15,110}, {55,174}, {15,111}, {15,112},
+ {15,113}, {15,114}, {15,115}, {15,116}, {55,175}, {15,117}, {15,118},
+ {15,119}, {15,120}, {15,121}, {15,122}, {15,123}, {15,124}, {15,125},
+ {15,126}, {15,127}, {15,128}, {15,129}, {15,130}, {15,131}, {15,132},
+ {15,133}, {15,134}, {15,135}, {55,176}, {15,136}, {15,137}, {15,138},
+ {15,139}, {15,140}, {15,141}, {15,142}, {55,177}, {15,143}, {15,144},
+ {15,145}, {15,146}, {15,147}, {15,148}, {15,149}, {15,150}, {15,151},
+ {15,152}, {15,153}, {15,154}, {15,155}, {15,156}, {15,157}, {15,158},
+ {15,159}, {15,160}, {15,161}, {15,162}, {15,163}, {15,164}, {15,165},
+ {15,166}, {15,167}, {15,168}, {15,169}, {55,178}, {55,179}, {15,170},
+ {15,171}, {55,180}, {15,172}, {15,173}, {15,174}, {55,181}, {15,175},
+ {15,176}, {15,177}, {15,178}, {15,179}, {15,180}, {15,181}, {55,182},
+ {15,182}, {15,183}, {55,183}, {15,184}, {55,184}, {15,185}, {15,186},
+ {15,187}, {15,188}, {15,189}, {15,190}, {55,185}, {55,186}, {16,1},
+ {16,2}, {55,187}, {16,3}, {16,4}, {16,5}, {55,188}, {16,6}, {16,7},
+ {16,8}, {16,9}, {16,10}, {16,11}, {16,12}, {55,189}, {55,190}, {16,13},
+ {56,97}, {16,14}, {56,98}, {16,15}, {16,16}, {16,17}, {16,18}, {16,19},
+ {16,20}, {56,99}, {56,100}, {16,21}, {16,22}, {56,101}, {16,23}, {16,24},
+ {16,25}, {56,102}, {16,26}, {16,33}, {16,34}, {16,35}, {16,36}, {16,37},
+ {16,38}, {56,103}, {56,104}, {16,39}, {56,105}, {16,40}, {56,106},
+ {56,107}, {16,41}, {16,42}, {56,108}, {56,109}, {16,43}, {16,44}, {16,45},
+ {16,46}, {16,47}, {16,48}, {16,49}, {16,50}, {16,51}, {16,52}, {16,53},
+ {16,54}, {16,55}, {16,56}, {16,57}, {16,58}, {16,65}, {16,66}, {16,67},
+ {16,68}, {16,69}, {16,70}, {16,71}, {16,72}, {16,73}, {16,74}, {16,75},
+ {16,76}, {16,77}, {56,110}, {56,111}, {16,78}, {16,79}, {56,112}, {16,80},
+ {16,81}, {16,82}, {56,113}, {16,83}, {16,84}, {16,85}, {16,86}, {16,87},
+ {16,88}, {16,89}, {56,114}, {56,115}, {16,90}, {56,116}, {16,91}, {56,117},
+ {16,92}, {16,93}, {16,94}, {16,95}, {16,96}, {16,97}, {56,118}, {56,119},
+ {16,98}, {16,99}, {56,120}, {16,100}, {56,121}, {56,122}, {56,123},
+ {56,124}, {56,125}, {16,101}, {16,102}, {16,103}, {16,104}, {16,105},
+ {56,126}, {56,127}, {16,106}, {56,128}, {16,107}, {56,129}, {56,130},
+ {16,108}, {16,109}, {56,131}, {16,110}, {56,132}, {56,133}, {56,134},
+ {16,111}, {16,112}, {56,135}, {16,113}, {16,114}, {16,115}, {56,136},
+ {16,116}, {16,117}, {16,118}, {16,119}, {16,120}, {16,121}, {16,122},
+ {56,137}, {56,138}, {16,123}, {56,139}, {56,140}, {56,141}, {56,142},
+ {16,124}, {16,125}, {16,126}, {16,127}, {16,128}, {56,143}, {56,144},
+ {16,129}, {16,130}, {16,131}, {16,132}, {16,133}, {16,134}, {56,145},
+ {16,135}, {16,136}, {16,137}, {16,138}, {16,139}, {16,140}, {16,141},
+ {16,142}, {16,143}, {16,144}, {16,145}, {16,146}, {56,146}, {16,147},
+ {16,148}, {16,149}, {16,150}, {16,151}, {16,152}, {16,153}, {16,154},
+ {16,155}, {16,156}, {16,157}, {16,158}, {16,159}, {16,160}, {16,161},
+ {16,162}, {16,163}, {16,164}, {16,165}, {16,166}, {16,167}, {16,168},
+ {16,169}, {16,170}, {16,171}, {16,172}, {16,173}, {16,174}, {16,175},
+ {16,176}, {16,177}, {16,178}, {16,179}, {16,180}, {56,147}, {56,148},
+ {16,181}, {16,182}, {56,149}, {16,183}, {16,184}, {16,185}, {56,150},
+ {16,186}, {56,151}, {16,187}, {16,188}, {16,189}, {16,190}, {17,1},
+ {56,152}, {56,153}, {17,2}, {56,154}, {17,3}, {56,155}, {56,156}, {17,4},
+ {17,5}, {17,6}, {17,7}, {56,157}, {56,158}, {56,159}, {17,8}, {17,9},
+ {56,160}, {17,10}, {17,11}, {17,12}, {56,161}, {17,13}, {17,14}, {17,15},
+ {17,16}, {17,17}, {17,18}, {17,19}, {56,162}, {56,163}, {17,20}, {56,164},
+ {56,165}, {56,166}, {17,21}, {17,22}, {17,23}, {17,24}, {17,25}, {17,26},
+ {56,167}, {56,168}, {17,33}, {17,34}, {56,169}, {17,35}, {17,36}, {17,37},
+ {56,170}, {17,38}, {17,39}, {17,40}, {17,41}, {17,42}, {17,43}, {17,44},
+ {17,45}, {17,46}, {17,47}, {56,171}, {56,172}, {56,173}, {17,48}, {56,174},
+ {17,49}, {17,50}, {17,51}, {17,52}, {56,175}, {17,53}, {17,54}, {17,55},
+ {17,56}, {17,57}, {17,58}, {17,65}, {17,66}, {17,67}, {17,68}, {17,69},
+ {17,70}, {17,71}, {17,72}, {17,73}, {17,74}, {17,75}, {17,76}, {17,77},
+ {17,78}, {17,79}, {17,80}, {17,81}, {17,82}, {17,83}, {17,84}, {17,85},
+ {56,176}, {56,177}, {17,86}, {56,178}, {56,179}, {17,87}, {17,88},
+ {17,89}, {56,180}, {17,90}, {56,181}, {17,91}, {17,92}, {17,93}, {17,94},
+ {17,95}, {56,182}, {56,183}, {17,96}, {56,184}, {17,97}, {56,185},
+ {17,98}, {17,99}, {17,100}, {17,101}, {17,102}, {17,103}, {56,186},
+ {17,104}, {17,105}, {17,106}, {56,187}, {17,107}, {17,108}, {17,109},
+ {17,110}, {17,111}, {17,112}, {17,113}, {17,114}, {17,115}, {17,116},
+ {17,117}, {17,118}, {17,119}, {17,120}, {17,121}, {56,188}, {56,189},
+ {17,122}, {17,123}, {17,124}, {17,125}, {17,126}, {17,127}, {17,128},
+ {17,129}, {17,130}, {17,131}, {17,132}, {17,133}, {17,134}, {17,135},
+ {17,136}, {17,137}, {17,138}, {17,139}, {17,140}, {17,141}, {17,142},
+ {17,143}, {17,144}, {17,145}, {17,146}, {17,147}, {17,148}, {17,149},
+ {17,150}, {17,151}, {17,152}, {17,153}, {17,154}, {17,155}, {56,190},
+ {17,156}, {17,157}, {17,158}, {57,97}, {17,159}, {17,160}, {17,161},
+ {57,98}, {17,162}, {17,163}, {17,164}, {17,165}, {17,166}, {17,167},
+ {17,168}, {17,169}, {57,99}, {17,170}, {57,100}, {17,171}, {57,101},
+ {17,172}, {17,173}, {17,174}, {17,175}, {17,176}, {17,177}, {57,102},
+ {17,178}, {17,179}, {17,180}, {57,103}, {17,181}, {17,182}, {17,183},
+ {57,104}, {17,184}, {17,185}, {17,186}, {17,187}, {17,188}, {17,189},
+ {17,190}, {18,1}, {57,105}, {18,2}, {57,106}, {18,3}, {18,4}, {18,5},
+ {18,6}, {18,7}, {18,8}, {18,9}, {18,10}, {57,107}, {57,108}, {57,109},
+ {18,11}, {57,110}, {18,12}, {18,13}, {57,111}, {57,112}, {57,113},
+ {57,114}, {18,14}, {18,15}, {18,16}, {18,17}, {18,18}, {57,115}, {57,116},
+ {18,19}, {57,117}, {18,20}, {57,118}, {18,21}, {18,22}, {18,23}, {57,119},
+ {18,24}, {57,120}, {57,121}, {18,25}, {18,26}, {18,33}, {57,122}, {18,34},
+ {18,35}, {18,36}, {57,123}, {18,37}, {18,38}, {18,39}, {18,40}, {18,41},
+ {18,42}, {18,43}, {18,44}, {57,124}, {18,45}, {57,125}, {18,46}, {18,47},
+ {18,48}, {18,49}, {18,50}, {18,51}, {18,52}, {18,53}, {57,126}, {18,54},
+ {18,55}, {18,56}, {18,57}, {18,58}, {18,65}, {18,66}, {18,67}, {18,68},
+ {18,69}, {18,70}, {18,71}, {18,72}, {18,73}, {18,74}, {18,75}, {18,76},
+ {18,77}, {18,78}, {18,79}, {18,80}, {18,81}, {18,82}, {18,83}, {18,84},
+ {18,85}, {18,86}, {57,127}, {18,87}, {18,88}, {18,89}, {57,128}, {18,90},
+ {18,91}, {18,92}, {57,129}, {18,93}, {18,94}, {18,95}, {18,96}, {18,97},
+ {18,98}, {18,99}, {18,100}, {18,101}, {18,102}, {18,103}, {18,104},
+ {18,105}, {18,106}, {18,107}, {18,108}, {18,109}, {18,110}, {18,111},
+ {57,130}, {18,112}, {18,113}, {18,114}, {57,131}, {18,115}, {18,116},
+ {18,117}, {57,132}, {18,118}, {18,119}, {18,120}, {18,121}, {18,122},
+ {18,123}, {18,124}, {57,133}, {18,125}, {18,126}, {57,134}, {18,127},
+ {18,128}, {18,129}, {18,130}, {18,131}, {18,132}, {18,133}, {18,134},
+ {57,135}, {18,135}, {18,136}, {18,137}, {57,136}, {18,138}, {18,139},
+ {18,140}, {57,137}, {18,141}, {18,142}, {18,143}, {18,144}, {18,145},
+ {18,146}, {18,147}, {57,138}, {18,148}, {18,149}, {57,139}, {18,150},
+ {18,151}, {18,152}, {18,153}, {18,154}, {18,155}, {18,156}, {18,157},
+ {18,158}, {18,159}, {18,160}, {18,161}, {18,162}, {18,163}, {18,164},
+ {18,165}, {18,166}, {18,167}, {18,168}, {18,169}, {18,170}, {18,171},
+ {18,172}, {18,173}, {18,174}, {18,175}, {18,176}, {18,177}, {18,178},
+ {18,179}, {18,180}, {18,181}, {18,182}, {18,183}, {18,184}, {18,185},
+ {57,140}, {57,141}, {18,186}, {18,187}, {57,142}, {18,188}, {18,189},
+ {57,143}, {57,144}, {18,190}, {57,145}, {19,1}, {19,2}, {19,3}, {19,4},
+ {19,5}, {57,146}, {57,147}, {19,6}, {57,148}, {57,149}, {57,150}, {19,7},
+ {57,151}, {19,8}, {57,152}, {19,9}, {19,10}, {57,153}, {57,154}, {57,155},
+ {57,156}, {57,157}, {19,11}, {19,12}, {57,158}, {57,159}, {57,160},
+ {57,161}, {57,162}, {19,13}, {19,14}, {19,15}, {19,16}, {57,163}, {57,164},
+ {19,17}, {57,165}, {19,18}, {57,166}, {19,19}, {19,20}, {19,21}, {57,167},
+ {19,22}, {19,23}, {57,168}, {57,169}, {19,24}, {19,25}, {57,170}, {19,26},
+ {19,33}, {19,34}, {57,171}, {19,35}, {19,36}, {19,37}, {19,38}, {19,39},
+ {19,40}, {19,41}, {57,172}, {57,173}, {19,42}, {57,174}, {57,175},
+ {57,176}, {19,43}, {19,44}, {19,45}, {57,177}, {19,46}, {19,47}, {57,178},
+ {57,179}, {19,48}, {19,49}, {57,180}, {19,50}, {19,51}, {19,52}, {19,53},
+ {19,54}, {19,55}, {19,56}, {19,57}, {19,58}, {19,65}, {19,66}, {19,67},
+ {57,181}, {19,68}, {19,69}, {19,70}, {19,71}, {19,72}, {19,73}, {19,74},
+ {19,75}, {19,76}, {19,77}, {19,78}, {19,79}, {19,80}, {19,81}, {19,82},
+ {19,83}, {19,84}, {19,85}, {19,86}, {19,87}, {19,88}, {19,89}, {19,90},
+ {19,91}, {19,92}, {19,93}, {19,94}, {19,95}, {19,96}, {19,97}, {19,98},
+ {19,99}, {19,100}, {19,101}, {19,102}, {19,103}, {19,104}, {19,105},
+ {57,182}, {57,183}, {19,106}, {19,107}, {57,184}, {19,108}, {19,109},
+ {57,185}, {57,186}, {19,110}, {57,187}, {19,111}, {19,112}, {19,113},
+ {19,114}, {19,115}, {57,188}, {57,189}, {19,116}, {57,190}, {19,117},
+ {58,97}, {58,98}, {19,118}, {19,119}, {19,120}, {19,121}, {19,122},
+ {58,99}, {58,100}, {19,123}, {19,124}, {58,101}, {19,125}, {19,126},
+ {58,102}, {58,103}, {19,127}, {19,128}, {19,129}, {19,130}, {19,131},
+ {19,132}, {19,133}, {58,104}, {58,105}, {19,134}, {58,106}, {58,107},
+ {58,108}, {19,135}, {19,136}, {19,137}, {19,138}, {19,139}, {19,140},
+ {58,109}, {58,110}, {19,141}, {19,142}, {58,111}, {19,143}, {19,144},
+ {19,145}, {58,112}, {19,146}, {19,147}, {19,148}, {19,149}, {19,150},
+ {19,151}, {19,152}, {19,153}, {58,113}, {19,154}, {58,114}, {58,115},
+ {58,116}, {19,155}, {19,156}, {19,157}, {58,117}, {19,158}, {19,159},
+ {58,118}, {19,160}, {19,161}, {19,162}, {58,119}, {19,163}, {19,164},
+ {19,165}, {19,166}, {19,167}, {19,168}, {19,169}, {19,170}, {19,171},
+ {19,172}, {19,173}, {19,174}, {19,175}, {19,176}, {19,177}, {19,178},
+ {19,179}, {19,180}, {19,181}, {19,182}, {19,183}, {19,184}, {19,185},
+ {58,120}, {58,121}, {58,122}, {19,186}, {58,123}, {19,187}, {19,188},
+ {19,189}, {58,124}, {19,190}, {20,1}, {20,2}, {20,3}, {20,4}, {20,5},
+ {20,6}, {58,125}, {58,126}, {20,7}, {58,127}, {20,8}, {58,128}, {20,9},
+ {20,10}, {20,11}, {20,12}, {20,13}, {20,14}, {58,129}, {20,15}, {20,16},
+ {20,17}, {58,130}, {20,18}, {20,19}, {20,20}, {20,21}, {20,22}, {20,23},
+ {20,24}, {20,25}, {20,26}, {20,33}, {20,34}, {20,35}, {20,36}, {20,37},
+ {20,38}, {58,131}, {20,39}, {20,40}, {20,41}, {20,42}, {20,43}, {20,44},
+ {20,45}, {58,132}, {20,46}, {20,47}, {20,48}, {20,49}, {20,50}, {20,51},
+ {20,52}, {20,53}, {20,54}, {20,55}, {20,56}, {20,57}, {20,58}, {20,65},
+ {20,66}, {20,67}, {20,68}, {20,69}, {20,70}, {58,133}, {20,71}, {20,72},
+ {20,73}, {20,74}, {20,75}, {20,76}, {20,77}, {58,134}, {58,135}, {20,78},
+ {20,79}, {58,136}, {20,80}, {20,81}, {20,82}, {58,137}, {20,83}, {20,84},
+ {20,85}, {20,86}, {20,87}, {20,88}, {20,89}, {58,138}, {58,139}, {20,90},
+ {20,91}, {20,92}, {20,93}, {20,94}, {20,95}, {20,96}, {20,97}, {20,98},
+ {20,99}, {58,140}, {20,100}, {20,101}, {20,102}, {58,141}, {20,103},
+ {20,104}, {20,105}, {20,106}, {20,107}, {20,108}, {20,109}, {20,110},
+ {20,111}, {20,112}, {20,113}, {20,114}, {20,115}, {20,116}, {20,117},
+ {20,118}, {20,119}, {20,120}, {20,121}, {20,122}, {20,123}, {20,124},
+ {20,125}, {58,142}, {58,143}, {20,126}, {20,127}, {58,144}, {20,128},
+ {20,129}, {58,145}, {58,146}, {58,147}, {58,148}, {20,130}, {20,131},
+ {20,132}, {20,133}, {20,134}, {58,149}, {58,150}, {20,135}, {58,151},
+ {20,136}, {58,152}, {20,137}, {20,138}, {20,139}, {58,153}, {58,154},
+ {20,140}, {58,155}, {20,141}, {20,142}, {20,143}, {20,144}, {20,145},
+ {20,146}, {20,147}, {58,156}, {20,148}, {20,149}, {20,150}, {20,151},
+ {20,152}, {20,153}, {20,154}, {20,155}, {20,156}, {20,157}, {20,158},
+ {58,157}, {20,159}, {20,160}, {20,161}, {20,162}, {20,163}, {20,164},
+ {20,165}, {58,158}, {20,166}, {20,167}, {20,168}, {20,169}, {20,170},
+ {20,171}, {20,172}, {20,173}, {20,174}, {20,175}, {20,176}, {20,177},
+ {20,178}, {20,179}, {20,180}, {20,181}, {20,182}, {20,183}, {20,184},
+ {20,185}, {20,186}, {20,187}, {20,188}, {20,189}, {20,190}, {21,1},
+ {21,2}, {58,159}, {58,160}, {21,3}, {21,4}, {58,161}, {21,5}, {21,6},
+ {21,7}, {58,162}, {21,8}, {21,9}, {21,10}, {21,11}, {21,12}, {21,13},
+ {21,14}, {21,15}, {21,16}, {21,17}, {21,18}, {21,19}, {58,163}, {21,20},
+ {21,21}, {21,22}, {21,23}, {21,24}, {21,25}, {58,164}, {21,26}, {21,33},
+ {21,34}, {58,165}, {21,35}, {21,36}, {21,37}, {58,166}, {21,38}, {21,39},
+ {21,40}, {21,41}, {21,42}, {21,43}, {21,44}, {58,167}, {21,45}, {21,46},
+ {58,168}, {21,47}, {58,169}, {21,48}, {21,49}, {21,50}, {21,51}, {21,52},
+ {21,53}, {58,170}, {58,171}, {21,54}, {21,55}, {58,172}, {21,56}, {21,57},
+ {21,58}, {58,173}, {21,65}, {21,66}, {21,67}, {21,68}, {21,69}, {21,70},
+ {21,71}, {58,174}, {58,175}, {21,72}, {58,176}, {21,73}, {21,74}, {21,75},
+ {21,76}, {21,77}, {21,78}, {21,79}, {21,80}, {21,81}, {21,82}, {21,83},
+ {21,84}, {21,85}, {21,86}, {21,87}, {21,88}, {21,89}, {21,90}, {21,91},
+ {21,92}, {21,93}, {21,94}, {21,95}, {21,96}, {21,97}, {21,98}, {21,99},
+ {21,100}, {21,101}, {21,102}, {21,103}, {21,104}, {21,105}, {21,106},
+ {21,107}, {21,108}, {58,177}, {58,178}, {21,109}, {21,110}, {58,179},
+ {21,111}, {21,112}, {21,113}, {58,180}, {21,114}, {58,181}, {21,115},
+ {21,116}, {21,117}, {21,118}, {21,119}, {58,182}, {58,183}, {21,120},
+ {58,184}, {21,121}, {58,185}, {58,186}, {58,187}, {21,122}, {21,123},
+ {21,124}, {21,125}, {58,188}, {58,189}, {21,126}, {21,127}, {58,190},
+ {21,128}, {21,129}, {21,130}, {59,97}, {21,131}, {59,98}, {21,132},
+ {21,133}, {21,134}, {21,135}, {21,136}, {59,99}, {59,100}, {21,137},
+ {59,101}, {59,102}, {59,103}, {21,138}, {21,139}, {21,140}, {21,141},
+ {21,142}, {59,104}, {59,105}, {59,106}, {21,143}, {21,144}, {59,107},
+ {21,145}, {21,146}, {21,147}, {59,108}, {21,148}, {21,149}, {21,150},
+ {21,151}, {21,152}, {21,153}, {21,154}, {59,109}, {59,110}, {21,155},
+ {59,111}, {59,112}, {59,113}, {21,156}, {21,157}, {21,158}, {21,159},
+ {21,160}, {21,161}, {59,114}, {59,115}, {21,162}, {21,163}, {21,164},
+ {21,165}, {21,166}, {21,167}, {21,168}, {21,169}, {21,170}, {21,171},
+ {21,172}, {21,173}, {21,174}, {21,175}, {59,116}, {21,176}, {21,177},
+ {21,178}, {21,179}, {21,180}, {21,181}, {21,182}, {21,183}, {21,184},
+ {21,185}, {21,186}, {21,187}, {21,188}, {21,189}, {21,190}, {22,1},
+ {22,2}, {22,3}, {22,4}, {22,5}, {22,6}, {22,7}, {22,8}, {22,9}, {22,10},
+ {22,11}, {22,12}, {22,13}, {22,14}, {22,15}, {22,16}, {22,17}, {22,18},
+ {22,19}, {22,20}, {22,21}, {22,22}, {22,23}, {22,24}, {59,117}, {59,118},
+ {22,25}, {22,26}, {59,119}, {22,33}, {22,34}, {59,120}, {59,121}, {22,35},
+ {22,36}, {22,37}, {22,38}, {22,39}, {22,40}, {22,41}, {59,122}, {22,42},
+ {22,43}, {59,123}, {59,124}, {59,125}, {22,44}, {22,45}, {22,46}, {22,47},
+ {22,48}, {22,49}, {59,126}, {22,50}, {22,51}, {22,52}, {22,53}, {22,54},
+ {22,55}, {22,56}, {22,57}, {22,58}, {22,65}, {22,66}, {22,67}, {22,68},
+ {22,69}, {22,70}, {22,71}, {22,72}, {22,73}, {22,74}, {22,75}, {59,127},
+ {22,76}, {22,77}, {22,78}, {22,79}, {22,80}, {22,81}, {59,128}, {59,129},
+ {22,82}, {22,83}, {22,84}, {22,85}, {22,86}, {22,87}, {22,88}, {22,89},
+ {22,90}, {22,91}, {22,92}, {22,93}, {22,94}, {22,95}, {59,130}, {59,131},
+ {22,96}, {59,132}, {59,133}, {59,134}, {22,97}, {22,98}, {22,99}, {22,100},
+ {22,101}, {22,102}, {22,103}, {22,104}, {22,105}, {22,106}, {22,107},
+ {22,108}, {22,109}, {22,110}, {22,111}, {22,112}, {22,113}, {22,114},
+ {22,115}, {22,116}, {22,117}, {22,118}, {22,119}, {22,120}, {22,121},
+ {22,122}, {22,123}, {22,124}, {22,125}, {22,126}, {22,127}, {22,128},
+ {22,129}, {22,130}, {59,135}, {59,136}, {22,131}, {22,132}, {59,137},
+ {22,133}, {22,134}, {22,135}, {59,138}, {22,136}, {22,137}, {22,138},
+ {22,139}, {22,140}, {22,141}, {22,142}, {59,139}, {59,140}, {22,143},
+ {22,144}, {22,145}, {59,141}, {22,146}, {22,147}, {22,148}, {22,149},
+ {22,150}, {22,151}, {22,152}, {22,153}, {22,154}, {22,155}, {22,156},
+ {22,157}, {22,158}, {22,159}, {22,160}, {22,161}, {22,162}, {22,163},
+ {22,164}, {22,165}, {22,166}, {22,167}, {22,168}, {22,169}, {22,170},
+ {22,171}, {22,172}, {22,173}, {22,174}, {22,175}, {22,176}, {22,177},
+ {22,178}, {22,179}, {22,180}, {22,181}, {22,182}, {22,183}, {22,184},
+ {22,185}, {22,186}, {22,187}, {22,188}, {22,189}, {22,190}, {23,1},
+ {23,2}, {23,3}, {23,4}, {23,5}, {23,6}, {23,7}, {23,8}, {23,9}, {23,10},
+ {23,11}, {23,12}, {23,13}, {23,14}, {23,15}, {23,16}, {23,17}, {59,142},
+ {23,18}, {23,19}, {23,20}, {23,21}, {23,22}, {23,23}, {23,24}, {23,25},
+ {23,26}, {23,33}, {23,34}, {23,35}, {23,36}, {23,37}, {23,38}, {23,39},
+ {23,40}, {23,41}, {23,42}, {23,43}, {23,44}, {23,45}, {23,46}, {23,47},
+ {23,48}, {23,49}, {23,50}, {59,143}, {23,51}, {23,52}, {23,53}, {23,54},
+ {23,55}, {23,56}, {23,57}, {23,58}, {23,65}, {23,66}, {23,67}, {23,68},
+ {23,69}, {23,70}, {23,71}, {23,72}, {23,73}, {23,74}, {23,75}, {23,76},
+ {59,144}, {23,77}, {23,78}, {23,79}, {23,80}, {23,81}, {23,82}, {59,145},
+ {59,146}, {23,83}, {23,84}, {59,147}, {23,85}, {23,86}, {23,87}, {59,148},
+ {23,88}, {23,89}, {23,90}, {23,91}, {23,92}, {23,93}, {23,94}, {59,149},
+ {23,95}, {23,96}, {59,150}, {23,97}, {59,151}, {23,98}, {23,99}, {23,100},
+ {23,101}, {23,102}, {23,103}, {23,104}, {23,105}, {23,106}, {23,107},
+ {23,108}, {23,109}, {23,110}, {23,111}, {23,112}, {23,113}, {23,114},
+ {23,115}, {23,116}, {23,117}, {23,118}, {23,119}, {23,120}, {23,121},
+ {23,122}, {23,123}, {23,124}, {23,125}, {23,126}, {23,127}, {23,128},
+ {23,129}, {23,130}, {23,131}, {23,132}, {23,133}, {23,134}, {23,135},
+ {23,136}, {23,137}, {23,138}, {23,139}, {23,140}, {23,141}, {23,142},
+ {23,143}, {23,144}, {23,145}, {23,146}, {23,147}, {23,148}, {23,149},
+ {23,150}, {23,151}, {23,152}, {23,153}, {23,154}, {23,155}, {23,156},
+ {23,157}, {23,158}, {23,159}, {23,160}, {23,161}, {23,162}, {23,163},
+ {23,164}, {23,165}, {23,166}, {23,167}, {23,168}, {23,169}, {23,170},
+ {23,171}, {23,172}, {23,173}, {23,174}, {23,175}, {23,176}, {23,177},
+ {23,178}, {23,179}, {23,180}, {23,181}, {23,182}, {23,183}, {23,184},
+ {23,185}, {23,186}, {23,187}, {59,152}, {23,188}, {23,189}, {23,190},
+ {24,1}, {24,2}, {24,3}, {24,4}, {24,5}, {24,6}, {24,7}, {24,8}, {24,9},
+ {24,10}, {24,11}, {24,12}, {24,13}, {24,14}, {24,15}, {24,16}, {24,17},
+ {59,153}, {24,18}, {24,19}, {24,20}, {24,21}, {24,22}, {24,23}, {59,154},
+ {24,24}, {24,25}, {24,26}, {59,155}, {24,33}, {24,34}, {24,35}, {59,156},
+ {24,36}, {24,37}, {24,38}, {24,39}, {24,40}, {24,41}, {24,42}, {59,157},
+ {59,158}, {24,43}, {24,44}, {24,45}, {24,46}, {24,47}, {24,48}, {24,49},
+ {24,50}, {24,51}, {24,52}, {24,53}, {24,54}, {24,55}, {24,56}, {24,57},
+ {24,58}, {24,65}, {24,66}, {24,67}, {24,68}, {24,69}, {24,70}, {24,71},
+ {24,72}, {24,73}, {24,74}, {24,75}, {24,76}, {24,77}, {24,78}, {24,79},
+ {24,80}, {24,81}, {24,82}, {24,83}, {24,84}, {24,85}, {24,86}, {59,159},
+ {59,160}, {24,87}, {24,88}, {59,161}, {24,89}, {24,90}, {24,91}, {59,162},
+ {24,92}, {24,93}, {24,94}, {24,95}, {24,96}, {24,97}, {24,98}, {59,163},
+ {59,164}, {24,99}, {59,165}, {24,100}, {59,166}, {24,101}, {24,102},
+ {24,103}, {24,104}, {24,105}, {24,106}, {59,167}, {59,168}, {24,107},
+ {59,169}, {59,170}, {24,108}, {24,109}, {59,171}, {59,172}, {59,173},
+ {59,174}, {24,110}, {24,111}, {24,112}, {24,113}, {24,114}, {59,175},
+ {59,176}, {24,115}, {59,177}, {59,178}, {59,179}, {24,116}, {24,117},
+ {24,118}, {59,180}, {24,119}, {24,120}, {59,181}, {59,182}, {24,121},
+ {24,122}, {59,183}, {24,123}, {24,124}, {24,125}, {59,184}, {24,126},
+ {24,127}, {24,128}, {24,129}, {24,130}, {24,131}, {24,132}, {59,185},
+ {59,186}, {24,133}, {59,187}, {59,188}, {59,189}, {24,134}, {24,135},
+ {24,136}, {24,137}, {24,138}, {24,139}, {59,190}, {60,97}, {24,140},
+ {24,141}, {60,98}, {24,142}, {24,143}, {24,144}, {60,99}, {24,145},
+ {24,146}, {24,147}, {24,148}, {24,149}, {24,150}, {24,151}, {60,100},
+ {60,101}, {24,152}, {60,102}, {24,153}, {60,103}, {24,154}, {24,155},
+ {24,156}, {24,157}, {24,158}, {24,159}, {60,104}, {24,160}, {24,161},
+ {24,162}, {60,105}, {24,163}, {24,164}, {24,165}, {60,106}, {24,166},
+ {24,167}, {24,168}, {24,169}, {24,170}, {24,171}, {24,172}, {60,107},
+ {24,173}, {24,174}, {24,175}, {24,176}, {60,108}, {24,177}, {24,178},
+ {24,179}, {24,180}, {24,181}, {24,182}, {60,109}, {60,110}, {60,111},
+ {60,112}, {60,113}, {24,183}, {24,184}, {60,114}, {60,115}, {24,185},
+ {60,116}, {60,117}, {24,186}, {24,187}, {24,188}, {24,189}, {60,118},
+ {60,119}, {24,190}, {60,120}, {60,121}, {60,122}, {25,1}, {25,2}, {25,3},
+ {25,4}, {60,123}, {25,5}, {60,124}, {60,125}, {25,6}, {25,7}, {60,126},
+ {25,8}, {25,9}, {25,10}, {60,127}, {25,11}, {25,12}, {25,13}, {25,14},
+ {25,15}, {25,16}, {25,17}, {60,128}, {60,129}, {25,18}, {60,130}, {60,131},
+ {60,132}, {25,19}, {25,20}, {25,21}, {25,22}, {25,23}, {25,24}, {60,133},
+ {60,134}, {25,25}, {25,26}, {60,135}, {25,33}, {25,34}, {25,35}, {60,136},
+ {25,36}, {25,37}, {25,38}, {25,39}, {25,40}, {25,41}, {25,42}, {60,137},
+ {60,138}, {25,43}, {60,139}, {60,140}, {60,141}, {25,44}, {25,45},
+ {25,46}, {25,47}, {25,48}, {25,49}, {60,142}, {25,50}, {25,51}, {25,52},
+ {60,143}, {25,53}, {25,54}, {25,55}, {60,144}, {25,56}, {25,57}, {25,58},
+ {25,65}, {25,66}, {25,67}, {25,68}, {25,69}, {25,70}, {25,71}, {25,72},
+ {25,73}, {60,145}, {25,74}, {25,75}, {25,76}, {25,77}, {25,78}, {25,79},
+ {60,146}, {60,147}, {60,148}, {25,80}, {60,149}, {25,81}, {25,82},
+ {25,83}, {60,150}, {25,84}, {60,151}, {25,85}, {25,86}, {25,87}, {25,88},
+ {25,89}, {60,152}, {60,153}, {25,90}, {60,154}, {25,91}, {60,155},
+ {25,92}, {25,93}, {25,94}, {60,156}, {25,95}, {25,96}, {60,157}, {60,158},
+ {25,97}, {25,98}, {60,159}, {25,99}, {25,100}, {25,101}, {60,160},
+ {25,102}, {25,103}, {25,104}, {25,105}, {25,106}, {25,107}, {25,108},
+ {25,109}, {25,110}, {25,111}, {25,112}, {25,113}, {60,161}, {25,114},
+ {25,115}, {25,116}, {25,117}, {25,118}, {25,119}, {60,162}, {25,120},
+ {25,121}, {25,122}, {60,163}, {25,123}, {25,124}, {25,125}, {60,164},
+ {25,126}, {25,127}, {25,128}, {25,129}, {25,130}, {25,131}, {25,132},
+ {60,165}, {25,133}, {25,134}, {60,166}, {60,167}, {25,135}, {25,136},
+ {25,137}, {25,138}, {25,139}, {25,140}, {25,141}, {60,168}, {25,142},
+ {25,143}, {25,144}, {60,169}, {25,145}, {25,146}, {25,147}, {60,170},
+ {25,148}, {25,149}, {25,150}, {25,151}, {25,152}, {25,153}, {25,154},
+ {60,171}, {60,172}, {25,155}, {60,173}, {25,156}, {25,157}, {25,158},
+ {25,159}, {25,160}, {25,161}, {25,162}, {25,163}, {60,174}, {60,175},
+ {25,164}, {25,165}, {60,176}, {25,166}, {25,167}, {25,168}, {60,177},
+ {25,169}, {25,170}, {25,171}, {25,172}, {25,173}, {25,174}, {25,175},
+ {60,178}, {60,179}, {25,176}, {60,180}, {25,177}, {60,181}, {25,178},
+ {25,179}, {25,180}, {25,181}, {25,182}, {25,183}, {60,182}, {60,183},
+ {25,184}, {25,185}, {60,184}, {25,186}, {25,187}, {60,185}, {60,186},
+ {25,188}, {25,189}, {25,190}, {26,1}, {26,2}, {26,3}, {26,4}, {60,187},
+ {60,188}, {26,5}, {60,189}, {26,6}, {60,190}, {26,7}, {61,97}, {26,8},
+ {61,98}, {61,99}, {26,9}, {61,100}, {26,10}, {26,11}, {26,12}, {26,13},
+ {26,14}, {26,15}, {26,16}, {26,17}, {26,18}, {26,19}, {26,20}, {26,21},
+ {26,22}, {26,23}, {26,24}, {26,25}, {26,26}, {26,33}, {26,34}, {61,101},
+ {26,35}, {26,36}, {26,37}, {26,38}, {26,39}, {26,40}, {26,41}, {61,102},
+ {61,103}, {26,42}, {26,43}, {61,104}, {26,44}, {26,45}, {26,46}, {61,105},
+ {26,47}, {26,48}, {26,49}, {26,50}, {26,51}, {26,52}, {26,53}, {61,106},
+ {26,54}, {26,55}, {26,56}, {26,57}, {61,107}, {26,58}, {26,65}, {26,66},
+ {26,67}, {26,68}, {26,69}, {61,108}, {61,109}, {26,70}, {26,71}, {61,110},
+ {26,72}, {26,73}, {26,74}, {61,111}, {26,75}, {26,76}, {26,77}, {26,78},
+ {26,79}, {26,80}, {26,81}, {61,112}, {61,113}, {26,82}, {61,114}, {26,83},
+ {61,115}, {26,84}, {26,85}, {26,86}, {26,87}, {26,88}, {26,89}, {61,116},
+ {61,117}, {26,90}, {26,91}, {26,92}, {26,93}, {26,94}, {26,95}, {61,118},
+ {26,96}, {26,97}, {26,98}, {26,99}, {26,100}, {26,101}, {26,102}, {61,119},
+ {26,103}, {26,104}, {61,120}, {26,105}, {61,121}, {26,106}, {26,107},
+ {26,108}, {26,109}, {26,110}, {26,111}, {61,122}, {61,123}, {26,112},
+ {26,113}, {61,124}, {26,114}, {26,115}, {26,116}, {61,125}, {61,126},
+ {26,117}, {26,118}, {26,119}, {26,120}, {26,121}, {26,122}, {61,127},
+ {61,128}, {26,123}, {61,129}, {26,124}, {61,130}, {26,125}, {26,126},
+ {26,127}, {26,128}, {26,129}, {26,130}, {26,131}, {26,132}, {26,133},
+ {26,134}, {26,135}, {26,136}, {26,137}, {26,138}, {26,139}, {26,140},
+ {26,141}, {26,142}, {26,143}, {26,144}, {26,145}, {26,146}, {26,147},
+ {26,148}, {26,149}, {26,150}, {26,151}, {26,152}, {26,153}, {26,154},
+ {26,155}, {26,156}, {26,157}, {26,158}, {61,131}, {61,132}, {26,159},
+ {26,160}, {61,133}, {26,161}, {26,162}, {61,134}, {61,135}, {26,163},
+ {26,164}, {26,165}, {26,166}, {26,167}, {26,168}, {61,136}, {61,137},
+ {61,138}, {26,169}, {61,139}, {26,170}, {61,140}, {26,171}, {26,172},
+ {26,173}, {26,174}, {61,141}, {26,175}, {61,142}, {61,143}, {26,176},
+ {61,144}, {61,145}, {26,177}, {26,178}, {26,179}, {61,146}, {26,180},
+ {26,181}, {26,182}, {26,183}, {26,184}, {26,185}, {26,186}, {61,147},
+ {61,148}, {26,187}, {26,188}, {61,149}, {61,150}, {26,189}, {26,190},
+ {27,1}, {27,2}, {27,3}, {61,151}, {61,152}, {61,153}, {27,4}, {27,5},
+ {61,154}, {27,6}, {27,7}, {27,8}, {61,155}, {27,9}, {27,10}, {27,11},
+ {27,12}, {27,13}, {27,14}, {27,15}, {61,156}, {61,157}, {27,16}, {27,17},
+ {61,158}, {61,159}, {27,18}, {27,19}, {27,20}, {27,21}, {27,22}, {27,23},
+ {27,24}, {27,25}, {27,26}, {27,33}, {27,34}, {27,35}, {27,36}, {27,37},
+ {27,38}, {27,39}, {27,40}, {27,41}, {27,42}, {27,43}, {27,44}, {27,45},
+ {27,46}, {27,47}, {27,48}, {27,49}, {27,50}, {61,160}, {27,51}, {27,52},
+ {27,53}, {27,54}, {27,55}, {27,56}, {27,57}, {27,58}, {27,65}, {27,66},
+ {27,67}, {27,68}, {27,69}, {27,70}, {27,71}, {27,72}, {27,73}, {27,74},
+ {27,75}, {27,76}, {27,77}, {27,78}, {27,79}, {27,80}, {27,81}, {27,82},
+ {27,83}, {27,84}, {27,85}, {27,86}, {27,87}, {27,88}, {27,89}, {27,90},
+ {61,161}, {61,162}, {27,91}, {27,92}, {61,163}, {27,93}, {27,94}, {27,95},
+ {61,164}, {27,96}, {61,165}, {27,97}, {27,98}, {27,99}, {27,100}, {27,101},
+ {61,166}, {61,167}, {27,102}, {27,103}, {61,168}, {61,169}, {27,104},
+ {27,105}, {27,106}, {27,107}, {27,108}, {27,109}, {61,170}, {27,110},
+ {27,111}, {27,112}, {61,171}, {27,113}, {27,114}, {27,115}, {61,172},
+ {27,116}, {27,117}, {27,118}, {27,119}, {27,120}, {27,121}, {27,122},
+ {27,123}, {27,124}, {27,125}, {27,126}, {27,127}, {27,128}, {27,129},
+ {27,130}, {27,131}, {27,132}, {27,133}, {27,134}, {27,135}, {27,136},
+ {27,137}, {27,138}, {27,139}, {27,140}, {27,141}, {27,142}, {27,143},
+ {27,144}, {27,145}, {27,146}, {27,147}, {27,148}, {27,149}, {27,150},
+ {27,151}, {27,152}, {27,153}, {27,154}, {27,155}, {27,156}, {27,157},
+ {27,158}, {27,159}, {27,160}, {27,161}, {27,162}, {27,163}, {27,164},
+ {27,165}, {27,166}, {61,173}, {27,167}, {27,168}, {27,169}, {27,170},
+ {27,171}, {27,172}, {27,173}, {27,174}, {27,175}, {27,176}, {27,177},
+ {27,178}, {27,179}, {27,180}, {27,181}, {27,182}, {27,183}, {27,184},
+ {27,185}, {27,186}, {27,187}, {27,188}, {27,189}, {61,174}, {61,175},
+ {27,190}, {28,1}, {61,176}, {28,2}, {28,3}, {61,177}, {61,178}, {28,4},
+ {61,179}, {28,5}, {28,6}, {28,7}, {28,8}, {28,9}, {61,180}, {61,181},
+ {28,10}, {28,11}, {28,12}, {61,182}, {28,13}, {28,14}, {28,15}, {28,16},
+ {28,17}, {28,18}, {61,183}, {61,184}, {28,19}, {28,20}, {61,185}, {28,21},
+ {28,22}, {28,23}, {28,24}, {28,25}, {28,26}, {28,33}, {28,34}, {28,35},
+ {28,36}, {28,37}, {28,38}, {28,39}, {28,40}, {28,41}, {61,186}, {28,42},
+ {28,43}, {28,44}, {28,45}, {28,46}, {28,47}, {28,48}, {61,187}, {28,49},
+ {28,50}, {28,51}, {28,52}, {28,53}, {28,54}, {28,55}, {28,56}, {28,57},
+ {28,58}, {28,65}, {28,66}, {28,67}, {28,68}, {28,69}, {28,70}, {28,71},
+ {28,72}, {28,73}, {61,188}, {28,74}, {28,75}, {28,76}, {28,77}, {28,78},
+ {28,79}, {28,80}, {61,189}, {28,81}, {28,82}, {28,83}, {61,190}, {28,84},
+ {28,85}, {28,86}, {62,97}, {28,87}, {28,88}, {28,89}, {28,90}, {28,91},
+ {28,92}, {28,93}, {62,98}, {62,99}, {28,94}, {28,95}, {28,96}, {28,97},
+ {28,98}, {28,99}, {28,100}, {28,101}, {28,102}, {28,103}, {62,100},
+ {28,104}, {28,105}, {28,106}, {28,107}, {28,108}, {28,109}, {28,110},
+ {28,111}, {28,112}, {28,113}, {28,114}, {28,115}, {28,116}, {28,117},
+ {28,118}, {28,119}, {28,120}, {28,121}, {28,122}, {28,123}, {28,124},
+ {28,125}, {28,126}, {28,127}, {28,128}, {28,129}, {28,130}, {62,101},
+ {62,102}, {28,131}, {28,132}, {62,103}, {28,133}, {28,134}, {28,135},
+ {62,104}, {28,136}, {28,137}, {28,138}, {28,139}, {28,140}, {28,141},
+ {28,142}, {62,105}, {62,106}, {28,143}, {28,144}, {28,145}, {62,107},
+ {28,146}, {28,147}, {28,148}, {28,149}, {28,150}, {28,151}, {62,108},
+ {28,152}, {28,153}, {28,154}, {28,155}, {28,156}, {28,157}, {28,158},
+ {28,159}, {28,160}, {28,161}, {28,162}, {28,163}, {28,164}, {28,165},
+ {28,166}, {28,167}, {28,168}, {28,169}, {28,170}, {62,109}, {28,171},
+ {28,172}, {28,173}, {28,174}, {28,175}, {28,176}, {28,177}, {62,110},
+ {28,178}, {28,179}, {28,180}, {28,181}, {28,182}, {28,183}, {28,184},
+ {28,185}, {28,186}, {28,187}, {28,188}, {28,189}, {28,190}, {29,1},
+ {29,2}, {29,3}, {29,4}, {29,5}, {29,6}, {29,7}, {29,8}, {29,9}, {29,10},
+ {29,11}, {29,12}, {29,13}, {29,14}, {62,111}, {29,15}, {29,16}, {29,17},
+ {62,112}, {29,18}, {29,19}, {29,20}, {29,21}, {29,22}, {29,23}, {29,24},
+ {29,25}, {29,26}, {29,33}, {29,34}, {29,35}, {29,36}, {29,37}, {29,38},
+ {29,39}, {29,40}, {29,41}, {29,42}, {29,43}, {29,44}, {29,45}, {29,46},
+ {29,47}, {29,48}, {29,49}, {29,50}, {29,51}, {29,52}, {29,53}, {29,54},
+ {29,55}, {29,56}, {29,57}, {29,58}, {29,65}, {29,66}, {29,67}, {29,68},
+ {29,69}, {29,70}, {29,71}, {29,72}, {29,73}, {62,113}, {29,74}, {29,75},
+ {29,76}, {29,77}, {29,78}, {29,79}, {62,114}, {62,115}, {29,80}, {29,81},
+ {62,116}, {29,82}, {29,83}, {29,84}, {62,117}, {29,85}, {62,118}, {29,86},
+ {29,87}, {29,88}, {29,89}, {62,119}, {62,120}, {62,121}, {29,90}, {29,91},
+ {29,92}, {29,93}, {29,94}, {29,95}, {29,96}, {29,97}, {29,98}, {29,99},
+ {62,122}, {29,100}, {29,101}, {29,102}, {62,123}, {29,103}, {29,104},
+ {29,105}, {62,124}, {29,106}, {29,107}, {29,108}, {29,109}, {29,110},
+ {29,111}, {29,112}, {62,125}, {29,113}, {29,114}, {29,115}, {29,116},
+ {29,117}, {29,118}, {29,119}, {29,120}, {29,121}, {29,122}, {29,123},
+ {62,126}, {62,127}, {29,124}, {29,125}, {62,128}, {29,126}, {29,127},
+ {29,128}, {62,129}, {29,129}, {29,130}, {29,131}, {29,132}, {29,133},
+ {29,134}, {29,135}, {62,130}, {62,131}, {29,136}, {62,132}, {29,137},
+ {62,133}, {29,138}, {29,139}, {29,140}, {29,141}, {29,142}, {29,143},
+ {62,134}, {62,135}, {29,144}, {29,145}, {62,136}, {62,137}, {62,138},
+ {29,146}, {62,139}, {62,140}, {62,141}, {29,147}, {29,148}, {29,149},
+ {29,150}, {62,142}, {62,143}, {62,144}, {29,151}, {62,145}, {62,146},
+ {62,147}, {29,152}, {29,153}, {29,154}, {62,148}, {62,149}, {29,155},
+ {62,150}, {62,151}, {29,156}, {29,157}, {62,152}, {29,158}, {29,159},
+ {29,160}, {62,153}, {29,161}, {29,162}, {29,163}, {29,164}, {29,165},
+ {29,166}, {29,167}, {62,154}, {62,155}, {29,168}, {62,156}, {62,157},
+ {62,158}, {29,169}, {29,170}, {29,171}, {29,172}, {29,173}, {29,174},
+ {62,159}, {62,160}, {29,175}, {29,176}, {62,161}, {29,177}, {29,178},
+ {29,179}, {62,162}, {29,180}, {29,181}, {62,163}, {29,182}, {29,183},
+ {29,184}, {29,185}, {62,164}, {62,165}, {29,186}, {62,166}, {29,187},
+ {62,167}, {29,188}, {29,189}, {29,190}, {62,168}, {30,1}, {62,169},
+ {62,170}, {30,2}, {30,3}, {30,4}, {62,171}, {30,5}, {30,6}, {30,7},
+ {62,172}, {30,8}, {30,9}, {30,10}, {30,11}, {30,12}, {30,13}, {30,14},
+ {30,15}, {62,173}, {30,16}, {30,17}, {30,18}, {30,19}, {30,20}, {30,21},
+ {30,22}, {30,23}, {30,24}, {30,25}, {62,174}, {62,175}, {30,26}, {30,33},
+ {62,176}, {62,177}, {30,34}, {62,178}, {62,179}, {62,180}, {62,181},
+ {30,35}, {30,36}, {30,37}, {30,38}, {30,39}, {62,182}, {62,183}, {62,184},
+ {62,185}, {62,186}, {62,187}, {62,188}, {30,40}, {62,189}, {30,41},
+ {62,190}, {30,42}, {63,97}, {63,98}, {30,43}, {30,44}, {63,99}, {30,45},
+ {30,46}, {30,47}, {63,100}, {30,48}, {30,49}, {30,50}, {30,51}, {30,52},
+ {30,53}, {30,54}, {63,101}, {63,102}, {30,55}, {63,103}, {30,56}, {63,104},
+ {30,57}, {30,58}, {30,65}, {30,66}, {30,67}, {30,68}, {63,105}, {63,106},
+ {63,107}, {30,69}, {63,108}, {30,70}, {30,71}, {30,72}, {63,109}, {30,73},
+ {63,110}, {63,111}, {30,74}, {30,75}, {30,76}, {30,77}, {63,112}, {63,113},
+ {63,114}, {63,115}, {63,116}, {63,117}, {30,78}, {30,79}, {30,80},
+ {63,118}, {63,119}, {63,120}, {63,121}, {30,81}, {30,82}, {30,83},
+ {63,122}, {30,84}, {30,85}, {30,86}, {63,123}, {30,87}, {30,88}, {30,89},
+ {30,90}, {30,91}, {30,92}, {30,93}, {63,124}, {63,125}, {30,94}, {63,126},
+ {63,127}, {30,95}, {30,96}, {30,97}, {30,98}, {30,99}, {30,100}, {30,101},
+ {63,128}, {63,129}, {30,102}, {30,103}, {63,130}, {30,104}, {30,105},
+ {30,106}, {63,131}, {63,132}, {63,133}, {30,107}, {63,134}, {30,108},
+ {30,109}, {63,135}, {63,136}, {63,137}, {30,110}, {63,138}, {30,111},
+ {63,139}, {30,112}, {63,140}, {30,113}, {30,114}, {30,115}, {30,116},
+ {63,141}, {63,142}, {30,117}, {30,118}, {63,143}, {30,119}, {30,120},
+ {30,121}, {63,144}, {30,122}, {30,123}, {30,124}, {30,125}, {30,126},
+ {30,127}, {30,128}, {63,145}, {63,146}, {30,129}, {63,147}, {63,148},
+ {63,149}, {30,130}, {30,131}, {30,132}, {30,133}, {30,134}, {30,135},
+ {63,150}, {63,151}, {30,136}, {30,137}, {63,152}, {30,138}, {30,139},
+ {30,140}, {30,141}, {30,142}, {30,143}, {30,144}, {30,145}, {30,146},
+ {30,147}, {30,148}, {63,153}, {30,149}, {30,150}, {63,154}, {30,151},
+ {63,155}, {30,152}, {30,153}, {30,154}, {30,155}, {30,156}, {30,157},
+ {63,156}, {63,157}, {30,158}, {30,159}, {63,158}, {30,160}, {30,161},
+ {30,162}, {63,159}, {30,163}, {30,164}, {30,165}, {30,166}, {30,167},
+ {30,168}, {30,169}, {63,160}, {63,161}, {30,170}, {63,162}, {30,171},
+ {63,163}, {30,172}, {30,173}, {30,174}, {30,175}, {30,176}, {30,177},
+ {63,164}, {63,165}, {30,178}, {30,179}, {63,166}, {30,180}, {30,181},
+ {30,182}, {63,167}, {30,183}, {30,184}, {30,185}, {30,186}, {30,187},
+ {30,188}, {30,189}, {63,168}, {63,169}, {30,190}, {63,170}, {31,1},
+ {63,171}, {31,2}, {31,3}, {31,4}, {31,5}, {31,6}, {31,7}, {63,172},
+ {63,173}, {31,8}, {31,9}, {63,174}, {31,10}, {31,11}, {31,12}, {63,175},
+ {63,176}, {63,177}, {31,13}, {31,14}, {31,15}, {31,16}, {31,17}, {63,178},
+ {63,179}, {31,18}, {63,180}, {31,19}, {63,181}, {31,20}, {31,21}, {31,22},
+ {31,23}, {31,24}, {31,25}, {63,182}, {63,183}, {31,26}, {31,33}, {63,184},
+ {31,34}, {31,35}, {31,36}, {63,185}, {31,37}, {31,38}, {31,39}, {31,40},
+ {31,41}, {31,42}, {31,43}, {63,186}, {63,187}, {31,44}, {31,45}, {63,188},
+ {63,189}, {31,46}, {31,47}, {31,48}, {31,49}, {31,50}, {31,51}, {63,190},
+ {64,97}, {31,52}, {31,53}, {64,98}, {31,54}, {31,55}, {31,56}, {64,99},
+ {31,57}, {31,58}, {31,65}, {31,66}, {31,67}, {31,68}, {31,69}, {64,100},
+ {64,101}, {31,70}, {31,71}, {31,72}, {64,102}, {31,73}, {31,74}, {31,75},
+ {31,76}, {31,77}, {31,78}, {64,103}, {64,104}, {31,79}, {31,80}, {64,105},
+ {31,81}, {31,82}, {31,83}, {64,106}, {31,84}, {31,85}, {31,86}, {31,87},
+ {31,88}, {31,89}, {31,90}, {64,107}, {64,108}, {31,91}, {64,109}, {31,92},
+ {64,110}, {31,93}, {31,94}, {31,95}, {31,96}, {31,97}, {31,98}, {64,111},
+ {64,112}, {31,99}, {31,100}, {64,113}, {31,101}, {31,102}, {31,103},
+ {64,114}, {31,104}, {31,105}, {31,106}, {31,107}, {31,108}, {31,109},
+ {31,110}, {64,115}, {64,116}, {31,111}, {64,117}, {31,112}, {64,118},
+ {31,113}, {64,119}, {31,114}, {31,115}, {31,116}, {31,117}, {64,120},
+ {64,121}, {31,118}, {31,119}, {64,122}, {31,120}, {31,121}, {31,122},
+ {64,123}, {31,123}, {31,124}, {31,125}, {31,126}, {31,127}, {64,124},
+ {31,128}, {64,125}, {64,126}, {31,129}, {64,127}, {31,130}, {64,128},
+ {64,129}, {64,130}, {64,131}, {64,132}, {64,133}, {64,134}, {64,135},
+ {31,131}, {31,132}, {31,133}, {64,136}, {31,134}, {31,135}, {31,136},
+ {64,137}, {31,137}, {31,138}, {31,139}, {31,140}, {31,141}, {31,142},
+ {31,143}, {64,138}, {31,144}, {31,145}, {64,139}, {31,146}, {31,147},
+ {31,148}, {31,149}, {31,150}, {31,151}, {31,152}, {31,153}, {64,140},
+ {64,141}, {31,154}, {31,155}, {64,142}, {31,156}, {31,157}, {31,158},
+ {64,143}, {64,144}, {64,145}, {31,159}, {31,160}, {31,161}, {31,162},
+ {64,146}, {64,147}, {64,148}, {31,163}, {64,149}, {64,150}, {64,151},
+ {64,152}, {31,164}, {31,165}, {31,166}, {64,153}, {31,167}, {64,154},
+ {64,155}, {31,168}, {31,169}, {64,156}, {31,170}, {64,157}, {64,158},
+ {64,159}, {31,171}, {64,160}, {31,172}, {31,173}, {31,174}, {31,175},
+ {31,176}, {64,161}, {64,162}, {31,177}, {64,163}, {64,164}, {64,165},
+ {64,166}, {31,178}, {31,179}, {31,180}, {31,181}, {31,182}, {64,167},
+ {64,168}, {31,183}, {31,184}, {64,169}, {31,185}, {31,186}, {31,187},
+ {64,170}, {31,188}, {31,189}, {31,190}, {32,1}, {32,2}, {32,3}, {32,4},
+ {64,171}, {64,172}, {32,5}, {64,173}, {64,174}, {64,175}, {32,6}, {32,7},
+ {32,8}, {32,9}, {32,10}, {32,11}, {64,176}, {64,177}, {32,12}, {32,13},
+ {64,178}, {32,14}, {64,179}, {32,15}, {64,180}, {32,16}, {32,17}, {32,18},
+ {32,19}, {32,20}, {32,21}, {32,22}, {64,181}, {32,23}, {32,24}, {32,25},
+ {32,26}, {64,182}, {32,33}, {32,34}, {32,35}, {32,36}, {32,37}, {32,38},
+ {64,183}, {32,39}, {32,40}, {32,41}, {64,184}, {32,42}, {32,43}, {32,44},
+ {64,185}, {32,45}, {32,46}, {32,47}, {32,48}, {32,49}, {32,50}, {32,51},
+ {32,52}, {32,53}, {32,54}, {32,55}, {32,56}, {32,57}, {32,58}, {32,65},
+ {32,66}, {32,67}, {32,68}, {32,69}, {64,186}, {64,187}, {32,70}, {32,71},
+ {64,188}, {32,72}, {32,73}, {32,74}, {64,189}, {32,75}, {64,190}, {32,76},
+ {32,77}, {32,78}, {32,79}, {32,80}, {65,97}, {65,98}, {32,81}, {65,99},
+ {32,82}, {65,100}, {65,101}, {32,83}, {32,84}, {32,85}, {32,86}, {32,87},
+ {65,102}, {65,103}, {32,88}, {32,89}, {65,104}, {32,90}, {32,91}, {32,92},
+ {65,105}, {32,93}, {32,94}, {32,95}, {32,96}, {32,97}, {32,98}, {32,99},
+ {65,106}, {65,107}, {32,100}, {65,108}, {32,101}, {65,109}, {32,102},
+ {32,103}, {32,104}, {32,105}, {32,106}, {32,107}, {65,110}, {32,108},
+ {32,109}, {32,110}, {65,111}, {32,111}, {32,112}, {32,113}, {65,112},
+ {32,114}, {32,115}, {32,116}, {32,117}, {32,118}, {32,119}, {32,120},
+ {65,113}, {65,114}, {32,121}, {32,122}, {65,115}, {65,116}, {32,123},
+ {32,124}, {32,125}, {32,126}, {32,127}, {32,128}, {65,117}, {32,129},
+ {32,130}, {32,131}, {32,132}, {32,133}, {32,134}, {32,135}, {32,136},
+ {32,137}, {32,138}, {32,139}, {32,140}, {32,141}, {32,142}, {32,143},
+ {32,144}, {32,145}, {32,146}, {32,147}, {32,148}, {32,149}, {32,150},
+ {32,151}, {32,152}, {32,153}, {32,154}, {32,155}, {65,118}, {65,119},
+ {32,156}, {32,157}, {65,120}, {32,158}, {32,159}, {32,160}, {65,121},
+ {32,161}, {65,122}, {32,162}, {32,163}, {32,164}, {32,165}, {32,166},
+ {65,123}, {65,124}, {32,167}, {65,125}, {32,168}, {65,126}, {65,127},
+ {65,128}, {32,169}, {32,170}, {32,171}, {65,129}, {65,130}, {65,131},
+ {32,172}, {32,173}, {32,174}, {32,175}, {32,176}, {32,177}, {65,132},
+ {32,178}, {32,179}, {32,180}, {32,181}, {32,182}, {32,183}, {32,184},
+ {32,185}, {65,133}, {32,186}, {65,134}, {32,187}, {65,135}, {32,188},
+ {32,189}, {32,190}, {33,1}, {33,2}, {33,3}, {65,136}, {33,4}, {33,5},
+ {33,6}, {33,7}, {33,8}, {33,9}, {33,10}, {33,11}, {33,12}, {33,13},
+ {33,14}, {33,15}, {33,16}, {33,17}, {33,18}, {33,19}, {33,20}, {33,21},
+ {33,22}, {65,137}, {65,138}, {33,23}, {33,24}, {33,25}, {33,26}, {33,33},
+ {33,34}, {65,139}, {33,35}, {33,36}, {33,37}, {65,140}, {33,38}, {33,39},
+ {33,40}, {65,141}, {33,41}, {33,42}, {33,43}, {33,44}, {33,45}, {33,46},
+ {33,47}, {65,142}, {65,143}, {33,48}, {65,144}, {33,49}, {65,145},
+ {33,50}, {33,51}, {33,52}, {33,53}, {33,54}, {33,55}, {65,146}, {65,147},
+ {33,56}, {33,57}, {65,148}, {33,58}, {33,65}, {33,66}, {33,67}, {33,68},
+ {33,69}, {33,70}, {33,71}, {33,72}, {33,73}, {33,74}, {33,75}, {33,76},
+ {33,77}, {33,78}, {33,79}, {65,149}, {33,80}, {33,81}, {33,82}, {33,83},
+ {33,84}, {33,85}, {65,150}, {65,151}, {33,86}, {33,87}, {65,152}, {33,88},
+ {33,89}, {33,90}, {65,153}, {65,154}, {65,155}, {33,91}, {33,92}, {33,93},
+ {33,94}, {33,95}, {65,156}, {65,157}, {33,96}, {65,158}, {34,1}, {65,159},
+ {34,2}, {34,3}, {34,4}, {34,5}, {34,6}, {34,7}, {65,160}, {34,8}, {34,9},
+ {34,10}, {34,11}, {34,12}, {34,13}, {34,14}, {34,15}, {34,16}, {34,17},
+ {34,18}, {34,19}, {34,20}, {34,21}, {34,22}, {34,23}, {34,24}, {34,25},
+ {34,26}, {65,161}, {34,33}, {34,34}, {34,35}, {34,36}, {34,37}, {34,38},
+ {34,39}, {65,162}, {34,40}, {34,41}, {34,42}, {34,43}, {34,44}, {34,45},
+ {34,46}, {34,47}, {34,48}, {34,49}, {34,50}, {34,51}, {34,52}, {34,53},
+ {34,54}, {34,55}, {34,56}, {34,57}, {34,58}, {34,65}, {34,66}, {34,67},
+ {34,68}, {34,69}, {34,70}, {34,71}, {34,72}, {65,163}, {65,164}, {34,73},
+ {34,74}, {65,165}, {34,75}, {34,76}, {34,77}, {65,166}, {34,78}, {34,79},
+ {34,80}, {34,81}, {34,82}, {34,83}, {34,84}, {65,167}, {65,168}, {34,85},
+ {65,169}, {34,86}, {34,87}, {34,88}, {34,89}, {34,90}, {34,91}, {34,92},
+ {34,93}, {65,170}, {34,94}, {34,95}, {34,96}, {65,171}, {35,1}, {35,2},
+ {35,3}, {65,172}, {35,4}, {35,5}, {35,6}, {35,7}, {35,8}, {35,9}, {35,10},
+ {65,173}, {35,11}, {35,12}, {35,13}, {35,14}, {35,15}, {35,16}, {35,17},
+ {35,18}, {35,19}, {35,20}, {35,21}, {65,174}, {65,175}, {35,22}, {35,23},
+ {65,176}, {35,24}, {35,25}, {35,26}, {65,177}, {35,33}, {35,34}, {35,35},
+ {35,36}, {35,37}, {35,38}, {35,39}, {65,178}, {65,179}, {35,40}, {65,180},
+ {35,41}, {65,181}, {35,42}, {35,43}, {35,44}, {35,45}, {35,46}, {35,47},
+ {35,48}, {35,49}, {35,50}, {35,51}, {35,52}, {35,53}, {35,54}, {35,55},
+ {35,56}, {35,57}, {35,58}, {35,65}, {35,66}, {35,67}, {35,68}, {35,69},
+ {35,70}, {35,71}, {35,72}, {35,73}, {35,74}, {35,75}, {35,76}, {35,77},
+ {35,78}, {35,79}, {35,80}, {35,81}, {65,182}, {65,183}, {35,82}, {35,83},
+ {65,184}, {35,84}, {35,85}, {65,185}, {65,186}, {35,86}, {65,187},
+ {35,87}, {35,88}, {35,89}, {35,90}, {35,91}, {65,188}, {65,189}, {35,92},
+ {65,190}, {35,93}, {66,97}, {66,98}, {35,94}, {35,95}, {66,99}, {66,100},
+ {35,96}, {66,101}, {66,102}, {36,1}, {36,2}, {66,103}, {36,3}, {66,104},
+ {36,4}, {66,105}, {36,5}, {36,6}, {66,106}, {36,7}, {36,8}, {36,9},
+ {36,10}, {66,107}, {66,108}, {36,11}, {66,109}, {66,110}, {66,111},
+ {36,12}, {36,13}, {36,14}, {36,15}, {36,16}, {36,17}, {66,112}, {66,113},
+ {36,18}, {36,19}, {66,114}, {36,20}, {36,21}, {36,22}, {66,115}, {36,23},
+ {36,24}, {36,25}, {36,26}, {36,33}, {36,34}, {36,35}, {66,116}, {66,117},
+ {36,36}, {66,118}, {66,119}, {66,120}, {36,37}, {36,38}, {36,39}, {36,40},
+ {36,41}, {36,42}, {66,121}, {36,43}, {36,44}, {36,45}, {66,122}, {36,46},
+ {36,47}, {36,48}, {36,49}, {36,50}, {36,51}, {36,52}, {36,53}, {36,54},
+ {36,55}, {36,56}, {36,57}, {36,58}, {36,65}, {36,66}, {36,67}, {66,123},
+ {36,68}, {36,69}, {36,70}, {36,71}, {36,72}, {36,73}, {36,74}, {36,75},
+ {36,76}, {36,77}, {36,78}, {36,79}, {36,80}, {36,81}, {36,82}, {36,83},
+ {36,84}, {36,85}, {36,86}, {36,87}, {36,88}, {36,89}, {36,90}, {36,91},
+ {36,92}, {36,93}, {36,94}, {36,95}, {36,96}, {37,1}, {37,2}, {37,3},
+ {37,4}, {37,5}, {66,124}, {66,125}, {37,6}, {37,7}, {66,126}, {37,8},
+ {37,9}, {37,10}, {66,127}, {37,11}, {37,12}, {37,13}, {37,14}, {37,15},
+ {37,16}, {37,17}, {66,128}, {66,129}, {37,18}, {66,130}, {66,131},
+ {66,132}, {37,19}, {37,20}, {37,21}, {37,22}, {37,23}, {37,24}, {66,133},
+ {37,25}, {37,26}, {37,33}, {37,34}, {37,35}, {37,36}, {37,37}, {37,38},
+ {37,39}, {37,40}, {37,41}, {37,42}, {37,43}, {37,44}, {37,45}, {37,46},
+ {37,47}, {37,48}, {37,49}, {37,50}, {66,134}, {37,51}, {37,52}, {37,53},
+ {37,54}, {37,55}, {37,56}, {66,135}, {37,57}, {37,58}, {37,65}, {37,66},
+ {37,67}, {37,68}, {37,69}, {37,70}, {37,71}, {37,72}, {37,73}, {37,74},
+ {37,75}, {37,76}, {37,77}, {37,78}, {37,79}, {37,80}, {37,81}, {66,136},
+ {37,82}, {37,83}, {37,84}, {37,85}, {37,86}, {37,87}, {37,88}, {37,89},
+ {37,90}, {37,91}, {37,92}, {37,93}, {37,94}, {37,95}, {37,96}, {38,1},
+ {38,2}, {38,3}, {38,4}, {38,5}, {38,6}, {38,7}, {38,8}, {38,9}, {38,10},
+ {38,11}, {38,12}, {38,13}, {38,14}, {38,15}, {38,16}, {38,17}, {38,18},
+ {38,19}, {38,20}, {66,137}, {66,138}, {38,21}, {38,22}, {66,139}, {38,23},
+ {38,24}, {38,25}, {66,140}, {38,26}, {38,33}, {38,34}, {38,35}, {38,36},
+ {38,37}, {38,38}, {66,141}, {66,142}, {38,39}, {66,143}, {38,40}, {66,144},
+ {38,41}, {66,145}, {38,42}, {38,43}, {38,44}, {38,45}, {66,146}, {66,147},
+ {38,46}, {38,47}, {38,48}, {38,49}, {38,50}, {38,51}, {66,148}, {38,52},
+ {38,53}, {38,54}, {38,55}, {38,56}, {38,57}, {38,58}, {38,65}, {38,66},
+ {38,67}, {38,68}, {66,149}, {38,69}, {38,70}, {38,71}, {38,72}, {38,73},
+ {38,74}, {38,75}, {66,150}, {38,76}, {38,77}, {38,78}, {38,79}, {38,80},
+ {38,81}, {38,82}, {38,83}, {38,84}, {38,85}, {38,86}, {38,87}, {38,88},
+ {38,89}, {38,90}, {38,91}, {38,92}, {38,93}, {38,94}, {66,151}, {38,95},
+ {38,96}, {39,1}, {39,2}, {39,3}, {39,4}, {39,5}, {66,152}, {39,6},
+ {39,7}, {39,8}, {66,153}, {39,9}, {39,10}, {39,11}, {66,154}, {39,12},
+ {39,13}, {39,14}, {39,15}, {39,16}, {39,17}, {39,18}, {66,155}, {66,156},
+ {39,19}, {39,20}, {39,21}, {39,22}, {39,23}, {39,24}, {39,25}, {39,26},
+ {39,33}, {39,34}, {39,35}, {39,36}, {39,37}, {39,38}, {39,39}, {39,40},
+ {39,41}, {39,42}, {39,43}, {39,44}, {39,45}, {39,46}, {39,47}, {39,48},
+ {39,49}, {39,50}, {39,51}, {39,52}, {39,53}, {39,54}, {39,55}, {66,157},
+ {39,56}, {39,57}, {39,58}, {39,65}, {39,66}, {39,67}, {66,158}, {66,159},
+ {39,68}, {39,69}, {66,160}, {39,70}, {39,71}, {39,72}, {66,161}, {39,73},
+ {39,74}, {39,75}, {39,76}, {39,77}, {39,78}, {39,79}, {66,162}, {66,163},
+ {39,80}, {39,81}, {39,82}, {66,164}, {39,83}, {39,84}, {39,85}, {39,86},
+ {39,87}, {39,88}, {66,165}, {39,89}, {39,90}, {39,91}, {39,92}, {39,93},
+ {39,94}, {39,95}, {39,96}, {40,1}, {40,2}, {40,3}, {40,4}, {40,5},
+ {40,6}, {40,7}, {40,8}, {40,9}, {40,10}, {40,11}, {66,166}, {66,167},
+ {40,12}, {40,13}, {40,14}, {40,15}, {40,16}, {40,17}, {40,18}, {40,19},
+ {40,20}, {40,21}, {40,22}, {40,23}, {40,24}, {40,25}, {40,26}, {40,33},
+ {40,34}, {40,35}, {40,36}, {40,37}, {40,38}, {40,39}, {40,40}, {40,41},
+ {40,42}, {40,43}, {40,44}, {40,45}, {40,46}, {40,47}, {40,48}, {40,49},
+ {40,50}, {40,51}, {66,168}, {40,52}, {40,53}, {40,54}, {40,55}, {40,56},
+ {40,57}, {40,58}, {40,65}, {40,66}, {40,67}, {40,68}, {40,69}, {40,70},
+ {40,71}, {40,72}, {40,73}, {40,74}, {40,75}, {40,76}, {40,77}, {40,78},
+ {40,79}, {40,80}, {40,81}, {40,82}, {40,83}, {40,84}, {66,169}, {40,85},
+ {40,86}, {40,87}, {40,88}, {40,89}, {40,90}, {40,91}, {40,92}, {40,93},
+ {40,94}, {40,95}, {40,96}, {41,1}, {41,2}, {41,3}, {41,4}, {41,5},
+ {41,6}, {41,7}, {41,8}, {41,9}, {41,10}, {41,11}, {41,12}, {41,13},
+ {41,14}, {41,15}, {66,170}, {41,16}, {41,17}, {41,18}, {41,19}, {41,20},
+ {41,21}, {41,22}, {41,23}, {41,24}, {41,25}, {41,26}, {41,33}, {41,34},
+ {41,35}, {41,36}, {66,171}, {41,37}, {41,38}, {66,172}, {41,39}, {66,173},
+ {41,40}, {41,41}, {41,42}, {41,43}, {41,44}, {41,45}, {41,46}, {41,47},
+ {41,48}, {41,49}, {41,50}, {41,51}, {41,52}, {41,53}, {41,54}, {41,55},
+ {41,56}, {41,57}, {41,58}, {41,65}, {41,66}, {41,67}, {41,68}, {41,69},
+ {41,70}, {41,71}, {41,72}, {41,73}, {41,74}, {41,75}, {41,76}, {41,77},
+ {41,78}, {41,79}, {66,174}, {66,175}, {41,80}, {41,81}, {66,176}, {41,82},
+ {41,83}, {41,84}, {66,177}, {41,85}, {41,86}, {41,87}, {41,88}, {41,89},
+ {41,90}, {41,91}, {66,178}, {66,179}, {41,92}, {41,93}, {41,94}, {66,180},
+ {66,181}, {41,95}, {41,96}, {42,1}, {42,2}, {66,182}, {66,183}, {66,184},
+ {42,3}, {42,4}, {66,185}, {42,5}, {66,186}, {42,6}, {66,187}, {42,7},
+ {42,8}, {42,9}, {42,10}, {42,11}, {42,12}, {42,13}, {66,188}, {66,189},
+ {42,14}, {66,190}, {67,97}, {67,98}, {67,99}, {42,15}, {42,16}, {42,17},
+ {42,18}, {42,19}, {67,100}, {67,101}, {42,20}, {42,21}, {67,102}, {42,22},
+ {42,23}, {42,24}, {67,103}, {42,25}, {42,26}, {42,33}, {42,34}, {42,35},
+ {42,36}, {42,37}, {67,104}, {67,105}, {42,38}, {67,106}, {67,107},
+ {67,108}, {42,39}, {42,40}, {42,41}, {42,42}, {42,43}, {42,44}, {67,109},
+ {42,45}, {42,46}, {42,47}, {67,110}, {42,48}, {67,111}, {42,49}, {67,112},
+ {42,50}, {42,51}, {42,52}, {42,53}, {42,54}, {42,55}, {42,56}, {67,113},
+ {42,57}, {42,58}, {42,65}, {42,66}, {67,114}, {42,67}, {42,68}, {42,69},
+ {42,70}, {42,71}, {42,72}, {42,73}, {42,74}, {42,75}, {42,76}, {42,77},
+ {42,78}, {42,79}, {42,80}, {42,81}, {42,82}, {42,83}, {42,84}, {42,85},
+ {42,86}, {42,87}, {42,88}, {42,89}, {42,90}, {42,91}, {42,92}, {42,93},
+ {42,94}, {42,95}, {42,96}, {43,1}, {43,2}, {43,3}, {43,4}, {67,115},
+ {67,116}, {43,5}, {43,6}, {67,117}, {43,7}, {43,8}, {43,9}, {67,118},
+ {43,10}, {43,11}, {43,12}, {43,13}, {43,14}, {43,15}, {43,16}, {67,119},
+ {67,120}, {43,17}, {67,121}, {67,122}, {67,123}, {43,18}, {43,19},
+ {43,20}, {43,21}, {43,22}, {43,23}, {67,124}, {67,125}, {43,24}, {43,25},
+ {67,126}, {43,26}, {43,33}, {43,34}, {67,127}, {43,35}, {43,36}, {43,37},
+ {43,38}, {43,39}, {43,40}, {43,41}, {67,128}, {67,129}, {43,42}, {67,130},
+ {43,43}, {67,131}, {43,44}, {43,45}, {43,46}, {43,47}, {43,48}, {43,49},
+ {67,132}, {43,50}, {43,51}, {43,52}, {67,133}, {43,53}, {43,54}, {43,55},
+ {43,56}, {43,57}, {43,58}, {43,65}, {43,66}, {43,67}, {43,68}, {43,69},
+ {43,70}, {43,71}, {43,72}, {43,73}, {67,134}, {43,74}, {43,75}, {43,76},
+ {43,77}, {43,78}, {43,79}, {43,80}, {67,135}, {43,81}, {43,82}, {43,83},
+ {67,136}, {43,84}, {43,85}, {43,86}, {43,87}, {43,88}, {43,89}, {43,90},
+ {43,91}, {43,92}, {43,93}, {43,94}, {43,95}, {43,96}, {44,1}, {44,2},
+ {44,3}, {67,137}, {44,4}, {44,5}, {44,6}, {44,7}, {44,8}, {44,9}, {67,138},
+ {67,139}, {44,10}, {44,11}, {67,140}, {44,12}, {44,13}, {44,14}, {67,141},
+ {44,15}, {44,16}, {44,17}, {44,18}, {44,19}, {44,20}, {44,21}, {67,142},
+ {67,143}, {44,22}, {67,144}, {44,23}, {67,145}, {44,24}, {44,25}, {44,26},
+ {44,33}, {44,34}, {44,35}, {67,146}, {44,36}, {44,37}, {44,38}, {67,147},
+ {44,39}, {44,40}, {44,41}, {67,148}, {44,42}, {44,43}, {44,44}, {44,45},
+ {44,46}, {44,47}, {44,48}, {44,49}, {44,50}, {44,51}, {44,52}, {44,53},
+ {67,149}, {44,54}, {44,55}, {44,56}, {44,57}, {44,58}, {44,65}, {44,66},
+ {44,67}, {44,68}, {44,69}, {44,70}, {44,71}, {44,72}, {44,73}, {44,74},
+ {44,75}, {44,76}, {44,77}, {44,78}, {44,79}, {44,80}, {44,81}, {44,82},
+ {44,83}, {44,84}, {44,85}, {44,86}, {44,87}, {44,88}, {44,89}, {44,90},
+ {44,91}, {44,92}, {44,93}, {67,150}, {44,94}, {44,95}, {44,96}, {67,151},
+ {45,1}, {45,2}, {45,3}, {67,152}, {45,4}, {45,5}, {45,6}, {45,7}, {45,8},
+ {45,9}, {45,10}, {67,153}, {67,154}, {45,11}, {67,155}, {45,12}, {67,156},
+ {45,13}, {45,14}, {45,15}, {45,16}, {45,17}, {45,18}, {67,157}, {45,19},
+ {45,20}, {45,21}, {45,22}, {45,23}, {45,24}, {45,25}, {45,26}, {45,33},
+ {45,34}, {45,35}, {45,36}, {45,37}, {45,38}, {45,39}, {67,158}, {45,40},
+ {45,41}, {45,42}, {45,43}, {45,44}, {45,45}, {45,46}, {45,47}, {45,48},
+ {45,49}, {45,50}, {67,159}, {67,160}, {45,51}, {45,52}, {67,161}, {45,53},
+ {45,54}, {45,55}, {67,162}, {45,56}, {45,57}, {45,58}, {45,65}, {45,66},
+ {45,67}, {45,68}, {67,163}, {67,164}, {45,69}, {67,165}, {45,70}, {67,166},
+ {45,71}, {45,72}, {45,73}, {45,74}, {45,75}, {45,76}, {67,167}, {45,77},
+ {45,78}, {45,79}, {45,80}, {45,81}, {45,82}, {45,83}, {45,84}, {45,85},
+ {45,86}, {45,87}, {45,88}, {45,89}, {45,90}, {45,91}, {45,92}, {45,93},
+ {45,94}, {45,95}, {67,168}, {45,96}, {46,1}, {46,2}, {46,3}, {46,4},
+ {46,5}, {46,6}, {67,169}, {46,7}, {46,8}, {46,9}, {67,170}, {46,10},
+ {46,11}, {46,12}, {46,13}, {46,14}, {46,15}, {46,16}, {46,17}, {46,18},
+ {46,19}, {46,20}, {46,21}, {46,22}, {46,23}, {46,24}, {46,25}, {46,26},
+ {46,33}, {46,34}, {46,35}, {46,36}, {46,37}, {46,38}, {67,171}, {46,39},
+ {46,40}, {46,41}, {67,172}, {46,42}, {46,43}, {46,44}, {67,173}, {46,45},
+ {46,46}, {46,47}, {46,48}, {46,49}, {46,50}, {46,51}, {67,174}, {67,175},
+ {46,52}, {67,176}, {46,53}, {67,177}, {46,54}, {46,55}, {46,56}, {46,57},
+ {46,58}, {46,65}, {67,178}, {46,66}, {46,67}, {46,68}, {67,179}, {46,69},
+ {46,70}, {46,71}, {67,180}, {46,72}, {46,73}, {46,74}, {46,75}, {46,76},
+ {46,77}, {46,78}, {67,181}, {46,79}, {46,80}, {46,81}, {46,82}, {67,182},
+ {46,83}, {46,84}, {46,85}, {46,86}, {46,87}, {46,88}, {67,183}, {67,184},
+ {46,89}, {46,90}, {67,185}, {46,91}, {46,92}, {46,93}, {67,186}, {46,94},
+ {46,95}, {46,96}, {47,1}, {47,2}, {47,3}, {47,4}, {67,187}, {67,188},
+ {47,5}, {67,189}, {47,6}, {67,190}, {47,7}, {47,8}, {47,9}, {47,10},
+ {47,11}, {47,12}, {47,13}, {47,14}, {47,15}, {47,16}, {47,17}, {47,18},
+ {47,19}, {47,20}, {47,21}, {47,22}, {47,23}, {47,24}, {47,25}, {47,26},
+ {47,33}, {47,34}, {47,35}, {47,36}, {47,37}, {47,38}, {47,39}, {47,40},
+ {47,41}, {47,42}, {47,43}, {47,44}, {47,45}, {47,46}, {68,97}, {68,98},
+ {47,47}, {47,48}, {68,99}, {47,49}, {47,50}, {68,100}, {68,101}, {68,102},
+ {47,51}, {47,52}, {47,53}, {47,54}, {47,55}, {47,56}, {68,103}, {68,104},
+ {47,57}, {68,105}, {47,58}, {68,106}, {47,65}, {47,66}, {47,67}, {47,68},
+ {47,69}, {47,70}, {68,107}, {68,108}, {47,71}, {47,72}, {68,109}, {47,73},
+ {47,74}, {47,75}, {68,110}, {47,76}, {47,77}, {47,78}, {47,79}, {47,80},
+ {47,81}, {47,82}, {68,111}, {68,112}, {47,83}, {68,113}, {47,84}, {68,114},
+ {47,85}, {47,86}, {47,87}, {47,88}, {47,89}, {47,90}, {68,115}, {68,116},
+ {47,91}, {47,92}, {68,117}, {47,93}, {47,94}, {47,95}, {68,118}, {47,96},
+ {48,1}, {48,2}, {48,3}, {48,4}, {48,5}, {48,6}, {68,119}, {68,120},
+ {48,7}, {68,121}, {68,122}, {68,123}, {48,8}, {48,9}, {48,10}, {48,11},
+ {48,12}, {48,13}, {68,124}, {68,125}, {48,14}, {48,15}, {48,16}, {48,17},
+ {48,18}, {48,19}, {48,20}, {48,21}, {48,22}, {48,23}, {48,24}, {48,25},
+ {48,26}, {48,33}, {48,34}, {48,35}, {48,36}, {48,37}, {48,38}, {68,126},
+ {48,39}, {48,40}, {48,41}, {48,42}, {48,43}, {48,44}, {48,45}, {48,46},
+ {48,47}, {48,48}, {48,49}, {48,50}, {48,51}, {48,52}, {48,53}, {48,54},
+ {48,55}, {48,56}, {48,57}, {48,58}, {48,65}, {48,66}, {48,67}, {48,68},
+ {48,69}, {48,70}, {48,71}, {48,72}, {48,73}, {48,74}, {48,75}, {48,76},
+ {48,77}, {48,78}, {68,127}, {68,128}, {48,79}, {48,80}, {68,129}, {48,81},
+ {48,82}, {68,130}, {68,131}, {48,83}, {48,84}, {48,85}, {48,86}, {48,87},
+ {48,88}, {48,89}, {68,132}, {68,133}, {48,90}, {68,134}, {68,135},
+ {68,136}, {48,91}, {48,92}, {48,93}, {48,94}, {48,95}, {48,96}, {68,137},
+ {68,138}, {49,1}, {49,2}, {68,139}, {49,3}, {49,4}, {49,5}, {68,140},
+ {49,6}, {49,7}, {49,8}, {49,9}, {49,10}, {49,11}, {49,12}, {68,141},
+ {68,142}, {49,13}, {68,143}, {49,14}, {68,144}, {49,15}, {49,16}, {49,17},
+ {49,18}, {49,19}, {49,20}, {68,145}, {49,21}, {49,22}, {49,23}, {68,146},
+ {49,24}, {49,25}, {49,26}, {68,147}, {49,33}, {49,34}, {49,35}, {49,36},
+ {49,37}, {49,38}, {49,39}, {68,148}, {68,149}, {49,40}, {68,150}, {68,151},
+ {68,152}, {49,41}, {49,42}, {49,43}, {49,44}, {49,45}, {49,46}, {68,153},
+ {49,47}, {49,48}, {49,49}, {49,50}, {49,51}, {49,52}, {49,53}, {49,54},
+ {49,55}, {49,56}, {49,57}, {49,58}, {49,65}, {49,66}, {49,67}, {49,68},
+ {49,69}, {49,70}, {49,71}, {49,72}, {49,73}, {49,74}, {49,75}, {49,76},
+ {49,77}, {49,78}, {49,79}, {68,154}, {68,155}, {49,80}, {49,81}, {68,156},
+ {49,82}, {49,83}, {49,84}, {68,157}, {49,85}, {49,86}, {49,87}, {49,88},
+ {49,89}, {49,90}, {49,91}, {68,158}, {68,159}, {49,92}, {68,160}, {49,93},
+ {68,161}, {49,94}, {49,95}, {49,96}, {50,1}, {50,2}, {50,3}, {68,162},
+ {68,163}, {50,4}, {50,5}, {68,164}, {50,6}, {50,7}, {50,8}, {68,165},
+ {50,9}, {50,10}, {50,11}, {50,12}, {50,13}, {50,14}, {50,15}, {68,166},
+ {50,16}, {50,17}, {50,18}, {50,19}, {68,167}, {50,20}, {50,21}, {50,22},
+ {50,23}, {50,24}, {50,25}, {68,168}, {50,26}, {50,33}, {50,34}, {50,35},
+ {50,36}, {50,37}, {50,38}, {50,39}, {50,40}, {50,41}, {50,42}, {50,43},
+ {50,44}, {50,45}, {50,46}, {50,47}, {50,48}, {50,49}, {50,50}, {50,51},
+ {68,169}, {50,52}, {50,53}, {50,54}, {50,55}, {50,56}, {50,57}, {68,170},
+ {50,58}, {50,65}, {50,66}, {50,67}, {50,68}, {50,69}, {50,70}, {68,171},
+ {50,71}, {50,72}, {50,73}, {50,74}, {50,75}, {50,76}, {50,77}, {50,78},
+ {50,79}, {50,80}, {50,81}, {50,82}, {50,83}, {50,84}, {50,85}, {50,86},
+ {50,87}, {50,88}, {50,89}, {68,172}, {50,90}, {50,91}, {50,92}, {50,93},
+ {50,94}, {50,95}, {50,96}, {51,1}, {51,2}, {51,3}, {51,4}, {51,5},
+ {51,6}, {51,7}, {51,8}, {51,9}, {51,10}, {51,11}, {51,12}, {51,13},
+ {51,14}, {51,15}, {51,16}, {51,17}, {51,18}, {51,19}, {51,20}, {68,173},
+ {68,174}, {51,21}, {51,22}, {68,175}, {51,23}, {51,24}, {51,25}, {68,176},
+ {51,26}, {51,33}, {51,34}, {51,35}, {51,36}, {51,37}, {51,38}, {68,177},
+ {68,178}, {51,39}, {68,179}, {51,40}, {68,180}, {51,41}, {51,42}, {51,43},
+ {51,44}, {51,45}, {51,46}, {68,181}, {51,47}, {51,48}, {51,49}, {68,182},
+ {51,50}, {51,51}, {51,52}, {68,183}, {51,53}, {51,54}, {51,55}, {51,56},
+ {51,57}, {51,58}, {51,65}, {51,66}, {51,67}, {51,68}, {51,69}, {51,70},
+ {68,184}, {51,71}, {51,72}, {51,73}, {51,74}, {51,75}, {51,76}, {68,185},
+ {51,77}, {51,78}, {51,79}, {51,80}, {51,81}, {51,82}, {51,83}, {51,84},
+ {51,85}, {51,86}, {51,87}, {51,88}, {51,89}, {51,90}, {51,91}, {51,92},
+ {51,93}, {51,94}, {51,95}, {51,96}, {68,186}, {52,1}, {52,2}, {52,3},
+ {52,4}, {52,5}, {52,6}, {68,187}, {68,188}, {52,7}, {52,8}, {68,189},
+ {52,9}, {52,10}, {52,11}, {68,190}, {52,12}, {52,13}, {52,14}, {52,15},
+ {52,16}, {52,17}, {52,18}, {69,97}, {69,98}, {52,19}, {69,99}, {52,20},
+ {69,100}, {52,21}, {52,22}, {52,23}, {52,24}, {52,25}, {52,26}, {69,101},
+ {52,33}, {52,34}, {52,35}, {69,102}, {52,36}, {52,37}, {52,38}, {69,103},
+ {52,39}, {52,40}, {52,41}, {52,42}, {52,43}, {52,44}, {52,45}, {69,104},
+ {52,46}, {52,47}, {52,48}, {52,49}, {52,50}, {52,51}, {52,52}, {52,53},
+ {52,54}, {52,55}, {52,56}, {69,105}, {69,106}, {52,57}, {52,58}, {69,107},
+ {52,65}, {52,66}, {52,67}, {69,108}, {52,68}, {52,69}, {52,70}, {52,71},
+ {52,72}, {52,73}, {52,74}, {69,109}, {69,110}, {52,75}, {52,76}, {52,77},
+ {69,111}, {52,78}, {52,79}, {52,80}, {52,81}, {52,82}, {52,83}, {52,84},
+ {52,85}, {52,86}, {52,87}, {52,88}, {52,89}, {52,90}, {52,91}, {52,92},
+ {52,93}, {52,94}, {52,95}, {52,96}, {53,1}, {53,2}, {53,3}, {53,4},
+ {53,5}, {53,6}, {53,7}, {53,8}, {53,9}, {53,10}, {53,11}, {53,12},
+ {53,13}, {53,14}, {53,15}, {69,112}, {69,113}, {53,16}, {53,17}, {69,114},
+ {53,18}, {53,19}, {53,20}, {69,115}, {53,21}, {53,22}, {53,23}, {53,24},
+ {53,25}, {53,26}, {53,33}, {69,116}, {69,117}, {53,34}, {69,118}, {53,35},
+ {69,119}, {53,36}, {53,37}, {53,38}, {53,39}, {53,40}, {53,41}, {69,120},
+ {69,121}, {53,42}, {53,43}, {69,122}, {53,44}, {53,45}, {53,46}, {69,123},
+ {69,124}, {53,47}, {53,48}, {53,49}, {53,50}, {53,51}, {53,52}, {69,125},
+ {69,126}, {53,53}, {69,127}, {69,128}, {69,129}, {53,54}, {53,55},
+ {53,56}, {53,57}, {53,58}, {53,65}, {69,130}, {69,131}, {53,66}, {53,67},
+ {69,132}, {53,68}, {53,69}, {53,70}, {69,133}, {53,71}, {53,72}, {53,73},
+ {53,74}, {53,75}, {53,76}, {53,77}, {69,134}, {69,135}, {53,78}, {69,136},
+ {69,137}, {69,138}, {53,79}, {53,80}, {53,81}, {53,82}, {53,83}, {53,84},
+ {69,139}, {53,85}, {53,86}, {53,87}, {53,88}, {53,89}, {53,90}, {53,91},
+ {53,92}, {53,93}, {53,94}, {53,95}, {53,96}, {54,1}, {54,2}, {54,3},
+ {54,4}, {54,5}, {54,6}, {54,7}, {54,8}, {69,140}, {54,9}, {54,10},
+ {54,11}, {54,12}, {54,13}, {54,14}, {54,15}, {54,16}, {54,17}, {54,18},
+ {54,19}, {54,20}, {54,21}, {54,22}, {54,23}, {54,24}, {54,25}, {54,26},
+ {54,33}, {54,34}, {54,35}, {54,36}, {54,37}, {54,38}, {54,39}, {54,40},
+ {54,41}, {54,42}, {54,43}, {54,44}, {54,45}, {54,46}, {54,47}, {54,48},
+ {69,141}, {69,142}, {54,49}, {54,50}, {69,143}, {54,51}, {54,52}, {54,53},
+ {69,144}, {54,54}, {69,145}, {54,55}, {54,56}, {54,57}, {54,58}, {54,65},
+ {69,146}, {69,147}, {54,66}, {69,148}, {69,149}, {69,150}, {54,67},
+ {54,68}, {54,69}, {54,70}, {54,71}, {54,72}, {69,151}, {69,152}, {54,73},
+ {54,74}, {69,153}, {54,75}, {54,76}, {54,77}, {69,154}, {54,78}, {54,79},
+ {54,80}, {54,81}, {54,82}, {54,83}, {54,84}, {69,155}, {69,156}, {54,85},
+ {69,157}, {54,86}, {69,158}, {54,87}, {54,88}, {54,89}, {54,90}, {54,91},
+ {54,92}, {69,159}, {54,93}, {54,94}, {54,95}, {69,160}, {54,96}, {55,1},
+ {55,2}, {55,3}, {55,4}, {55,5}, {55,6}, {55,7}, {55,8}, {55,9}, {55,10},
+ {55,11}, {55,12}, {55,13}, {55,14}, {69,161}, {55,15}, {55,16}, {55,17},
+ {55,18}, {55,19}, {55,20}, {55,21}, {69,162}, {55,22}, {55,23}, {55,24},
+ {69,163}, {55,25}, {55,26}, {55,33}, {55,34}, {55,35}, {55,36}, {55,37},
+ {55,38}, {55,39}, {55,40}, {55,41}, {55,42}, {55,43}, {55,44}, {55,45},
+ {55,46}, {55,47}, {55,48}, {55,49}, {55,50}, {55,51}, {55,52}, {55,53},
+ {69,164}, {69,165}, {55,54}, {55,55}, {69,166}, {55,56}, {55,57}, {55,58},
+ {69,167}, {55,65}, {55,66}, {55,67}, {55,68}, {55,69}, {55,70}, {55,71},
+ {69,168}, {69,169}, {55,72}, {69,170}, {55,73}, {69,171}, {55,74},
+ {55,75}, {55,76}, {55,77}, {69,172}, {55,78}, {69,173}, {55,79}, {55,80},
+ {55,81}, {69,174}, {55,82}, {55,83}, {55,84}, {55,85}, {55,86}, {55,87},
+ {55,88}, {55,89}, {55,90}, {55,91}, {55,92}, {55,93}, {55,94}, {55,95},
+ {55,96}, {56,1}, {56,2}, {56,3}, {56,4}, {56,5}, {56,6}, {56,7}, {56,8},
+ {69,175}, {56,9}, {56,10}, {56,11}, {56,12}, {56,13}, {56,14}, {56,15},
+ {56,16}, {56,17}, {56,18}, {56,19}, {56,20}, {56,21}, {56,22}, {56,23},
+ {56,24}, {56,25}, {56,26}, {56,33}, {56,34}, {56,35}, {56,36}, {56,37},
+ {56,38}, {56,39}, {56,40}, {56,41}, {69,176}, {56,42}, {56,43}, {56,44},
+ {69,177}, {56,45}, {56,46}, {56,47}, {56,48}, {56,49}, {56,50}, {56,51},
+ {56,52}, {56,53}, {56,54}, {56,55}, {56,56}, {56,57}, {56,58}, {69,178},
+ {56,65}, {69,179}, {56,66}, {56,67}, {56,68}, {56,69}, {56,70}, {56,71},
+ {69,180}, {56,72}, {56,73}, {56,74}, {56,75}, {56,76}, {56,77}, {56,78},
+ {56,79}, {56,80}, {56,81}, {56,82}, {56,83}, {56,84}, {56,85}, {56,86},
+ {56,87}, {56,88}, {56,89}, {56,90}, {56,91}, {56,92}, {56,93}, {56,94},
+ {56,95}, {56,96}, {57,1}, {57,2}, {69,181}, {69,182}, {57,3}, {57,4},
+ {69,183}, {57,5}, {57,6}, {57,7}, {69,184}, {57,8}, {57,9}, {57,10},
+ {57,11}, {57,12}, {57,13}, {57,14}, {69,185}, {69,186}, {57,15}, {69,187},
+ {57,16}, {69,188}, {57,17}, {57,18}, {57,19}, {57,20}, {57,21}, {57,22},
+ {69,189}, {57,23}, {57,24}, {57,25}, {57,26}, {57,33}, {57,34}, {57,35},
+ {57,36}, {57,37}, {57,38}, {57,39}, {57,40}, {57,41}, {57,42}, {57,43},
+ {57,44}, {57,45}, {57,46}, {57,47}, {69,190}, {57,48}, {57,49}, {57,50},
+ {57,51}, {57,52}, {57,53}, {57,54}, {70,97}, {57,55}, {57,56}, {57,57},
+ {57,58}, {57,65}, {57,66}, {57,67}, {57,68}, {57,69}, {57,70}, {57,71},
+ {57,72}, {57,73}, {57,74}, {57,75}, {57,76}, {57,77}, {57,78}, {57,79},
+ {57,80}, {57,81}, {57,82}, {57,83}, {57,84}, {57,85}, {57,86}, {57,87},
+ {70,98}, {70,99}, {57,88}, {57,89}, {70,100}, {57,90}, {57,91}, {57,92},
+ {70,101}, {57,93}, {57,94}, {57,95}, {57,96}, {58,1}, {58,2}, {58,3},
+ {70,102}, {70,103}, {58,4}, {58,5}, {58,6}, {70,104}, {58,7}, {58,8},
+ {58,9}, {58,10}, {58,11}, {58,12}, {70,105}, {58,13}, {58,14}, {58,15},
+ {70,106}, {58,16}, {58,17}, {58,18}, {70,107}, {58,19}, {58,20}, {58,21},
+ {58,22}, {58,23}, {58,24}, {58,25}, {70,108}, {58,26}, {58,33}, {58,34},
+ {58,35}, {70,109}, {58,36}, {58,37}, {58,38}, {58,39}, {58,40}, {58,41},
+ {70,110}, {70,111}, {58,42}, {58,43}, {70,112}, {58,44}, {58,45}, {70,113},
+ {70,114}, {58,46}, {70,115}, {58,47}, {58,48}, {58,49}, {58,50}, {58,51},
+ {70,116}, {70,117}, {58,52}, {70,118}, {58,53}, {58,54}, {58,55}, {58,56},
+ {58,57}, {58,58}, {58,65}, {58,66}, {70,119}, {58,67}, {58,68}, {58,69},
+ {70,120}, {58,70}, {58,71}, {58,72}, {70,121}, {58,73}, {58,74}, {58,75},
+ {58,76}, {58,77}, {58,78}, {58,79}, {70,122}, {70,123}, {58,80}, {58,81},
+ {58,82}, {58,83}, {58,84}, {58,85}, {58,86}, {58,87}, {58,88}, {58,89},
+ {70,124}, {70,125}, {58,90}, {58,91}, {70,126}, {58,92}, {58,93}, {58,94},
+ {70,127}, {58,95}, {58,96}, {59,1}, {59,2}, {59,3}, {59,4}, {59,5},
+ {70,128}, {70,129}, {59,6}, {70,130}, {59,7}, {70,131}, {59,8}, {59,9},
+ {59,10}, {59,11}, {59,12}, {59,13}, {70,132}, {70,133}, {70,134}, {59,14},
+ {70,135}, {59,15}, {59,16}, {59,17}, {70,136}, {59,18}, {70,137}, {59,19},
+ {59,20}, {59,21}, {59,22}, {59,23}, {70,138}, {70,139}, {59,24}, {70,140},
+ {70,141}, {70,142}, {59,25}, {59,26}, {59,33}, {70,143}, {59,34}, {59,35},
+ {70,144}, {70,145}, {59,36}, {59,37}, {70,146}, {59,38}, {59,39}, {59,40},
+ {70,147}, {59,41}, {59,42}, {59,43}, {59,44}, {59,45}, {59,46}, {59,47},
+ {70,148}, {70,149}, {59,48}, {70,150}, {70,151}, {70,152}, {59,49},
+ {59,50}, {59,51}, {59,52}, {59,53}, {59,54}, {70,153}, {70,154}, {59,55},
+ {59,56}, {59,57}, {59,58}, {59,65}, {59,66}, {59,67}, {59,68}, {59,69},
+ {59,70}, {59,71}, {59,72}, {59,73}, {59,74}, {59,75}, {59,76}, {59,77},
+ {59,78}, {59,79}, {59,80}, {59,81}, {59,82}, {59,83}, {59,84}, {59,85},
+ {59,86}, {59,87}, {59,88}, {59,89}, {59,90}, {59,91}, {59,92}, {59,93},
+ {59,94}, {59,95}, {59,96}, {60,1}, {60,2}, {60,3}, {60,4}, {60,5},
+ {60,6}, {60,7}, {60,8}, {60,9}, {60,10}, {60,11}, {60,12}, {60,13},
+ {60,14}, {60,15}, {60,16}, {60,17}, {60,18}, {70,155}, {70,156}, {60,19},
+ {60,20}, {70,157}, {60,21}, {60,22}, {60,23}, {70,158}, {60,24}, {60,25},
+ {60,26}, {60,33}, {60,34}, {60,35}, {60,36}, {70,159}, {70,160}, {60,37},
+ {70,161}, {70,162}, {70,163}, {60,38}, {60,39}, {60,40}, {60,41}, {60,42},
+ {60,43}, {70,164}, {70,165}, {60,44}, {60,45}, {70,166}, {60,46}, {60,47},
+ {60,48}, {70,167}, {60,49}, {60,50}, {60,51}, {60,52}, {60,53}, {60,54},
+ {60,55}, {70,168}, {70,169}, {60,56}, {70,170}, {60,57}, {70,171},
+ {60,58}, {60,65}, {60,66}, {60,67}, {60,68}, {60,69}, {70,172}, {60,70},
+ {60,71}, {60,72}, {70,173}, {60,73}, {60,74}, {60,75}, {70,174}, {60,76},
+ {60,77}, {60,78}, {60,79}, {60,80}, {60,81}, {60,82}, {70,175}, {70,176},
+ {60,83}, {60,84}, {70,177}, {70,178}, {60,85}, {60,86}, {60,87}, {60,88},
+ {60,89}, {60,90}, {70,179}, {60,91}, {60,92}, {60,93}, {60,94}, {60,95},
+ {60,96}, {61,1}, {70,180}, {61,2}, {61,3}, {61,4}, {61,5}, {61,6},
+ {61,7}, {61,8}, {61,9}, {70,181}, {61,10}, {70,182}, {61,11}, {61,12},
+ {61,13}, {61,14}, {61,15}, {61,16}, {61,17}, {61,18}, {70,183}, {70,184},
+ {61,19}, {61,20}, {70,185}, {61,21}, {61,22}, {61,23}, {70,186}, {61,24},
+ {61,25}, {61,26}, {61,33}, {61,34}, {61,35}, {61,36}, {70,187}, {70,188},
+ {61,37}, {70,189}, {61,38}, {70,190}, {61,39}, {61,40}, {61,41}, {61,42},
+ {61,43}, {61,44}, {71,97}, {61,45}, {61,46}, {61,47}, {61,48}, {61,49},
+ {61,50}, {61,51}, {61,52}, {61,53}, {61,54}, {61,55}, {61,56}, {61,57},
+ {61,58}, {61,65}, {61,66}, {61,67}, {61,68}, {61,69}, {61,70}, {71,98},
+ {61,71}, {61,72}, {61,73}, {61,74}, {61,75}, {61,76}, {61,77}, {61,78},
+ {61,79}, {61,80}, {61,81}, {61,82}, {61,83}, {61,84}, {61,85}, {61,86},
+ {61,87}, {61,88}, {61,89}, {61,90}, {61,91}, {61,92}, {61,93}, {61,94},
+ {61,95}, {61,96}, {62,1}, {62,2}, {62,3}, {62,4}, {62,5}, {62,6}, {62,7},
+ {62,8}, {71,99}, {62,9}, {62,10}, {62,11}, {71,100}, {62,12}, {62,13},
+ {62,14}, {62,15}, {62,16}, {62,17}, {62,18}, {62,19}, {62,20}, {62,21},
+ {62,22}, {62,23}, {62,24}, {62,25}, {62,26}, {62,33}, {62,34}, {62,35},
+ {62,36}, {62,37}, {62,38}, {62,39}, {62,40}, {71,101}, {62,41}, {62,42},
+ {62,43}, {71,102}, {62,44}, {62,45}, {62,46}, {71,103}, {62,47}, {62,48},
+ {62,49}, {62,50}, {62,51}, {62,52}, {62,53}, {62,54}, {71,104}, {62,55},
+ {71,105}, {62,56}, {62,57}, {62,58}, {62,65}, {62,66}, {62,67}, {62,68},
+ {62,69}, {71,106}, {71,107}, {62,70}, {62,71}, {71,108}, {62,72}, {62,73},
+ {71,109}, {71,110}, {62,74}, {71,111}, {62,75}, {62,76}, {62,77}, {62,78},
+ {62,79}, {71,112}, {71,113}, {62,80}, {71,114}, {62,81}, {71,115},
+ {62,82}, {62,83}, {62,84}, {62,85}, {62,86}, {62,87}, {71,116}, {62,88},
+ {62,89}, {62,90}, {62,91}, {62,92}, {62,93}, {62,94}, {62,95}, {62,96},
+ {63,1}, {63,2}, {63,3}, {63,4}, {63,5}, {63,6}, {63,7}, {63,8}, {63,9},
+ {63,10}, {63,11}, {71,117}, {63,12}, {63,13}, {63,14}, {63,15}, {63,16},
+ {63,17}, {63,18}, {63,19}, {63,20}, {63,21}, {63,22}, {63,23}, {63,24},
+ {63,25}, {63,26}, {63,33}, {63,34}, {63,35}, {63,36}, {63,37}, {63,38},
+ {63,39}, {63,40}, {63,41}, {63,42}, {63,43}, {63,44}, {63,45}, {63,46},
+ {63,47}, {63,48}, {63,49}, {63,50}, {63,51}, {71,118}, {63,52}, {63,53},
+ {63,54}, {71,119}, {63,55}, {63,56}, {63,57}, {71,120}, {63,58}, {63,65},
+ {63,66}, {63,67}, {63,68}, {63,69}, {63,70}, {71,121}, {63,71}, {63,72},
+ {71,122}, {63,73}, {63,74}, {63,75}, {63,76}, {63,77}, {63,78}, {63,79},
+ {63,80}, {71,123}, {63,81}, {63,82}, {63,83}, {71,124}, {63,84}, {63,85},
+ {63,86}, {71,125}, {63,87}, {63,88}, {63,89}, {63,90}, {63,91}, {63,92},
+ {63,93}, {71,126}, {63,94}, {63,95}, {71,127}, {63,96}, {71,128}, {64,1},
+ {64,2}, {64,3}, {64,4}, {64,5}, {64,6}, {71,129}, {64,7}, {64,8}, {64,9},
+ {71,130}, {64,10}, {64,11}, {64,12}, {71,131}, {64,13}, {64,14}, {64,15},
+ {64,16}, {64,17}, {64,18}, {64,19}, {71,132}, {71,133}, {64,20}, {71,134},
+ {64,21}, {64,22}, {64,23}, {64,24}, {64,25}, {64,26}, {64,33}, {64,34},
+ {64,35}, {64,36}, {64,37}, {64,38}, {64,39}, {64,40}, {64,41}, {64,42},
+ {64,43}, {64,44}, {64,45}, {64,46}, {64,47}, {64,48}, {64,49}, {64,50},
+ {64,51}, {64,52}, {64,53}, {64,54}, {64,55}, {64,56}, {64,57}, {64,58},
+ {64,65}, {64,66}, {64,67}, {64,68}, {71,135}, {71,136}, {64,69}, {64,70},
+ {71,137}, {64,71}, {64,72}, {64,73}, {71,138}, {64,74}, {64,75}, {64,76},
+ {64,77}, {64,78}, {64,79}, {64,80}, {71,139}, {71,140}, {64,81}, {71,141},
+ {64,82}, {71,142}, {64,83}, {64,84}, {64,85}, {64,86}, {64,87}, {64,88},
+ {71,143}, {71,144}, {64,89}, {64,90}, {71,145}, {64,91}, {64,92}, {64,93},
+ {71,146}, {64,94}, {64,95}, {64,96}, {65,1}, {71,147}, {65,2}, {65,3},
+ {71,148}, {71,149}, {65,4}, {71,150}, {65,5}, {71,151}, {65,6}, {65,7},
+ {65,8}, {65,9}, {65,10}, {65,11}, {71,152}, {71,153}, {65,12}, {65,13},
+ {71,154}, {65,14}, {65,15}, {65,16}, {71,155}, {65,17}, {65,18}, {65,19},
+ {65,20}, {65,21}, {65,22}, {65,23}, {71,156}, {71,157}, {65,24}, {71,158},
+ {71,159}, {71,160}, {65,25}, {65,26}, {65,33}, {65,34}, {65,35}, {65,36},
+ {71,161}, {65,37}, {65,38}, {65,39}, {65,40}, {65,41}, {65,42}, {65,43},
+ {65,44}, {65,45}, {65,46}, {65,47}, {65,48}, {65,49}, {65,50}, {65,51},
+ {65,52}, {65,53}, {65,54}, {65,55}, {65,56}, {71,162}, {65,57}, {65,58},
+ {65,65}, {65,66}, {65,67}, {65,68}, {65,69}, {65,70}, {65,71}, {65,72},
+ {65,73}, {65,74}, {65,75}, {65,76}, {65,77}, {65,78}, {65,79}, {65,80},
+ {65,81}, {65,82}, {65,83}, {65,84}, {65,85}, {65,86}, {65,87}, {65,88},
+ {65,89}, {65,90}, {65,91}, {65,92}, {65,93}, {65,94}, {65,95}, {65,96},
+ {71,163}, {71,164}, {66,1}, {66,2}, {71,165}, {66,3}, {66,4}, {66,5},
+ {71,166}, {66,6}, {71,167}, {66,7}, {66,8}, {66,9}, {66,10}, {66,11},
+ {71,168}, {71,169}, {66,12}, {71,170}, {66,13}, {71,171}, {66,14},
+ {66,15}, {66,16}, {66,17}, {66,18}, {66,19}, {71,172}, {71,173}, {66,20},
+ {66,21}, {71,174}, {66,22}, {66,23}, {66,24}, {71,175}, {66,25}, {66,26},
+ {66,33}, {66,34}, {66,35}, {66,36}, {66,37}, {71,176}, {71,177}, {66,38},
+ {71,178}, {66,39}, {71,179}, {66,40}, {66,41}, {66,42}, {66,43}, {66,44},
+ {66,45}, {71,180}, {71,181}, {66,46}, {66,47}, {71,182}, {66,48}, {66,49},
+ {66,50}, {71,183}, {66,51}, {66,52}, {66,53}, {66,54}, {66,55}, {66,56},
+ {66,57}, {71,184}, {71,185}, {66,58}, {71,186}, {71,187}, {71,188},
+ {66,65}, {66,66}, {66,67}, {66,68}, {66,69}, {66,70}, {71,189}, {66,71},
+ {66,72}, {66,73}, {71,190}, {66,74}, {66,75}, {66,76}, {72,97}, {66,77},
+ {66,78}, {66,79}, {66,80}, {66,81}, {66,82}, {66,83}, {66,84}, {72,98},
+ {66,85}, {66,86}, {66,87}, {66,88}, {66,89}, {66,90}, {66,91}, {66,92},
+ {66,93}, {66,94}, {72,99}, {72,100}, {66,95}, {66,96}, {72,101}, {67,1},
+ {67,2}, {67,3}, {72,102}, {67,4}, {67,5}, {67,6}, {67,7}, {72,103},
+ {67,8}, {67,9}, {72,104}, {72,105}, {67,10}, {72,106}, {67,11}, {72,107},
+ {67,12}, {67,13}, {67,14}, {72,108}, {67,15}, {67,16}, {72,109}, {72,110},
+ {67,17}, {67,18}, {72,111}, {67,19}, {67,20}, {67,21}, {72,112}, {67,22},
+ {67,23}, {67,24}, {67,25}, {67,26}, {67,33}, {67,34}, {67,35}, {67,36},
+ {67,37}, {72,113}, {67,38}, {72,114}, {67,39}, {67,40}, {67,41}, {67,42},
+ {67,43}, {67,44}, {72,115}, {72,116}, {67,45}, {67,46}, {72,117}, {67,47},
+ {67,48}, {67,49}, {67,50}, {67,51}, {67,52}, {67,53}, {67,54}, {67,55},
+ {67,56}, {67,57}, {67,58}, {67,65}, {67,66}, {72,118}, {67,67}, {72,119},
+ {67,68}, {67,69}, {67,70}, {67,71}, {67,72}, {67,73}, {72,120}, {72,121},
+ {67,74}, {67,75}, {72,122}, {67,76}, {67,77}, {67,78}, {72,123}, {67,79},
+ {67,80}, {67,81}, {67,82}, {67,83}, {67,84}, {67,85}, {67,86}, {72,124},
+ {67,87}, {72,125}, {67,88}, {72,126}, {67,89}, {67,90}, {67,91}, {67,92},
+ {67,93}, {67,94}, {72,127}, {67,95}, {67,96}, {68,1}, {72,128}, {68,2},
+ {68,3}, {68,4}, {72,129}, {68,5}, {68,6}, {68,7}, {68,8}, {68,9}, {68,10},
+ {68,11}, {68,12}, {72,130}, {68,13}, {72,131}, {68,14}, {68,15}, {68,16},
+ {68,17}, {68,18}, {68,19}, {68,20}, {68,21}, {72,132}, {72,133}, {68,22},
+ {68,23}, {72,134}, {68,24}, {68,25}, {68,26}, {72,135}, {68,33}, {68,34},
+ {68,35}, {68,36}, {72,136}, {68,37}, {68,38}, {72,137}, {68,39}, {68,40},
+ {72,138}, {68,41}, {72,139}, {68,42}, {68,43}, {68,44}, {68,45}, {68,46},
+ {68,47}, {72,140}, {68,48}, {68,49}, {68,50}, {72,141}, {68,51}, {68,52},
+ {68,53}, {72,142}, {68,54}, {68,55}, {68,56}, {68,57}, {68,58}, {68,65},
+ {68,66}, {72,143}, {68,67}, {68,68}, {68,69}, {68,70}, {72,144}, {68,71},
+ {68,72}, {68,73}, {68,74}, {68,75}, {68,76}, {72,145}, {72,146}, {68,77},
+ {68,78}, {72,147}, {68,79}, {68,80}, {68,81}, {72,148}, {68,82}, {68,83},
+ {68,84}, {68,85}, {68,86}, {68,87}, {68,88}, {68,89}, {68,90}, {68,91},
+ {68,92}, {68,93}, {72,149}, {68,94}, {68,95}, {68,96}, {69,1}, {69,2},
+ {69,3}, {72,150}, {72,151}, {69,4}, {69,5}, {72,152}, {69,6}, {69,7},
+ {69,8}, {72,153}, {69,9}, {69,10}, {69,11}, {69,12}, {69,13}, {69,14},
+ {69,15}, {72,154}, {72,155}, {69,16}, {72,156}, {69,17}, {72,157},
+ {69,18}, {69,19}, {69,20}, {69,21}, {69,22}, {69,23}, {72,158}, {72,159},
+ {69,24}, {69,25}, {72,160}, {69,26}, {69,33}, {69,34}, {72,161}, {69,35},
+ {69,36}, {69,37}, {69,38}, {69,39}, {69,40}, {69,41}, {72,162}, {69,42},
+ {69,43}, {72,163}, {69,44}, {72,164}, {69,45}, {69,46}, {69,47}, {69,48},
+ {69,49}, {69,50}, {72,165}, {72,166}, {69,51}, {69,52}, {72,167}, {69,53},
+ {72,168}, {72,169}, {72,170}, {72,171}, {69,54}, {69,55}, {69,56},
+ {69,57}, {69,58}, {69,65}, {72,172}, {72,173}, {69,66}, {72,174}, {69,67},
+ {72,175}, {69,68}, {69,69}, {69,70}, {72,176}, {69,71}, {69,72}, {72,177},
+ {69,73}, {69,74}, {69,75}, {72,178}, {69,76}, {69,77}, {69,78}, {72,179},
+ {69,79}, {69,80}, {69,81}, {69,82}, {69,83}, {69,84}, {69,85}, {72,180},
+ {72,181}, {69,86}, {69,87}, {69,88}, {72,182}, {69,89}, {69,90}, {69,91},
+ {69,92}, {69,93}, {69,94}, {72,183}, {72,184}, {69,95}, {69,96}, {72,185},
+ {70,1}, {70,2}, {70,3}, {72,186}, {70,4}, {70,5}, {70,6}, {70,7}, {70,8},
+ {70,9}, {70,10}, {72,187}, {72,188}, {70,11}, {72,189}, {70,12}, {72,190},
+ {70,13}, {70,14}, {70,15}, {70,16}, {70,17}, {70,18}, {75,144}, {75,150},
+ {75,167}, {77,143}, {77,168}, {78,109}, {79,187}, {80,98}, {80,120},
+ {80,144}, {80,157}, {81,148}, {81,149}, {81,152}, {81,155}, {81,156},
+ {81,157}, {81,158}, {81,159}, {81,160}, {81,162}, {81,163}, {81,164},
+ {81,165}, {81,166}, {81,168}, {81,169}, {81,170}, {81,171}, {81,173},
+ {81,175}, {81,176}, {81,178}, {81,182}, {81,186}, {81,188}, {81,189},
+ {81,190}, {82,98}, {82,99}, {82,103}, {82,104}, {82,105}, {82,106},
+ {82,107}, {82,109}, {82,114}, {82,126}, {82,130}, {82,131}, {82,132},
+ {82,134}, {82,135}, {82,136}, {82,137}, {82,138}, {82,139}, {82,141},
+ {82,142}, {82,143}, {82,144}, {82,145}, {82,146}, {82,147}, {82,148},
+ {82,149}, {82,150}, {82,151}, {82,153}, {82,154}, {82,158}, {82,159},
+ {82,161}, {82,162}, {82,164}, {82,165}, {82,166}, {82,167}, {82,168},
+ {82,169}, {82,170}, {82,171}, {82,176}, {82,177}, {82,178}, {82,179},
+ {82,180}, {82,181}, {82,183}, {82,184}, {84,166}, {84,188}, {85,101},
+ {85,107}, {85,110}, {86,120}, {86,141}, {87,139}, {87,164}, {91,133},
+ {91,164}, {92,101}, {93,101}, {93,149}, {93,180}, {94,188}, {94,190},
+ {95,115}, {95,161}, {95,168}, {96,177}, {97,109}, {97,173}, {99,181},
+ {100,97}, {100,105}, {101,110}, {101,113}, {101,114}, {101,121}, {101,123},
+ {101,124}, {101,132}, {101,142}, {101,144}, {101,146}, {101,150}, {101,186},
+ {101,187}, {101,188}, {101,190}, {102,97}, {102,100}, {102,103}, {102,109},
+ {102,111}, {102,112}, {102,113}, {102,115}, {102,119}, {102,120}, {102,124},
+ {102,132}, {102,134}, {102,135}, {102,138}, {102,146}, {102,150}, {102,153},
+ {102,156}, {102,159}, {102,161}, {102,164}, {102,165}, {102,166}, {102,168},
+ {102,170}, {102,171}, {102,172}, {102,175}, {102,177}, {102,178}, {102,181},
+ {102,182}, {102,183}, {102,185}, {103,97}, {103,102}, {103,105}, {103,106},
+ {103,108}, {103,109}, {103,112}, {103,127}, {103,129}, {103,134}, {103,135},
+ {103,139}, {103,141}, {103,143}, {103,144}, {103,147}, {103,159}, {103,164},
+ {103,166}, {103,183}, {104,167}, {104,168}, {104,176}, {104,177}, {104,183},
+ {104,185}, {104,187}, {104,190}, {105,103}, {105,108}, {105,140}, {105,183},
+ {106,129}, {106,165}, {106,180}, {106,183}, {106,188}, {106,190}, {107,100},
+ {107,103}, {107,105}, {107,106}, {107,122}, {107,123}, {107,125}, {107,129},
+ {107,130}, {107,134}, {107,135}, {107,140}, {107,143}, {107,144}, {107,145},
+ {107,146}, {107,152}, {108,102}, {108,103}, {108,106}, {108,111}, {108,112},
+ {108,113}, {108,114}, {108,117}, {108,120}, {108,122}, {108,128}, {108,129},
+ {108,133}, {108,134}, {108,137}, {108,138}, {108,149}, {108,157}, {108,158},
+ {108,161}, {108,164}, {108,167}, {108,168}, {108,183}, {108,184}, {108,186},
+ {109,97}, {109,98}, {109,99}, {109,174}, {110,155}, {114,125}, {114,186},
+ {115,113}, {116,103}, {116,174}, {118,180}, {118,182}, {119,120}, {119,136},
+ {119,147}, {120,155}, {120,176}, {122,97}, {122,98}, {122,166}, {124,105},
+ {35,97}, {35,98}, {35,99}, {35,100}, {35,101}, {35,102}, {35,103},
+ {35,104}, {35,105}, {35,106}, {35,107}, {35,108}, {35,109}, {35,110},
+ {35,111}, {35,112}, {35,113}, {35,114}, {35,115}, {35,116}, {35,117},
+ {35,118}, {35,119}, {35,120}, {35,121}, {35,122}, {35,123}, {35,124},
+ {35,125}, {35,126}, {35,127}, {35,128}, {35,129}, {35,130}, {35,131},
+ {35,132}, {35,133}, {35,134}, {35,135}, {35,136}, {35,137}, {35,138},
+ {35,139}, {35,140}, {35,141}, {35,142}, {35,143}, {35,144}, {35,145},
+ {35,146}, {35,147}, {35,148}, {35,149}, {35,150}, {35,151}, {35,152},
+ {35,153}, {35,154}, {35,155}, {33,108}, {35,157}, {35,158}, {35,159},
+ {35,160}, {35,161}, {35,162}, {35,163}, {35,164}, {35,165}, {35,166},
+ {35,167}, {35,168}, {35,169}, {35,170}, {35,171}, {35,172}, {35,173},
+ {35,174}, {35,175}, {35,176}, {35,177}, {35,178}, {35,179}, {35,180},
+ {35,181}, {35,182}, {35,183}, {35,184}, {35,185}, {35,186}, {35,187},
+ {35,188}, {35,189}, {34,102}, {33,139}, {33,140}, {33,190}, {35,190},
+ {33,141}, {35,156}
+};
+
+/* This returns ERROR if the code point doesn't exist. */
+long int cp949_to_unicode(int r, int c)
+{
+ assert(r >= 0 && r < 128);
+ assert(c >= 0 && c < 192);
+ return cp949_forward[r][c];
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_cp949(long int unicode, int *r, int *c)
+{
+ int rr, cc;
+ long int uu;
+ int i, j, k;
+
+ i = -1;
+ j = lenof(cp949_backward);
+ while (j - i > 1) {
+ k = (i + j) / 2;
+ rr = cp949_backward[k].r;
+ cc = cp949_backward[k].c;
+ uu = cp949_forward[rr][cc];
+ if (unicode > uu)
+ i = k;
+ else if (unicode < uu)
+ j = k;
+ else {
+ *r = rr;
+ *c = cc;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/* Functions dealing with the KS X 1001 square subset */
+long int ksx1001_to_unicode(int r, int c)
+{
+ assert(r >= 0 && r < 94);
+ assert(c >= 0 && c < 94);
+ return cp949_forward[r+0x21][c+0x61];
+}
+
+/* This one returns 1 on success, 0 if the code point doesn't exist. */
+int unicode_to_ksx1001(long int unicode, int *r, int *c)
+{
+ int rr, cc;
+ if (!unicode_to_cp949(unicode, &rr, &cc))
+ return 0;
+ rr -= 0x21;
+ cc -= 0x61;
+ if (rr < 0 || rr >= 94 || cc < 0 || cc >= 94)
+ return 0;
+ *r = rr;
+ *c = cc;
+ return 1;
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+
+int main(void)
+{
+ int r, c, rr, cc, ret;
+ long int u, uu;
+
+ for (r = 0; r < 128; r++) {
+ for (c = 0; c < 192; c++) {
+ u = cp949_to_unicode(r, c);
+ if (u != ERROR) {
+ ret = unicode_to_cp949(u, &rr, &cc);
+ if (!ret)
+ printf("(%d,%d) -> U-%08lx but didn't convert back\n",
+ r, c, u);
+ else if (rr != r || cc != c)
+ printf("(%d,%d) -> U-%08lx -> (%d,%d)\n",
+ r, c, u, rr, cc);
+ }
+ }
+ }
+
+ for (u = 0; u < 0x10000L; u++) {
+ ret = unicode_to_cp949(u, &r, &c);
+ if (ret) {
+ uu = cp949_to_unicode(r, c);
+ if (uu == ERROR)
+ printf("U-%08lx -> (%d,%d) but didn't convert back\n",
+ u, r, c);
+ else if (uu != u)
+ printf("U-%08lx -> (%d,%d) -> U-%08lx\n", u, r, c, uu);
+ }
+ }
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/charset/locale.c b/app/tools/halibut/charset/locale.c
new file mode 100644
index 0000000..6710d1b
--- /dev/null
+++ b/app/tools/halibut/charset/locale.c
@@ -0,0 +1,93 @@
+/*
+ * locale.c: try very hard to figure out the libcharset charset
+ * identifier corresponding to the current C library locale.
+ *
+ * This function works by calling nl_langinfo(CODESET) if
+ * available; failing that, it will try to figure it out manually
+ * by examining the locale environment variables. Code for the
+ * latter is adapted from Markus Kuhn's public-domain
+ * implementation of nl_langinfo(CODESET), available at
+ *
+ * http://www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include "charset.h"
+
+#ifdef HAS_LANGINFO_CODESET
+#include "langinfo.h"
+#endif
+
+int charset_from_locale(void)
+{
+ char *l, *p;
+
+#ifdef HAS_LANGINFO_CODESET
+ int charset;
+ char const *csname;
+
+ csname = nl_langinfo(CODESET);
+ if (csname &&
+ (charset = charset_from_localenc(csname)) != CS_NONE)
+ return charset;
+#endif
+
+ if (((l = getenv("LC_ALL")) && *l) ||
+ ((l = getenv("LC_CTYPE")) && *l) ||
+ ((l = getenv("LANG")) && *l)) {
+ /* check standardized locales */
+ if (!strcmp(l, "C") || !strcmp(l, "POSIX"))
+ return CS_ASCII;
+ /* check for encoding name fragment */
+ if (strstr(l, "UTF") || strstr(l, "utf"))
+ return CS_UTF8;
+ if ((p = strstr(l, "8859-"))) {
+ char buf[16];
+ int charset;
+
+ memcpy(buf, "ISO-8859-\0\0", 12);
+ p += 5;
+ if ((*p) >= '0' && (*p) <= '9') {
+ buf[9] = *p++;
+ if ((*p) >= '0' && (*p) <= '9') buf[10] = *p++;
+ if ((charset = charset_from_localenc(buf)) != CS_NONE)
+ return charset;
+ }
+ }
+ if (strstr(l, "KOI8-RU")) return CS_KOI8_RU;
+ if (strstr(l, "KOI8-R")) return CS_KOI8_R;
+ if (strstr(l, "KOI8-U")) return CS_KOI8_U;
+ /* if (strstr(l, "620")) return "TIS-620"; */
+ if (strstr(l, "2312")) return CS_EUC_CN;
+ /* if (strstr(l, "HKSCS")) return "Big5HKSCS"; */
+ if (strstr(l, "Big5") || strstr(l, "BIG5")) return CS_BIG5;
+ /* if (strstr(l, "GBK")) return "GBK"; */
+ /* if (strstr(l, "18030")) return "GB18030"; */
+ if (strstr(l, "Shift_JIS") || strstr(l, "SJIS")) return CS_SHIFT_JIS;
+ /* check for conclusive modifier */
+ if (strstr(l, "euro")) return CS_ISO8859_15;
+ /* check for language (and perhaps country) codes */
+ if (strstr(l, "zh_TW")) return CS_BIG5;
+ /* if (strstr(l, "zh_HK")) return "Big5HKSCS"; */
+ if (strstr(l, "zh")) return CS_EUC_CN;
+ if (strstr(l, "ja")) return CS_EUC_JP;
+ if (strstr(l, "ko")) return CS_EUC_KR;
+ if (strstr(l, "ru")) return CS_KOI8_R;
+ if (strstr(l, "uk")) return CS_KOI8_U;
+ if (strstr(l, "pl") || strstr(l, "hr") ||
+ strstr(l, "hu") || strstr(l, "cs") ||
+ strstr(l, "sk") || strstr(l, "sl")) return CS_ISO8859_2;
+ if (strstr(l, "eo") || strstr(l, "mt")) return CS_ISO8859_3;
+ if (strstr(l, "el")) return CS_ISO8859_7;
+ if (strstr(l, "he")) return CS_ISO8859_8;
+ if (strstr(l, "tr")) return CS_ISO8859_9;
+ /* if (strstr(l, "th")) return "TIS-620"; */
+ if (strstr(l, "lt")) return CS_ISO8859_13;
+ if (strstr(l, "cy")) return CS_ISO8859_14;
+ if (strstr(l, "ro")) return CS_ISO8859_2; /* or ISO-8859-16 */
+ if (strstr(l, "am") || strstr(l, "vi")) return CS_UTF8;
+ return CS_ISO8859_1;
+ }
+ return CS_ASCII;
+}
diff --git a/app/tools/halibut/charset/localenc.c b/app/tools/halibut/charset/localenc.c
new file mode 100644
index 0000000..115ea7c
--- /dev/null
+++ b/app/tools/halibut/charset/localenc.c
@@ -0,0 +1,174 @@
+/*
+ * local.c - translate our internal character set codes to and from
+ * our own set of plausibly legible character-set names. Also
+ * provides a canonical name for each encoding (useful for software
+ * announcing what character set it will be using), and a set of
+ * enumeration functions which return a list of supported
+ * encodings one by one.
+ *
+ * Also in this table are other ways people might plausibly refer
+ * to a charset (for example, Win1252 as well as CP1252). Where
+ * more than one string is given for a particular character set,
+ * the first one is the canonical one returned by
+ * charset_to_localenc.
+ *
+ * charset_from_localenc will attempt all other text translations
+ * as well as this table, to maximise the number of different ways
+ * you can select a supported charset.
+ */
+
+#include <ctype.h>
+#include "charset.h"
+#include "internal.h"
+
+static const struct {
+ const char *name;
+ int charset;
+ int return_in_enum; /* enumeration misses some charsets */
+} localencs[] = {
+ { "<UNKNOWN>", CS_NONE, 0 },
+ { "ASCII", CS_ASCII, 1 },
+ { "BS 4730", CS_BS4730, 1 },
+ { "ISO-8859-1", CS_ISO8859_1, 1 },
+ { "ISO-8859-1 with X11 line drawing", CS_ISO8859_1_X11, 0 },
+ { "ISO-8859-2", CS_ISO8859_2, 1 },
+ { "ISO-8859-3", CS_ISO8859_3, 1 },
+ { "ISO-8859-4", CS_ISO8859_4, 1 },
+ { "ISO-8859-5", CS_ISO8859_5, 1 },
+ { "ISO-8859-6", CS_ISO8859_6, 1 },
+ { "ISO-8859-7", CS_ISO8859_7, 1 },
+ { "ISO-8859-8", CS_ISO8859_8, 1 },
+ { "ISO-8859-9", CS_ISO8859_9, 1 },
+ { "ISO-8859-10", CS_ISO8859_10, 1 },
+ { "ISO-8859-11", CS_ISO8859_11, 1 },
+ { "ISO-8859-13", CS_ISO8859_13, 1 },
+ { "ISO-8859-14", CS_ISO8859_14, 1 },
+ { "ISO-8859-15", CS_ISO8859_15, 1 },
+ { "ISO-8859-16", CS_ISO8859_16, 1 },
+ { "CP437", CS_CP437, 1 },
+ { "CP850", CS_CP850, 1 },
+ { "CP866", CS_CP866, 1 },
+ { "CP1250", CS_CP1250, 1 },
+ { "Win1250", CS_CP1250, 0 },
+ { "CP1251", CS_CP1251, 1 },
+ { "Win1251", CS_CP1251, 0 },
+ { "CP1252", CS_CP1252, 1 },
+ { "Win1252", CS_CP1252, 0 },
+ { "CP1253", CS_CP1253, 1 },
+ { "Win1253", CS_CP1253, 0 },
+ { "CP1254", CS_CP1254, 1 },
+ { "Win1254", CS_CP1254, 0 },
+ { "CP1255", CS_CP1255, 1 },
+ { "Win1255", CS_CP1255, 0 },
+ { "CP1256", CS_CP1256, 1 },
+ { "Win1256", CS_CP1256, 0 },
+ { "CP1257", CS_CP1257, 1 },
+ { "Win1257", CS_CP1257, 0 },
+ { "CP1258", CS_CP1258, 1 },
+ { "Win1258", CS_CP1258, 0 },
+ { "KOI8-R", CS_KOI8_R, 1 },
+ { "KOI8-U", CS_KOI8_U, 1 },
+ { "KOI8-RU", CS_KOI8_RU, 1 },
+ { "JIS X 0201", CS_JISX0201, 1 },
+ { "JIS-X-0201", CS_JISX0201, 0 },
+ { "JIS_X_0201", CS_JISX0201, 0 },
+ { "JISX0201", CS_JISX0201, 0 },
+ { "Mac Roman", CS_MAC_ROMAN, 1 },
+ { "Mac Turkish", CS_MAC_TURKISH, 1 },
+ { "Mac Croatian", CS_MAC_CROATIAN, 1 },
+ { "Mac Iceland", CS_MAC_ICELAND, 1 },
+ { "Mac Romanian", CS_MAC_ROMANIAN, 1 },
+ { "Mac Greek", CS_MAC_GREEK, 1 },
+ { "Mac Cyrillic", CS_MAC_CYRILLIC, 1 },
+ { "Mac Thai", CS_MAC_THAI, 1 },
+ { "Mac Centeuro", CS_MAC_CENTEURO, 1 },
+ { "Mac Symbol", CS_MAC_SYMBOL, 1 },
+ { "Mac Dingbats", CS_MAC_DINGBATS, 1 },
+ { "Mac Roman (old)", CS_MAC_ROMAN_OLD, 0 },
+ { "Mac Croatian (old)", CS_MAC_CROATIAN_OLD, 0 },
+ { "Mac Iceland (old)", CS_MAC_ICELAND_OLD, 0 },
+ { "Mac Romanian (old)", CS_MAC_ROMANIAN_OLD, 0 },
+ { "Mac Greek (old)", CS_MAC_GREEK_OLD, 0 },
+ { "Mac Cyrillic (old)", CS_MAC_CYRILLIC_OLD, 0 },
+ { "Mac Ukraine", CS_MAC_UKRAINE, 1 },
+ { "Mac VT100", CS_MAC_VT100, 1 },
+ { "Mac VT100 (old)", CS_MAC_VT100_OLD, 0 },
+ { "VISCII", CS_VISCII, 1 },
+ { "HP ROMAN8", CS_HP_ROMAN8, 1 },
+ { "DEC MCS", CS_DEC_MCS, 1 },
+ { "DEC graphics", CS_DEC_GRAPHICS, 1 },
+ { "DEC-graphics", CS_DEC_GRAPHICS, 0 },
+ { "DECgraphics", CS_DEC_GRAPHICS, 0 },
+ { "UTF-8", CS_UTF8, 1 },
+ { "UTF-7", CS_UTF7, 1 },
+ { "UTF-7-conservative", CS_UTF7_CONSERVATIVE, 0 },
+ { "EUC-CN", CS_EUC_CN, 1 },
+ { "EUC-KR", CS_EUC_KR, 1 },
+ { "EUC-JP", CS_EUC_JP, 1 },
+ { "EUC-TW", CS_EUC_TW, 1 },
+ { "ISO-2022-JP", CS_ISO2022_JP, 1 },
+ { "ISO-2022-KR", CS_ISO2022_KR, 1 },
+ { "Big5", CS_BIG5, 1 },
+ { "Shift-JIS", CS_SHIFT_JIS, 1 },
+ { "HZ", CS_HZ, 1 },
+ { "UTF-16BE", CS_UTF16BE, 1 },
+ { "UTF-16LE", CS_UTF16LE, 1 },
+ { "UTF-16", CS_UTF16, 1 },
+ { "CP949", CS_CP949, 1 },
+ { "PDFDocEncoding", CS_PDF, 1 },
+ { "StandardEncoding", CS_PSSTD, 1 },
+ { "COMPOUND_TEXT", CS_CTEXT, 1 },
+ { "COMPOUND-TEXT", CS_CTEXT, 0 },
+ { "COMPOUND TEXT", CS_CTEXT, 0 },
+ { "COMPOUNDTEXT", CS_CTEXT, 0 },
+ { "CTEXT", CS_CTEXT, 0 },
+ { "ISO-2022", CS_ISO2022, 1 },
+ { "ISO2022", CS_ISO2022, 0 },
+};
+
+const char *charset_to_localenc(int charset)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(localencs); i++)
+ if (charset == localencs[i].charset)
+ return localencs[i].name;
+
+ return NULL; /* not found */
+}
+
+int charset_from_localenc(const char *name)
+{
+ int i;
+
+ if ( (i = charset_from_mimeenc(name)) != CS_NONE)
+ return i;
+ if ( (i = charset_from_xenc(name)) != CS_NONE)
+ return i;
+
+ for (i = 0; i < (int)lenof(localencs); i++) {
+ const char *p, *q;
+ p = name;
+ q = localencs[i].name;
+ while (*p || *q) {
+ if (tolower(*p) != tolower(*q))
+ break;
+ p++; q++;
+ }
+ if (!*p && !*q)
+ return localencs[i].charset;
+ }
+
+ return CS_NONE; /* not found */
+}
+
+int charset_localenc_nth(int n)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(localencs); i++)
+ if (localencs[i].return_in_enum && !n--)
+ return localencs[i].charset;
+
+ return CS_NONE; /* end of list */
+}
diff --git a/app/tools/halibut/charset/macenc.c b/app/tools/halibut/charset/macenc.c
new file mode 100644
index 0000000..584b034
--- /dev/null
+++ b/app/tools/halibut/charset/macenc.c
@@ -0,0 +1,169 @@
+/* $Id: macenc.c,v 1.1 2007-04-07 07:39:13 m_fischer Exp $ */
+/*
+ * Copyright (c) 2003 Ben Harris
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+/*
+ * macenc.c -- Convert a Mac OS script/region/font combination to our
+ * internal charset code.
+ */
+
+#include <string.h>
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * These are defined by Mac OS's <Script.h>, but we'd like to be
+ * independent of that.
+ */
+
+#define smRoman 0
+#define smJapanese 1
+#define smTradChinese 2
+#define smKorean 3
+#define smArabic 4
+#define smHebrew 5
+#define smCyrillic 7
+#define smDevenagari 9
+#define smGurmukhi 10
+#define smGujurati 11
+#define smThai 21
+#define smSimpChinese 25
+#define smTibetan 26
+#define smEthiopic 28
+#define smCentralEuroRoman 29
+
+#define verGreece 20
+#define verIceland 21
+#define verTurkey 24
+#define verYugoCroatian 25
+#define verRomania 39
+#define verFaroeIsl 47
+#define verIran 48
+#define verRussia 49
+#define verSlovenian 66
+#define verCroatia 68
+#define verBulgaria 72
+#define verScottishGaelic 75
+#define verManxGaelic 76
+#define verBreton 77
+#define verNunavut 78
+#define verWelsh 79
+#define verIrishGaelicScript 81
+
+static const struct {
+ int script;
+ int region;
+ int sysvermin;
+ char const *fontname;
+ int charset;
+} macencs[] = {
+ { smRoman, -1, 0x850, "VT100", CS_MAC_VT100 },
+ { smRoman, -1, 0, "VT100", CS_MAC_VT100_OLD },
+ /*
+ * From here on, this table is largely derived from
+ * <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT>,
+ * with _OLD version added based on the comments in individual
+ * mapping files.
+ */
+ { smRoman, -1, 0, "Symbol", CS_MAC_SYMBOL },
+ { smRoman, -1, 0, "Zapf Dingbats", CS_MAC_DINGBATS },
+ { smRoman, verTurkey, 0, NULL, CS_MAC_TURKISH },
+ { smRoman, verYugoCroatian, 0x850, NULL, CS_MAC_CROATIAN },
+ { smRoman, verYugoCroatian, 0, NULL, CS_MAC_CROATIAN_OLD },
+ { smRoman, verSlovenian, 0x850, NULL, CS_MAC_CROATIAN },
+ { smRoman, verSlovenian, 0, NULL, CS_MAC_CROATIAN_OLD },
+ { smRoman, verCroatia, 0x850, NULL, CS_MAC_CROATIAN },
+ { smRoman, verCroatia, 0, NULL, CS_MAC_CROATIAN_OLD },
+ { smRoman, verIceland, 0x850, NULL, CS_MAC_ICELAND },
+ { smRoman, verIceland, 0, NULL, CS_MAC_ICELAND_OLD },
+ { smRoman, verFaroeIsl, 0x850, NULL, CS_MAC_ICELAND },
+ { smRoman, verFaroeIsl, 0, NULL, CS_MAC_ICELAND_OLD },
+ { smRoman, verRomania, 0x850, NULL, CS_MAC_ROMANIAN },
+ { smRoman, verRomania, 0, NULL, CS_MAC_ROMANIAN_OLD },
+#if 0 /* No mapping table on ftp.unicode.org */
+ { smRoman, verIreland, 0x850, NULL, CS_MAC_CELTIC },
+ { smRoman, verIreland, 0, NULL, CS_MAC_CELTIC_OLD },
+ { smRoman, verScottishGaelic, 0x850, NULL, CS_MAC_CELTIC },
+ { smRoman, verScottishGaelic, 0, NULL, CS_MAC_CELTIC_OLD },
+ { smRoman, verManxGaelic, 0x850, NULL, CS_MAC_CELTIC },
+ { smRoman, verManxGaelic, 0, NULL, CS_MAC_CELTIC_OLD },
+ { smRoman, verBreton, 0x850, NULL, CS_MAC_CELTIC },
+ { smRoman, verBreton, 0, NULL, CS_MAC_CELTIC_OLD },
+ { smRoman, verWelsh, 0x850, NULL, CS_MAC_CELTIC },
+ { smRoman, verWelsh, 0, NULL, CS_MAC_CELTIC_OLD },
+ { smRoman, verIrishGaelicScript, 0x850, NULL, CS_MAC_GAELIC },
+ { smRoman, verIrishGaelicScript, 0, NULL, CS_MAC_GAELIC_OLD },
+#endif
+ { smRoman, verGreece, 0x922, NULL, CS_MAC_GREEK },
+ { smRoman, verGreece, 0, NULL, CS_MAC_GREEK_OLD },
+ { smRoman, -1, 0x850, NULL, CS_MAC_ROMAN },
+ { smRoman, -1, 0, NULL, CS_MAC_ROMAN_OLD },
+#if 0 /* Multi-byte encodings, not yet supported */
+ { smJapanese, -1, 0, NULL, CS_MAC_JAPANESE },
+ { smTradChinese, -1, 0, NULL, CS_MAC_CHINTRAD },
+ { smKorean, -1, 0, NULL, CS_MAC_KOREAN },
+#endif
+#if 0 /* Bidirectional encodings, not yet supported */
+ { smArabic, verIran, 0, NULL, CS_MAC_FARSI },
+ { smArabic, -1, 0, NULL, CS_MAC_ARABIC },
+ { smHebrew, -1, 0, NULL, CS_MAC_HEBREW },
+#endif
+ { smCyrillic, -1, 0x900, NULL, CS_MAC_CYRILLIC },
+ { smCyrillic, verRussia, 0, NULL, CS_MAC_CYRILLIC_OLD },
+ { smCyrillic, verBulgaria, 0, NULL, CS_MAC_CYRILLIC_OLD },
+ { smCyrillic, -1, 0, NULL, CS_MAC_UKRAINE },
+#if 0 /* Complex Indic scripts, not yet supported */
+ { smDevanagari, -1, 0, NULL, CS_MAC_DEVENAGA },
+ { smGurmukhi, -1, 0, NULL, CS_MAC_GURMUKHI },
+ { smGujurati, -1, 0, NULL, CS_MAC_GUJURATI },
+#endif
+ { smThai, -1, 0, NULL, CS_MAC_THAI },
+#if 0 /* Multi-byte encoding, not yet supported */
+ { smSimpChinese, -1, 0, NULL, CS_MAC_CHINSIMP },
+#endif
+#if 0 /* No mapping table on ftp.unicode.org */
+ { smTibetan, -1, 0, NULL, CS_MAC_TIBETAN },
+ { smEthiopic, -1, 0, NULL, CS_MAC_ETHIOPIC },
+ { smEthiopic, verNanavut, 0, NULL, CS_MAC_INUIT },
+#endif
+ { smCentralEuroRoman, -1, 0, NULL, CS_MAC_CENTEURO },
+};
+
+int charset_from_macenc(int script, int region, int sysvers,
+ char const *fontname)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(macencs); i++)
+ if ((macencs[i].script == script) &&
+ (macencs[i].region < 0 || macencs[i].region == region) &&
+ (macencs[i].sysvermin <= sysvers) &&
+ (macencs[i].fontname == NULL ||
+ (fontname != NULL && strcmp(macencs[i].fontname, fontname) == 0)))
+ return macencs[i].charset;
+
+ return CS_NONE;
+}
diff --git a/app/tools/halibut/charset/mimeenc.c b/app/tools/halibut/charset/mimeenc.c
new file mode 100644
index 0000000..38b76e5
--- /dev/null
+++ b/app/tools/halibut/charset/mimeenc.c
@@ -0,0 +1,333 @@
+/*
+ * mimeenc.c - translate our internal character set codes to and
+ * from MIME standard character-set names.
+ *
+ */
+
+#include <ctype.h>
+#include "charset.h"
+#include "internal.h"
+
+static const struct {
+ const char *name;
+ int charset;
+} mimeencs[] = {
+ /*
+ * Most of these names are taken from
+ *
+ * http://www.iana.org/assignments/character-sets
+ *
+ * Where multiple encoding names map to the same encoding id
+ * (such as the variety of aliases for ISO-8859-1), the first
+ * is considered canonical and will be returned when
+ * translating the id to a string.
+ *
+ * I also list here a few names which aren't in the above web
+ * page, but which I've seen in the wild in real mail. These
+ * are marked with a comment saying WILD.
+ */
+
+ { "US-ASCII", CS_ASCII },
+ { "ANSI_X3.4-1968", CS_ASCII },
+ { "iso-ir-6", CS_ASCII },
+ { "ANSI_X3.4-1986", CS_ASCII },
+ { "ISO_646.irv:1991", CS_ASCII },
+ { "ASCII", CS_ASCII },
+ { "ISO646-US", CS_ASCII },
+ { "us", CS_ASCII },
+ { "IBM367", CS_ASCII },
+ { "cp367", CS_ASCII },
+ { "csASCII", CS_ASCII },
+ { "646", CS_ASCII }, /* WILD */
+
+ { "BS_4730", CS_BS4730 },
+ { "iso-ir-4", CS_BS4730 },
+ { "ISO646-GB", CS_BS4730 },
+ { "gb", CS_BS4730 },
+ { "uk", CS_BS4730 },
+ { "csISO4UnitedKingdom", CS_BS4730 },
+
+ { "ISO-8859-1", CS_ISO8859_1 },
+ { "ISO8859-1", CS_ISO8859_1 }, /* WILD */
+ { "iso-ir-100", CS_ISO8859_1 },
+ { "ISO_8859-1", CS_ISO8859_1 },
+ { "ISO_8859-1:1987", CS_ISO8859_1 },
+ { "latin1", CS_ISO8859_1 },
+ { "l1", CS_ISO8859_1 },
+ { "IBM819", CS_ISO8859_1 },
+ { "CP819", CS_ISO8859_1 },
+ { "csISOLatin1", CS_ISO8859_1 },
+
+ { "ISO-8859-2", CS_ISO8859_2 },
+ { "ISO8859-2", CS_ISO8859_2 }, /* WILD */
+ { "ISO_8859-2:1987", CS_ISO8859_2 },
+ { "iso-ir-101", CS_ISO8859_2 },
+ { "ISO_8859-2", CS_ISO8859_2 },
+ { "latin2", CS_ISO8859_2 },
+ { "l2", CS_ISO8859_2 },
+ { "csISOLatin2", CS_ISO8859_2 },
+
+ { "ISO-8859-3", CS_ISO8859_3 },
+ { "ISO8859-3", CS_ISO8859_3 }, /* WILD */
+ { "ISO_8859-3:1988", CS_ISO8859_3 },
+ { "iso-ir-109", CS_ISO8859_3 },
+ { "ISO_8859-3", CS_ISO8859_3 },
+ { "latin3", CS_ISO8859_3 },
+ { "l3", CS_ISO8859_3 },
+ { "csISOLatin3", CS_ISO8859_3 },
+
+ { "ISO-8859-4", CS_ISO8859_4 },
+ { "ISO8859-4", CS_ISO8859_4 }, /* WILD */
+ { "ISO_8859-4:1988", CS_ISO8859_4 },
+ { "iso-ir-110", CS_ISO8859_4 },
+ { "ISO_8859-4", CS_ISO8859_4 },
+ { "latin4", CS_ISO8859_4 },
+ { "l4", CS_ISO8859_4 },
+ { "csISOLatin4", CS_ISO8859_4 },
+
+ { "ISO-8859-5", CS_ISO8859_5 },
+ { "ISO8859-5", CS_ISO8859_5 }, /* WILD */
+ { "ISO_8859-5:1988", CS_ISO8859_5 },
+ { "iso-ir-144", CS_ISO8859_5 },
+ { "ISO_8859-5", CS_ISO8859_5 },
+ { "cyrillic", CS_ISO8859_5 },
+ { "csISOLatinCyrillic", CS_ISO8859_5 },
+
+ { "ISO-8859-6", CS_ISO8859_6 },
+ { "ISO8859-6", CS_ISO8859_6 }, /* WILD */
+ { "ISO_8859-6:1987", CS_ISO8859_6 },
+ { "iso-ir-127", CS_ISO8859_6 },
+ { "ISO_8859-6", CS_ISO8859_6 },
+ { "ECMA-114", CS_ISO8859_6 },
+ { "ASMO-708", CS_ISO8859_6 },
+ { "arabic", CS_ISO8859_6 },
+ { "csISOLatinArabic", CS_ISO8859_6 },
+
+ { "ISO-8859-7", CS_ISO8859_7 },
+ { "ISO8859-7", CS_ISO8859_7 }, /* WILD */
+ { "ISO_8859-7:1987", CS_ISO8859_7 },
+ { "iso-ir-126", CS_ISO8859_7 },
+ { "ISO_8859-7", CS_ISO8859_7 },
+ { "ELOT_928", CS_ISO8859_7 },
+ { "ECMA-118", CS_ISO8859_7 },
+ { "greek", CS_ISO8859_7 },
+ { "greek8", CS_ISO8859_7 },
+ { "csISOLatinGreek", CS_ISO8859_7 },
+
+ { "ISO-8859-8", CS_ISO8859_8 },
+ { "ISO8859-8", CS_ISO8859_8 }, /* WILD */
+ { "ISO_8859-8:1988", CS_ISO8859_8 },
+ { "iso-ir-138", CS_ISO8859_8 },
+ { "ISO_8859-8", CS_ISO8859_8 },
+ { "hebrew", CS_ISO8859_8 },
+ { "csISOLatinHebrew", CS_ISO8859_8 },
+
+ { "ISO-8859-9", CS_ISO8859_9 },
+ { "ISO8859-9", CS_ISO8859_9 }, /* WILD */
+ { "ISO_8859-9:1989", CS_ISO8859_9 },
+ { "iso-ir-148", CS_ISO8859_9 },
+ { "ISO_8859-9", CS_ISO8859_9 },
+ { "latin5", CS_ISO8859_9 },
+ { "l5", CS_ISO8859_9 },
+ { "csISOLatin5", CS_ISO8859_9 },
+
+ { "ISO-8859-10", CS_ISO8859_10 },
+ { "ISO8859-10", CS_ISO8859_10 }, /* WILD */
+ { "iso-ir-157", CS_ISO8859_10 },
+ { "l6", CS_ISO8859_10 },
+ { "ISO_8859-10:1992", CS_ISO8859_10 },
+ { "csISOLatin6", CS_ISO8859_10 },
+ { "latin6", CS_ISO8859_10 },
+
+ { "TIS-620", CS_ISO8859_11 },
+
+ { "ISO-8859-13", CS_ISO8859_13 },
+ { "ISO8859-13", CS_ISO8859_13 }, /* WILD */
+
+ { "ISO-8859-14", CS_ISO8859_14 },
+ { "ISO8859-14", CS_ISO8859_14 }, /* WILD */
+ { "iso-ir-199", CS_ISO8859_14 },
+ { "ISO_8859-14:1998", CS_ISO8859_14 },
+ { "ISO_8859-14", CS_ISO8859_14 },
+ { "latin8", CS_ISO8859_14 },
+ { "iso-celtic", CS_ISO8859_14 },
+ { "l8", CS_ISO8859_14 },
+
+ { "ISO-8859-15", CS_ISO8859_15 },
+ { "ISO8859-15", CS_ISO8859_15 }, /* WILD */
+ { "ISO_8859-15", CS_ISO8859_15 },
+ { "Latin-9", CS_ISO8859_15 },
+
+ { "ISO-8859-16", CS_ISO8859_16 },
+ { "ISO8859-16", CS_ISO8859_16 }, /* WILD */
+ { "iso-ir-226", CS_ISO8859_16 },
+ { "ISO_8859-16", CS_ISO8859_16 },
+ { "ISO_8859-16:2001", CS_ISO8859_16 },
+ { "latin10", CS_ISO8859_16 },
+ { "l10", CS_ISO8859_16 },
+
+ { "IBM437", CS_CP437 },
+ { "cp437", CS_CP437 },
+ { "437", CS_CP437 },
+ { "csPC8CodePage437", CS_CP437 },
+
+ { "IBM850", CS_CP850 },
+ { "cp850", CS_CP850 },
+ { "850", CS_CP850 },
+ { "csPC850Multilingual", CS_CP850 },
+
+ { "IBM866", CS_CP866 },
+ { "cp866", CS_CP866 },
+ { "866", CS_CP866 },
+ { "csIBM866", CS_CP866 },
+
+ { "windows-1250", CS_CP1250 },
+ { "win-1250", CS_CP1250 }, /* WILD */
+
+ { "windows-1251", CS_CP1251 },
+ { "win-1251", CS_CP1251 }, /* WILD */
+
+ { "windows-1252", CS_CP1252 },
+ { "win-1252", CS_CP1252 }, /* WILD */
+
+ { "windows-1253", CS_CP1253 },
+ { "win-1253", CS_CP1253 }, /* WILD */
+
+ { "windows-1254", CS_CP1254 },
+ { "win-1254", CS_CP1254 }, /* WILD */
+
+ { "windows-1255", CS_CP1255 },
+ { "win-1255", CS_CP1255 }, /* WILD */
+
+ { "windows-1256", CS_CP1256 },
+ { "win-1256", CS_CP1256 }, /* WILD */
+
+ { "windows-1257", CS_CP1257 },
+ { "win-1257", CS_CP1257 }, /* WILD */
+
+ { "windows-1258", CS_CP1258 },
+ { "win-1258", CS_CP1258 }, /* WILD */
+
+ { "KOI8-R", CS_KOI8_R },
+ { "csKOI8R", CS_KOI8_R },
+
+ { "KOI8-U", CS_KOI8_U },
+
+ { "KOI8-RU", CS_KOI8_RU }, /* WILD */
+
+ { "JIS_X0201", CS_JISX0201 },
+ { "X0201", CS_JISX0201 },
+ { "csHalfWidthKatakana", CS_JISX0201 },
+
+ { "macintosh", CS_MAC_ROMAN_OLD },
+ { "mac", CS_MAC_ROMAN_OLD },
+ { "csMacintosh", CS_MAC_ROMAN_OLD },
+
+ { "VISCII", CS_VISCII },
+ { "csVISCII", CS_VISCII },
+
+ { "hp-roman8", CS_HP_ROMAN8 },
+ { "roman8", CS_HP_ROMAN8 },
+ { "r8", CS_HP_ROMAN8 },
+ { "csHPRoman8", CS_HP_ROMAN8 },
+
+ { "DEC-MCS", CS_DEC_MCS },
+ { "dec", CS_DEC_MCS },
+ { "csDECMCS", CS_DEC_MCS },
+
+ { "UTF-8", CS_UTF8 },
+
+ { "UTF-7", CS_UTF7 },
+ { "UNICODE-1-1-UTF-7", CS_UTF7 },
+ { "csUnicode11UTF7", CS_UTF7 },
+
+ /*
+ * Quite why the EUC-CN encoding is known to MIME by the name
+ * of its underlying character set, I'm not entirely sure, but
+ * it is. Shrug.
+ */
+ { "GB2312", CS_EUC_CN },
+ { "csGB2312", CS_EUC_CN },
+
+ { "EUC-KR", CS_EUC_KR },
+ { "csEUCKR", CS_EUC_KR },
+
+ { "EUC-JP", CS_EUC_JP },
+ { "csEUCPkdFmtJapanese", CS_EUC_JP },
+ { "Extended_UNIX_Code_Packed_Format_for_Japanese", CS_EUC_JP },
+
+ { "ISO-2022-JP", CS_ISO2022_JP },
+ { "csISO2022JP", CS_ISO2022_JP },
+
+ { "ISO-2022-KR", CS_ISO2022_KR },
+ { "csISO2022KR", CS_ISO2022_KR },
+
+ { "Big5", CS_BIG5 },
+ { "csBig5", CS_BIG5 },
+ { "Big-5", CS_BIG5 }, /* WILD */
+ { "ChineseBig5", CS_BIG5 }, /* WILD */
+
+ { "Shift_JIS", CS_SHIFT_JIS },
+ { "MS_Kanji", CS_SHIFT_JIS },
+ { "csShiftJIS", CS_SHIFT_JIS },
+
+ { "HZ-GB-2312", CS_HZ },
+
+ { "UTF-16BE", CS_UTF16BE },
+
+ { "UTF-16LE", CS_UTF16LE },
+
+ { "UTF-16", CS_UTF16 },
+
+ /*
+ * This bit is fiddly and possibly technically incorrect; but
+ * rumour has it that the KSC 5601 encoding is a subset of
+ * Microsoft CP949, and that MS products tend to announce CP949
+ * as KSC 5601 in much the same way they seem willing to
+ * announce CP1252 as its subset ISO 8859-1. So I cheat
+ * shamelessly here by letting KSC 5601 map to CP949.
+ */
+ { "KS_C_5601-1987", CS_CP949 },
+ { "iso-ir-149", CS_CP949 },
+ { "KS_C_5601-1989", CS_CP949 },
+ { "KSC_5601", CS_CP949 },
+ { "korean", CS_CP949 },
+ { "csKSC56011987", CS_CP949 },
+ { "KSC5601", CS_CP949 }, /* WILD */
+
+#if 0
+ { "ISO-2022-JP-2", CS_ISO2022_JP_2 },
+ { "csISO2022JP2", CS_ISO2022_JP_2 },
+#endif
+};
+
+const char *charset_to_mimeenc(int charset)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(mimeencs); i++)
+ if (charset == mimeencs[i].charset)
+ return mimeencs[i].name;
+
+ return NULL; /* not found */
+}
+
+int charset_from_mimeenc(const char *name)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(mimeencs); i++) {
+ const char *p, *q;
+ p = name;
+ q = mimeencs[i].name;
+ while (*p || *q) {
+ if (tolower(*p) != tolower(*q))
+ break;
+ p++; q++;
+ }
+ if (!*p && !*q)
+ return mimeencs[i].charset;
+ }
+
+ return CS_NONE; /* not found */
+}
diff --git a/app/tools/halibut/charset/sbcs.c b/app/tools/halibut/charset/sbcs.c
new file mode 100644
index 0000000..e8be5a8
--- /dev/null
+++ b/app/tools/halibut/charset/sbcs.c
@@ -0,0 +1,72 @@
+/*
+ * sbcs.c - routines to handle single-byte character sets.
+ */
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * The charset_spec for any single-byte character set should
+ * provide read_sbcs() as its read function, and its `data' field
+ * should be a wchar_t string constant containing the 256 entries
+ * of the translation table.
+ */
+
+long int sbcs_to_unicode(const struct sbcs_data *sd, long int input_chr)
+{
+ return sd->sbcs2ucs[input_chr];
+}
+
+void read_sbcs(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ const struct sbcs_data *sd = charset->data;
+
+ UNUSEDARG(state);
+
+ emit(emitctx, sbcs_to_unicode(sd, input_chr));
+}
+
+long int sbcs_from_unicode(const struct sbcs_data *sd, long int input_chr)
+{
+ int i, j, k, c;
+
+ /*
+ * Binary-search in the ucs2sbcs table.
+ */
+ i = -1;
+ j = sd->nvalid;
+ while (i+1 < j) {
+ k = (i+j)/2;
+ c = sd->ucs2sbcs[k];
+ if (input_chr < (long int)sd->sbcs2ucs[c])
+ j = k;
+ else if (input_chr > (long int)sd->sbcs2ucs[c])
+ i = k;
+ else {
+ return c;
+ }
+ }
+ return ERROR;
+}
+
+int write_sbcs(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ const struct sbcs_data *sd = charset->data;
+ long int ret;
+
+ UNUSEDARG(state);
+
+ if (input_chr == -1)
+ return TRUE; /* stateless; no cleanup required */
+
+ ret = sbcs_from_unicode(sd, input_chr);
+ if (ret == ERROR)
+ return FALSE;
+
+ emit(emitctx, ret);
+ return TRUE;
+}
diff --git a/app/tools/halibut/charset/sbcsdat.c b/app/tools/halibut/charset/sbcsdat.c
new file mode 100644
index 0000000..03a62eb
--- /dev/null
+++ b/app/tools/halibut/charset/sbcsdat.c
@@ -0,0 +1,4485 @@
+/*
+ * sbcsdat.c - data definitions for single-byte character sets.
+ *
+ * Generated by sbcsgen.pl from sbcs.dat.
+ * You should edit those files rather than editing this one.
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+const sbcs_data sbcsdata_CS_ASCII = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f
+ },
+ 128
+};
+const charset_spec charset_CS_ASCII = {
+ CS_ASCII, read_sbcs, write_sbcs, &sbcsdata_CS_ASCII
+};
+
+const sbcs_data sbcsdata_CS_BS4730 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28,
+ 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
+ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
+ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
+ 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
+ 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
+ 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
+ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+ 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+ 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+ 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7f, 0x23, 0x7e
+ },
+ 128
+};
+const charset_spec charset_CS_BS4730 = {
+ CS_BS4730, read_sbcs, write_sbcs, &sbcsdata_CS_BS4730
+};
+
+const sbcs_data sbcsdata_CS_DEC_GRAPHICS = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x0020,
+ 0x2666, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 0x00b1,
+ 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x23ba,
+ 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524, 0x2534, 0x252c,
+ 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x00b7, 0x007f,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x7f,
+ 0x7d, 0x66, 0x67, 0x7e, 0x7b, 0x7c, 0x79, 0x7a,
+ 0x6f, 0x70, 0x72, 0x73, 0x62, 0x65, 0x69, 0x63,
+ 0x64, 0x68, 0x71, 0x78, 0x6c, 0x6b, 0x6d, 0x6a,
+ 0x74, 0x75, 0x77, 0x76, 0x6e, 0x61, 0x60
+ },
+ 127
+};
+const charset_spec charset_CS_DEC_GRAPHICS = {
+ CS_DEC_GRAPHICS, read_sbcs, write_sbcs, &sbcsdata_CS_DEC_GRAPHICS
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_1 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_1 = {
+ CS_ISO8859_1, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_1
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_2 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+ 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+ 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+ 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa4, 0xa7, 0xa8, 0xad, 0xb0, 0xb4, 0xb8,
+ 0xc1, 0xc2, 0xc4, 0xc7, 0xc9, 0xcb, 0xcd, 0xce,
+ 0xd3, 0xd4, 0xd6, 0xd7, 0xda, 0xdc, 0xdd, 0xdf,
+ 0xe1, 0xe2, 0xe4, 0xe7, 0xe9, 0xeb, 0xed, 0xee,
+ 0xf3, 0xf4, 0xf6, 0xf7, 0xfa, 0xfc, 0xfd, 0xc3,
+ 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, 0xc8, 0xe8, 0xcf,
+ 0xef, 0xd0, 0xf0, 0xca, 0xea, 0xcc, 0xec, 0xc5,
+ 0xe5, 0xa5, 0xb5, 0xa3, 0xb3, 0xd1, 0xf1, 0xd2,
+ 0xf2, 0xd5, 0xf5, 0xc0, 0xe0, 0xd8, 0xf8, 0xa6,
+ 0xb6, 0xaa, 0xba, 0xa9, 0xb9, 0xde, 0xfe, 0xab,
+ 0xbb, 0xd9, 0xf9, 0xdb, 0xfb, 0xac, 0xbc, 0xaf,
+ 0xbf, 0xae, 0xbe, 0xb7, 0xa2, 0xff, 0xb2, 0xbd
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_2 = {
+ CS_ISO8859_2, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_2
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_3 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, ERROR , 0x0124, 0x00a7,
+ 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, ERROR , 0x017b,
+ 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+ 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, ERROR , 0x017c,
+ 0x00c0, 0x00c1, 0x00c2, ERROR , 0x00c4, 0x010a, 0x0108, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ ERROR , 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+ 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, ERROR , 0x00e4, 0x010b, 0x0109, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ ERROR , 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+ 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa3, 0xa4, 0xa7, 0xa8, 0xad, 0xb0, 0xb2,
+ 0xb3, 0xb4, 0xb5, 0xb7, 0xb8, 0xbd, 0xc0, 0xc1,
+ 0xc2, 0xc4, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc,
+ 0xcd, 0xce, 0xcf, 0xd1, 0xd2, 0xd3, 0xd4, 0xd6,
+ 0xd7, 0xd9, 0xda, 0xdb, 0xdc, 0xdf, 0xe0, 0xe1,
+ 0xe2, 0xe4, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec,
+ 0xed, 0xee, 0xef, 0xf1, 0xf2, 0xf3, 0xf4, 0xf6,
+ 0xf7, 0xf9, 0xfa, 0xfb, 0xfc, 0xc6, 0xe6, 0xc5,
+ 0xe5, 0xd8, 0xf8, 0xab, 0xbb, 0xd5, 0xf5, 0xa6,
+ 0xb6, 0xa1, 0xb1, 0xa9, 0xb9, 0xac, 0xbc, 0xde,
+ 0xfe, 0xaa, 0xba, 0xdd, 0xfd, 0xaf, 0xbf, 0xa2,
+ 0xff
+ },
+ 249
+};
+const charset_spec charset_CS_ISO8859_3 = {
+ CS_ISO8859_3, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_3
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_4 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+ 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+ 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+ 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+ 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+ 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa4, 0xa7, 0xa8, 0xad, 0xaf, 0xb0, 0xb4,
+ 0xb8, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc9,
+ 0xcb, 0xcd, 0xce, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
+ 0xda, 0xdb, 0xdc, 0xdf, 0xe1, 0xe2, 0xe3, 0xe4,
+ 0xe5, 0xe6, 0xe9, 0xeb, 0xed, 0xee, 0xf4, 0xf5,
+ 0xf6, 0xf7, 0xf8, 0xfa, 0xfb, 0xfc, 0xc0, 0xe0,
+ 0xa1, 0xb1, 0xc8, 0xe8, 0xd0, 0xf0, 0xaa, 0xba,
+ 0xcc, 0xec, 0xca, 0xea, 0xab, 0xbb, 0xa5, 0xb5,
+ 0xcf, 0xef, 0xc7, 0xe7, 0xd3, 0xf3, 0xa2, 0xa6,
+ 0xb6, 0xd1, 0xf1, 0xbd, 0xbf, 0xd2, 0xf2, 0xa3,
+ 0xb3, 0xa9, 0xb9, 0xac, 0xbc, 0xdd, 0xfd, 0xde,
+ 0xfe, 0xd9, 0xf9, 0xae, 0xbe, 0xb7, 0xff, 0xb2
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_4 = {
+ CS_ISO8859_4, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_4
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_5 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xfd, 0xad, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5,
+ 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xae,
+ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
+ 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe,
+ 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
+ 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
+ 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+ 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,
+ 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
+ 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee,
+ 0xef, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfe, 0xff, 0xf0
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_5 = {
+ CS_ISO8859_5, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_5
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_6 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, ERROR , ERROR , ERROR , 0x00a4, ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , 0x060c, 0x00ad, ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , 0x061b, ERROR , ERROR , ERROR , 0x061f,
+ ERROR , 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, ERROR , ERROR , ERROR , ERROR , ERROR ,
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ 0x0650, 0x0651, 0x0652, ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa4, 0xad, 0xac, 0xbb, 0xbf, 0xc1, 0xc2,
+ 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca,
+ 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2,
+ 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2
+ },
+ 211
+};
+const charset_spec charset_CS_ISO8859_6 = {
+ CS_ISO8859_6, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_6
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_7 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x2018, 0x2019, 0x00a3, ERROR , ERROR , 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, ERROR , 0x00ab, 0x00ac, 0x00ad, ERROR , 0x2015,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ 0x03a0, 0x03a1, ERROR , 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa3, 0xa6, 0xa7, 0xa8, 0xa9, 0xab, 0xac,
+ 0xad, 0xb0, 0xb1, 0xb2, 0xb3, 0xb7, 0xbb, 0xbd,
+ 0xb4, 0xb5, 0xb6, 0xb8, 0xb9, 0xba, 0xbc, 0xbe,
+ 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
+ 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
+ 0xcf, 0xd0, 0xd1, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xaf,
+ 0xa1, 0xa2
+ },
+ 250
+};
+const charset_spec charset_CS_ISO8859_7 = {
+ CS_ISO8859_7, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_7
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_8 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, ERROR , 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , 0x2017,
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, ERROR , ERROR , 0x200e, 0x200f, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+ 0xa9, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1,
+ 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+ 0xbb, 0xbc, 0xbd, 0xbe, 0xaa, 0xba, 0xe0, 0xe1,
+ 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+ 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1,
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
+ 0xfa, 0xfd, 0xfe, 0xdf
+ },
+ 220
+};
+const charset_spec charset_CS_ISO8859_8 = {
+ CS_ISO8859_8, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_8
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_9 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
+ 0xd9, 0xda, 0xdb, 0xdc, 0xdf, 0xe0, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf1, 0xf2, 0xf3,
+ 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
+ 0xfc, 0xff, 0xd0, 0xf0, 0xdd, 0xfd, 0xde, 0xfe
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_9 = {
+ CS_ISO8859_9, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_9
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_10 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+ 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+ 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+ 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa7, 0xad, 0xb0, 0xb7, 0xc1, 0xc2, 0xc3,
+ 0xc4, 0xc5, 0xc6, 0xc9, 0xcb, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xda, 0xdb,
+ 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe2, 0xe3, 0xe4,
+ 0xe5, 0xe6, 0xe9, 0xeb, 0xed, 0xee, 0xef, 0xf0,
+ 0xf3, 0xf4, 0xf5, 0xf6, 0xf8, 0xfa, 0xfb, 0xfc,
+ 0xfd, 0xfe, 0xc0, 0xe0, 0xa1, 0xb1, 0xc8, 0xe8,
+ 0xa9, 0xb9, 0xa2, 0xb2, 0xcc, 0xec, 0xca, 0xea,
+ 0xa3, 0xb3, 0xa5, 0xb5, 0xa4, 0xb4, 0xc7, 0xe7,
+ 0xa6, 0xb6, 0xff, 0xa8, 0xb8, 0xd1, 0xf1, 0xaf,
+ 0xbf, 0xd2, 0xf2, 0xaa, 0xba, 0xab, 0xbb, 0xd7,
+ 0xf7, 0xae, 0xbe, 0xd9, 0xf9, 0xac, 0xbc, 0xbd
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_10 = {
+ CS_ISO8859_10, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_10
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_11 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, ERROR , ERROR , ERROR , ERROR , 0x0e3f,
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3,
+ 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
+ 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
+ 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb
+ },
+ 248
+};
+const charset_spec charset_CS_ISO8859_11 = {
+ CS_ISO8859_11, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_11
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_13 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+ 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+ 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+ 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+ 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa2, 0xa3, 0xa4, 0xa6, 0xa7, 0xa9, 0xab,
+ 0xac, 0xad, 0xae, 0xb0, 0xb1, 0xb2, 0xb3, 0xb5,
+ 0xb6, 0xb7, 0xb9, 0xbb, 0xbc, 0xbd, 0xbe, 0xc4,
+ 0xc5, 0xaf, 0xc9, 0xd3, 0xd5, 0xd6, 0xd7, 0xa8,
+ 0xdc, 0xdf, 0xe4, 0xe5, 0xbf, 0xe9, 0xf3, 0xf5,
+ 0xf6, 0xf7, 0xb8, 0xfc, 0xc2, 0xe2, 0xc0, 0xe0,
+ 0xc3, 0xe3, 0xc8, 0xe8, 0xc7, 0xe7, 0xcb, 0xeb,
+ 0xc6, 0xe6, 0xcc, 0xec, 0xce, 0xee, 0xc1, 0xe1,
+ 0xcd, 0xed, 0xcf, 0xef, 0xd9, 0xf9, 0xd1, 0xf1,
+ 0xd2, 0xf2, 0xd4, 0xf4, 0xaa, 0xba, 0xda, 0xfa,
+ 0xd0, 0xf0, 0xdb, 0xfb, 0xd8, 0xf8, 0xca, 0xea,
+ 0xdd, 0xfd, 0xde, 0xfe, 0xff, 0xb4, 0xa1, 0xa5
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_13 = {
+ CS_ISO8859_13, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_13
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_14 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+ 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+ 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa3, 0xa7, 0xa9, 0xad, 0xae, 0xb6, 0xc0,
+ 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd1,
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda,
+ 0xdb, 0xdc, 0xdd, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3,
+ 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
+ 0xec, 0xed, 0xee, 0xef, 0xf1, 0xf2, 0xf3, 0xf4,
+ 0xf5, 0xf6, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd,
+ 0xff, 0xa4, 0xa5, 0xb2, 0xb3, 0xd0, 0xf0, 0xde,
+ 0xfe, 0xaf, 0xa1, 0xa2, 0xa6, 0xab, 0xb0, 0xb1,
+ 0xb4, 0xb5, 0xb7, 0xb9, 0xbb, 0xbf, 0xd7, 0xf7,
+ 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0xac, 0xbc
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_14 = {
+ CS_ISO8859_14, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_14
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_15 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+ 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa5, 0xa7, 0xa9, 0xaa,
+ 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2,
+ 0xb3, 0xb5, 0xb6, 0xb7, 0xb9, 0xba, 0xbb, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+ 0xbc, 0xbd, 0xa6, 0xa8, 0xbe, 0xb4, 0xb8, 0xa4
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_15 = {
+ CS_ISO8859_15, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_15
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_16 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
+ 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+ 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+ 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+ 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa7, 0xa9, 0xab, 0xad, 0xb0, 0xb1, 0xb6,
+ 0xb7, 0xbb, 0xc0, 0xc1, 0xc2, 0xc4, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd2, 0xd3, 0xd4, 0xd6, 0xd9, 0xda, 0xdb, 0xdc,
+ 0xdf, 0xe0, 0xe1, 0xe2, 0xe4, 0xe6, 0xe7, 0xe8,
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf2,
+ 0xf3, 0xf4, 0xf6, 0xf9, 0xfa, 0xfb, 0xfc, 0xff,
+ 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, 0xb2, 0xb9,
+ 0xd0, 0xf0, 0xdd, 0xfd, 0xa3, 0xb3, 0xd1, 0xf1,
+ 0xd5, 0xf5, 0xbc, 0xbd, 0xd7, 0xf7, 0xa6, 0xa8,
+ 0xd8, 0xf8, 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4,
+ 0xb8, 0xaa, 0xba, 0xde, 0xfe, 0xb5, 0xa5, 0xa4
+ },
+ 256
+};
+const charset_spec charset_CS_ISO8859_16 = {
+ CS_ISO8859_16, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_16
+};
+
+const sbcs_data sbcsdata_CS_ISO8859_1_X11 = {
+ {
+ 0x0020, 0x2666, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0,
+ 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c,
+ 0x23ba, 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524, 0x2534,
+ 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x00b7,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+ },
+ {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+ 0x1c, 0x1d, 0x1a, 0x1b, 0x10, 0x11, 0x13, 0x14,
+ 0x03, 0x06, 0x0a, 0x04, 0x05, 0x09, 0x12, 0x19,
+ 0x0d, 0x0c, 0x0e, 0x0b, 0x15, 0x16, 0x18, 0x17,
+ 0x0f, 0x02, 0x01
+ },
+ 251
+};
+const charset_spec charset_CS_ISO8859_1_X11 = {
+ CS_ISO8859_1_X11, read_sbcs, write_sbcs, &sbcsdata_CS_ISO8859_1_X11
+};
+
+const sbcs_data sbcsdata_CS_CP437 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+ 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+ 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
+ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+ 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+ 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+ 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+ 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+ 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+ 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+ 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xff, 0xad, 0x9b, 0x9c, 0x9d, 0xa6, 0xae, 0xaa,
+ 0xf8, 0xf1, 0xfd, 0xe6, 0xfa, 0xa7, 0xaf, 0xac,
+ 0xab, 0xa8, 0x8e, 0x8f, 0x92, 0x80, 0x90, 0xa5,
+ 0x99, 0x9a, 0xe1, 0x85, 0xa0, 0x83, 0x84, 0x86,
+ 0x91, 0x87, 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1,
+ 0x8c, 0x8b, 0xa4, 0x95, 0xa2, 0x93, 0x94, 0xf6,
+ 0x97, 0xa3, 0x96, 0x81, 0x98, 0x9f, 0xe2, 0xe9,
+ 0xe4, 0xe8, 0xea, 0xe0, 0xeb, 0xee, 0xe3, 0xe5,
+ 0xe7, 0xed, 0xfc, 0x9e, 0xf9, 0xfb, 0xec, 0xef,
+ 0xf7, 0xf0, 0xf3, 0xf2, 0xa9, 0xf4, 0xf5, 0xc4,
+ 0xb3, 0xda, 0xbf, 0xc0, 0xd9, 0xc3, 0xb4, 0xc2,
+ 0xc1, 0xc5, 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8,
+ 0xb7, 0xbb, 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc,
+ 0xc6, 0xc7, 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2,
+ 0xcb, 0xcf, 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0xdf,
+ 0xdc, 0xdb, 0xdd, 0xde, 0xb0, 0xb1, 0xb2, 0xfe
+ },
+ 256
+};
+const charset_spec charset_CS_CP437 = {
+ CS_CP437, read_sbcs, write_sbcs, &sbcsdata_CS_CP437
+};
+
+const sbcs_data sbcsdata_CS_CP850 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+ 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+ 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
+ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+ 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
+ 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
+ 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+ 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce,
+ 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
+ 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
+ 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4,
+ 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+ 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xff, 0xad, 0xbd, 0x9c, 0xcf, 0xbe, 0xdd, 0xf5,
+ 0xf9, 0xb8, 0xa6, 0xae, 0xaa, 0xf0, 0xa9, 0xee,
+ 0xf8, 0xf1, 0xfd, 0xfc, 0xef, 0xe6, 0xf4, 0xfa,
+ 0xf7, 0xfb, 0xa7, 0xaf, 0xac, 0xab, 0xf3, 0xa8,
+ 0xb7, 0xb5, 0xb6, 0xc7, 0x8e, 0x8f, 0x92, 0x80,
+ 0xd4, 0x90, 0xd2, 0xd3, 0xde, 0xd6, 0xd7, 0xd8,
+ 0xd1, 0xa5, 0xe3, 0xe0, 0xe2, 0xe5, 0x99, 0x9e,
+ 0x9d, 0xeb, 0xe9, 0xea, 0x9a, 0xed, 0xe8, 0xe1,
+ 0x85, 0xa0, 0x83, 0xc6, 0x84, 0x86, 0x91, 0x87,
+ 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
+ 0xd0, 0xa4, 0x95, 0xa2, 0x93, 0xe4, 0x94, 0xf6,
+ 0x9b, 0x97, 0xa3, 0x96, 0x81, 0xec, 0xe7, 0x98,
+ 0xd5, 0x9f, 0xf2, 0xc4, 0xb3, 0xda, 0xbf, 0xc0,
+ 0xd9, 0xc3, 0xb4, 0xc2, 0xc1, 0xc5, 0xcd, 0xba,
+ 0xc9, 0xbb, 0xc8, 0xbc, 0xcc, 0xb9, 0xcb, 0xca,
+ 0xce, 0xdf, 0xdc, 0xdb, 0xb0, 0xb1, 0xb2, 0xfe
+ },
+ 256
+};
+const charset_spec charset_CS_CP850 = {
+ CS_CP850, read_sbcs, write_sbcs, &sbcsdata_CS_CP850
+};
+
+const sbcs_data sbcsdata_CS_CP866 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+ 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+ 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e,
+ 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xff, 0xfd, 0xf8, 0xfa, 0xf0, 0xf2, 0xf4, 0xf6,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf1, 0xf3, 0xf5, 0xf7, 0xfc, 0xf9, 0xfb, 0xc4,
+ 0xb3, 0xda, 0xbf, 0xc0, 0xd9, 0xc3, 0xb4, 0xc2,
+ 0xc1, 0xc5, 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8,
+ 0xb7, 0xbb, 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc,
+ 0xc6, 0xc7, 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2,
+ 0xcb, 0xcf, 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0xdf,
+ 0xdc, 0xdb, 0xdd, 0xde, 0xb0, 0xb1, 0xb2, 0xfe
+ },
+ 256
+};
+const charset_spec charset_CS_CP866 = {
+ CS_CP866, read_sbcs, write_sbcs, &sbcsdata_CS_CP866
+};
+
+const sbcs_data sbcsdata_CS_CP1250 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, ERROR , 0x201e, 0x2026, 0x2020, 0x2021,
+ ERROR , 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ ERROR , 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a,
+ 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b,
+ 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c,
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa4, 0xa6, 0xa7, 0xa8, 0xa9, 0xab, 0xac,
+ 0xad, 0xae, 0xb0, 0xb1, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xbb, 0xc1, 0xc2, 0xc4, 0xc7, 0xc9, 0xcb,
+ 0xcd, 0xce, 0xd3, 0xd4, 0xd6, 0xd7, 0xda, 0xdc,
+ 0xdd, 0xdf, 0xe1, 0xe2, 0xe4, 0xe7, 0xe9, 0xeb,
+ 0xed, 0xee, 0xf3, 0xf4, 0xf6, 0xf7, 0xfa, 0xfc,
+ 0xfd, 0xc3, 0xe3, 0xa5, 0xb9, 0xc6, 0xe6, 0xc8,
+ 0xe8, 0xcf, 0xef, 0xd0, 0xf0, 0xca, 0xea, 0xcc,
+ 0xec, 0xc5, 0xe5, 0xbc, 0xbe, 0xa3, 0xb3, 0xd1,
+ 0xf1, 0xd2, 0xf2, 0xd5, 0xf5, 0xc0, 0xe0, 0xd8,
+ 0xf8, 0x8c, 0x9c, 0xaa, 0xba, 0x8a, 0x9a, 0xde,
+ 0xfe, 0x8d, 0x9d, 0xd9, 0xf9, 0xdb, 0xfb, 0x8f,
+ 0x9f, 0xaf, 0xbf, 0x8e, 0x9e, 0xa1, 0xa2, 0xff,
+ 0xb2, 0xbd, 0x96, 0x97, 0x91, 0x92, 0x82, 0x93,
+ 0x94, 0x84, 0x86, 0x87, 0x95, 0x85, 0x89, 0x8b,
+ 0x9b, 0x80, 0x99
+ },
+ 251
+};
+const charset_spec charset_CS_CP1250 = {
+ CS_CP1250, read_sbcs, write_sbcs, &sbcsdata_CS_CP1250
+};
+
+const sbcs_data sbcsdata_CS_CP1251 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+ 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ ERROR , 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa4, 0xa6, 0xa7, 0xa9, 0xab, 0xac, 0xad,
+ 0xae, 0xb0, 0xb1, 0xb5, 0xb6, 0xb7, 0xbb, 0xa8,
+ 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, 0xa3, 0x8a,
+ 0x8c, 0x8e, 0x8d, 0xa1, 0x8f, 0xc0, 0xc1, 0xc2,
+ 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca,
+ 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2,
+ 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
+ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
+ 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
+ 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0xb8, 0x90, 0x83,
+ 0xba, 0xbe, 0xb3, 0xbf, 0xbc, 0x9a, 0x9c, 0x9e,
+ 0x9d, 0xa2, 0x9f, 0xa5, 0xb4, 0x96, 0x97, 0x91,
+ 0x92, 0x82, 0x93, 0x94, 0x84, 0x86, 0x87, 0x95,
+ 0x85, 0x89, 0x8b, 0x9b, 0x88, 0xb9, 0x99
+ },
+ 255
+};
+const charset_spec charset_CS_CP1251 = {
+ CS_CP1251, read_sbcs, write_sbcs, &sbcsdata_CS_CP1251
+};
+
+const sbcs_data sbcsdata_CS_CP1252 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, ERROR , 0x017d, ERROR ,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, ERROR , 0x017e, 0x0178,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+ 0x8c, 0x9c, 0x8a, 0x9a, 0x9f, 0x8e, 0x9e, 0x83,
+ 0x88, 0x98, 0x96, 0x97, 0x91, 0x92, 0x82, 0x93,
+ 0x94, 0x84, 0x86, 0x87, 0x95, 0x85, 0x89, 0x8b,
+ 0x9b, 0x80, 0x99
+ },
+ 251
+};
+const charset_spec charset_CS_CP1252 = {
+ CS_CP1252, read_sbcs, write_sbcs, &sbcsdata_CS_CP1252
+};
+
+const sbcs_data sbcsdata_CS_CP1253 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ ERROR , 0x2030, ERROR , 0x2039, ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ ERROR , 0x2122, ERROR , 0x203a, ERROR , ERROR , ERROR , ERROR ,
+ 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, ERROR , 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7,
+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ 0x03a0, 0x03a1, ERROR , 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
+ 0xab, 0xac, 0xad, 0xae, 0xb0, 0xb1, 0xb2, 0xb3,
+ 0xb5, 0xb6, 0xb7, 0xbb, 0xbd, 0x83, 0xb4, 0xa1,
+ 0xa2, 0xb8, 0xb9, 0xba, 0xbc, 0xbe, 0xbf, 0xc0,
+ 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+ 0xd1, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+ 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1,
+ 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+ 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1,
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
+ 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x96, 0x97, 0xaf,
+ 0x91, 0x92, 0x82, 0x93, 0x94, 0x84, 0x86, 0x87,
+ 0x95, 0x85, 0x89, 0x8b, 0x9b, 0x80, 0x99
+ },
+ 239
+};
+const charset_spec charset_CS_CP1253 = {
+ CS_CP1253, read_sbcs, write_sbcs, &sbcsdata_CS_CP1253
+};
+
+const sbcs_data sbcsdata_CS_CP1254 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, ERROR , ERROR , ERROR ,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, ERROR , ERROR , 0x0178,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
+ 0xd9, 0xda, 0xdb, 0xdc, 0xdf, 0xe0, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf1, 0xf2, 0xf3,
+ 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
+ 0xfc, 0xff, 0xd0, 0xf0, 0xdd, 0xfd, 0x8c, 0x9c,
+ 0xde, 0xfe, 0x8a, 0x9a, 0x9f, 0x83, 0x88, 0x98,
+ 0x96, 0x97, 0x91, 0x92, 0x82, 0x93, 0x94, 0x84,
+ 0x86, 0x87, 0x95, 0x85, 0x89, 0x8b, 0x9b, 0x80,
+ 0x99
+ },
+ 249
+};
+const charset_spec charset_CS_CP1254 = {
+ CS_CP1254, read_sbcs, write_sbcs, &sbcsdata_CS_CP1254
+};
+
+const sbcs_data sbcsdata_CS_CP1255 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, ERROR , 0x2039, ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, ERROR , 0x203a, ERROR , ERROR , ERROR , ERROR ,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+ 0x05b8, 0x05b9, ERROR , 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
+ 0x05f4, ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, ERROR , ERROR , 0x200e, 0x200f, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa5, 0xa6, 0xa7, 0xa8,
+ 0xa9, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1,
+ 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+ 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xaa, 0xba, 0x83,
+ 0x88, 0x98, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5,
+ 0xc6, 0xc7, 0xc8, 0xc9, 0xcb, 0xcc, 0xcd, 0xce,
+ 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xe0, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
+ 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
+ 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xfd, 0xfe, 0x96,
+ 0x97, 0x91, 0x92, 0x82, 0x93, 0x94, 0x84, 0x86,
+ 0x87, 0x95, 0x85, 0x89, 0x8b, 0x9b, 0xa4, 0x80,
+ 0x99
+ },
+ 233
+};
+const charset_spec charset_CS_CP1255 = {
+ CS_CP1255, read_sbcs, write_sbcs, &sbcsdata_CS_CP1255
+};
+
+const sbcs_data sbcsdata_CS_CP1256 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
+ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
+ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
+ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
+ 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
+ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
+ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
+ 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+ 0xa9, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1,
+ 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+ 0xbb, 0xbc, 0xbd, 0xbe, 0xd7, 0xe0, 0xe2, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xee, 0xef, 0xf4, 0xf7,
+ 0xf9, 0xfb, 0xfc, 0x8c, 0x9c, 0x83, 0x88, 0xa1,
+ 0xba, 0xbf, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
+ 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
+ 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe1, 0xe3, 0xe4, 0xe5, 0xe6, 0xec, 0xed, 0xf0,
+ 0xf1, 0xf2, 0xf3, 0xf5, 0xf6, 0xf8, 0xfa, 0x8a,
+ 0x81, 0x8d, 0x8f, 0x9a, 0x8e, 0x98, 0x90, 0x9f,
+ 0xaa, 0xc0, 0xff, 0x9d, 0x9e, 0xfd, 0xfe, 0x96,
+ 0x97, 0x91, 0x92, 0x82, 0x93, 0x94, 0x84, 0x86,
+ 0x87, 0x95, 0x85, 0x89, 0x8b, 0x9b, 0x80, 0x99
+ },
+ 256
+};
+const charset_spec charset_CS_CP1256 = {
+ CS_CP1256, read_sbcs, write_sbcs, &sbcsdata_CS_CP1256
+};
+
+const sbcs_data sbcsdata_CS_CP1257 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, ERROR , 0x201e, 0x2026, 0x2020, 0x2021,
+ ERROR , 0x2030, ERROR , 0x2039, ERROR , 0x00a8, 0x02c7, 0x00b8,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ ERROR , 0x2122, ERROR , 0x203a, ERROR , 0x00af, 0x02db, ERROR ,
+ 0x00a0, ERROR , 0x00a2, 0x00a3, 0x00a4, ERROR , 0x00a6, 0x00a7,
+ 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+ 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+ 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa2, 0xa3, 0xa4, 0xa6, 0xa7, 0x8d, 0xa9,
+ 0xab, 0xac, 0xad, 0xae, 0x9d, 0xb0, 0xb1, 0xb2,
+ 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0x8f, 0xb9, 0xbb,
+ 0xbc, 0xbd, 0xbe, 0xc4, 0xc5, 0xaf, 0xc9, 0xd3,
+ 0xd5, 0xd6, 0xd7, 0xa8, 0xdc, 0xdf, 0xe4, 0xe5,
+ 0xbf, 0xe9, 0xf3, 0xf5, 0xf6, 0xf7, 0xb8, 0xfc,
+ 0xc2, 0xe2, 0xc0, 0xe0, 0xc3, 0xe3, 0xc8, 0xe8,
+ 0xc7, 0xe7, 0xcb, 0xeb, 0xc6, 0xe6, 0xcc, 0xec,
+ 0xce, 0xee, 0xc1, 0xe1, 0xcd, 0xed, 0xcf, 0xef,
+ 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0xd4, 0xf4,
+ 0xaa, 0xba, 0xda, 0xfa, 0xd0, 0xf0, 0xdb, 0xfb,
+ 0xd8, 0xf8, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe,
+ 0x8e, 0xff, 0x9e, 0x96, 0x97, 0x91, 0x92, 0x82,
+ 0x93, 0x94, 0x84, 0x86, 0x87, 0x95, 0x85, 0x89,
+ 0x8b, 0x9b, 0x80, 0x99
+ },
+ 244
+};
+const charset_spec charset_CS_CP1257 = {
+ CS_CP1257, read_sbcs, write_sbcs, &sbcsdata_CS_CP1257
+};
+
+const sbcs_data sbcsdata_CS_CP1258 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x20ac, ERROR , 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, ERROR , 0x2039, 0x0152, ERROR , ERROR , ERROR ,
+ ERROR , 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, ERROR , 0x203a, 0x0153, ERROR , ERROR , 0x0178,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf,
+ 0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x01af, 0x0303, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef,
+ 0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
+ 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf, 0xd1, 0xd3,
+ 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc,
+ 0xdf, 0xe0, 0xe1, 0xe2, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xed, 0xee, 0xef, 0xf1,
+ 0xf3, 0xf4, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
+ 0xfc, 0xff, 0xc3, 0xe3, 0xd0, 0xf0, 0x8c, 0x9c,
+ 0x9f, 0x83, 0xd5, 0xf5, 0xdd, 0xfd, 0x88, 0x98,
+ 0xcc, 0xec, 0xde, 0xd2, 0xf2, 0x96, 0x97, 0x91,
+ 0x92, 0x82, 0x93, 0x94, 0x84, 0x86, 0x87, 0x95,
+ 0x85, 0x89, 0x8b, 0x9b, 0xfe, 0x80, 0x99
+ },
+ 247
+};
+const charset_spec charset_CS_CP1258 = {
+ CS_CP1258, read_sbcs, write_sbcs, &sbcsdata_CS_CP1258
+};
+
+const sbcs_data sbcsdata_CS_KOI8_R = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x9a, 0xbf, 0x9c, 0x9d, 0x9e, 0x9f, 0xb3, 0xe1,
+ 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, 0xe9,
+ 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf2,
+ 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, 0xfb,
+ 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, 0xc1,
+ 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, 0xc9,
+ 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd2,
+ 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, 0xdb,
+ 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, 0xa3,
+ 0x95, 0x96, 0x97, 0x98, 0x99, 0x93, 0x9b, 0x80,
+ 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+ 0x89, 0x8a, 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6,
+ 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae,
+ 0xaf, 0xb0, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x8b,
+ 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x94
+ },
+ 256
+};
+const charset_spec charset_CS_KOI8_R = {
+ CS_KOI8_R, read_sbcs, write_sbcs, &sbcsdata_CS_KOI8_R
+};
+
+const sbcs_data sbcsdata_CS_KOI8_U = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x9a, 0xbf, 0x9c, 0x9d, 0x9e, 0x9f, 0xb3, 0xb4,
+ 0xb6, 0xb7, 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5,
+ 0xf6, 0xfa, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee,
+ 0xef, 0xf0, 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8,
+ 0xe3, 0xfe, 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc,
+ 0xe0, 0xf1, 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5,
+ 0xd6, 0xda, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
+ 0xcf, 0xd0, 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8,
+ 0xc3, 0xde, 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc,
+ 0xc0, 0xd1, 0xa3, 0xa4, 0xa6, 0xa7, 0xbd, 0xad,
+ 0x95, 0x96, 0x97, 0x98, 0x99, 0x93, 0x9b, 0x80,
+ 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
+ 0x89, 0x8a, 0xa0, 0xa1, 0xa2, 0xa5, 0xa8, 0xa9,
+ 0xaa, 0xab, 0xac, 0xae, 0xaf, 0xb0, 0xb1, 0xb2,
+ 0xb5, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbe, 0x8b,
+ 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x94
+ },
+ 256
+};
+const charset_spec charset_CS_KOI8_U = {
+ CS_KOI8_U, read_sbcs, write_sbcs, &sbcsdata_CS_KOI8_U
+};
+
+const sbcs_data sbcsdata_CS_KOI8_RU = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x045e, 0x255e,
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x040e, 0x00a9,
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x9a, 0xbf, 0x9c, 0x9d, 0x9e, 0x9f, 0xb3, 0xb4,
+ 0xb6, 0xb7, 0xbe, 0xe1, 0xe2, 0xf7, 0xe7, 0xe4,
+ 0xe5, 0xf6, 0xfa, 0xe9, 0xea, 0xeb, 0xec, 0xed,
+ 0xee, 0xef, 0xf0, 0xf2, 0xf3, 0xf4, 0xf5, 0xe6,
+ 0xe8, 0xe3, 0xfe, 0xfb, 0xfd, 0xff, 0xf9, 0xf8,
+ 0xfc, 0xe0, 0xf1, 0xc1, 0xc2, 0xd7, 0xc7, 0xc4,
+ 0xc5, 0xd6, 0xda, 0xc9, 0xca, 0xcb, 0xcc, 0xcd,
+ 0xce, 0xcf, 0xd0, 0xd2, 0xd3, 0xd4, 0xd5, 0xc6,
+ 0xc8, 0xc3, 0xde, 0xdb, 0xdd, 0xdf, 0xd9, 0xd8,
+ 0xdc, 0xc0, 0xd1, 0xa3, 0xa4, 0xa6, 0xa7, 0xae,
+ 0xbd, 0xad, 0x95, 0x96, 0x97, 0x98, 0x99, 0x93,
+ 0x9b, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
+ 0x87, 0x88, 0x89, 0x8a, 0xa0, 0xa1, 0xa2, 0xa5,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xaf, 0xb0, 0xb1,
+ 0xb2, 0xb5, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x8b,
+ 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x94
+ },
+ 256
+};
+const charset_spec charset_CS_KOI8_RU = {
+ CS_KOI8_RU, read_sbcs, write_sbcs, &sbcsdata_CS_KOI8_RU
+};
+
+const sbcs_data sbcsdata_CS_JISX0201 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x00a5, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67,
+ 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f,
+ 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77,
+ 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f,
+ 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87,
+ 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f,
+ 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97,
+ 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x60,
+ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+ 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+ 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
+ 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7f, 0x5c, 0x7e,
+ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+ 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
+ 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
+ 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
+ 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+ 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
+ 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf
+ },
+ 191
+};
+const charset_spec charset_CS_JISX0201 = {
+ CS_JISX0201, read_sbcs, write_sbcs, &sbcsdata_CS_JISX0201
+};
+
+const sbcs_data sbcsdata_CS_MAC_ROMAN = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xb4, 0xa4, 0xac, 0xa9,
+ 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1, 0xab,
+ 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0, 0xcb,
+ 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9,
+ 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, 0x84,
+ 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xaf, 0xf4, 0xf2,
+ 0xf3, 0x86, 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a,
+ 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93,
+ 0x92, 0x94, 0x95, 0x96, 0x98, 0x97, 0x99, 0x9b,
+ 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xd8,
+ 0xf5, 0xce, 0xcf, 0xd9, 0xc4, 0xf6, 0xff, 0xf9,
+ 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0xbd, 0xb9, 0xd0,
+ 0xd1, 0xd4, 0xd5, 0xe2, 0xd2, 0xd3, 0xe3, 0xa0,
+ 0xe0, 0xa5, 0xc9, 0xe4, 0xdc, 0xdd, 0xda, 0xdb,
+ 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3, 0xb0, 0xba,
+ 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0, 0xde, 0xdf
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_ROMAN = {
+ CS_MAC_ROMAN, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_ROMAN
+};
+
+const sbcs_data sbcsdata_CS_MAC_TURKISH = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x011e, 0x011f, 0x0130, 0x0131, 0x015e, 0x015f,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, ERROR , 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xb4, 0xa4, 0xac, 0xa9,
+ 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1, 0xab,
+ 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0, 0xcb,
+ 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9,
+ 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, 0x84,
+ 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xaf, 0xf4, 0xf2,
+ 0xf3, 0x86, 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a,
+ 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93,
+ 0x92, 0x94, 0x95, 0x96, 0x98, 0x97, 0x99, 0x9b,
+ 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xd8,
+ 0xda, 0xdb, 0xdc, 0xdd, 0xce, 0xcf, 0xde, 0xdf,
+ 0xd9, 0xc4, 0xf6, 0xff, 0xf9, 0xfa, 0xfb, 0xfe,
+ 0xf7, 0xfd, 0xbd, 0xb9, 0xd0, 0xd1, 0xd4, 0xd5,
+ 0xe2, 0xd2, 0xd3, 0xe3, 0xa0, 0xe0, 0xa5, 0xc9,
+ 0xe4, 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3, 0xb0,
+ 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0
+ },
+ 255
+};
+const charset_spec charset_CS_MAC_TURKISH = {
+ CS_MAC_TURKISH, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_TURKISH
+};
+
+const sbcs_data sbcsdata_CS_MAC_CROATIAN = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x0160, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x017d, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x2206, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x0161, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x017e, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0106, 0x00ab,
+ 0x010c, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x0110, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0xf8ff, 0x00a9, 0x2044, 0x20ac, 0x2039, 0x203a, 0x00c6, 0x00bb,
+ 0x2013, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x0107, 0x00c1,
+ 0x010d, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0x0111, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xa4, 0xac, 0xd9, 0xbb,
+ 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1, 0xab, 0xb5,
+ 0xa6, 0xe1, 0xfc, 0xbc, 0xdf, 0xc0, 0xcb, 0xe7,
+ 0xe5, 0xcc, 0x80, 0x81, 0xde, 0x82, 0xe9, 0x83,
+ 0xfd, 0xfa, 0xed, 0xea, 0xeb, 0xec, 0x84, 0xf1,
+ 0xee, 0xef, 0xcd, 0x85, 0xaf, 0xf4, 0xf2, 0xf3,
+ 0x86, 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c,
+ 0xfe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92,
+ 0x94, 0x95, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a,
+ 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xc6, 0xe6,
+ 0xc8, 0xe8, 0xd0, 0xf0, 0xf5, 0xce, 0xcf, 0xa9,
+ 0xb9, 0xae, 0xbe, 0xc4, 0xf6, 0xff, 0xfb, 0xf7,
+ 0xbd, 0xf9, 0xe0, 0xd1, 0xd4, 0xd5, 0xe2, 0xd2,
+ 0xd3, 0xe3, 0xa0, 0xa5, 0xc9, 0xe4, 0xdc, 0xdd,
+ 0xda, 0xdb, 0xaa, 0xb6, 0xb4, 0xb8, 0xb7, 0xc3,
+ 0xb0, 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xd8
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_CROATIAN = {
+ CS_MAC_CROATIAN, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_CROATIAN
+};
+
+const sbcs_data sbcsdata_CS_MAC_ICELAND = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x00d0, 0x00f0, 0x00de, 0x00fe,
+ 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xb4, 0xa4, 0xac, 0xa9,
+ 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1, 0xab,
+ 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0, 0xcb,
+ 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9,
+ 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, 0xdc,
+ 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xaf, 0xf4,
+ 0xf2, 0xf3, 0x86, 0xa0, 0xde, 0xa7, 0x88, 0x87,
+ 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e,
+ 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, 0xdd, 0x96,
+ 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0xbf, 0x9d,
+ 0x9c, 0x9e, 0x9f, 0xe0, 0xdf, 0xd8, 0xf5, 0xce,
+ 0xcf, 0xd9, 0xc4, 0xf6, 0xff, 0xf9, 0xfa, 0xfb,
+ 0xfe, 0xf7, 0xfd, 0xbd, 0xb9, 0xd0, 0xd1, 0xd4,
+ 0xd5, 0xe2, 0xd2, 0xd3, 0xe3, 0xa5, 0xc9, 0xe4,
+ 0xda, 0xdb, 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3,
+ 0xb0, 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_ICELAND = {
+ CS_MAC_ICELAND, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_ICELAND
+};
+
+const sbcs_data sbcsdata_CS_MAC_ROMANIAN = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x0102, 0x0218,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x0103, 0x0219,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0x021a, 0x021b,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xb4, 0xa4, 0xac, 0xa9,
+ 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1, 0xab,
+ 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0, 0xcb,
+ 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0x82, 0xe9, 0x83,
+ 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, 0x84, 0xf1,
+ 0xee, 0xef, 0xcd, 0x85, 0xf4, 0xf2, 0xf3, 0x86,
+ 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0x8d,
+ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
+ 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0x9d,
+ 0x9c, 0x9e, 0x9f, 0xd8, 0xae, 0xbe, 0xf5, 0xce,
+ 0xcf, 0xd9, 0xc4, 0xaf, 0xbf, 0xde, 0xdf, 0xf6,
+ 0xff, 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0xbd,
+ 0xb9, 0xd0, 0xd1, 0xd4, 0xd5, 0xe2, 0xd2, 0xd3,
+ 0xe3, 0xa0, 0xe0, 0xa5, 0xc9, 0xe4, 0xdc, 0xdd,
+ 0xda, 0xdb, 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3,
+ 0xb0, 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_ROMANIAN = {
+ CS_MAC_ROMANIAN, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_ROMANIAN
+};
+
+const sbcs_data sbcsdata_CS_MAC_GREEK = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385,
+ 0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd,
+ 0x2030, 0x00f4, 0x00f6, 0x00a6, 0x20ac, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df,
+ 0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x00b7,
+ 0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396,
+ 0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9,
+ 0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153,
+ 0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389,
+ 0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f,
+ 0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+ 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+ 0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2,
+ 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0x00ad
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0x92, 0xb4, 0x9b, 0xac, 0x8c, 0xa9, 0xc7,
+ 0xc2, 0xff, 0xa8, 0xae, 0xb1, 0x82, 0x84, 0xaf,
+ 0x81, 0xc8, 0x97, 0x80, 0x83, 0x85, 0x86, 0xa7,
+ 0x88, 0x89, 0x8a, 0x8d, 0x8f, 0x8e, 0x90, 0x91,
+ 0x94, 0x95, 0x99, 0x9a, 0xd6, 0x9d, 0x9e, 0x9f,
+ 0xcf, 0x8b, 0x87, 0xcd, 0xce, 0xd7, 0xd8, 0xd9,
+ 0xda, 0xdf, 0xfd, 0xb0, 0xb5, 0xa1, 0xa2, 0xb6,
+ 0xb7, 0xb8, 0xa3, 0xb9, 0xba, 0xa4, 0xbb, 0xc1,
+ 0xa5, 0xc3, 0xa6, 0xc4, 0xaa, 0xc6, 0xcb, 0xbc,
+ 0xcc, 0xbe, 0xbf, 0xab, 0xbd, 0xc0, 0xdb, 0xdc,
+ 0xdd, 0xfe, 0xe1, 0xe2, 0xe7, 0xe4, 0xe5, 0xfa,
+ 0xe8, 0xf5, 0xe9, 0xeb, 0xec, 0xed, 0xee, 0xea,
+ 0xef, 0xf0, 0xf2, 0xf7, 0xf3, 0xf4, 0xf9, 0xe6,
+ 0xf8, 0xe3, 0xf6, 0xfb, 0xfc, 0xde, 0xe0, 0xf1,
+ 0xd0, 0xd1, 0xd4, 0xd5, 0xd2, 0xd3, 0xa0, 0x96,
+ 0xc9, 0x98, 0x9c, 0x93, 0xc5, 0xad, 0xb2, 0xb3
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_GREEK = {
+ CS_MAC_GREEK, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_GREEK
+};
+
+const sbcs_data sbcsdata_CS_MAC_CYRILLIC = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406,
+ 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408,
+ 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a,
+ 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e,
+ 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x20ac
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xa3, 0xa4, 0xa9, 0xc7, 0xc2, 0xa8, 0xa1,
+ 0xb1, 0xb5, 0xa6, 0xc8, 0xd6, 0xc4, 0xdd, 0xab,
+ 0xae, 0xb8, 0xc1, 0xa7, 0xba, 0xb7, 0xbc, 0xbe,
+ 0xcb, 0xcd, 0xd8, 0xda, 0x80, 0x81, 0x82, 0x83,
+ 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b,
+ 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93,
+ 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b,
+ 0x9c, 0x9d, 0x9e, 0x9f, 0xe0, 0xe1, 0xe2, 0xe3,
+ 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
+ 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
+ 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
+ 0xfc, 0xfd, 0xfe, 0xdf, 0xde, 0xac, 0xaf, 0xb9,
+ 0xcf, 0xb4, 0xbb, 0xc0, 0xbd, 0xbf, 0xcc, 0xce,
+ 0xd9, 0xdb, 0xa2, 0xb6, 0xd0, 0xd1, 0xd4, 0xd5,
+ 0xd2, 0xd3, 0xd7, 0xa0, 0xa5, 0xc9, 0xff, 0xdc,
+ 0xaa, 0xc6, 0xc3, 0xb0, 0xc5, 0xad, 0xb2, 0xb3
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_CYRILLIC = {
+ CS_MAC_CYRILLIC, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_CYRILLIC
+};
+
+const sbcs_data sbcsdata_CS_MAC_THAI = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00ab, 0x00bb, 0x2026, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x201c, 0x201d, 0x0e4d,
+ ERROR , 0x2022, 0x0e31, 0x0e47, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x2018, 0x2019, ERROR ,
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0x2060, 0x200b, 0x2013, 0x2014, 0x0e3f,
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x2122, 0x0e4f,
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x00ae, 0x00a9, ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xa0, 0xfb, 0x80, 0xfa, 0x81, 0xa1, 0xa2, 0xa3,
+ 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab,
+ 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3,
+ 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb,
+ 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3,
+ 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb,
+ 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3,
+ 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xef, 0xf0,
+ 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+ 0xf9, 0xdc, 0xdd, 0xde, 0x9d, 0x9e, 0x8d, 0x8e,
+ 0x91, 0x82, 0xdb, 0xee
+ },
+ 228
+};
+const charset_spec charset_CS_MAC_THAI = {
+ CS_MAC_THAI, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_THAI
+};
+
+const sbcs_data sbcsdata_CS_MAC_CENTEURO = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1,
+ 0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179,
+ 0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3,
+ 0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc,
+ 0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x0123, 0x012e,
+ 0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211,
+ 0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145,
+ 0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156,
+ 0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1,
+ 0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4,
+ 0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173,
+ 0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xa3, 0xa4, 0xac, 0xa9, 0xc7, 0xc2, 0xa8,
+ 0xa1, 0xa6, 0xc8, 0xe7, 0x80, 0x83, 0xea, 0xee,
+ 0xef, 0xcd, 0x85, 0xf2, 0x86, 0xf8, 0xa7, 0x87,
+ 0x8a, 0x8e, 0x92, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
+ 0x9c, 0x9f, 0xf9, 0x81, 0x82, 0x84, 0x88, 0x8c,
+ 0x8d, 0x89, 0x8b, 0x91, 0x93, 0x94, 0x95, 0x96,
+ 0x98, 0xa2, 0xab, 0x9d, 0x9e, 0xfe, 0xae, 0xb1,
+ 0xb4, 0xaf, 0xb0, 0xb5, 0xfa, 0xbd, 0xbe, 0xb9,
+ 0xba, 0xbb, 0xbc, 0xfc, 0xb8, 0xc1, 0xc4, 0xbf,
+ 0xc0, 0xc5, 0xcb, 0xcf, 0xd8, 0xcc, 0xce, 0xd9,
+ 0xda, 0xdf, 0xe0, 0xdb, 0xde, 0xe5, 0xe6, 0xe1,
+ 0xe4, 0xe8, 0xe9, 0xed, 0xf0, 0xf1, 0xf3, 0xf4,
+ 0xf5, 0xf6, 0xf7, 0x8f, 0x90, 0xfb, 0xfd, 0xeb,
+ 0xec, 0xff, 0xd0, 0xd1, 0xd4, 0xd5, 0xe2, 0xd2,
+ 0xd3, 0xe3, 0xa0, 0xa5, 0xc9, 0xdc, 0xdd, 0xaa,
+ 0xb6, 0xc6, 0xb7, 0xc3, 0xad, 0xb2, 0xb3, 0xd7
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_CENTEURO = {
+ CS_MAC_CENTEURO, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_CENTEURO
+};
+
+const sbcs_data sbcsdata_CS_MAC_SYMBOL = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d,
+ 0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x2245, 0x0391, 0x0392, 0x03a7, 0x0394, 0x0395, 0x03a6, 0x0393,
+ 0x0397, 0x0399, 0x03d1, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f,
+ 0x03a0, 0x0398, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03c2, 0x03a9,
+ 0x039e, 0x03a8, 0x0396, 0x005b, 0x2234, 0x005d, 0x22a5, 0x005f,
+ 0xf8e5, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+ 0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+ 0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9,
+ 0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x223c, 0x007f,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ 0x20ac, 0x03d2, 0x2032, 0x2264, 0x2044, 0x221e, 0x0192, 0x2663,
+ 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193,
+ 0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022,
+ 0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0xf8e6, 0x23af, 0x21b5,
+ 0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229,
+ 0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209,
+ 0x2220, 0x2207, 0x00ae, 0x00a9, 0x2122, 0x220f, 0x221a, 0x22c5,
+ 0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3,
+ 0x22c4, 0x3008, 0x00ae, 0x00a9, 0x2122, 0x2211, 0x239b, 0x239c,
+ 0x239d, 0x23a1, 0x23a2, 0x23a3, 0x23a7, 0x23a8, 0x23a9, 0x23aa,
+ 0xf8ff, 0x3009, 0x222b, 0x2320, 0x23ae, 0x2321, 0x239e, 0x239f,
+ 0x23a0, 0x23a4, 0x23a5, 0x23a6, 0x23ab, 0x23ac, 0x23ad, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x23, 0x25, 0x26, 0x28, 0x29, 0x2b,
+ 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34,
+ 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
+ 0x3d, 0x3e, 0x3f, 0x5b, 0x5d, 0x5f, 0x7b, 0x7c,
+ 0x7d, 0x7f, 0xd3, 0xd8, 0xd2, 0xb0, 0xb1, 0xb4,
+ 0xb8, 0xa6, 0x41, 0x42, 0x47, 0x44, 0x45, 0x5a,
+ 0x48, 0x51, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x58,
+ 0x4f, 0x50, 0x52, 0x53, 0x54, 0x55, 0x46, 0x43,
+ 0x59, 0x57, 0x61, 0x62, 0x67, 0x64, 0x65, 0x7a,
+ 0x68, 0x71, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, 0x78,
+ 0x6f, 0x70, 0x72, 0x56, 0x73, 0x74, 0x75, 0x66,
+ 0x63, 0x79, 0x77, 0x4a, 0xa1, 0x6a, 0x76, 0xb7,
+ 0xbc, 0xa2, 0xb2, 0xa4, 0xa0, 0xc1, 0xc3, 0xc2,
+ 0xd4, 0xc0, 0xac, 0xad, 0xae, 0xaf, 0xab, 0xbf,
+ 0xdc, 0xdd, 0xde, 0xdf, 0xdb, 0x22, 0xb6, 0x24,
+ 0xc6, 0xd1, 0xce, 0xcf, 0x27, 0xd5, 0xe5, 0x2d,
+ 0x2a, 0xd6, 0xb5, 0xa5, 0xd0, 0xd9, 0xda, 0xc7,
+ 0xc8, 0xf2, 0x5c, 0x7e, 0x40, 0xbb, 0xb9, 0xba,
+ 0xa3, 0xb3, 0xcc, 0xc9, 0xcb, 0xcd, 0xca, 0xc5,
+ 0xc4, 0x5e, 0xe0, 0xd7, 0xf3, 0xf5, 0xe6, 0xe7,
+ 0xe8, 0xf6, 0xf7, 0xf8, 0xe9, 0xea, 0xeb, 0xf9,
+ 0xfa, 0xfb, 0xec, 0xed, 0xee, 0xef, 0xfc, 0xfd,
+ 0xfe, 0xf4, 0xbe, 0xaa, 0xa7, 0xa9, 0xa8, 0xe1,
+ 0xf1, 0x60, 0xbd, 0xf0
+ },
+ 220
+};
+const charset_spec charset_CS_MAC_SYMBOL = {
+ CS_MAC_SYMBOL, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_SYMBOL
+};
+
+const sbcs_data sbcsdata_CS_MAC_DINGBATS = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x2701, 0x2702, 0x2703, 0x2704, 0x260e, 0x2706, 0x2707,
+ 0x2708, 0x2709, 0x261b, 0x261e, 0x270c, 0x270d, 0x270e, 0x270f,
+ 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717,
+ 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f,
+ 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727,
+ 0x2605, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f,
+ 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737,
+ 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f,
+ 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747,
+ 0x2748, 0x2749, 0x274a, 0x274b, 0x25cf, 0x274d, 0x25a0, 0x274f,
+ 0x2750, 0x2751, 0x2752, 0x25b2, 0x25bc, 0x25c6, 0x2756, 0x25d7,
+ 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x007f,
+ 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f,
+ 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767,
+ 0x2663, 0x2666, 0x2665, 0x2660, 0x2460, 0x2461, 0x2462, 0x2463,
+ 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2776, 0x2777,
+ 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f,
+ 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787,
+ 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f,
+ 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195,
+ 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f,
+ 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7,
+ 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af,
+ ERROR , 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7,
+ 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x7f, 0xd5, 0xd6, 0xd7, 0xac, 0xad, 0xae,
+ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x6e,
+ 0x73, 0x74, 0x75, 0x6c, 0x77, 0x48, 0x25, 0x2a,
+ 0x2b, 0xab, 0xa8, 0xaa, 0xa9, 0x21, 0x22, 0x23,
+ 0x24, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x2d, 0x2e,
+ 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
+ 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
+ 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,
+ 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6d, 0x6f, 0x70, 0x71,
+ 0x72, 0x76, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d,
+ 0x7e, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd8, 0xd9, 0xda,
+ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf1, 0xf2, 0xf3,
+ 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
+ 0xfc, 0xfd, 0xfe
+ },
+ 235
+};
+const charset_spec charset_CS_MAC_DINGBATS = {
+ CS_MAC_DINGBATS, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_DINGBATS
+};
+
+const sbcs_data sbcsdata_CS_MAC_ROMAN_OLD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0xa4, 0xac,
+ 0xa9, 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1,
+ 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0,
+ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82,
+ 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+ 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xaf, 0xf4,
+ 0xf2, 0xf3, 0x86, 0xa7, 0x88, 0x87, 0x89, 0x8b,
+ 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91,
+ 0x93, 0x92, 0x94, 0x95, 0x96, 0x98, 0x97, 0x99,
+ 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f,
+ 0xd8, 0xf5, 0xce, 0xcf, 0xd9, 0xc4, 0xf6, 0xff,
+ 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0xbd, 0xb9,
+ 0xd0, 0xd1, 0xd4, 0xd5, 0xe2, 0xd2, 0xd3, 0xe3,
+ 0xa0, 0xe0, 0xa5, 0xc9, 0xe4, 0xdc, 0xdd, 0xda,
+ 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3, 0xb0, 0xba,
+ 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0, 0xde, 0xdf
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_ROMAN_OLD = {
+ CS_MAC_ROMAN_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_ROMAN_OLD
+};
+
+const sbcs_data sbcsdata_CS_MAC_CROATIAN_OLD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x0160, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x017d, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x2206, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x0161, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x017e, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0106, 0x00ab,
+ 0x010c, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x0110, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0xf8ff, 0x00a9, 0x2044, 0x00a4, 0x2039, 0x203a, 0x00c6, 0x00bb,
+ 0x2013, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x0107, 0x00c1,
+ 0x010d, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0x0111, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xa4, 0xac, 0xd9,
+ 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1, 0xab,
+ 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xdf, 0xc0, 0xcb,
+ 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xde, 0x82, 0xe9,
+ 0x83, 0xfd, 0xfa, 0xed, 0xea, 0xeb, 0xec, 0x84,
+ 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xaf, 0xf4, 0xf2,
+ 0xf3, 0x86, 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a,
+ 0x8c, 0xfe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93,
+ 0x92, 0x94, 0x95, 0x96, 0x98, 0x97, 0x99, 0x9b,
+ 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xc6,
+ 0xe6, 0xc8, 0xe8, 0xd0, 0xf0, 0xf5, 0xce, 0xcf,
+ 0xa9, 0xb9, 0xae, 0xbe, 0xc4, 0xf6, 0xff, 0xfb,
+ 0xf7, 0xbd, 0xf9, 0xe0, 0xd1, 0xd4, 0xd5, 0xe2,
+ 0xd2, 0xd3, 0xe3, 0xa0, 0xa5, 0xc9, 0xe4, 0xdc,
+ 0xdd, 0xda, 0xaa, 0xb6, 0xb4, 0xb8, 0xb7, 0xc3,
+ 0xb0, 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xd8
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_CROATIAN_OLD = {
+ CS_MAC_CROATIAN_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_CROATIAN_OLD
+};
+
+const sbcs_data sbcsdata_CS_MAC_ICELAND_OLD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x00a4, 0x00d0, 0x00f0, 0x00de, 0x00fe,
+ 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0xa4, 0xac,
+ 0xa9, 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1,
+ 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0,
+ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82,
+ 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
+ 0xdc, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xaf,
+ 0xf4, 0xf2, 0xf3, 0x86, 0xa0, 0xde, 0xa7, 0x88,
+ 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, 0x8f,
+ 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, 0xdd,
+ 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0xbf,
+ 0x9d, 0x9c, 0x9e, 0x9f, 0xe0, 0xdf, 0xd8, 0xf5,
+ 0xce, 0xcf, 0xd9, 0xc4, 0xf6, 0xff, 0xf9, 0xfa,
+ 0xfb, 0xfe, 0xf7, 0xfd, 0xbd, 0xb9, 0xd0, 0xd1,
+ 0xd4, 0xd5, 0xe2, 0xd2, 0xd3, 0xe3, 0xa5, 0xc9,
+ 0xe4, 0xda, 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3,
+ 0xb0, 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_ICELAND_OLD = {
+ CS_MAC_ICELAND_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_ICELAND_OLD
+};
+
+const sbcs_data sbcsdata_CS_MAC_ROMANIAN_OLD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x0102, 0x0218,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
+ 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x0103, 0x0219,
+ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
+ 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0x021a, 0x021b,
+ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
+ 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0xa4, 0xac,
+ 0xa9, 0xbb, 0xc7, 0xc2, 0xa8, 0xf8, 0xa1, 0xb1,
+ 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0xbc, 0xc8, 0xc0,
+ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0x82, 0xe9,
+ 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, 0x84,
+ 0xf1, 0xee, 0xef, 0xcd, 0x85, 0xf4, 0xf2, 0xf3,
+ 0x86, 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c,
+ 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94,
+ 0x95, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
+ 0x9d, 0x9c, 0x9e, 0x9f, 0xd8, 0xae, 0xbe, 0xf5,
+ 0xce, 0xcf, 0xd9, 0xc4, 0xaf, 0xbf, 0xde, 0xdf,
+ 0xf6, 0xff, 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd,
+ 0xbd, 0xb9, 0xd0, 0xd1, 0xd4, 0xd5, 0xe2, 0xd2,
+ 0xd3, 0xe3, 0xa0, 0xe0, 0xa5, 0xc9, 0xe4, 0xdc,
+ 0xdd, 0xda, 0xaa, 0xb6, 0xc6, 0xb8, 0xb7, 0xc3,
+ 0xb0, 0xba, 0xc5, 0xad, 0xb2, 0xb3, 0xd7, 0xf0
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_ROMANIAN_OLD = {
+ CS_MAC_ROMANIAN_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_ROMANIAN_OLD
+};
+
+const sbcs_data sbcsdata_CS_MAC_GREEK_OLD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385,
+ 0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd,
+ 0x2030, 0x00f4, 0x00f6, 0x00a6, 0x00ad, 0x00f9, 0x00fb, 0x00fc,
+ 0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df,
+ 0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x00b7,
+ 0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396,
+ 0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9,
+ 0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153,
+ 0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389,
+ 0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f,
+ 0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
+ 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
+ 0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2,
+ 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0x92, 0xb4, 0x9b, 0xac, 0x8c, 0xa9, 0xc7,
+ 0xc2, 0x9c, 0xa8, 0xae, 0xb1, 0x82, 0x84, 0xaf,
+ 0x81, 0xc8, 0x97, 0x80, 0x83, 0x85, 0x86, 0xa7,
+ 0x88, 0x89, 0x8a, 0x8d, 0x8f, 0x8e, 0x90, 0x91,
+ 0x94, 0x95, 0x99, 0x9a, 0xd6, 0x9d, 0x9e, 0x9f,
+ 0xcf, 0x8b, 0x87, 0xcd, 0xce, 0xd7, 0xd8, 0xd9,
+ 0xda, 0xdf, 0xfd, 0xb0, 0xb5, 0xa1, 0xa2, 0xb6,
+ 0xb7, 0xb8, 0xa3, 0xb9, 0xba, 0xa4, 0xbb, 0xc1,
+ 0xa5, 0xc3, 0xa6, 0xc4, 0xaa, 0xc6, 0xcb, 0xbc,
+ 0xcc, 0xbe, 0xbf, 0xab, 0xbd, 0xc0, 0xdb, 0xdc,
+ 0xdd, 0xfe, 0xe1, 0xe2, 0xe7, 0xe4, 0xe5, 0xfa,
+ 0xe8, 0xf5, 0xe9, 0xeb, 0xec, 0xed, 0xee, 0xea,
+ 0xef, 0xf0, 0xf2, 0xf7, 0xf3, 0xf4, 0xf9, 0xe6,
+ 0xf8, 0xe3, 0xf6, 0xfb, 0xfc, 0xde, 0xe0, 0xf1,
+ 0xd0, 0xd1, 0xd4, 0xd5, 0xd2, 0xd3, 0xa0, 0x96,
+ 0xc9, 0x98, 0x93, 0xc5, 0xad, 0xb2, 0xb3
+ },
+ 255
+};
+const charset_spec charset_CS_MAC_GREEK_OLD = {
+ CS_MAC_GREEK_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_GREEK_OLD
+};
+
+const sbcs_data sbcsdata_CS_MAC_CYRILLIC_OLD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406,
+ 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x2022, 0x0408,
+ 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a,
+ 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e,
+ 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xa2, 0xa3, 0xff, 0xa4, 0xa9, 0xc7, 0xc2,
+ 0xa8, 0xa1, 0xb1, 0xb5, 0xa6, 0xc8, 0xd6, 0xc4,
+ 0xdd, 0xab, 0xae, 0xb8, 0xc1, 0xa7, 0xba, 0xb7,
+ 0xbc, 0xbe, 0xcb, 0xcd, 0xd8, 0xda, 0x80, 0x81,
+ 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
+ 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91,
+ 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
+ 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xe0, 0xe1,
+ 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+ 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1,
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
+ 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, 0xde, 0xac,
+ 0xaf, 0xb9, 0xcf, 0xb4, 0xbb, 0xc0, 0xbd, 0xbf,
+ 0xcc, 0xce, 0xd9, 0xdb, 0xd0, 0xd1, 0xd4, 0xd5,
+ 0xd2, 0xd3, 0xd7, 0xa0, 0xa5, 0xc9, 0xdc, 0xaa,
+ 0xc6, 0xc3, 0xb0, 0xc5, 0xad, 0xb2, 0xb3
+ },
+ 255
+};
+const charset_spec charset_CS_MAC_CYRILLIC_OLD = {
+ CS_MAC_CYRILLIC_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_CYRILLIC_OLD
+};
+
+const sbcs_data sbcsdata_CS_MAC_UKRAINE = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406,
+ 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453,
+ 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408,
+ 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a,
+ 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
+ 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e,
+ 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xca, 0xa3, 0xff, 0xa4, 0xa9, 0xc7, 0xc2, 0xa8,
+ 0xa1, 0xb1, 0xb5, 0xa6, 0xc8, 0xd6, 0xc4, 0xdd,
+ 0xab, 0xae, 0xb8, 0xc1, 0xa7, 0xba, 0xb7, 0xbc,
+ 0xbe, 0xcb, 0xcd, 0xd8, 0xda, 0x80, 0x81, 0x82,
+ 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a,
+ 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92,
+ 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a,
+ 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xe0, 0xe1, 0xe2,
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
+ 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
+ 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
+ 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, 0xde, 0xac, 0xaf,
+ 0xb9, 0xcf, 0xb4, 0xbb, 0xc0, 0xbd, 0xbf, 0xcc,
+ 0xce, 0xd9, 0xdb, 0xa2, 0xb6, 0xd0, 0xd1, 0xd4,
+ 0xd5, 0xd2, 0xd3, 0xd7, 0xa0, 0xa5, 0xc9, 0xdc,
+ 0xaa, 0xc6, 0xc3, 0xb0, 0xc5, 0xad, 0xb2, 0xb3
+ },
+ 256
+};
+const charset_spec charset_CS_MAC_UKRAINE = {
+ CS_MAC_UKRAINE, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_UKRAINE
+};
+
+const sbcs_data sbcsdata_CS_MAC_VT100 = {
+ {
+ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
+ 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f,
+ 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
+ 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2421,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x00b8, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x00d7, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x00b9, 0x00b2,
+ 0x00b3, 0x03c0, 0x00a6, 0x00aa, 0x00ba, 0x2592, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x00bd, 0x0192, 0x00bc, 0x00be, 0x00ab,
+ 0x00bb, 0x2026, ERROR , 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x2518, 0x2510, 0x250c, 0x2514, 0x00f7, 0x2022,
+ 0x00ff, 0x0178, 0x253c, 0x20ac, 0x00d0, 0x00f0, 0x00fe, 0x00de,
+ 0x00fd, 0x00b7, 0x23ba, 0x23bb, 0x2500, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ ERROR , 0x00d2, 0x00da, 0x00db, 0x00d9, 0x23bc, 0x23bd, 0x251c,
+ 0x2524, 0x2534, 0x252c, 0x2502, ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0xc1,
+ 0xa2, 0xa3, 0xb4, 0xba, 0xa4, 0xac, 0xa9, 0xbb,
+ 0xc7, 0xc2, 0xa8, 0xa1, 0xb1, 0xb7, 0xb8, 0xab,
+ 0xb5, 0xa6, 0xe1, 0xa5, 0xb6, 0xbc, 0xc8, 0xc5,
+ 0xc3, 0xc6, 0xc0, 0xcb, 0xe7, 0xe5, 0xcc, 0x80,
+ 0x81, 0xae, 0x82, 0xe9, 0x83, 0xe6, 0xe8, 0xed,
+ 0xea, 0xeb, 0xec, 0xdc, 0x84, 0xf1, 0xee, 0xef,
+ 0xcd, 0x85, 0xb0, 0xaf, 0xf4, 0xf2, 0xf3, 0x86,
+ 0xa0, 0xdf, 0xa7, 0x88, 0x87, 0x89, 0x8b, 0x8a,
+ 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93,
+ 0x92, 0x94, 0x95, 0xdd, 0x96, 0x98, 0x97, 0x99,
+ 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f,
+ 0xe0, 0xde, 0xd8, 0xce, 0xcf, 0xd9, 0xc4, 0xb9,
+ 0xd0, 0xd1, 0xd7, 0xc9, 0xdb, 0xaa, 0xad, 0xb2,
+ 0xb3, 0xe2, 0xe3, 0xf5, 0xf6, 0x00, 0x01, 0x02,
+ 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
+ 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
+ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x7f, 0xe4, 0xfb,
+ 0xd4, 0xd3, 0xd5, 0xd2, 0xf7, 0xf8, 0xfa, 0xf9,
+ 0xda, 0xbd
+ },
+ 250
+};
+const charset_spec charset_CS_MAC_VT100 = {
+ CS_MAC_VT100, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_VT100
+};
+
+const sbcs_data sbcsdata_CS_MAC_VT100_OLD = {
+ {
+ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
+ 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f,
+ 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
+ 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2421,
+ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
+ 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
+ 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
+ 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x00b8, 0x00b6, 0x00df,
+ 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
+ 0x00d7, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x00b9, 0x00b2,
+ 0x00b3, 0x03c0, 0x00a6, 0x00aa, 0x00ba, 0x2592, 0x00e6, 0x00f8,
+ 0x00bf, 0x00a1, 0x00ac, 0x00bd, 0x0192, 0x00bc, 0x00be, 0x00ab,
+ 0x00bb, 0x2026, ERROR , 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
+ 0x2013, 0x2014, 0x2518, 0x2510, 0x250c, 0x2514, 0x00f7, 0x2022,
+ 0x00ff, 0x0178, 0x253c, 0x00a4, 0x00d0, 0x00f0, 0x00fe, 0x00de,
+ 0x00fd, 0x00b7, 0x23ba, 0x23bb, 0x2500, 0x00c2, 0x00ca, 0x00c1,
+ 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
+ ERROR , 0x00d2, 0x00da, 0x00db, 0x00d9, 0x23bc, 0x23bd, 0x251c,
+ 0x2524, 0x2534, 0x252c, 0x2502, ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0xc1,
+ 0xa2, 0xa3, 0xdb, 0xb4, 0xba, 0xa4, 0xac, 0xa9,
+ 0xbb, 0xc7, 0xc2, 0xa8, 0xa1, 0xb1, 0xb7, 0xb8,
+ 0xab, 0xb5, 0xa6, 0xe1, 0xa5, 0xb6, 0xbc, 0xc8,
+ 0xc5, 0xc3, 0xc6, 0xc0, 0xcb, 0xe7, 0xe5, 0xcc,
+ 0x80, 0x81, 0xae, 0x82, 0xe9, 0x83, 0xe6, 0xe8,
+ 0xed, 0xea, 0xeb, 0xec, 0xdc, 0x84, 0xf1, 0xee,
+ 0xef, 0xcd, 0x85, 0xb0, 0xaf, 0xf4, 0xf2, 0xf3,
+ 0x86, 0xa0, 0xdf, 0xa7, 0x88, 0x87, 0x89, 0x8b,
+ 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91,
+ 0x93, 0x92, 0x94, 0x95, 0xdd, 0x96, 0x98, 0x97,
+ 0x99, 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e,
+ 0x9f, 0xe0, 0xde, 0xd8, 0xce, 0xcf, 0xd9, 0xc4,
+ 0xb9, 0xd0, 0xd1, 0xd7, 0xc9, 0xaa, 0xad, 0xb2,
+ 0xb3, 0xe2, 0xe3, 0xf5, 0xf6, 0x00, 0x01, 0x02,
+ 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
+ 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
+ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x7f, 0xe4, 0xfb,
+ 0xd4, 0xd3, 0xd5, 0xd2, 0xf7, 0xf8, 0xfa, 0xf9,
+ 0xda, 0xbd
+ },
+ 250
+};
+const charset_spec charset_CS_MAC_VT100_OLD = {
+ CS_MAC_VT100_OLD, read_sbcs, write_sbcs, &sbcsdata_CS_MAC_VT100_OLD
+};
+
+const sbcs_data sbcsdata_CS_VISCII = {
+ {
+ 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
+ 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
+ 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
+ 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
+ 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea8, 0x1ead,
+ 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
+ 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
+ 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
+ 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
+ 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
+ 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
+ 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
+ 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
+ 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee
+ },
+ {
+ 0x00, 0x01, 0x03, 0x04, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
+ 0x13, 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c,
+ 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
+ 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
+ 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
+ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
+ 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
+ 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
+ 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d,
+ 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65,
+ 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d,
+ 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
+ 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d,
+ 0x7e, 0x7f, 0xc0, 0xc1, 0xc2, 0xc3, 0xc8, 0xc9,
+ 0xca, 0xcc, 0xcd, 0xd2, 0xd3, 0xd4, 0xa0, 0xd9,
+ 0xda, 0xdd, 0xe0, 0xe1, 0xe2, 0xe3, 0xe8, 0xe9,
+ 0xea, 0xec, 0xed, 0xf2, 0xf3, 0xf4, 0xf5, 0xf9,
+ 0xfa, 0xfd, 0xc5, 0xe5, 0xd0, 0xf0, 0xce, 0xee,
+ 0x9d, 0xfb, 0xb4, 0xbd, 0xbf, 0xdf, 0x80, 0xd5,
+ 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, 0x86, 0x06,
+ 0xe7, 0x87, 0xa7, 0x81, 0xa1, 0x82, 0xa2, 0x02,
+ 0xc6, 0x05, 0xc7, 0x83, 0xa3, 0x89, 0xa9, 0xcb,
+ 0xeb, 0x88, 0xa8, 0x8a, 0xaa, 0x8b, 0xab, 0x8c,
+ 0xac, 0x8d, 0xad, 0x8e, 0xae, 0x9b, 0xef, 0x98,
+ 0xb8, 0x9a, 0xf7, 0x99, 0xf6, 0x8f, 0xaf, 0x90,
+ 0xb0, 0x91, 0xb1, 0x92, 0xb2, 0x93, 0xb5, 0x95,
+ 0xbe, 0x96, 0xb6, 0x97, 0xb7, 0xb3, 0xde, 0x94,
+ 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, 0xba, 0xd1, 0xbb,
+ 0xd7, 0xbc, 0xd8, 0xff, 0xe6, 0xb9, 0xf1, 0x9f,
+ 0xcf, 0x1e, 0xdc, 0x14, 0xd6, 0x19, 0xdb
+ },
+ 255
+};
+const charset_spec charset_CS_VISCII = {
+ CS_VISCII, read_sbcs, write_sbcs, &sbcsdata_CS_VISCII
+};
+
+const sbcs_data sbcsdata_CS_HP_ROMAN8 = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ 0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf,
+ 0x00b4, 0x02cb, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x20a4,
+ 0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1,
+ 0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2,
+ 0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa,
+ 0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc,
+ 0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6,
+ 0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4,
+ 0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3,
+ 0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff,
+ 0x00de, 0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2014, 0x00bc,
+ 0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xb8, 0xbf, 0xbb, 0xba, 0xbc, 0xbd, 0xab,
+ 0xf9, 0xfb, 0xb0, 0xb3, 0xfe, 0xa8, 0xf3, 0xf4,
+ 0xf2, 0xfa, 0xfd, 0xf7, 0xf8, 0xf5, 0xb9, 0xa1,
+ 0xe0, 0xa2, 0xe1, 0xd8, 0xd0, 0xd3, 0xb4, 0xa3,
+ 0xdc, 0xa4, 0xa5, 0xe6, 0xe5, 0xa6, 0xa7, 0xe3,
+ 0xb6, 0xe8, 0xe7, 0xdf, 0xe9, 0xda, 0xd2, 0xad,
+ 0xed, 0xae, 0xdb, 0xb1, 0xf0, 0xde, 0xc8, 0xc4,
+ 0xc0, 0xe2, 0xcc, 0xd4, 0xd7, 0xb5, 0xc9, 0xc5,
+ 0xc1, 0xcd, 0xd9, 0xd5, 0xd1, 0xdd, 0xe4, 0xb7,
+ 0xca, 0xc6, 0xc2, 0xea, 0xce, 0xd6, 0xcb, 0xc7,
+ 0xc3, 0xcf, 0xb2, 0xf1, 0xef, 0xeb, 0xec, 0xee,
+ 0xbe, 0xaa, 0xa9, 0xac, 0xf6, 0xaf, 0xfc
+ },
+ 255
+};
+const charset_spec charset_CS_HP_ROMAN8 = {
+ CS_HP_ROMAN8, read_sbcs, write_sbcs, &sbcsdata_CS_HP_ROMAN8
+};
+
+const sbcs_data sbcsdata_CS_DEC_MCS = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+ ERROR , 0x00a1, 0x00a2, 0x00a3, ERROR , 0x00a5, ERROR , 0x00a7,
+ 0x00a4, 0x00a9, 0x00aa, 0x00ab, ERROR , ERROR , ERROR , ERROR ,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, ERROR , 0x00b5, 0x00b6, 0x00b7,
+ ERROR , 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, ERROR , 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ ERROR , 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0152,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0178, ERROR , 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ ERROR , 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0153,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00ff, ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa1, 0xa2, 0xa3, 0xa8, 0xa5, 0xa7, 0xa9, 0xaa,
+ 0xab, 0xb0, 0xb1, 0xb2, 0xb3, 0xb5, 0xb6, 0xb7,
+ 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbf, 0xc0, 0xc1,
+ 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
+ 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd1, 0xd2,
+ 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda, 0xdb,
+ 0xdc, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5,
+ 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,
+ 0xee, 0xef, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xd7, 0xf7,
+ 0xdd
+ },
+ 241
+};
+const charset_spec charset_CS_DEC_MCS = {
+ CS_DEC_MCS, read_sbcs, write_sbcs, &sbcsdata_CS_DEC_MCS
+};
+
+const sbcs_data sbcsdata_CS_PDF = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x02d8, 0x02c7, 0x02c6, 0x02d9, 0x02dd, 0x02db, 0x02da, 0x02dc,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, ERROR ,
+ 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x0192, 0x2044,
+ 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,
+ 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x0141, 0x0152, 0x0160,
+ 0x0178, 0x017d, 0x0131, 0x0142, 0x0153, 0x0161, 0x017e, ERROR ,
+ 0x20ac, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0xa1,
+ 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
+ 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1,
+ 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+ 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
+ 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
+ 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1,
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+ 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1,
+ 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+ 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1,
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
+ 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x9a, 0x95,
+ 0x9b, 0x96, 0x9c, 0x97, 0x9d, 0x98, 0x99, 0x9e,
+ 0x86, 0x1a, 0x19, 0x18, 0x1b, 0x1e, 0x1d, 0x1f,
+ 0x1c, 0x85, 0x84, 0x8f, 0x90, 0x91, 0x8d, 0x8e,
+ 0x8c, 0x81, 0x82, 0x80, 0x83, 0x8b, 0x88, 0x89,
+ 0x87, 0xa0, 0x92, 0x8a, 0x93, 0x94
+ },
+ 254
+};
+const charset_spec charset_CS_PDF = {
+ CS_PDF, read_sbcs, write_sbcs, &sbcsdata_CS_PDF
+};
+
+const sbcs_data sbcsdata_CS_PSSTD = {
+ {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
+ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
+ 0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0x00a1, 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7,
+ 0x00a4, 0x0027, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02,
+ ERROR , 0x2013, 0x2020, 0x2021, 0x00b7, ERROR , 0x00b6, 0x2022,
+ 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030, ERROR , 0x00bf,
+ ERROR , 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9,
+ 0x00a8, ERROR , 0x02da, 0x00b8, ERROR , 0x02dd, 0x02db, 0x02c7,
+ 0x2014, ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0x00c6, ERROR , 0x00aa, ERROR , ERROR , ERROR , ERROR ,
+ 0x0141, 0x00d8, 0x0152, 0x00ba, ERROR , ERROR , ERROR , ERROR ,
+ ERROR , 0x00e6, ERROR , ERROR , ERROR , 0x0131, ERROR , ERROR ,
+ 0x0142, 0x00f8, 0x0153, 0x00df, ERROR , ERROR , ERROR , ERROR
+ },
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0xa9,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0xc1, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0xa1,
+ 0xa2, 0xa3, 0xa8, 0xa5, 0xa7, 0xc8, 0xe3, 0xab,
+ 0xc5, 0xc2, 0xb6, 0xb4, 0xcb, 0xeb, 0xbb, 0xbf,
+ 0xe1, 0xe9, 0xfb, 0xf1, 0xf9, 0xf5, 0xe8, 0xf8,
+ 0xea, 0xfa, 0xa6, 0xc3, 0xcf, 0xc6, 0xc7, 0xca,
+ 0xce, 0xc4, 0xcd, 0xb1, 0xd0, 0x60, 0x27, 0xb8,
+ 0xaa, 0xba, 0xb9, 0xb2, 0xb3, 0xb7, 0xbc, 0xbd,
+ 0xac, 0xad, 0xa4, 0xae, 0xaf
+ },
+ 181
+};
+const charset_spec charset_CS_PSSTD = {
+ CS_PSSTD, read_sbcs, write_sbcs, &sbcsdata_CS_PSSTD
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_ASCII)
+ENUM_CHARSET(CS_BS4730)
+ENUM_CHARSET(CS_DEC_GRAPHICS)
+ENUM_CHARSET(CS_ISO8859_1)
+ENUM_CHARSET(CS_ISO8859_2)
+ENUM_CHARSET(CS_ISO8859_3)
+ENUM_CHARSET(CS_ISO8859_4)
+ENUM_CHARSET(CS_ISO8859_5)
+ENUM_CHARSET(CS_ISO8859_6)
+ENUM_CHARSET(CS_ISO8859_7)
+ENUM_CHARSET(CS_ISO8859_8)
+ENUM_CHARSET(CS_ISO8859_9)
+ENUM_CHARSET(CS_ISO8859_10)
+ENUM_CHARSET(CS_ISO8859_11)
+ENUM_CHARSET(CS_ISO8859_13)
+ENUM_CHARSET(CS_ISO8859_14)
+ENUM_CHARSET(CS_ISO8859_15)
+ENUM_CHARSET(CS_ISO8859_16)
+ENUM_CHARSET(CS_ISO8859_1_X11)
+ENUM_CHARSET(CS_CP437)
+ENUM_CHARSET(CS_CP850)
+ENUM_CHARSET(CS_CP866)
+ENUM_CHARSET(CS_CP1250)
+ENUM_CHARSET(CS_CP1251)
+ENUM_CHARSET(CS_CP1252)
+ENUM_CHARSET(CS_CP1253)
+ENUM_CHARSET(CS_CP1254)
+ENUM_CHARSET(CS_CP1255)
+ENUM_CHARSET(CS_CP1256)
+ENUM_CHARSET(CS_CP1257)
+ENUM_CHARSET(CS_CP1258)
+ENUM_CHARSET(CS_KOI8_R)
+ENUM_CHARSET(CS_KOI8_U)
+ENUM_CHARSET(CS_KOI8_RU)
+ENUM_CHARSET(CS_JISX0201)
+ENUM_CHARSET(CS_MAC_ROMAN)
+ENUM_CHARSET(CS_MAC_TURKISH)
+ENUM_CHARSET(CS_MAC_CROATIAN)
+ENUM_CHARSET(CS_MAC_ICELAND)
+ENUM_CHARSET(CS_MAC_ROMANIAN)
+ENUM_CHARSET(CS_MAC_GREEK)
+ENUM_CHARSET(CS_MAC_CYRILLIC)
+ENUM_CHARSET(CS_MAC_THAI)
+ENUM_CHARSET(CS_MAC_CENTEURO)
+ENUM_CHARSET(CS_MAC_SYMBOL)
+ENUM_CHARSET(CS_MAC_DINGBATS)
+ENUM_CHARSET(CS_MAC_ROMAN_OLD)
+ENUM_CHARSET(CS_MAC_CROATIAN_OLD)
+ENUM_CHARSET(CS_MAC_ICELAND_OLD)
+ENUM_CHARSET(CS_MAC_ROMANIAN_OLD)
+ENUM_CHARSET(CS_MAC_GREEK_OLD)
+ENUM_CHARSET(CS_MAC_CYRILLIC_OLD)
+ENUM_CHARSET(CS_MAC_UKRAINE)
+ENUM_CHARSET(CS_MAC_VT100)
+ENUM_CHARSET(CS_MAC_VT100_OLD)
+ENUM_CHARSET(CS_VISCII)
+ENUM_CHARSET(CS_HP_ROMAN8)
+ENUM_CHARSET(CS_DEC_MCS)
+ENUM_CHARSET(CS_PDF)
+ENUM_CHARSET(CS_PSSTD)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/sbcsdat.h b/app/tools/halibut/charset/sbcsdat.h
new file mode 100644
index 0000000..964c912
--- /dev/null
+++ b/app/tools/halibut/charset/sbcsdat.h
@@ -0,0 +1,75 @@
+/*
+ * sbcsdat.h - header file for SBCS data structures.
+ *
+ * Generated by sbcsgen.pl from sbcs.dat.
+ * You should edit those files rather than editing this one.
+ */
+
+#ifndef charset_sbcsdat_h
+#define charset_sbcsdat_h
+
+#include "charset.h"
+#include "internal.h"
+
+extern const sbcs_data sbcsdata_CS_ASCII;
+extern const sbcs_data sbcsdata_CS_BS4730;
+extern const sbcs_data sbcsdata_CS_DEC_GRAPHICS;
+extern const sbcs_data sbcsdata_CS_ISO8859_1;
+extern const sbcs_data sbcsdata_CS_ISO8859_2;
+extern const sbcs_data sbcsdata_CS_ISO8859_3;
+extern const sbcs_data sbcsdata_CS_ISO8859_4;
+extern const sbcs_data sbcsdata_CS_ISO8859_5;
+extern const sbcs_data sbcsdata_CS_ISO8859_6;
+extern const sbcs_data sbcsdata_CS_ISO8859_7;
+extern const sbcs_data sbcsdata_CS_ISO8859_8;
+extern const sbcs_data sbcsdata_CS_ISO8859_9;
+extern const sbcs_data sbcsdata_CS_ISO8859_10;
+extern const sbcs_data sbcsdata_CS_ISO8859_11;
+extern const sbcs_data sbcsdata_CS_ISO8859_13;
+extern const sbcs_data sbcsdata_CS_ISO8859_14;
+extern const sbcs_data sbcsdata_CS_ISO8859_15;
+extern const sbcs_data sbcsdata_CS_ISO8859_16;
+extern const sbcs_data sbcsdata_CS_ISO8859_1_X11;
+extern const sbcs_data sbcsdata_CS_CP437;
+extern const sbcs_data sbcsdata_CS_CP850;
+extern const sbcs_data sbcsdata_CS_CP866;
+extern const sbcs_data sbcsdata_CS_CP1250;
+extern const sbcs_data sbcsdata_CS_CP1251;
+extern const sbcs_data sbcsdata_CS_CP1252;
+extern const sbcs_data sbcsdata_CS_CP1253;
+extern const sbcs_data sbcsdata_CS_CP1254;
+extern const sbcs_data sbcsdata_CS_CP1255;
+extern const sbcs_data sbcsdata_CS_CP1256;
+extern const sbcs_data sbcsdata_CS_CP1257;
+extern const sbcs_data sbcsdata_CS_CP1258;
+extern const sbcs_data sbcsdata_CS_KOI8_R;
+extern const sbcs_data sbcsdata_CS_KOI8_U;
+extern const sbcs_data sbcsdata_CS_KOI8_RU;
+extern const sbcs_data sbcsdata_CS_JISX0201;
+extern const sbcs_data sbcsdata_CS_MAC_ROMAN;
+extern const sbcs_data sbcsdata_CS_MAC_TURKISH;
+extern const sbcs_data sbcsdata_CS_MAC_CROATIAN;
+extern const sbcs_data sbcsdata_CS_MAC_ICELAND;
+extern const sbcs_data sbcsdata_CS_MAC_ROMANIAN;
+extern const sbcs_data sbcsdata_CS_MAC_GREEK;
+extern const sbcs_data sbcsdata_CS_MAC_CYRILLIC;
+extern const sbcs_data sbcsdata_CS_MAC_THAI;
+extern const sbcs_data sbcsdata_CS_MAC_CENTEURO;
+extern const sbcs_data sbcsdata_CS_MAC_SYMBOL;
+extern const sbcs_data sbcsdata_CS_MAC_DINGBATS;
+extern const sbcs_data sbcsdata_CS_MAC_ROMAN_OLD;
+extern const sbcs_data sbcsdata_CS_MAC_CROATIAN_OLD;
+extern const sbcs_data sbcsdata_CS_MAC_ICELAND_OLD;
+extern const sbcs_data sbcsdata_CS_MAC_ROMANIAN_OLD;
+extern const sbcs_data sbcsdata_CS_MAC_GREEK_OLD;
+extern const sbcs_data sbcsdata_CS_MAC_CYRILLIC_OLD;
+extern const sbcs_data sbcsdata_CS_MAC_UKRAINE;
+extern const sbcs_data sbcsdata_CS_MAC_VT100;
+extern const sbcs_data sbcsdata_CS_MAC_VT100_OLD;
+extern const sbcs_data sbcsdata_CS_VISCII;
+extern const sbcs_data sbcsdata_CS_HP_ROMAN8;
+extern const sbcs_data sbcsdata_CS_DEC_MCS;
+extern const sbcs_data sbcsdata_CS_PDF;
+extern const sbcs_data sbcsdata_CS_PSSTD;
+
+#endif /* charset_sbcsdat_h */
diff --git a/app/tools/halibut/charset/shiftjis.c b/app/tools/halibut/charset/shiftjis.c
new file mode 100644
index 0000000..4ad879f
--- /dev/null
+++ b/app/tools/halibut/charset/shiftjis.c
@@ -0,0 +1,128 @@
+/*
+ * shiftjis.c - multibyte encoding of Shift-JIS
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * Shift-JIS has no associated data, so `charset' may be ignored.
+ */
+
+static void read_sjis(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ UNUSEDARG(charset);
+
+ /*
+ * For reading Shift-JIS, state->s0 simply contains the single
+ * stored lead byte when we are half way through a double-byte
+ * character, or 0 if we aren't.
+ */
+
+ if (state->s0 == 0) {
+ if ((input_chr >= 0x81 && input_chr <= 0x9F) ||
+ (input_chr >= 0xE0 && input_chr <= 0xEF)) {
+ /*
+ * Lead byte. Just store it.
+ */
+ state->s0 = input_chr;
+ } else {
+ /*
+ * Anything else we translate through JIS X 0201.
+ */
+ if (input_chr == 0x5C)
+ input_chr = 0xA5;
+ else if (input_chr == 0x7E)
+ input_chr = 0x203E;
+ else if (input_chr >= 0xA1 && input_chr <= 0xDF)
+ input_chr += 0xFF61 - 0xA1;
+ else if (input_chr < 0x80)
+ /* do nothing */;
+ else
+ input_chr = ERROR;
+ emit(emitctx, input_chr);
+ }
+ } else {
+ /*
+ * We have a stored lead byte. We expect a valid followup
+ * byte.
+ */
+ if (input_chr >= 0x40 && input_chr <= 0xFC && input_chr != 0x7F) {
+ int r, c;
+ r = state->s0;
+ if (r >= 0xE0) r -= (0xE0 - 0xA0);
+ r -= 0x81;
+ c = input_chr;
+ if (c > 0x7F) c--;
+ c -= 0x40;
+ r *= 2;
+ if (c >= 94)
+ r++, c -= 94;
+ emit(emitctx, jisx0208_to_unicode(r, c));
+ } else {
+ emit(emitctx, ERROR);
+ }
+ state->s0 = 0;
+ }
+}
+
+/*
+ * Shift-JIS is a stateless multi-byte encoding (in the sense that
+ * just after any character has been completed, the state is always
+ * the same); hence when writing it, there is no need to use the
+ * charset_state.
+ */
+
+static int write_sjis(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ UNUSEDARG(charset);
+ UNUSEDARG(state);
+
+ if (input_chr == -1)
+ return TRUE; /* stateless; no cleanup required */
+
+ if (input_chr < 0x80 && input_chr != 0x5C && input_chr != 0x7E) {
+ emit(emitctx, input_chr);
+ return TRUE;
+ } else if (input_chr == 0xA5) {
+ emit(emitctx, 0x5C);
+ return TRUE;
+ } else if (input_chr == 0x203E) {
+ emit(emitctx, 0x7E);
+ return TRUE;
+ } else if (input_chr >= 0xFF61 && input_chr <= 0xFF9F) {
+ emit(emitctx, input_chr - (0xFF61 - 0xA1));
+ return TRUE;
+ } else {
+ int r, c;
+ if (unicode_to_jisx0208(input_chr, &r, &c)) {
+ c += 94 * (r % 2);
+ r /= 2;
+ r += 0x81;
+ if (r >= 0xA0) r += 0xE0 - 0xA0;
+ c += 0x40;
+ if (c >= 0x7F) c++;
+ emit(emitctx, r);
+ emit(emitctx, c);
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+}
+
+const charset_spec charset_CS_SHIFT_JIS = {
+ CS_SHIFT_JIS, read_sjis, write_sjis, NULL
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_SHIFT_JIS)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/slookup.c b/app/tools/halibut/charset/slookup.c
new file mode 100644
index 0000000..7a4d7c2
--- /dev/null
+++ b/app/tools/halibut/charset/slookup.c
@@ -0,0 +1,29 @@
+/*
+ * slookup.c - static lookup of character sets.
+ */
+
+#include "charset.h"
+#include "internal.h"
+
+#define ENUM_CHARSET(x) extern charset_spec const charset_##x;
+#include "enum.c"
+#undef ENUM_CHARSET
+
+static charset_spec const *const cs_table[] = {
+
+#define ENUM_CHARSET(x) &charset_##x,
+#include "enum.c"
+#undef ENUM_CHARSET
+
+};
+
+charset_spec const *charset_find_spec(int charset)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(cs_table); i++)
+ if (cs_table[i]->charset == charset)
+ return cs_table[i];
+
+ return NULL;
+}
diff --git a/app/tools/halibut/charset/superset.c b/app/tools/halibut/charset/superset.c
new file mode 100644
index 0000000..b9b5ea8
--- /dev/null
+++ b/app/tools/halibut/charset/superset.c
@@ -0,0 +1,65 @@
+/*
+ * superset.c: deal with character sets which are supersets of
+ * others.
+ */
+
+#include "charset.h"
+
+/*
+ * Just in case it's ever useful again, this rather simplistic
+ * piece of Perl/sh analyses sbcs.dat and determines which pairs of
+ * character sets are identical in the A0-FF region. This doesn't
+ * prove supersethood, but it spots obvious cases.
+
+perl -ne '/^[^ ]{4} / and defined ($line) and $line < 16 and do {' \
+ -e ' chomp; print " $_" if $line>=10; print "\n" if ++$line==16; };' \
+ -e '/^charset (.*)$/ and do { $line = 0; printf "%30s:", $1; };' \
+ sbcs.dat | sort +1 | uniq -f1 -D
+
+ * When run on sbcs.dat rev 1.3, it reports only two sets of matches:
+ *
+ * - ISO8859_1, ISO8859_1_X11 and CP1252 all match.
+ * - ISO8859_4 and CP1254 match.
+ *
+ * FIXME: There is more to it than this, and in particular there's
+ * even more to it than simple subsethood. Look at CP1255 and
+ * ISO8859_8: they match at every code point defined in both, but
+ * they each define at least one code point the other doesn't. It
+ * isn't clear how I should handle this. The right thing might be
+ * to define yet another SBCS which is the union of both, and
+ * upgrade both to that. Or it might be that the unicode.org
+ * mapping table for CP1255 is simply out of date, and the mapping
+ * ISO8859_8 has which it doesn't (DF -> U+2017 DOUBLE LOW LINE)
+ * should be present in it too, which would make it a proper
+ * superset of ISO8859_8 and solve the problem.
+ *
+ * However, for the moment I'm satisfied with enhancing this table
+ * as and when necessary; the idea is not to include _all_ superset
+ * relations here, the idea is to spot charset IDs which are used
+ * _in practice_ to mean other charset IDs. So unless and until I
+ * find out that there really is confusion between ISO8859_8 and
+ * CP1255, I don't need to do anything about it here.
+ */
+
+int charset_upgrade(int charset)
+{
+ if (charset == CS_ASCII || charset == CS_ISO8859_1)
+ charset = CS_CP1252;
+ if (charset == CS_ISO8859_4)
+ charset = CS_CP1254;
+ if (charset == CS_EUC_KR)
+ charset = CS_CP949;
+ return charset;
+}
+
+/*
+ * This function returns TRUE if the input charset is a vaguely
+ * sensible superset of ASCII. That is, it returns FALSE for 7-bit
+ * encoding formats such as HZ and UTF-7.
+ */
+int charset_contains_ascii(int charset)
+{
+ return (charset != CS_HZ &&
+ charset != CS_UTF7 &&
+ charset != CS_UTF7_CONSERVATIVE);
+}
diff --git a/app/tools/halibut/charset/test.c b/app/tools/halibut/charset/test.c
new file mode 100644
index 0000000..fc5128e
--- /dev/null
+++ b/app/tools/halibut/charset/test.c
@@ -0,0 +1,72 @@
+/*
+ * test.c - general libcharset test/demo program which converts
+ * between two arbitrary charsets.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "charset.h"
+
+#define lenof(x) ( sizeof((x)) / sizeof(*(x)) )
+
+int main(int argc, char **argv)
+{
+ int srcset, dstset;
+ charset_state instate = CHARSET_INIT_STATE;
+ charset_state outstate = CHARSET_INIT_STATE;
+ char inbuf[256], outbuf[256];
+ wchar_t midbuf[256];
+ const char *inptr;
+ const wchar_t *midptr;
+ int rdret, inlen, midlen, inret, midret;
+
+ if (argc != 3) {
+ fprintf(stderr, "usage: convcs <charset> <charset>\n");
+ return 1;
+ }
+
+ srcset = charset_from_localenc(argv[1]);
+ if (srcset == CS_NONE) {
+ fprintf(stderr, "unknown source charset '%s'\n", argv[1]);
+ return 1;
+ }
+
+ dstset = charset_from_localenc(argv[2]);
+ if (dstset == CS_NONE) {
+ fprintf(stderr, "unknown destination charset '%s'\n", argv[2]);
+ return 1;
+ }
+
+ while (1) {
+
+ rdret = fread(inbuf, 1, sizeof(inbuf), stdin);
+
+ if (rdret <= 0)
+ break; /* EOF */
+
+ inlen = rdret;
+ inptr = inbuf;
+ while ( (inret = charset_to_unicode(&inptr, &inlen, midbuf,
+ lenof(midbuf), srcset,
+ &instate, NULL, 0)) > 0) {
+ midlen = inret;
+ midptr = midbuf;
+ while ( (midret = charset_from_unicode(&midptr, &midlen, outbuf,
+ lenof(outbuf), dstset,
+ &outstate, NULL)) > 0) {
+ fwrite(outbuf, 1, midret, stdout);
+ }
+ }
+ }
+
+ /*
+ * Reset encoding state.
+ */
+ while ( (midret = charset_from_unicode(NULL, NULL, outbuf,
+ lenof(outbuf), dstset,
+ &outstate, NULL)) > 0) {
+ fwrite(outbuf, 1, midret, stdout);
+ }
+
+ return 0;
+}
diff --git a/app/tools/halibut/charset/toucs.c b/app/tools/halibut/charset/toucs.c
new file mode 100644
index 0000000..bee98ab
--- /dev/null
+++ b/app/tools/halibut/charset/toucs.c
@@ -0,0 +1,87 @@
+/*
+ * toucs.c - convert charsets to Unicode.
+ */
+
+#include "charset.h"
+#include "internal.h"
+
+struct unicode_emit_param {
+ wchar_t *output;
+ int outlen;
+ const wchar_t *errstr;
+ int errlen;
+ int stopped;
+};
+
+static void unicode_emit(void *ctx, long int output)
+{
+ struct unicode_emit_param *param = (struct unicode_emit_param *)ctx;
+ wchar_t outval;
+ wchar_t const *p;
+ int outlen;
+
+ if (output == ERROR) {
+ if (param->errstr) {
+ p = param->errstr;
+ outlen = param->errlen;
+ } else {
+ outval = 0xFFFD; /* U+FFFD REPLACEMENT CHARACTER */
+ p = &outval;
+ outlen = 1;
+ }
+ } else {
+ outval = output;
+ p = &outval;
+ outlen = 1;
+ }
+
+ if (param->outlen >= outlen) {
+ while (outlen > 0) {
+ *param->output++ = *p++;
+ param->outlen--;
+ outlen--;
+ }
+ } else {
+ param->stopped = 1;
+ }
+}
+
+int charset_to_unicode(const char **input, int *inlen,
+ wchar_t *output, int outlen,
+ int charset, charset_state *state,
+ const wchar_t *errstr, int errlen)
+{
+ charset_spec const *spec = charset_find_spec(charset);
+ charset_state localstate = CHARSET_INIT_STATE;
+ struct unicode_emit_param param;
+
+ param.output = output;
+ param.outlen = outlen;
+ param.errstr = errstr;
+ param.errlen = errlen;
+ param.stopped = 0;
+
+ if (state)
+ localstate = *state; /* structure copy */
+
+ while (*inlen > 0) {
+ int lenbefore = param.output - output;
+ spec->read(spec, (unsigned char)**input, &localstate,
+ unicode_emit, &param);
+ if (param.stopped) {
+ /*
+ * The emit function has _tried_ to output some
+ * characters, but ran up against the end of the
+ * buffer. Leave immediately, and return what happened
+ * _before_ attempting to process this character.
+ */
+ return lenbefore;
+ }
+ if (state)
+ *state = localstate; /* structure copy */
+ (*input)++;
+ (*inlen)--;
+ }
+
+ return param.output - output;
+}
diff --git a/app/tools/halibut/charset/utf16.c b/app/tools/halibut/charset/utf16.c
new file mode 100644
index 0000000..a1af88b
--- /dev/null
+++ b/app/tools/halibut/charset/utf16.c
@@ -0,0 +1,217 @@
+/*
+ * utf16.c - routines to handle UTF-16 (RFC 2781).
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+struct utf16 {
+ int s0; /* initial value of state->s0 */
+};
+
+static void read_utf16(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ struct utf16 const *utf = (struct utf16 *)charset->data;
+ long int hw;
+
+ /*
+ * State variable s1 handles the combining of bytes into
+ * transport-endianness halfwords. It contains:
+ *
+ * - 0 if we're between halfwords
+ * - 0x100 plus the first byte if we're in mid-halfword
+ *
+ * State variable s0 handles everything from there upwards. It
+ * contains:
+ *
+ * - Bottom 16 bits are set to a surrogate value if we've just
+ * seen one.
+ * - Next two bits (17:16) indicate possible endiannesses. Bit
+ * 17 is set if we might be BE; bit 16 if we might be LE. If
+ * they're both zero, it has to be because this is right at
+ * the start, so the first thing we do is set them to the
+ * correct initial state.
+ * - The bit after that (18) is 1 iff we have already seen at
+ * least one halfword (meaning we should pass any further
+ * BOMs straight through).
+ */
+
+ /* Set up s0 if this is the start. */
+ if (state->s0 == 0)
+ state->s0 = utf->s0;
+
+ /* Accumulate a transport-endianness halfword. */
+ if (state->s1 == 0) {
+ state->s1 = 0x100 | input_chr;
+ return;
+ }
+ hw = ((state->s1 & 0xFF) << 8) + input_chr;
+ state->s1 = 0;
+
+ /* Process BOM and determine byte order. */
+ if (!(state->s0 & 0x40000)) {
+ state->s0 |= 0x40000;
+ if (hw == 0xFEFF && (state->s0 & 0x20000)) {
+ /*
+ * Text starts with a big-endian BOM, and big-
+ * endianness is a possibility. So clear the
+ * little-endian bit (the BOM confirms our endianness),
+ * and return without emitting the BOM in Unicode.
+ */
+ state->s0 &= ~0x10000;
+ return;
+ } else if (hw == 0xFFFE && (state->s0 & 0x10000)) {
+ /*
+ * Text starts with a little-endian BOM, and little-
+ * endianness is a possibility. So clear the big-endian
+ * bit (the BOM confirms our endianness), and return
+ * without emitting the BOM in Unicode.
+ */
+ state->s0 &= ~0x20000;
+ return;
+ } else {
+ /*
+ * Text does not begin with a BOM. RFC 2781 states that
+ * in this case we must assume big-endianness if we
+ * haven't been told otherwise by the content type.
+ */
+ if ((state->s0 & 0x30000) == 0x30000)
+ state->s0 &= ~0x10000; /* clear LE bit */
+ }
+ }
+
+ /*
+ * Byte-swap transport-endianness halfword if necessary. We may
+ * now test individual endianness bits, since we can be sure
+ * exactly one is set.
+ */
+ if (state->s0 & 0x10000)
+ hw = ((hw >> 8) | (hw << 8)) & 0xFFFF;
+
+ /*
+ * Now that the endianness issue has been dealt with, what
+ * reaches this point should be a stream of halfwords in
+ * sensible numeric form. So now we process surrogates.
+ */
+ if (state->s0 & 0xFFFF) {
+ /*
+ * We have already seen a high surrogate, so we expect a
+ * low surrogate. Whinge if we didn't get it.
+ */
+ if (hw < 0xDC00 || hw >= 0xE000) {
+ emit(emitctx, ERROR);
+ } else {
+ hw &= 0x3FF;
+ hw |= (state->s0 & 0x3FF) << 10;
+ emit(emitctx, hw + 0x10000);
+ }
+ state->s0 &= 0xFFFF0000;
+ } else {
+ /*
+ * Any low surrogate is an error.
+ */
+ if (hw >= 0xDC00 && hw < 0xE000) {
+ emit(emitctx, ERROR);
+ return;
+ }
+
+ /*
+ * Any high surrogate is simply stored until we see the
+ * next halfword.
+ */
+ if (hw >= 0xD800 && hw < 0xDC00) {
+ state->s0 |= hw;
+ return;
+ }
+
+ /*
+ * Anything else we simply output.
+ */
+ emit(emitctx, hw);
+ }
+}
+
+/*
+ * Repeated code in write_utf16 abstracted out for sanity.
+ */
+static void emithl(void (*emit)(void *ctx, long int output), void *emitctx,
+ unsigned long s0, long int hw)
+{
+ int h = (hw >> 8) & 0xFF, l = hw & 0xFF;
+
+ if (s0 & 0x20000) {
+ /* Big-endian takes priority over little, if both are allowed. */
+ emit(emitctx, h);
+ emit(emitctx, l);
+ } else {
+ emit(emitctx, l);
+ emit(emitctx, h);
+ }
+}
+
+static int write_utf16(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ struct utf16 const *utf = (struct utf16 *)charset->data;
+
+ /*
+ * state->s0 == 0 means we have not output anything yet (and so
+ * must output a BOM before we do anything else). state->s0 ==
+ * 1 means we are off and running.
+ */
+
+ if (input_chr < 0)
+ return TRUE; /* no cleanup required */
+
+ if ((input_chr >= 0xD800 && input_chr < 0xE000) ||
+ input_chr >= 0x110000) {
+ /*
+ * We can't output surrogates, or anything above 0x10FFFF.
+ */
+ return FALSE;
+ }
+
+ if (!state->s0) {
+ state->s0 = 1;
+ emithl(emit, emitctx, utf->s0, 0xFEFF);
+ }
+
+ if (input_chr < 0x10000) {
+ emithl(emit, emitctx, utf->s0, input_chr);
+ } else {
+ input_chr -= 0x10000;
+ /* now input_chr is between 0 and 0xFFFFF inclusive */
+ emithl(emit, emitctx, utf->s0, 0xD800 | ((input_chr >> 10) & 0x3FF));
+ emithl(emit, emitctx, utf->s0, 0xDC00 | (input_chr & 0x3FF));
+ }
+ return TRUE;
+}
+
+static const struct utf16 utf16_bigendian = { 0x20000 };
+static const struct utf16 utf16_littleendian = { 0x10000 };
+static const struct utf16 utf16_variable_endianness = { 0x30000 };
+
+const charset_spec charset_CS_UTF16BE = {
+ CS_UTF16BE, read_utf16, write_utf16, &utf16_bigendian
+};
+const charset_spec charset_CS_UTF16LE = {
+ CS_UTF16LE, read_utf16, write_utf16, &utf16_littleendian
+};
+const charset_spec charset_CS_UTF16 = {
+ CS_UTF16, read_utf16, write_utf16, &utf16_variable_endianness
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_UTF16)
+ENUM_CHARSET(CS_UTF16BE)
+ENUM_CHARSET(CS_UTF16LE)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/utf7.c b/app/tools/halibut/charset/utf7.c
new file mode 100644
index 0000000..588aa47
--- /dev/null
+++ b/app/tools/halibut/charset/utf7.c
@@ -0,0 +1,295 @@
+/*
+ * utf7.c - routines to handle UTF-7 (RFC 1642 / RFC 2152).
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * This array is generated by a piece of Perl:
+
+perl -e 'for $i (0..32) { $a[$i] |= 2; } $a[32] |= 1;' \
+ -e 'for $i ("a".."z","A".."Z","0".."9","'\''","(",' \
+ -e ' ")",",","-",".","/",":","?") { $a[ord $i] |= 1; }' \
+ -e 'for $i ("!","\"","#","\$","%","&","*",";","<","=",">","\@",' \
+ -e ' "[","]","^","_","`","{","|","}") { $a[ord $i] |= 2; }' \
+ -e 'for $i ("a".."z","A".."Z","0".."9","+","/") { $a[ord $i] |= 4; }' \
+ -e 'for $i (0..127) { printf "%s%d,%s", $i%32?"":" ", $a[$i],' \
+ -e ' ($i+1)%32?"":"\n"; }'
+
+ */
+static const unsigned char utf7_ascii_properties[128] = {
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 3,2,2,2,2,2,2,1,1,1,2,4,1,1,1,5,5,5,5,5,5,5,5,5,5,5,1,2,2,2,2,1,
+ 2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,0,2,2,2,
+ 2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,0,0,
+};
+#define SET_D(c) ((c) >= 0 && (c) < 0x80 && (utf7_ascii_properties[(c)] & 1))
+#define SET_O(c) ((c) >= 0 && (c) < 0x80 && (utf7_ascii_properties[(c)] & 2))
+#define SET_B(c) ((c) >= 0 && (c) < 0x80 && (utf7_ascii_properties[(c)] & 4))
+
+#define base64_value(c) ( (c) >= 'A' && (c) <= 'Z' ? (c) - 'A' : \
+ (c) >= 'a' && (c) <= 'z' ? (c) - 'a' + 26 : \
+ (c) >= '0' && (c) <= '9' ? (c) - '0' + 52 : \
+ (c) == '+' ? 62 : 63 )
+
+static const char *const base64_chars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+static void read_utf7(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ long int hw;
+
+ UNUSEDARG(charset);
+
+ /*
+ * state->s0 is used to handle the conversion of the UTF-7
+ * transport format into a stream of halfwords. Its layout is:
+ *
+ * - In normal ASCII mode, it is zero.
+ *
+ * - Otherwise, it holds a leading 1 followed by all the bits
+ * so far accumulated in base64 digits.
+ *
+ * - Special case: when we have only just seen the initial `+'
+ * which enters base64 mode, it is set to 2 rather than 1
+ * (this is an otherwise unused value since base64 always
+ * accumulates an even number of bits at a time), so that
+ * the special sequence `+-' can be made to encode `+'
+ * easily.
+ *
+ * state->s1 is used to handle the conversion of those
+ * halfwords into Unicode values. It contains a high surrogate
+ * value if we've just seen one, and 0 otherwise.
+ */
+
+ if (!state->s0) {
+ if (input_chr == '+')
+ state->s0 = 2;
+ else
+ emit(emitctx, input_chr);
+ return;
+ } else {
+ if (!SET_B(input_chr)) {
+ /*
+ * base64 mode ends here. Emit the character we have,
+ * unless it's a minus in which case we should swallow
+ * it.
+ */
+ if (input_chr != '-')
+ emit(emitctx, input_chr);
+ else if (state->s0 == 2)
+ emit(emitctx, '+'); /* special case */
+ state->s0 = 0;
+ return;
+ }
+
+ /*
+ * Now we have a base64 character, so add it to our state,
+ * first correcting the special case value of s0.
+ */
+ if (state->s0 == 2)
+ state->s0 = 1;
+ state->s0 = (state->s0 << 6) | base64_value(input_chr);
+ }
+
+ /*
+ * If we don't have a whole halfword at this point, bale out.
+ */
+ if (!(state->s0 & 0xFFFF0000))
+ return;
+
+ /*
+ * Otherwise, extract the halfword. There are three
+ * possibilities for where the top set bit might be.
+ */
+ if (state->s0 & 0x00100000) {
+ hw = (state->s0 >> 4) & 0xFFFF;
+ state->s0 = (state->s0 & 0xF) | 0x10;
+ } else if (state->s0 & 0x00040000) {
+ hw = (state->s0 >> 2) & 0xFFFF;
+ state->s0 = (state->s0 & 3) | 4;
+ } else {
+ hw = state->s0 & 0xFFFF;
+ state->s0 = 1;
+ }
+
+ /*
+ * Now what reaches this point should be a stream of halfwords
+ * in sensible numeric form. So now we process surrogates.
+ */
+ if (state->s1) {
+ /*
+ * We have already seen a high surrogate, so we expect a
+ * low surrogate. Whinge if we didn't get it.
+ */
+ if (hw < 0xDC00 || hw >= 0xE000) {
+ emit(emitctx, ERROR);
+ } else {
+ hw &= 0x3FF;
+ hw |= (state->s1 & 0x3FF) << 10;
+ emit(emitctx, hw + 0x10000);
+ }
+ state->s1 = 0;
+ } else {
+ /*
+ * Any low surrogate is an error.
+ */
+ if (hw >= 0xDC00 && hw < 0xE000) {
+ emit(emitctx, ERROR);
+ return;
+ }
+
+ /*
+ * Any high surrogate is simply stored until we see the
+ * next halfword.
+ */
+ if (hw >= 0xD800 && hw < 0xDC00) {
+ state->s1 = hw;
+ return;
+ }
+
+ /*
+ * Anything else we simply output.
+ */
+ emit(emitctx, hw);
+ }
+}
+
+/*
+ * For writing UTF-7, we supply two charset definitions, one of
+ * which will directly encode Set O characters and the other of
+ * which will cautiously base64 them.
+ */
+static int write_utf7(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ unsigned long hws[2];
+ int nhws;
+ int i;
+
+ /*
+ * For writing: state->s0 contains accumulated base64 data with
+ * a 1 in front, and state->s1 indicates how many bits of it we
+ * have.
+ */
+
+ if ((input_chr >= 0xD800 && input_chr < 0xE000) ||
+ input_chr >= 0x110000) {
+ /*
+ * We can't output surrogates, or anything above 0x10FFFF.
+ */
+ return FALSE;
+ }
+
+ /*
+ * Look for characters which we output in ASCII mode. A special
+ * case here is +, which can be encoded as the empty base64
+ * escape sequence `+-': if we're _already_ in ASCII mode we do
+ * that, but if we're in base64 mode at the point we see the +
+ * then we simply stay in base64 mode and output it as a
+ * halfword. (Switching back would cost three bytes, whereas
+ * staying in base64 costs only 2 2/3.)
+ */
+ if (input_chr == -1 || SET_D(input_chr) ||
+ (charset->charset == CS_UTF7 && SET_O(input_chr)) ||
+ (!state->s0 && input_chr == '+')) {
+ if (state->s0) {
+ /*
+ * These characters are output in ASCII mode, so flush any
+ * lingering base64 data.
+ */
+ state->s0 <<= 6 - state->s1;
+ emit(emitctx, base64_chars[state->s0 & 0x3F]);
+ /*
+ * I'm going to arbitrarily decide to always use the
+ * terminating minus sign. It's easier than figuring out
+ * whether to do so or not, and looks prettier besides.
+ */
+ emit(emitctx, '-');
+ state->s0 = state->s1 = 0;
+ }
+
+ /*
+ * Now output the character.
+ */
+ if (input_chr != -1) /* special case: just reset state */
+ emit(emitctx, input_chr);
+ if (input_chr == '+')
+ emit(emitctx, '-'); /* +- encodes + */
+ return TRUE;
+ }
+
+ /*
+ * Now we know we have a character that needs to be output as
+ * either one base64-encoded halfword or two. So first figure
+ * out how many...
+ */
+ if (input_chr < 0x10000) {
+ nhws = 1;
+ hws[0] = input_chr;
+ } else {
+ input_chr -= 0x10000;
+ if (input_chr >= 0x100000) {
+ /* Anything above 0x10FFFF is outside UTF-7 range. */
+ return FALSE;
+ }
+
+ nhws = 2;
+ hws[0] = 0xD800 | ((input_chr >> 10) & 0x3FF);
+ hws[1] = 0xDC00 | (input_chr & 0x3FF);
+ }
+
+ /*
+ * ... switch into base64 mode if required ...
+ */
+ if (!state->s0) {
+ emit(emitctx, '+');
+ state->s0 = 1;
+ state->s1 = 0;
+ }
+
+ /*
+ * ... and do the base64 output.
+ */
+ for (i = 0; i < nhws; i++) {
+ state->s0 = (state->s0 << 16) | hws[i];
+ state->s1 += 16;
+
+ while (state->s1 >= 6) {
+ /*
+ * The top set bit must be in position 16, 18 or 20.
+ */
+ unsigned long out, topbit;
+
+ out = (state->s0 >> (state->s1 - 6)) & 0x3F;
+ state->s1 -= 6;
+ topbit = 1 << state->s1;
+ state->s0 = (state->s0 & (topbit-1)) | topbit;
+
+ emit(emitctx, base64_chars[out]);
+ }
+ }
+ return TRUE;
+}
+
+const charset_spec charset_CS_UTF7 = {
+ CS_UTF7, read_utf7, write_utf7, NULL
+};
+
+const charset_spec charset_CS_UTF7_CONSERVATIVE = {
+ CS_UTF7_CONSERVATIVE, read_utf7, write_utf7, NULL
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_UTF7)
+ENUM_CHARSET(CS_UTF7_CONSERVATIVE)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/utf8.c b/app/tools/halibut/charset/utf8.c
new file mode 100644
index 0000000..fa4f0a8
--- /dev/null
+++ b/app/tools/halibut/charset/utf8.c
@@ -0,0 +1,907 @@
+/*
+ * utf8.c - routines to handle UTF-8.
+ */
+
+#ifndef ENUM_CHARSETS
+
+#include "charset.h"
+#include "internal.h"
+
+/*
+ * The internal read_utf8 and write_utf8 functions in this module
+ * are not static, because they're also called internally from
+ * iso2022.c.
+ */
+
+/*
+ * UTF-8 has no associated data, so `charset' may be ignored.
+ */
+
+void read_utf8(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output), void *emitctx)
+{
+ UNUSEDARG(charset);
+
+ /*
+ * For reading UTF-8, the `state' word contains the character
+ * being accumulated. This is shifted left by six bits each
+ * time a character is added, and there's a single '1' bit
+ * in what would be bit 31 of the final character, which we
+ * use to detect when it's complete.
+ *
+ * As required, the state is zero when we are not in the middle
+ * of a multibyte character at all.
+ *
+ * For example, when reading E9 8D 8B, starting at state=0:
+ *
+ * - after E9, the state is 0x00080009
+ * - after 8D, the state is 0x0200024d
+ * - after 8B, the state conceptually becomes 0x8000934b, at
+ * which point we notice we've got as many characters as we
+ * were expecting, output U+934B, and reset the state to
+ * zero.
+ *
+ * If we detect an overlong sequence, we shift the marker bit
+ * right one bit. This is safe because an overlong sequence
+ * can't encode a top-bit-set character. Not that we worry
+ * about what overlong sequences are trying to encode, but
+ * it's nice to know that we could if we wanted to.
+ *
+ * Note that the maximum number of bits we might need to store
+ * in the character value field is 25 (U+7FFFFFFF contains 31
+ * bits, but we will never actually store its full value
+ * because when we receive the last 6 bits in the final
+ * continuation byte we will output it and revert the state to
+ * zero). Hence we need 26 bits in total.
+ */
+
+ if (input_chr < 0x80) {
+ /*
+ * Single-byte character. If the state is nonzero before
+ * coming here, output an error for an incomplete sequence.
+ * Then output the character.
+ */
+ if (state->s0 != 0) {
+ emit(emitctx, ERROR);
+ state->s0 = 0;
+ }
+ emit(emitctx, input_chr);
+ } else if (input_chr == 0xFE || input_chr == 0xFF) {
+ /*
+ * FE and FF bytes should _never_ occur in UTF-8. They are
+ * automatic errors; if the state was nonzero to start
+ * with, output a further error for an incomplete sequence.
+ */
+ if (state->s0 != 0) {
+ emit(emitctx, ERROR);
+ state->s0 = 0;
+ }
+ emit(emitctx, ERROR);
+ } else if (input_chr >= 0x80 && input_chr < 0xC0) {
+ /*
+ * Continuation byte. Output an error for an unexpected
+ * continuation byte, if the state is zero.
+ */
+ if (state->s0 == 0) {
+ emit(emitctx, ERROR);
+ } else {
+ unsigned long charval;
+
+ /*
+ * Otherwise, accumulate more of the character value.
+ */
+ charval = state->s0;
+ charval = (charval << 6) | (input_chr & 0x3F);
+
+ /*
+ * Detect overlong encodings. We're looking for too many
+ * leading zeroes given our position in the character. If
+ * we find an overlong encoding, clear the current marker
+ * bit and set the bit below it. Overlong two-byte
+ * encodings are a special case, and are detected when we
+ * read their inital byte.
+ */
+ if ((charval & 0xffffffe0L) == 0x02000000L)
+ charval ^= 0x03000000L;
+ else if ((charval & 0xfffffff0L) == 0x00080000L)
+ charval ^= 0x000c0000L;
+ else if ((charval & 0xfffffff8L) == 0x00002000L)
+ charval ^= 0x00003000L;
+ else if ((charval & 0xfffffffcL) == 0x00000080L)
+ charval ^= 0x000000c0L;
+
+ /*
+ * Check the byte counts; if we have not reached the
+ * end of the character, update the state and return.
+ */
+ if (!(charval & 0xc0000000L)) {
+ state->s0 = charval;
+ return;
+ }
+
+ /*
+ * Clear the marker bit, or set it if it's clear,
+ * indicating an overlong sequence.
+ */
+ charval ^= 0x80000000L;
+
+ /*
+ * Now we know we've reached the end of the character.
+ * `charval' is the Unicode value. We should check for
+ * various invalid things, and then either output
+ * charval or an error. In all cases we reset the state
+ * to zero.
+ */
+ state->s0 = 0;
+
+ if (charval & 0x80000000L) {
+ /* We got an overlong sequence. */
+ emit(emitctx, ERROR);
+ } else if (charval >= 0xD800 && charval < 0xE000) {
+ /*
+ * Surrogates (0xD800-0xDFFF) may never be encoded
+ * in UTF-8. A surrogate pair in Unicode should
+ * have been encoded as a single UTF-8 character
+ * occupying more than three bytes.
+ */
+ emit(emitctx, ERROR);
+ } else if (charval == 0xFFFE || charval == 0xFFFF) {
+ /*
+ * U+FFFE and U+FFFF are invalid Unicode characters
+ * and may never be encoded in UTF-8. (This is one
+ * reason why U+FFFF is our way of signalling an
+ * error to our `emit' function :-)
+ */
+ emit(emitctx, ERROR);
+ } else {
+ /*
+ * Oh, all right. We'll let this one off.
+ */
+ emit(emitctx, charval);
+ }
+ }
+
+ } else {
+ /*
+ * Lead byte. First output an error for an incomplete
+ * sequence, if the state is nonzero.
+ */
+ if (state->s0 != 0)
+ emit(emitctx, ERROR);
+
+ /*
+ * Now deal with the lead byte: work out the number of
+ * bytes we expect to see in this character, and extract
+ * the initial bits of it too.
+ */
+ if (input_chr >= 0xC0 && input_chr < 0xC2) {
+ /* beginning of an overlong two-byte sequence */
+ state->s0 = 0x01000000L | (input_chr & 0x1F);
+ } else if (input_chr >= 0xC2 && input_chr < 0xE0) {
+ state->s0 = 0x02000000L | (input_chr & 0x1F);
+ } else if (input_chr >= 0xE0 && input_chr < 0xF0) {
+ state->s0 = 0x00080000L | (input_chr & 0x0F);
+ } else if (input_chr >= 0xF0 && input_chr < 0xF8) {
+ state->s0 = 0x00002000L | (input_chr & 0x07);
+ } else if (input_chr >= 0xF8 && input_chr < 0xFC) {
+ state->s0 = 0x00000080L | (input_chr & 0x03);
+ } else if (input_chr >= 0xFC && input_chr < 0xFE) {
+ state->s0 = 0x00000002L | (input_chr & 0x01);
+ }
+ }
+}
+
+/*
+ * UTF-8 is a stateless multi-byte encoding (in the sense that just
+ * after any character has been completed, the state is always the
+ * same); hence when writing it, there is no need to use the
+ * charset_state.
+ */
+
+int write_utf8(charset_spec const *charset, long int input_chr,
+ charset_state *state,
+ void (*emit)(void *ctx, long int output),
+ void *emitctx)
+{
+ UNUSEDARG(charset);
+ UNUSEDARG(state);
+
+ if (input_chr == -1)
+ return TRUE; /* stateless; no cleanup required */
+
+ /*
+ * Refuse to output any illegal code points.
+ */
+ if (input_chr == 0xFFFE || input_chr == 0xFFFF ||
+ (input_chr >= 0xD800 && input_chr < 0xE000)) {
+ return FALSE;
+ } else if (input_chr < 0x80) { /* one-byte character */
+ emit(emitctx, input_chr);
+ return TRUE;
+ } else if (input_chr < 0x800) { /* two-byte character */
+ emit(emitctx, 0xC0 | (0x1F & (input_chr >> 6)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr )));
+ return TRUE;
+ } else if (input_chr < 0x10000) { /* three-byte character */
+ emit(emitctx, 0xE0 | (0x0F & (input_chr >> 12)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 6)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr )));
+ return TRUE;
+ } else if (input_chr < 0x200000) { /* four-byte character */
+ emit(emitctx, 0xF0 | (0x07 & (input_chr >> 18)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 12)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 6)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr )));
+ return TRUE;
+ } else if (input_chr < 0x4000000) {/* five-byte character */
+ emit(emitctx, 0xF8 | (0x03 & (input_chr >> 24)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 18)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 12)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 6)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr )));
+ return TRUE;
+ } else { /* six-byte character */
+ emit(emitctx, 0xFC | (0x01 & (input_chr >> 30)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 24)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 18)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 12)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr >> 6)));
+ emit(emitctx, 0x80 | (0x3F & (input_chr )));
+ return TRUE;
+ }
+}
+
+#ifdef TESTMODE
+
+#include <stdio.h>
+#include <stdarg.h>
+
+int total_errs = 0;
+
+void utf8_emit(void *ctx, long output)
+{
+ wchar_t **p = (wchar_t **)ctx;
+ *(*p)++ = output;
+}
+
+void utf8_read_test(int line, char *input, int inlen, ...)
+{
+ va_list ap;
+ wchar_t *p, str[512];
+ int i;
+ charset_state state;
+ unsigned long l;
+
+ state.s0 = 0;
+ p = str;
+
+ for (i = 0; i < inlen; i++)
+ read_utf8(NULL, input[i] & 0xFF, &state, utf8_emit, &p);
+
+ va_start(ap, inlen);
+ l = 0;
+ for (i = 0; i < p - str; i++) {
+ l = va_arg(ap, long int);
+ if (l == -1) {
+ printf("%d: correct string shorter than output\n", line);
+ total_errs++;
+ break;
+ }
+ if (l != str[i]) {
+ printf("%d: char %d came out as %08x, should be %08x\n",
+ line, i, str[i], l);
+ total_errs++;
+ }
+ }
+ if (l != -1) {
+ l = va_arg(ap, long int);
+ if (l != -1) {
+ printf("%d: correct string longer than output\n", line);
+ total_errs++;
+ }
+ }
+ va_end(ap);
+}
+
+void utf8_write_test(int line, const long *input, int inlen, ...)
+{
+ va_list ap;
+ wchar_t *p, str[512];
+ int i;
+ charset_state state;
+ unsigned long l;
+
+ state.s0 = 0;
+ p = str;
+
+ for (i = 0; i < inlen; i++) {
+ if (!write_utf8(NULL, input[i], &state, utf8_emit, &p))
+ utf8_emit(&p, ERROR);
+ }
+
+ va_start(ap, inlen);
+ l = 0;
+ for (i = 0; i < p - str; i++) {
+ l = va_arg(ap, long int);
+ if (l == -1) {
+ printf("%d: correct string shorter than output\n", line);
+ total_errs++;
+ break;
+ }
+ if (l != str[i]) {
+ printf("%d: char %d came out as %08x, should be %08x\n",
+ line, i, str[i], l);
+ total_errs++;
+ }
+ }
+ if (l != -1) {
+ l = va_arg(ap, long int);
+ if (l != -1) {
+ printf("%d: correct string longer than output\n", line);
+ total_errs++;
+ }
+ }
+ va_end(ap);
+}
+
+/* Macro to concoct the first three parameters of utf8_read_test. */
+#define TESTSTR(x) __LINE__, x, lenof(x)
+
+int main(void)
+{
+ printf("read tests beginning\n");
+ utf8_read_test(TESTSTR("\xCE\xBA\xE1\xBD\xB9\xCF\x83\xCE\xBC\xCE\xB5"),
+ 0x000003BA, /* GREEK SMALL LETTER KAPPA */
+ 0x00001F79, /* GREEK SMALL LETTER OMICRON WITH OXIA */
+ 0x000003C3, /* GREEK SMALL LETTER SIGMA */
+ 0x000003BC, /* GREEK SMALL LETTER MU */
+ 0x000003B5, /* GREEK SMALL LETTER EPSILON */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x00"),
+ 0x00000000, /* <control> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC2\x80"),
+ 0x00000080, /* <control> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xE0\xA0\x80"),
+ 0x00000800, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF0\x90\x80\x80"),
+ 0x00010000, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF8\x88\x80\x80\x80"),
+ 0x00200000, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFC\x84\x80\x80\x80\x80"),
+ 0x04000000, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x7F"),
+ 0x0000007F, /* <control> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xDF\xBF"),
+ 0x000007FF, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEF\xBF\xBD"),
+ 0x0000FFFD, /* REPLACEMENT CHARACTER */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEF\xBF\xBF"),
+ ERROR, /* <no name available> (invalid char) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF7\xBF\xBF\xBF"),
+ 0x001FFFFF, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFB\xBF\xBF\xBF\xBF"),
+ 0x03FFFFFF, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFD\xBF\xBF\xBF\xBF\xBF"),
+ 0x7FFFFFFF, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\x9F\xBF"),
+ 0x0000D7FF, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEE\x80\x80"),
+ 0x0000E000, /* <Private Use, First> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEF\xBF\xBD"),
+ 0x0000FFFD, /* REPLACEMENT CHARACTER */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF4\x8F\xBF\xBF"),
+ 0x0010FFFF, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF4\x90\x80\x80"),
+ 0x00110000, /* <no name available> */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80"),
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xBF"),
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\xBF"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\xBF\x80"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\xBF\x80\xBF"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\xBF\x80\xBF\x80"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\xBF\x80\xBF\x80\xBF"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\xBF\x80\xBF\x80\xBF\x80"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF"),
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ ERROR, /* (unexpected continuation byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC0\x20\xC1\x20\xC2\x20\xC3\x20\xC4\x20\xC5\x20\xC6\x20\xC7\x20"),
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xE0\x20\xE1\x20\xE2\x20\xE3\x20\xE4\x20\xE5\x20\xE6\x20\xE7\x20\xE8\x20\xE9\x20\xEA\x20\xEB\x20\xEC\x20\xED\x20\xEE\x20\xEF\x20"),
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF0\x20\xF1\x20\xF2\x20\xF3\x20\xF4\x20\xF5\x20\xF6\x20\xF7\x20"),
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF8\x20\xF9\x20\xFA\x20\xFB\x20"),
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFC\x20\xFD\x20"),
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ ERROR, /* (incomplete sequence) */
+ 0x00000020, /* SPACE */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC0"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xE0\x80"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF0\x80\x80"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF8\x80\x80\x80"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFC\x80\x80\x80\x80"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xDF"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEF\xBF"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF7\xBF\xBF"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFB\xBF\xBF\xBF"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFD\xBF\xBF\xBF\xBF"),
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC0\xE0\x80\xF0\x80\x80\xF8\x80\x80\x80\xFC\x80\x80\x80\x80\xDF\xEF\xBF\xF7\xBF\xBF\xFB\xBF\xBF\xBF\xFD\xBF\xBF\xBF\xBF"),
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ ERROR, /* (incomplete sequence) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFE"),
+ ERROR, /* (invalid UTF-8 byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFF"),
+ ERROR, /* (invalid UTF-8 byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFE\xFE\xFF\xFF"),
+ ERROR, /* (invalid UTF-8 byte) */
+ ERROR, /* (invalid UTF-8 byte) */
+ ERROR, /* (invalid UTF-8 byte) */
+ ERROR, /* (invalid UTF-8 byte) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC0\xAF"),
+ ERROR, /* SOLIDUS (overlong form of 2F) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xE0\x80\xAF"),
+ ERROR, /* SOLIDUS (overlong form of 2F) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF0\x80\x80\xAF"),
+ ERROR, /* SOLIDUS (overlong form of 2F) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF8\x80\x80\x80\xAF"),
+ ERROR, /* SOLIDUS (overlong form of 2F) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFC\x80\x80\x80\x80\xAF"),
+ ERROR, /* SOLIDUS (overlong form of 2F) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC1\xBF"),
+ ERROR, /* <control> (overlong form of 7F) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xE0\x9F\xBF"),
+ ERROR, /* <no name available> (overlong form of DF BF) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF0\x8F\xBF\xBF"),
+ ERROR, /* <no name available> (overlong form of EF BF BF) (invalid char) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF8\x87\xBF\xBF\xBF"),
+ ERROR, /* <no name available> (overlong form of F7 BF BF BF) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFC\x83\xBF\xBF\xBF\xBF"),
+ ERROR, /* <no name available> (overlong form of FB BF BF BF BF) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xC0\x80"),
+ ERROR, /* <control> (overlong form of 00) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xE0\x80\x80"),
+ ERROR, /* <control> (overlong form of 00) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF0\x80\x80\x80"),
+ ERROR, /* <control> (overlong form of 00) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xF8\x80\x80\x80\x80"),
+ ERROR, /* <control> (overlong form of 00) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xFC\x80\x80\x80\x80\x80"),
+ ERROR, /* <control> (overlong form of 00) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xA0\x80"),
+ ERROR, /* <Non Private Use High Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAD\xBF"),
+ ERROR, /* <Non Private Use High Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAE\x80"),
+ ERROR, /* <Private Use High Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAF\xBF"),
+ ERROR, /* <Private Use High Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xB0\x80"),
+ ERROR, /* <Low Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xBE\x80"),
+ ERROR, /* <no name available> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xBF\xBF"),
+ ERROR, /* <Low Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xA0\x80\xED\xB0\x80"),
+ ERROR, /* <Non Private Use High Surrogate, First> (surrogate) */
+ ERROR, /* <Low Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xA0\x80\xED\xBF\xBF"),
+ ERROR, /* <Non Private Use High Surrogate, First> (surrogate) */
+ ERROR, /* <Low Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAD\xBF\xED\xB0\x80"),
+ ERROR, /* <Non Private Use High Surrogate, Last> (surrogate) */
+ ERROR, /* <Low Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAD\xBF\xED\xBF\xBF"),
+ ERROR, /* <Non Private Use High Surrogate, Last> (surrogate) */
+ ERROR, /* <Low Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAE\x80\xED\xB0\x80"),
+ ERROR, /* <Private Use High Surrogate, First> (surrogate) */
+ ERROR, /* <Low Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAE\x80\xED\xBF\xBF"),
+ ERROR, /* <Private Use High Surrogate, First> (surrogate) */
+ ERROR, /* <Low Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAF\xBF\xED\xB0\x80"),
+ ERROR, /* <Private Use High Surrogate, Last> (surrogate) */
+ ERROR, /* <Low Surrogate, First> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xED\xAF\xBF\xED\xBF\xBF"),
+ ERROR, /* <Private Use High Surrogate, Last> (surrogate) */
+ ERROR, /* <Low Surrogate, Last> (surrogate) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEF\xBF\xBE"),
+ ERROR, /* <no name available> (invalid char) */
+ 0, -1);
+ utf8_read_test(TESTSTR("\xEF\xBF\xBF"),
+ ERROR, /* <no name available> (invalid char) */
+ 0, -1);
+ printf("read tests completed\n");
+ printf("write tests beginning\n");
+ {
+ const static long str[] =
+ {0x03BAL, 0x1F79L, 0x03C3L, 0x03BCL, 0x03B5L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xCE, 0xBA,
+ 0xE1, 0xBD, 0xB9,
+ 0xCF, 0x83,
+ 0xCE, 0xBC,
+ 0xCE, 0xB5,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x0000L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0x00,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x0080L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xC2, 0x80,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x0800L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xE0, 0xA0, 0x80,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x00010000L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xF0, 0x90, 0x80, 0x80,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x00200000L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xF8, 0x88, 0x80, 0x80, 0x80,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x04000000L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xFC, 0x84, 0x80, 0x80, 0x80, 0x80,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x007FL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0x7F,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x07FFL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xDF, 0xBF,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xFFFDL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xEF, 0xBF, 0xBD,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xFFFFL, 0};
+ utf8_write_test(TESTSTR(str),
+ ERROR,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x001FFFFFL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xF7, 0xBF, 0xBF, 0xBF,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x03FFFFFFL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xFB, 0xBF, 0xBF, 0xBF, 0xBF,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0x7FFFFFFFL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xFD, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xD7FFL, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xED, 0x9F, 0xBF,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xD800L, 0};
+ utf8_write_test(TESTSTR(str),
+ ERROR,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xD800L, 0xDC00L, 0};
+ utf8_write_test(TESTSTR(str),
+ ERROR,
+ ERROR,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xDFFFL, 0};
+ utf8_write_test(TESTSTR(str),
+ ERROR,
+ 0, -1);
+ }
+ {
+ const static long str[] = {0xE000L, 0};
+ utf8_write_test(TESTSTR(str),
+ 0xEE, 0x80, 0x80,
+ 0, -1);
+ }
+ printf("write tests completed\n");
+
+ printf("total: %d errors\n", total_errs);
+ return (total_errs != 0);
+}
+#endif /* TESTMODE */
+
+const charset_spec charset_CS_UTF8 = {
+ CS_UTF8, read_utf8, write_utf8, NULL
+};
+
+#else /* ENUM_CHARSETS */
+
+ENUM_CHARSET(CS_UTF8)
+
+#endif /* ENUM_CHARSETS */
diff --git a/app/tools/halibut/charset/xenc.c b/app/tools/halibut/charset/xenc.c
new file mode 100644
index 0000000..d27dafb
--- /dev/null
+++ b/app/tools/halibut/charset/xenc.c
@@ -0,0 +1,95 @@
+/*
+ * xenc.c - translate our internal character set codes to and from
+ * X11 character encoding names.
+ *
+ */
+
+#include <ctype.h>
+#include "charset.h"
+#include "internal.h"
+
+static const struct {
+ const char *name;
+ int charset;
+} xencs[] = {
+ /*
+ * Officially registered encoding names. This list is derived
+ * from the font encodings section of
+ *
+ * http://ftp.x.org/pub/DOCS/registry
+ *
+ * Where multiple encoding names map to the same encoding id
+ * (such as iso8859-15 and fcd8859-15), the first is considered
+ * canonical and will be returned when translating the id to a
+ * string.
+ */
+ { "iso646.1991-irv", CS_ASCII },
+ { "iso8859-1", CS_ISO8859_1 },
+ { "iso8859-2", CS_ISO8859_2 },
+ { "iso8859-3", CS_ISO8859_3 },
+ { "iso8859-4", CS_ISO8859_4 },
+ { "iso8859-5", CS_ISO8859_5 },
+ { "iso8859-6", CS_ISO8859_6 },
+ { "iso8859-7", CS_ISO8859_7 },
+ { "iso8859-8", CS_ISO8859_8 },
+ { "iso8859-9", CS_ISO8859_9 },
+ { "iso8859-10", CS_ISO8859_10 },
+ { "iso8859-13", CS_ISO8859_13 },
+ { "iso8859-14", CS_ISO8859_14 },
+ { "iso8859-15", CS_ISO8859_15 },
+ { "fcd8859-15", CS_ISO8859_15 },
+ { "hp-roman8", CS_HP_ROMAN8 },
+ { "koi8-r", CS_KOI8_R },
+ { "jisx0201.1976-0", CS_JISX0201 },
+ /*
+ * Unofficial encoding names found in the wild.
+ */
+ { "iso8859-16", CS_ISO8859_16 },
+ { "koi8-u", CS_KOI8_U },
+ { "ibm-cp437", CS_CP437 },
+ { "ibm-cp850", CS_CP850 },
+ { "ibm-cp866", CS_CP866 },
+ { "microsoft-cp1250", CS_CP1250 },
+ { "microsoft-cp1251", CS_CP1251 },
+ { "microsoft-cp1252", CS_CP1252 },
+ { "microsoft-cp1253", CS_CP1253 },
+ { "microsoft-cp1254", CS_CP1254 },
+ { "microsoft-cp1255", CS_CP1255 },
+ { "microsoft-cp1256", CS_CP1256 },
+ { "microsoft-cp1257", CS_CP1257 },
+ { "microsoft-cp1258", CS_CP1258 },
+ { "mac-roman", CS_MAC_ROMAN },
+ { "viscii1.1-1", CS_VISCII },
+ { "viscii1-1", CS_VISCII },
+};
+
+const char *charset_to_xenc(int charset)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(xencs); i++)
+ if (charset == xencs[i].charset)
+ return xencs[i].name;
+
+ return NULL; /* not found */
+}
+
+int charset_from_xenc(const char *name)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(xencs); i++) {
+ const char *p, *q;
+ p = name;
+ q = xencs[i].name;
+ while (*p || *q) {
+ if (tolower(*p) != tolower(*q))
+ break;
+ p++; q++;
+ }
+ if (!*p && !*q)
+ return xencs[i].charset;
+ }
+
+ return CS_NONE; /* not found */
+}
diff --git a/app/tools/halibut/contents.c b/app/tools/halibut/contents.c
new file mode 100644
index 0000000..2acf81e
--- /dev/null
+++ b/app/tools/halibut/contents.c
@@ -0,0 +1,244 @@
+/*
+ * contents.c: build a table of contents
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <limits.h>
+#include "halibut.h"
+
+struct numberstate_Tag {
+ int chapternum;
+ int appendixnum;
+ int ischapter;
+ int *sectionlevels;
+ paragraph **currentsects;
+ paragraph *lastsect;
+ int oklevel;
+ int maxsectlevel;
+ int listitem;
+ stack listitem_stack;
+ wchar_t *chaptertext; /* the word for a chapter */
+ wchar_t *sectiontext; /* the word for a section */
+ wchar_t *apptext; /* the word for an appendix */
+};
+
+numberstate *number_init(void) {
+ numberstate *ret = snew(numberstate);
+ ret->chapternum = 0;
+ ret->appendixnum = -1;
+ ret->ischapter = 1;
+ ret->oklevel = -1; /* not even in a chapter yet */
+ ret->maxsectlevel = 32;
+ ret->sectionlevels = snewn(ret->maxsectlevel, int);
+ ret->currentsects = snewn(ret->maxsectlevel+1, paragraph *);
+ memset(ret->currentsects, 0, (ret->maxsectlevel+1)*sizeof(paragraph *));
+ ret->lastsect = NULL;
+ ret->listitem = -1;
+ ret->listitem_stack = stk_new();
+ return ret;
+}
+
+void number_free(numberstate *state) {
+ stk_free(state->listitem_stack);
+ sfree(state->sectionlevels);
+ sfree(state->currentsects);
+ sfree(state);
+}
+
+static void dotext(word ***wret, wchar_t *text) {
+ word *mnewword = snew(word);
+ mnewword->text = ustrdup(text);
+ mnewword->type = word_Normal;
+ mnewword->alt = NULL;
+ mnewword->next = NULL;
+ **wret = mnewword;
+ *wret = &mnewword->next;
+}
+
+static void dospace(word ***wret) {
+ word *mnewword = snew(word);
+ mnewword->text = NULL;
+ mnewword->type = word_WhiteSpace;
+ mnewword->alt = NULL;
+ mnewword->next = NULL;
+ **wret = mnewword;
+ *wret = &mnewword->next;
+}
+
+static void donumber(word ***wret, int num) {
+ wchar_t text[20];
+ wchar_t *p = text + lenof(text);
+ *--p = L'\0';
+ while (num != 0) {
+ assert(p > text);
+ *--p = L"0123456789"[num % 10];
+ num /= 10;
+ }
+ dotext(wret, p);
+}
+
+static void doanumber(word ***wret, int num) {
+ wchar_t text[20];
+ wchar_t *p;
+ int nletters, aton;
+ nletters = 1;
+ aton = 25;
+ while (num > aton) {
+ nletters++;
+ num -= aton+1;
+ if (aton < INT_MAX/26)
+ aton = (aton+1) * 26 - 1;
+ else
+ aton = INT_MAX;
+ }
+ p = text + lenof(text);
+ *--p = L'\0';
+ while (nletters--) {
+ assert(p > text);
+ *--p = L"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[num % 26];
+ num /= 26;
+ }
+ dotext(wret, p);
+}
+
+void number_cfg(numberstate *state, paragraph *source) {
+ /*
+ * Defaults
+ */
+ state->chaptertext = L"Chapter";
+ state->sectiontext = L"Section";
+ state->apptext = L"Appendix";
+
+ for (; source; source = source->next) {
+ if (source->type == para_Config) {
+ if (!ustricmp(source->keyword, L"chapter")) {
+ state->chaptertext = uadv(source->keyword);
+ } else if (!ustricmp(source->keyword, L"section")) {
+ state->sectiontext = uadv(source->keyword);
+ } else if (!ustricmp(source->keyword, L"appendix")) {
+ state->apptext = uadv(source->keyword);
+ }
+ }
+ }
+}
+
+word *number_mktext(numberstate *state, paragraph *p, wchar_t *category,
+ int *prev, int *errflag) {
+ word *ret = NULL;
+ word **ret2 = &ret;
+ word **pret = &ret;
+ int i, level, thistype;
+ struct listitem_stack_entry {
+ int listitem;
+ int prev;
+ } *lse;
+
+ level = -2; /* default for non-section-heading */
+ thistype = p->type;
+ switch (p->type) {
+ case para_Chapter:
+ state->chapternum++;
+ for (i = 0; i < state->maxsectlevel; i++)
+ state->sectionlevels[i] = 0;
+ dotext(&pret, category ? category : state->chaptertext);
+ dospace(&pret);
+ ret2 = pret;
+ donumber(&pret, state->chapternum);
+ state->ischapter = 1;
+ state->oklevel = 0;
+ level = -1;
+ break;
+ case para_Heading:
+ case para_Subsect:
+ level = (p->type == para_Heading ? 0 : p->aux);
+ if (level > state->oklevel) {
+ error(err_sectjump, &p->fpos);
+ *errflag = TRUE;
+ ret = NULL;
+ break;
+ }
+ state->oklevel = level+1;
+ if (state->maxsectlevel <= level) {
+ state->maxsectlevel = level + 32;
+ state->sectionlevels = sresize(state->sectionlevels,
+ state->maxsectlevel, int);
+ }
+ state->sectionlevels[level]++;
+ for (i = level+1; i < state->maxsectlevel; i++)
+ state->sectionlevels[i] = 0;
+ dotext(&pret, category ? category : state->sectiontext);
+ dospace(&pret);
+ ret2 = pret;
+ if (state->ischapter)
+ donumber(&pret, state->chapternum);
+ else
+ doanumber(&pret, state->appendixnum);
+ for (i = 0; i <= level; i++) {
+ dotext(&pret, L".");
+ if (state->sectionlevels[i] == 0)
+ state->sectionlevels[i] = 1;
+ donumber(&pret, state->sectionlevels[i]);
+ }
+ break;
+ case para_Appendix:
+ state->appendixnum++;
+ for (i = 0; i < state->maxsectlevel; i++)
+ state->sectionlevels[i] = 0;
+ dotext(&pret, category ? category : state->apptext);
+ dospace(&pret);
+ ret2 = pret;
+ doanumber(&pret, state->appendixnum);
+ state->ischapter = 0;
+ state->oklevel = 0;
+ level = -1;
+ break;
+ case para_UnnumberedChapter:
+ level = -1;
+ break;
+ case para_NumberedList:
+ ret2 = pret;
+ if (*prev != para_NumberedList)
+ state->listitem = 0;
+ state->listitem++;
+ donumber(&pret, state->listitem);
+ break;
+ case para_LcontPush:
+ lse = snew(struct listitem_stack_entry);
+ lse->listitem = state->listitem;
+ lse->prev = *prev;
+ stk_push(state->listitem_stack, lse);
+ state->listitem = 0;
+ break;
+ case para_LcontPop:
+ lse = (struct listitem_stack_entry *)stk_pop(state->listitem_stack);
+ state->listitem = lse->listitem;
+ thistype = lse->prev;
+ sfree(lse);
+ break;
+ }
+
+ /*
+ * Now set up parent, child and sibling links.
+ */
+ p->parent = p->child = p->sibling = NULL;
+ if (level != -2) {
+ if (state->currentsects[level+1])
+ state->currentsects[level+1]->sibling = p;
+ if (level >= 0 && state->currentsects[level]) {
+ p->parent = state->currentsects[level];
+ if (!state->currentsects[level]->child)
+ state->currentsects[level]->child = p;
+ }
+ state->currentsects[level+1] = state->lastsect = p;
+ for (i = level+2; i < state->maxsectlevel+1; i++)
+ state->currentsects[i] = NULL;
+ } else {
+ p->parent = state->lastsect;
+ }
+
+ p->kwtext2 = *ret2;
+ *prev = thistype;
+ return ret;
+}
diff --git a/app/tools/halibut/deflate.c b/app/tools/halibut/deflate.c
new file mode 100644
index 0000000..685097b
--- /dev/null
+++ b/app/tools/halibut/deflate.c
@@ -0,0 +1,2781 @@
+/*
+ * Reimplementation of Deflate (RFC1951) compression. Adapted from
+ * the version in PuTTY, and extended to write dynamic Huffman
+ * trees and choose block boundaries usefully.
+ */
+
+/*
+ * TODO:
+ *
+ * - Feature: could do with forms of flush other than SYNC_FLUSH.
+ * I'm not sure exactly how those work when you don't know in
+ * advance that your next block will be static (as we did in
+ * PuTTY). And remember the 9-bit limitation of zlib.
+ * + also, zlib has FULL_FLUSH which clears the LZ77 state as
+ * well, for random access.
+ *
+ * - Compression quality: chooseblock() appears to be computing
+ * wildly inaccurate block size estimates. Possible resolutions:
+ * + find and fix some trivial bug I haven't spotted yet
+ * + abandon the entropic approximation and go with trial
+ * Huffman runs
+ *
+ * - Compression quality: see if increasing SYMLIMIT causes
+ * dynamic blocks to start being consistently smaller than it.
+ * + actually we seem to be there already, but check on a
+ * larger corpus.
+ *
+ * - Compression quality: we ought to be able to fall right back
+ * to actual uncompressed blocks if really necessary, though
+ * it's not clear what the criterion for doing so would be.
+ */
+
+/*
+ * This software is copyright 2000-2006 Simon Tatham.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <stddef.h>
+#include <string.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "deflate.h"
+
+#define snew(type) ( (type *) malloc(sizeof(type)) )
+#define snewn(n, type) ( (type *) malloc((n) * sizeof(type)) )
+#define sresize(x, n, type) ( (type *) realloc((x), (n) * sizeof(type)) )
+#define sfree(x) ( free((x)) )
+
+#define lenof(x) (sizeof((x)) / sizeof(*(x)))
+
+#ifndef FALSE
+#define FALSE 0
+#define TRUE (!FALSE)
+#endif
+
+/* ----------------------------------------------------------------------
+ * This file can be compiled in a number of modes.
+ *
+ * With -DSTANDALONE, it builds a self-contained deflate tool which
+ * can compress, decompress, and also analyse a deflated file to
+ * print out the sequence of literals and copy commands it
+ * contains.
+ *
+ * With -DTESTMODE, it builds a test application which is given a
+ * file on standard input, both compresses and decompresses it, and
+ * outputs the re-decompressed result so it can be conveniently
+ * diffed against the original. Define -DTESTDBG as well for lots
+ * of diagnostics.
+ */
+
+#if defined TESTDBG
+/* gcc-specific diagnostic macro */
+#define debug_int(x...) ( fprintf(stderr, x) )
+#define debug(x) ( debug_int x )
+#else
+#define debug(x)
+#endif
+
+#ifdef STANDALONE
+#define ANALYSIS
+#endif
+
+#ifdef ANALYSIS
+int analyse_level = 0;
+#endif
+
+/* ----------------------------------------------------------------------
+ * Basic LZ77 code. This bit is designed modularly, so it could be
+ * ripped out and used in a different LZ77 compressor. Go to it,
+ * and good luck :-)
+ */
+
+struct LZ77InternalContext;
+struct LZ77Context {
+ struct LZ77InternalContext *ictx;
+ void *userdata;
+ void (*literal) (struct LZ77Context * ctx, unsigned char c);
+ void (*match) (struct LZ77Context * ctx, int distance, int len);
+};
+
+/*
+ * Initialise the private fields of an LZ77Context. It's up to the
+ * user to initialise the public fields.
+ */
+static int lz77_init(struct LZ77Context *ctx);
+
+/*
+ * Supply data to be compressed. Will update the private fields of
+ * the LZ77Context, and will call literal() and match() to output.
+ * If `compress' is FALSE, it will never emit a match, but will
+ * instead call literal() for everything.
+ */
+static void lz77_compress(struct LZ77Context *ctx,
+ const unsigned char *data, int len, int compress);
+
+/*
+ * Modifiable parameters.
+ */
+#define WINSIZE 32768 /* window size. Must be power of 2! */
+#define HASHMAX 2039 /* one more than max hash value */
+#define MAXMATCH 32 /* how many matches we track */
+#define HASHCHARS 3 /* how many chars make a hash */
+
+/*
+ * This compressor takes a less slapdash approach than the
+ * gzip/zlib one. Rather than allowing our hash chains to fall into
+ * disuse near the far end, we keep them doubly linked so we can
+ * _find_ the far end, and then every time we add a new byte to the
+ * window (thus rolling round by one and removing the previous
+ * byte), we can carefully remove the hash chain entry.
+ */
+
+#define INVALID -1 /* invalid hash _and_ invalid offset */
+struct WindowEntry {
+ short next, prev; /* array indices within the window */
+ short hashval;
+};
+
+struct HashEntry {
+ short first; /* window index of first in chain */
+};
+
+struct Match {
+ int distance, len;
+};
+
+struct LZ77InternalContext {
+ struct WindowEntry win[WINSIZE];
+ unsigned char data[WINSIZE];
+ int winpos;
+ struct HashEntry hashtab[HASHMAX];
+ unsigned char pending[HASHCHARS];
+ int npending;
+};
+
+static int lz77_hash(const unsigned char *data)
+{
+ return (257 * data[0] + 263 * data[1] + 269 * data[2]) % HASHMAX;
+}
+
+static int lz77_init(struct LZ77Context *ctx)
+{
+ struct LZ77InternalContext *st;
+ int i;
+
+ st = snew(struct LZ77InternalContext);
+ if (!st)
+ return 0;
+
+ ctx->ictx = st;
+
+ for (i = 0; i < WINSIZE; i++)
+ st->win[i].next = st->win[i].prev = st->win[i].hashval = INVALID;
+ for (i = 0; i < HASHMAX; i++)
+ st->hashtab[i].first = INVALID;
+ st->winpos = 0;
+
+ st->npending = 0;
+
+ return 1;
+}
+
+static void lz77_advance(struct LZ77InternalContext *st,
+ unsigned char c, int hash)
+{
+ int off;
+
+ /*
+ * Remove the hash entry at winpos from the tail of its chain,
+ * or empty the chain if it's the only thing on the chain.
+ */
+ if (st->win[st->winpos].prev != INVALID) {
+ st->win[st->win[st->winpos].prev].next = INVALID;
+ } else if (st->win[st->winpos].hashval != INVALID) {
+ st->hashtab[st->win[st->winpos].hashval].first = INVALID;
+ }
+
+ /*
+ * Create a new entry at winpos and add it to the head of its
+ * hash chain.
+ */
+ st->win[st->winpos].hashval = hash;
+ st->win[st->winpos].prev = INVALID;
+ off = st->win[st->winpos].next = st->hashtab[hash].first;
+ st->hashtab[hash].first = st->winpos;
+ if (off != INVALID)
+ st->win[off].prev = st->winpos;
+ st->data[st->winpos] = c;
+
+ /*
+ * Advance the window pointer.
+ */
+ st->winpos = (st->winpos + 1) & (WINSIZE - 1);
+}
+
+#define CHARAT(k) ( (k)<0 ? st->data[(st->winpos+k)&(WINSIZE-1)] : data[k] )
+
+static void lz77_compress(struct LZ77Context *ctx,
+ const unsigned char *data, int len, int compress)
+{
+ struct LZ77InternalContext *st = ctx->ictx;
+ int i, hash, distance, off, nmatch, matchlen, advance;
+ struct Match defermatch, matches[MAXMATCH];
+ int deferchr;
+
+ /*
+ * Add any pending characters from last time to the window. (We
+ * might not be able to.)
+ */
+ for (i = 0; i < st->npending; i++) {
+ unsigned char foo[HASHCHARS];
+ int j;
+ if (len + st->npending - i < HASHCHARS) {
+ /* Update the pending array. */
+ for (j = i; j < st->npending; j++)
+ st->pending[j - i] = st->pending[j];
+ break;
+ }
+ for (j = 0; j < HASHCHARS; j++)
+ foo[j] = (i + j < st->npending ? st->pending[i + j] :
+ data[i + j - st->npending]);
+ lz77_advance(st, foo[0], lz77_hash(foo));
+ }
+ st->npending -= i;
+
+ defermatch.len = 0;
+ deferchr = '\0';
+ while (len > 0) {
+
+ /* Don't even look for a match, if we're not compressing. */
+ if (compress && len >= HASHCHARS) {
+ /*
+ * Hash the next few characters.
+ */
+ hash = lz77_hash(data);
+
+ /*
+ * Look the hash up in the corresponding hash chain and see
+ * what we can find.
+ */
+ nmatch = 0;
+ for (off = st->hashtab[hash].first;
+ off != INVALID; off = st->win[off].next) {
+ /* distance = 1 if off == st->winpos-1 */
+ /* distance = WINSIZE if off == st->winpos */
+ distance =
+ WINSIZE - (off + WINSIZE - st->winpos) % WINSIZE;
+ for (i = 0; i < HASHCHARS; i++)
+ if (CHARAT(i) != CHARAT(i - distance))
+ break;
+ if (i == HASHCHARS) {
+ matches[nmatch].distance = distance;
+ matches[nmatch].len = 3;
+ if (++nmatch >= MAXMATCH)
+ break;
+ }
+ }
+ } else {
+ nmatch = 0;
+ hash = INVALID;
+ }
+
+ if (nmatch > 0) {
+ /*
+ * We've now filled up matches[] with nmatch potential
+ * matches. Follow them down to find the longest. (We
+ * assume here that it's always worth favouring a
+ * longer match over a shorter one.)
+ */
+ matchlen = HASHCHARS;
+ while (matchlen < len) {
+ int j;
+ for (i = j = 0; i < nmatch; i++) {
+ if (CHARAT(matchlen) ==
+ CHARAT(matchlen - matches[i].distance)) {
+ matches[j++] = matches[i];
+ }
+ }
+ if (j == 0)
+ break;
+ matchlen++;
+ nmatch = j;
+ }
+
+ /*
+ * We've now got all the longest matches. We favour the
+ * shorter distances, which means we go with matches[0].
+ * So see if we want to defer it or throw it away.
+ */
+ matches[0].len = matchlen;
+ if (defermatch.len > 0) {
+ if (matches[0].len > defermatch.len + 1) {
+ /* We have a better match. Emit the deferred char,
+ * and defer this match. */
+ ctx->literal(ctx, (unsigned char) deferchr);
+ defermatch = matches[0];
+ deferchr = data[0];
+ advance = 1;
+ } else {
+ /* We don't have a better match. Do the deferred one. */
+ ctx->match(ctx, defermatch.distance, defermatch.len);
+ advance = defermatch.len - 1;
+ defermatch.len = 0;
+ }
+ } else {
+ /* There was no deferred match. Defer this one. */
+ defermatch = matches[0];
+ deferchr = data[0];
+ advance = 1;
+ }
+ } else {
+ /*
+ * We found no matches. Emit the deferred match, if
+ * any; otherwise emit a literal.
+ */
+ if (defermatch.len > 0) {
+ ctx->match(ctx, defermatch.distance, defermatch.len);
+ advance = defermatch.len - 1;
+ defermatch.len = 0;
+ } else {
+ ctx->literal(ctx, data[0]);
+ advance = 1;
+ }
+ }
+
+ /*
+ * Now advance the position by `advance' characters,
+ * keeping the window and hash chains consistent.
+ */
+ while (advance > 0) {
+ if (len >= HASHCHARS) {
+ lz77_advance(st, *data, lz77_hash(data));
+ } else {
+ st->pending[st->npending++] = *data;
+ }
+ data++;
+ len--;
+ advance--;
+ }
+ }
+}
+
+/* ----------------------------------------------------------------------
+ * Deflate functionality common to both compression and decompression.
+ */
+
+static const unsigned char lenlenmap[] = {
+ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15
+};
+
+#define MAXCODELEN 16
+
+/*
+ * Given a sequence of Huffman code lengths, compute the actual
+ * codes, in the final form suitable for feeding to outbits (i.e.
+ * already bit-mirrored).
+ *
+ * Returns the maximum code length found. Can also return -1 to
+ * indicate the table was overcommitted (too many or too short
+ * codes to exactly cover the possible space), or -2 to indicate it
+ * was undercommitted (too few or too long codes).
+ */
+static int hufcodes(const unsigned char *lengths, int *codes, int nsyms)
+{
+ int count[MAXCODELEN], startcode[MAXCODELEN];
+ int code, maxlen;
+ int i, j;
+
+ /* Count the codes of each length. */
+ maxlen = 0;
+ for (i = 1; i < MAXCODELEN; i++)
+ count[i] = 0;
+ for (i = 0; i < nsyms; i++) {
+ count[lengths[i]]++;
+ if (maxlen < lengths[i])
+ maxlen = lengths[i];
+ }
+ /* Determine the starting code for each length block. */
+ code = 0;
+ for (i = 1; i < MAXCODELEN; i++) {
+ startcode[i] = code;
+ code += count[i];
+ if (code > (1 << i))
+ maxlen = -1; /* overcommitted */
+ code <<= 1;
+ }
+ if (code < (1 << MAXCODELEN))
+ maxlen = -2; /* undercommitted */
+ /* Determine the code for each symbol. Mirrored, of course. */
+ for (i = 0; i < nsyms; i++) {
+ code = startcode[lengths[i]]++;
+ codes[i] = 0;
+ for (j = 0; j < lengths[i]; j++) {
+ codes[i] = (codes[i] << 1) | (code & 1);
+ code >>= 1;
+ }
+ }
+
+ return maxlen;
+}
+
+/*
+ * Adler32 checksum function.
+ */
+static unsigned long adler32_update(unsigned long s,
+ const unsigned char *data, int len)
+{
+ unsigned s1 = s & 0xFFFF, s2 = (s >> 16) & 0xFFFF;
+ int i;
+
+ for (i = 0; i < len; i++) {
+ s1 += data[i];
+ s2 += s1;
+ if (!(i & 0xFFF)) {
+ s1 %= 65521;
+ s2 %= 65521;
+ }
+ }
+
+ return ((s2 % 65521) << 16) | (s1 % 65521);
+}
+
+/*
+ * CRC32 checksum function.
+ */
+
+static unsigned long crc32_update(unsigned long crcword,
+ const unsigned char *data, int len)
+{
+ static const unsigned long crc32_table[256] = {
+ 0x00000000L, 0x77073096L, 0xEE0E612CL, 0x990951BAL,
+ 0x076DC419L, 0x706AF48FL, 0xE963A535L, 0x9E6495A3L,
+ 0x0EDB8832L, 0x79DCB8A4L, 0xE0D5E91EL, 0x97D2D988L,
+ 0x09B64C2BL, 0x7EB17CBDL, 0xE7B82D07L, 0x90BF1D91L,
+ 0x1DB71064L, 0x6AB020F2L, 0xF3B97148L, 0x84BE41DEL,
+ 0x1ADAD47DL, 0x6DDDE4EBL, 0xF4D4B551L, 0x83D385C7L,
+ 0x136C9856L, 0x646BA8C0L, 0xFD62F97AL, 0x8A65C9ECL,
+ 0x14015C4FL, 0x63066CD9L, 0xFA0F3D63L, 0x8D080DF5L,
+ 0x3B6E20C8L, 0x4C69105EL, 0xD56041E4L, 0xA2677172L,
+ 0x3C03E4D1L, 0x4B04D447L, 0xD20D85FDL, 0xA50AB56BL,
+ 0x35B5A8FAL, 0x42B2986CL, 0xDBBBC9D6L, 0xACBCF940L,
+ 0x32D86CE3L, 0x45DF5C75L, 0xDCD60DCFL, 0xABD13D59L,
+ 0x26D930ACL, 0x51DE003AL, 0xC8D75180L, 0xBFD06116L,
+ 0x21B4F4B5L, 0x56B3C423L, 0xCFBA9599L, 0xB8BDA50FL,
+ 0x2802B89EL, 0x5F058808L, 0xC60CD9B2L, 0xB10BE924L,
+ 0x2F6F7C87L, 0x58684C11L, 0xC1611DABL, 0xB6662D3DL,
+ 0x76DC4190L, 0x01DB7106L, 0x98D220BCL, 0xEFD5102AL,
+ 0x71B18589L, 0x06B6B51FL, 0x9FBFE4A5L, 0xE8B8D433L,
+ 0x7807C9A2L, 0x0F00F934L, 0x9609A88EL, 0xE10E9818L,
+ 0x7F6A0DBBL, 0x086D3D2DL, 0x91646C97L, 0xE6635C01L,
+ 0x6B6B51F4L, 0x1C6C6162L, 0x856530D8L, 0xF262004EL,
+ 0x6C0695EDL, 0x1B01A57BL, 0x8208F4C1L, 0xF50FC457L,
+ 0x65B0D9C6L, 0x12B7E950L, 0x8BBEB8EAL, 0xFCB9887CL,
+ 0x62DD1DDFL, 0x15DA2D49L, 0x8CD37CF3L, 0xFBD44C65L,
+ 0x4DB26158L, 0x3AB551CEL, 0xA3BC0074L, 0xD4BB30E2L,
+ 0x4ADFA541L, 0x3DD895D7L, 0xA4D1C46DL, 0xD3D6F4FBL,
+ 0x4369E96AL, 0x346ED9FCL, 0xAD678846L, 0xDA60B8D0L,
+ 0x44042D73L, 0x33031DE5L, 0xAA0A4C5FL, 0xDD0D7CC9L,
+ 0x5005713CL, 0x270241AAL, 0xBE0B1010L, 0xC90C2086L,
+ 0x5768B525L, 0x206F85B3L, 0xB966D409L, 0xCE61E49FL,
+ 0x5EDEF90EL, 0x29D9C998L, 0xB0D09822L, 0xC7D7A8B4L,
+ 0x59B33D17L, 0x2EB40D81L, 0xB7BD5C3BL, 0xC0BA6CADL,
+ 0xEDB88320L, 0x9ABFB3B6L, 0x03B6E20CL, 0x74B1D29AL,
+ 0xEAD54739L, 0x9DD277AFL, 0x04DB2615L, 0x73DC1683L,
+ 0xE3630B12L, 0x94643B84L, 0x0D6D6A3EL, 0x7A6A5AA8L,
+ 0xE40ECF0BL, 0x9309FF9DL, 0x0A00AE27L, 0x7D079EB1L,
+ 0xF00F9344L, 0x8708A3D2L, 0x1E01F268L, 0x6906C2FEL,
+ 0xF762575DL, 0x806567CBL, 0x196C3671L, 0x6E6B06E7L,
+ 0xFED41B76L, 0x89D32BE0L, 0x10DA7A5AL, 0x67DD4ACCL,
+ 0xF9B9DF6FL, 0x8EBEEFF9L, 0x17B7BE43L, 0x60B08ED5L,
+ 0xD6D6A3E8L, 0xA1D1937EL, 0x38D8C2C4L, 0x4FDFF252L,
+ 0xD1BB67F1L, 0xA6BC5767L, 0x3FB506DDL, 0x48B2364BL,
+ 0xD80D2BDAL, 0xAF0A1B4CL, 0x36034AF6L, 0x41047A60L,
+ 0xDF60EFC3L, 0xA867DF55L, 0x316E8EEFL, 0x4669BE79L,
+ 0xCB61B38CL, 0xBC66831AL, 0x256FD2A0L, 0x5268E236L,
+ 0xCC0C7795L, 0xBB0B4703L, 0x220216B9L, 0x5505262FL,
+ 0xC5BA3BBEL, 0xB2BD0B28L, 0x2BB45A92L, 0x5CB36A04L,
+ 0xC2D7FFA7L, 0xB5D0CF31L, 0x2CD99E8BL, 0x5BDEAE1DL,
+ 0x9B64C2B0L, 0xEC63F226L, 0x756AA39CL, 0x026D930AL,
+ 0x9C0906A9L, 0xEB0E363FL, 0x72076785L, 0x05005713L,
+ 0x95BF4A82L, 0xE2B87A14L, 0x7BB12BAEL, 0x0CB61B38L,
+ 0x92D28E9BL, 0xE5D5BE0DL, 0x7CDCEFB7L, 0x0BDBDF21L,
+ 0x86D3D2D4L, 0xF1D4E242L, 0x68DDB3F8L, 0x1FDA836EL,
+ 0x81BE16CDL, 0xF6B9265BL, 0x6FB077E1L, 0x18B74777L,
+ 0x88085AE6L, 0xFF0F6A70L, 0x66063BCAL, 0x11010B5CL,
+ 0x8F659EFFL, 0xF862AE69L, 0x616BFFD3L, 0x166CCF45L,
+ 0xA00AE278L, 0xD70DD2EEL, 0x4E048354L, 0x3903B3C2L,
+ 0xA7672661L, 0xD06016F7L, 0x4969474DL, 0x3E6E77DBL,
+ 0xAED16A4AL, 0xD9D65ADCL, 0x40DF0B66L, 0x37D83BF0L,
+ 0xA9BCAE53L, 0xDEBB9EC5L, 0x47B2CF7FL, 0x30B5FFE9L,
+ 0xBDBDF21CL, 0xCABAC28AL, 0x53B39330L, 0x24B4A3A6L,
+ 0xBAD03605L, 0xCDD70693L, 0x54DE5729L, 0x23D967BFL,
+ 0xB3667A2EL, 0xC4614AB8L, 0x5D681B02L, 0x2A6F2B94L,
+ 0xB40BBE37L, 0xC30C8EA1L, 0x5A05DF1BL, 0x2D02EF8DL
+ };
+ crcword ^= 0xFFFFFFFFL;
+ while (len--) {
+ unsigned long newbyte = *data++;
+ newbyte ^= crcword & 0xFFL;
+ crcword = (crcword >> 8) ^ crc32_table[newbyte];
+ }
+ return crcword ^ 0xFFFFFFFFL;
+}
+
+typedef struct {
+ short code, extrabits;
+ int min, max;
+} coderecord;
+
+static const coderecord lencodes[] = {
+ {257, 0, 3, 3},
+ {258, 0, 4, 4},
+ {259, 0, 5, 5},
+ {260, 0, 6, 6},
+ {261, 0, 7, 7},
+ {262, 0, 8, 8},
+ {263, 0, 9, 9},
+ {264, 0, 10, 10},
+ {265, 1, 11, 12},
+ {266, 1, 13, 14},
+ {267, 1, 15, 16},
+ {268, 1, 17, 18},
+ {269, 2, 19, 22},
+ {270, 2, 23, 26},
+ {271, 2, 27, 30},
+ {272, 2, 31, 34},
+ {273, 3, 35, 42},
+ {274, 3, 43, 50},
+ {275, 3, 51, 58},
+ {276, 3, 59, 66},
+ {277, 4, 67, 82},
+ {278, 4, 83, 98},
+ {279, 4, 99, 114},
+ {280, 4, 115, 130},
+ {281, 5, 131, 162},
+ {282, 5, 163, 194},
+ {283, 5, 195, 226},
+ {284, 5, 227, 257},
+ {285, 0, 258, 258},
+};
+
+static const coderecord distcodes[] = {
+ {0, 0, 1, 1},
+ {1, 0, 2, 2},
+ {2, 0, 3, 3},
+ {3, 0, 4, 4},
+ {4, 1, 5, 6},
+ {5, 1, 7, 8},
+ {6, 2, 9, 12},
+ {7, 2, 13, 16},
+ {8, 3, 17, 24},
+ {9, 3, 25, 32},
+ {10, 4, 33, 48},
+ {11, 4, 49, 64},
+ {12, 5, 65, 96},
+ {13, 5, 97, 128},
+ {14, 6, 129, 192},
+ {15, 6, 193, 256},
+ {16, 7, 257, 384},
+ {17, 7, 385, 512},
+ {18, 8, 513, 768},
+ {19, 8, 769, 1024},
+ {20, 9, 1025, 1536},
+ {21, 9, 1537, 2048},
+ {22, 10, 2049, 3072},
+ {23, 10, 3073, 4096},
+ {24, 11, 4097, 6144},
+ {25, 11, 6145, 8192},
+ {26, 12, 8193, 12288},
+ {27, 12, 12289, 16384},
+ {28, 13, 16385, 24576},
+ {29, 13, 24577, 32768},
+};
+
+/* ----------------------------------------------------------------------
+ * Deflate compression.
+ */
+
+#define SYMLIMIT 65536
+#define SYMPFX_LITLEN 0x00000000U
+#define SYMPFX_DIST 0x40000000U
+#define SYMPFX_EXTRABITS 0x80000000U
+#define SYMPFX_CODELEN 0xC0000000U
+#define SYMPFX_MASK 0xC0000000U
+
+#define SYM_EXTRABITS_MASK 0x3C000000U
+#define SYM_EXTRABITS_SHIFT 26
+
+struct huftrees {
+ unsigned char *len_litlen;
+ int *code_litlen;
+ unsigned char *len_dist;
+ int *code_dist;
+ unsigned char *len_codelen;
+ int *code_codelen;
+};
+
+struct deflate_compress_ctx {
+ struct LZ77Context *lzc;
+ unsigned char *outbuf;
+ int outlen, outsize;
+ unsigned long outbits;
+ int noutbits;
+ int firstblock;
+ unsigned long *syms;
+ int symstart, nsyms;
+ int type;
+ unsigned long checksum;
+ unsigned long datasize;
+ int lastblock;
+ int finished;
+ unsigned char static_len1[286], static_len2[30];
+ int static_code1[286], static_code2[30];
+ struct huftrees sht;
+#ifdef STATISTICS
+ unsigned long bitcount;
+#endif
+};
+
+static void outbits(deflate_compress_ctx *out,
+ unsigned long bits, int nbits)
+{
+ assert(out->noutbits + nbits <= 32);
+ out->outbits |= bits << out->noutbits;
+ out->noutbits += nbits;
+ while (out->noutbits >= 8) {
+ if (out->outlen >= out->outsize) {
+ out->outsize = out->outlen + 64;
+ out->outbuf = sresize(out->outbuf, out->outsize, unsigned char);
+ }
+ out->outbuf[out->outlen++] = (unsigned char) (out->outbits & 0xFF);
+ out->outbits >>= 8;
+ out->noutbits -= 8;
+ }
+#ifdef STATISTICS
+ out->bitcount += nbits;
+#endif
+}
+
+/*
+ * Binary heap functions used by buildhuf(). Each one assumes the
+ * heap to be stored in an array of ints, with two ints per node
+ * (user data and key). They take in the old heap length, and
+ * return the new one.
+ */
+#define HEAPPARENT(x) (((x)-2)/4*2)
+#define HEAPLEFT(x) ((x)*2+2)
+#define HEAPRIGHT(x) ((x)*2+4)
+static int addheap(int *heap, int len, int userdata, int key)
+{
+ int me, dad, tmp;
+
+ me = len;
+ heap[len++] = userdata;
+ heap[len++] = key;
+
+ while (me > 0) {
+ dad = HEAPPARENT(me);
+ if (heap[me+1] < heap[dad+1]) {
+ tmp = heap[me]; heap[me] = heap[dad]; heap[dad] = tmp;
+ tmp = heap[me+1]; heap[me+1] = heap[dad+1]; heap[dad+1] = tmp;
+ me = dad;
+ } else
+ break;
+ }
+
+ return len;
+}
+static int rmheap(int *heap, int len, int *userdata, int *key)
+{
+ int me, lc, rc, c, tmp;
+
+ len -= 2;
+ *userdata = heap[0];
+ *key = heap[1];
+ heap[0] = heap[len];
+ heap[1] = heap[len+1];
+
+ me = 0;
+
+ while (1) {
+ lc = HEAPLEFT(me);
+ rc = HEAPRIGHT(me);
+ if (lc >= len)
+ break;
+ else if (rc >= len || heap[lc+1] < heap[rc+1])
+ c = lc;
+ else
+ c = rc;
+ if (heap[me+1] > heap[c+1]) {
+ tmp = heap[me]; heap[me] = heap[c]; heap[c] = tmp;
+ tmp = heap[me+1]; heap[me+1] = heap[c+1]; heap[c+1] = tmp;
+ } else
+ break;
+ me = c;
+ }
+
+ return len;
+}
+
+/*
+ * The core of the Huffman algorithm: takes an input array of
+ * symbol frequencies, and produces an output array of code
+ * lengths.
+ *
+ * This is basically a generic Huffman implementation, but it has
+ * one zlib-related quirk which is that it caps the output code
+ * lengths to fit in an unsigned char (which is safe since Deflate
+ * will reject anything longer than 15 anyway). Anyone wanting to
+ * rip it out and use it in another context should find that easy
+ * to remove.
+ */
+#define HUFMAX 286
+static void buildhuf(const int *freqs, unsigned char *lengths, int nsyms)
+{
+ int parent[2*HUFMAX-1];
+ int length[2*HUFMAX-1];
+ int heap[2*HUFMAX];
+ int heapsize;
+ int i, j, n;
+ int si, sj;
+
+ assert(nsyms <= HUFMAX);
+
+ memset(parent, 0, sizeof(parent));
+
+ /*
+ * Begin by building the heap.
+ */
+ heapsize = 0;
+ for (i = 0; i < nsyms; i++)
+ if (freqs[i] > 0) /* leave unused symbols out totally */
+ heapsize = addheap(heap, heapsize, i, freqs[i]);
+
+ /*
+ * Now repeatedly take two elements off the heap and merge
+ * them.
+ */
+ n = HUFMAX;
+ while (heapsize > 2) {
+ heapsize = rmheap(heap, heapsize, &i, &si);
+ heapsize = rmheap(heap, heapsize, &j, &sj);
+ parent[i] = n;
+ parent[j] = n;
+ heapsize = addheap(heap, heapsize, n, si + sj);
+ n++;
+ }
+
+ /*
+ * Now we have our tree, in the form of a link from each node
+ * to the index of its parent. Count back down the tree to
+ * determine the code lengths.
+ */
+ memset(length, 0, sizeof(length));
+ /* The tree root has length 0 after that, which is correct. */
+ for (i = n-1; i-- ;)
+ if (parent[i] > 0)
+ length[i] = 1 + length[parent[i]];
+
+ /*
+ * And that's it. (Simple, wasn't it?) Copy the lengths into
+ * the output array and leave.
+ *
+ * Here we cap lengths to fit in unsigned char.
+ */
+ for (i = 0; i < nsyms; i++)
+ lengths[i] = (length[i] > 255 ? 255 : length[i]);
+}
+
+/*
+ * Wrapper around buildhuf() which enforces the Deflate restriction
+ * that no code length may exceed 15 bits, or 7 for the auxiliary
+ * code length alphabet. This function has the same calling
+ * semantics as buildhuf(), except that it might modify the freqs
+ * array.
+ */
+static void deflate_buildhuf(int *freqs, unsigned char *lengths,
+ int nsyms, int limit)
+{
+ int smallestfreq, totalfreq, nactivesyms;
+ int num, denom, adjust;
+ int i;
+ int maxprob;
+
+ /*
+ * Nasty special case: if the frequency table has fewer than
+ * two non-zero elements, we must invent some, because we can't
+ * have fewer than one bit encoding a symbol.
+ */
+ assert(nsyms >= 2);
+ {
+ int count = 0;
+ for (i = 0; i < nsyms; i++)
+ if (freqs[i] > 0)
+ count++;
+ if (count < 2) {
+ for (i = 0; i < nsyms && count > 0; i++)
+ if (freqs[i] == 0) {
+ freqs[i] = 1;
+ count--;
+ }
+ }
+ }
+
+ /*
+ * First, try building the Huffman table the normal way. If
+ * this works, it's optimal, so we don't want to mess with it.
+ */
+ buildhuf(freqs, lengths, nsyms);
+
+ for (i = 0; i < nsyms; i++)
+ if (lengths[i] > limit)
+ break;
+
+ if (i == nsyms)
+ return; /* OK */
+
+ /*
+ * The Huffman algorithm can only ever generate a code length
+ * of N bits or more if there is a symbol whose probability is
+ * less than the reciprocal of the (N+2)th Fibonacci number
+ * (counting from F_0=0 and F_1=1), i.e. 1/2584 for N=16, or
+ * 1/55 for N=8. (This is a necessary though not sufficient
+ * condition.)
+ *
+ * Why is this? Well, consider the input symbol with the
+ * smallest probability. Let that probability be x. In order
+ * for this symbol to have a code length of at least 1, the
+ * Huffman algorithm will have to merge it with some other
+ * node; and since x is the smallest probability, the node it
+ * gets merged with must be at least x. Thus, the probability
+ * of the resulting combined node will be at least 2x. Now in
+ * order for our node to reach depth 2, this 2x-node must be
+ * merged again. But what with? We can't assume the node it
+ * merges with is at least 2x, because this one might only be
+ * the _second_ smallest remaining node. But we do know the
+ * node it merges with must be at least x, so our order-2
+ * internal node is at least 3x.
+ *
+ * How small a node can merge with _that_ to get an order-3
+ * internal node? Well, it must be at least 2x, because if it
+ * was smaller than that then it would have been one of the two
+ * smallest nodes in the previous step and been merged at that
+ * point. So at least 3x, plus at least 2x, comes to at least
+ * 5x for an order-3 node.
+ *
+ * And so it goes on: at every stage we must merge our current
+ * node with a node at least as big as the bigger of this one's
+ * two parents, and from this starting point that gives rise to
+ * the Fibonacci sequence. So we find that in order to have a
+ * node n levels deep (i.e. a maximum code length of n), the
+ * overall probability of the root of the entire tree must be
+ * at least F_{n+2} times the probability of the rarest symbol.
+ * In other words, since the overall probability is 1, it is a
+ * necessary condition for a code length of 16 or more that
+ * there must be at least one symbol with probability <=
+ * 1/F_18.
+ *
+ * (To demonstrate that a probability this big really can give
+ * rise to a code length of 16, consider the set of input
+ * frequencies { 1-epsilon, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
+ * 89, 144, 233, 377, 610, 987 }, for arbitrarily small
+ * epsilon.)
+ *
+ * So here buildhuf() has returned us an overlong code. So to
+ * ensure it doesn't do it again, we add a constant to all the
+ * (non-zero) symbol frequencies, causing them to become more
+ * balanced and removing the danger. We can then feed the
+ * results back to the standard buildhuf() and be
+ * assert()-level confident that the resulting code lengths
+ * contain nothing outside the permitted range.
+ */
+ assert(limit == 15 || limit == 7);
+ maxprob = (limit == 15 ? 2584 : 55); /* no point in computing full F_n */
+ totalfreq = nactivesyms = 0;
+ smallestfreq = -1;
+ for (i = 0; i < nsyms; i++) {
+ if (freqs[i] == 0)
+ continue;
+ if (smallestfreq < 0 || smallestfreq > freqs[i])
+ smallestfreq = freqs[i];
+ totalfreq += freqs[i];
+ nactivesyms++;
+ }
+ assert(smallestfreq <= totalfreq / maxprob);
+
+ /*
+ * We want to find the smallest integer `adjust' such that
+ * (totalfreq + nactivesyms * adjust) / (smallestfreq +
+ * adjust) is less than maxprob. A bit of algebra tells us
+ * that the threshold value is equal to
+ *
+ * totalfreq - maxprob * smallestfreq
+ * ----------------------------------
+ * maxprob - nactivesyms
+ *
+ * rounded up, of course. And we'll only even be trying
+ * this if
+ */
+ num = totalfreq - smallestfreq * maxprob;
+ denom = maxprob - nactivesyms;
+ adjust = (num + denom - 1) / denom;
+
+ /*
+ * Now add `adjust' to all the input symbol frequencies.
+ */
+ for (i = 0; i < nsyms; i++)
+ if (freqs[i] != 0)
+ freqs[i] += adjust;
+
+ /*
+ * Rebuild the Huffman tree...
+ */
+ buildhuf(freqs, lengths, nsyms);
+
+ /*
+ * ... and this time it ought to be OK.
+ */
+ for (i = 0; i < nsyms; i++)
+ assert(lengths[i] <= limit);
+}
+
+/*
+ * Compute the bit length of a symbol, given the three Huffman
+ * trees.
+ */
+static int symsize(unsigned sym, const struct huftrees *trees)
+{
+ unsigned basesym = sym &~ SYMPFX_MASK;
+
+ switch (sym & SYMPFX_MASK) {
+ case SYMPFX_LITLEN:
+ return trees->len_litlen[basesym];
+ case SYMPFX_DIST:
+ return trees->len_dist[basesym];
+ case SYMPFX_CODELEN:
+ return trees->len_codelen[basesym];
+ default /*case SYMPFX_EXTRABITS*/:
+ return basesym >> SYM_EXTRABITS_SHIFT;
+ }
+}
+
+/*
+ * Write out a single symbol, given the three Huffman trees.
+ */
+static void writesym(deflate_compress_ctx *out,
+ unsigned sym, const struct huftrees *trees)
+{
+ unsigned basesym = sym &~ SYMPFX_MASK;
+ int i;
+
+ switch (sym & SYMPFX_MASK) {
+ case SYMPFX_LITLEN:
+ debug(("send: litlen %d\n", basesym));
+ outbits(out, trees->code_litlen[basesym], trees->len_litlen[basesym]);
+ break;
+ case SYMPFX_DIST:
+ debug(("send: dist %d\n", basesym));
+ outbits(out, trees->code_dist[basesym], trees->len_dist[basesym]);
+ break;
+ case SYMPFX_CODELEN:
+ debug(("send: codelen %d\n", basesym));
+ outbits(out, trees->code_codelen[basesym],trees->len_codelen[basesym]);
+ break;
+ case SYMPFX_EXTRABITS:
+ i = basesym >> SYM_EXTRABITS_SHIFT;
+ basesym &= ~SYM_EXTRABITS_MASK;
+ debug(("send: extrabits %d/%d\n", basesym, i));
+ outbits(out, basesym, i);
+ break;
+ }
+}
+
+/*
+ * outblock() must output _either_ a dynamic block of length
+ * `dynamic_len', _or_ a static block of length `static_len', but
+ * it gets to choose which.
+ */
+static void outblock(deflate_compress_ctx *out,
+ int dynamic_len, int static_len)
+{
+ int freqs1[286], freqs2[30], freqs3[19];
+ unsigned char len1[286], len2[30], len3[19];
+ int code1[286], code2[30], code3[19];
+ int hlit, hdist, hclen, bfinal, btype;
+ int treesrc[286 + 30];
+ int treesyms[286 + 30];
+ int codelen[19];
+ int i, ntreesrc, ntreesyms;
+ int dynamic, blklen;
+ struct huftrees dht;
+ const struct huftrees *ht;
+#ifdef STATISTICS
+ unsigned long bitcount_before;
+#endif
+
+ dht.len_litlen = len1;
+ dht.len_dist = len2;
+ dht.len_codelen = len3;
+ dht.code_litlen = code1;
+ dht.code_dist = code2;
+ dht.code_codelen = code3;
+
+ /*
+ * We make our choice of block to output by doing all the
+ * detailed work to determine the exact length of each possible
+ * block. Then we choose the one which has fewest output bits
+ * per symbol.
+ */
+
+ /*
+ * First build the two main Huffman trees for the dynamic
+ * block.
+ */
+
+ /*
+ * Count up the frequency tables.
+ */
+ memset(freqs1, 0, sizeof(freqs1));
+ memset(freqs2, 0, sizeof(freqs2));
+ freqs1[256] = 1; /* we're bound to need one EOB */
+ for (i = 0; i < dynamic_len; i++) {
+ unsigned sym = out->syms[(out->symstart + i) % SYMLIMIT];
+
+ /*
+ * Increment the occurrence counter for this symbol, if
+ * it's in one of the Huffman alphabets and isn't extra
+ * bits.
+ */
+ if ((sym & SYMPFX_MASK) == SYMPFX_LITLEN) {
+ sym &= ~SYMPFX_MASK;
+ assert(sym < lenof(freqs1));
+ freqs1[sym]++;
+ } else if ((sym & SYMPFX_MASK) == SYMPFX_DIST) {
+ sym &= ~SYMPFX_MASK;
+ assert(sym < lenof(freqs2));
+ freqs2[sym]++;
+ }
+ }
+ deflate_buildhuf(freqs1, len1, lenof(freqs1), 15);
+ deflate_buildhuf(freqs2, len2, lenof(freqs2), 15);
+ hufcodes(len1, code1, lenof(freqs1));
+ hufcodes(len2, code2, lenof(freqs2));
+
+ /*
+ * Determine HLIT and HDIST.
+ */
+ for (hlit = 286; hlit > 257 && len1[hlit-1] == 0; hlit--);
+ for (hdist = 30; hdist > 1 && len2[hdist-1] == 0; hdist--);
+
+ /*
+ * Write out the list of symbols used to transmit the
+ * trees.
+ */
+ ntreesrc = 0;
+ for (i = 0; i < hlit; i++)
+ treesrc[ntreesrc++] = len1[i];
+ for (i = 0; i < hdist; i++)
+ treesrc[ntreesrc++] = len2[i];
+ ntreesyms = 0;
+ for (i = 0; i < ntreesrc ;) {
+ int j = 1;
+ int k;
+
+ /* Find length of run of the same length code. */
+ while (i+j < ntreesrc && treesrc[i+j] == treesrc[i])
+ j++;
+
+ /* Encode that run as economically as we can. */
+ k = j;
+ if (treesrc[i] == 0) {
+ /*
+ * Zero code length: we can output run codes for
+ * 3-138 zeroes. So if we have fewer than 3 zeroes,
+ * we just output literals. Otherwise, we output
+ * nothing but run codes, and tweak their lengths
+ * to make sure we aren't left with under 3 at the
+ * end.
+ */
+ if (k < 3) {
+ while (k--)
+ treesyms[ntreesyms++] = 0 | SYMPFX_CODELEN;
+ } else {
+ while (k > 0) {
+ int rpt = (k < 138 ? k : 138);
+ if (rpt > k-3 && rpt < k)
+ rpt = k-3;
+ assert(rpt >= 3 && rpt <= 138);
+ if (rpt < 11) {
+ treesyms[ntreesyms++] = 17 | SYMPFX_CODELEN;
+ treesyms[ntreesyms++] =
+ (SYMPFX_EXTRABITS | (rpt - 3) |
+ (3 << SYM_EXTRABITS_SHIFT));
+ } else {
+ treesyms[ntreesyms++] = 18 | SYMPFX_CODELEN;
+ treesyms[ntreesyms++] =
+ (SYMPFX_EXTRABITS | (rpt - 11) |
+ (7 << SYM_EXTRABITS_SHIFT));
+ }
+ k -= rpt;
+ }
+ }
+ } else {
+ /*
+ * Non-zero code length: we must output the first
+ * one explicitly, then we can output a copy code
+ * for 3-6 repeats. So if we have fewer than 4
+ * repeats, we _just_ output literals. Otherwise,
+ * we output one literal plus at least one copy
+ * code, and tweak the copy codes to make sure we
+ * aren't left with under 3 at the end.
+ */
+ assert(treesrc[i] < 16);
+ treesyms[ntreesyms++] = treesrc[i] | SYMPFX_CODELEN;
+ k--;
+ if (k < 3) {
+ while (k--)
+ treesyms[ntreesyms++] = treesrc[i] | SYMPFX_CODELEN;
+ } else {
+ while (k > 0) {
+ int rpt = (k < 6 ? k : 6);
+ if (rpt > k-3 && rpt < k)
+ rpt = k-3;
+ assert(rpt >= 3 && rpt <= 6);
+ treesyms[ntreesyms++] = 16 | SYMPFX_CODELEN;
+ treesyms[ntreesyms++] = (SYMPFX_EXTRABITS | (rpt - 3) |
+ (2 << SYM_EXTRABITS_SHIFT));
+ k -= rpt;
+ }
+ }
+ }
+
+ i += j;
+ }
+ assert((unsigned)ntreesyms < lenof(treesyms));
+
+ /*
+ * Count up the frequency table for the tree-transmission
+ * symbols, and build the auxiliary Huffman tree for that.
+ */
+ memset(freqs3, 0, sizeof(freqs3));
+ for (i = 0; i < ntreesyms; i++) {
+ unsigned sym = treesyms[i];
+
+ /*
+ * Increment the occurrence counter for this symbol, if
+ * it's the Huffman alphabet and isn't extra bits.
+ */
+ if ((sym & SYMPFX_MASK) == SYMPFX_CODELEN) {
+ sym &= ~SYMPFX_MASK;
+ assert(sym < lenof(freqs3));
+ freqs3[sym]++;
+ }
+ }
+ deflate_buildhuf(freqs3, len3, lenof(freqs3), 7);
+ hufcodes(len3, code3, lenof(freqs3));
+
+ /*
+ * Reorder the code length codes into transmission order, and
+ * determine HCLEN.
+ */
+ for (i = 0; i < 19; i++)
+ codelen[i] = len3[lenlenmap[i]];
+ for (hclen = 19; hclen > 4 && codelen[hclen-1] == 0; hclen--);
+
+ /*
+ * Now work out the exact size of both the dynamic and the
+ * static block, in bits.
+ */
+ {
+ int ssize, dsize;
+
+ /*
+ * First the dynamic block.
+ */
+ dsize = 3 + 5 + 5 + 4; /* 3-bit header, HLIT, HDIST, HCLEN */
+ dsize += 3 * hclen; /* code-length-alphabet code lengths */
+ /* Code lengths */
+ for (i = 0; i < ntreesyms; i++)
+ dsize += symsize(treesyms[i], &dht);
+ /* The actual block data */
+ for (i = 0; i < dynamic_len; i++) {
+ unsigned sym = out->syms[(out->symstart + i) % SYMLIMIT];
+ dsize += symsize(sym, &dht);
+ }
+ /* And the end-of-data symbol. */
+ dsize += symsize(SYMPFX_LITLEN | 256, &dht);
+
+ /*
+ * Now the static block.
+ */
+ ssize = 3; /* 3-bit block header */
+ /* The actual block data */
+ for (i = 0; i < static_len; i++) {
+ unsigned sym = out->syms[(out->symstart + i) % SYMLIMIT];
+ ssize += symsize(sym, &out->sht);
+ }
+ /* And the end-of-data symbol. */
+ ssize += symsize(SYMPFX_LITLEN | 256, &out->sht);
+
+ /*
+ * Compare the two and decide which to output. We break
+ * exact ties in favour of the static block, because of the
+ * special case in which that block has zero length.
+ */
+ dynamic = ((double)ssize * dynamic_len > (double)dsize * static_len);
+ ht = dynamic ? &dht : &out->sht;
+ blklen = dynamic ? dynamic_len : static_len;
+ }
+
+ /*
+ * Actually transmit the block.
+ */
+
+ /* 3-bit block header */
+ bfinal = (out->lastblock ? 1 : 0);
+ btype = dynamic ? 2 : 1;
+ debug(("send: bfinal=%d btype=%d\n", bfinal, btype));
+ outbits(out, bfinal, 1);
+ outbits(out, btype, 2);
+
+#ifdef STATISTICS
+ bitcount_before = out->bitcount;
+#endif
+
+ if (dynamic) {
+ /* HLIT, HDIST and HCLEN */
+ debug(("send: hlit=%d hdist=%d hclen=%d\n", hlit, hdist, hclen));
+ outbits(out, hlit - 257, 5);
+ outbits(out, hdist - 1, 5);
+ outbits(out, hclen - 4, 4);
+
+ /* Code lengths for the auxiliary tree */
+ for (i = 0; i < hclen; i++) {
+ debug(("send: lenlen %d\n", codelen[i]));
+ outbits(out, codelen[i], 3);
+ }
+
+ /* Code lengths for the literal/length and distance trees */
+ for (i = 0; i < ntreesyms; i++)
+ writesym(out, treesyms[i], ht);
+#ifdef STATISTICS
+ fprintf(stderr, "total tree size %lu bits\n",
+ out->bitcount - bitcount_before);
+#endif
+ }
+
+ /* Output the actual symbols from the buffer */
+ for (i = 0; i < blklen; i++) {
+ unsigned sym = out->syms[(out->symstart + i) % SYMLIMIT];
+ writesym(out, sym, ht);
+ }
+
+ /* Output the end-of-data symbol */
+ writesym(out, SYMPFX_LITLEN | 256, ht);
+
+ /*
+ * Remove all the just-output symbols from the symbol buffer by
+ * adjusting symstart and nsyms.
+ */
+ out->symstart = (out->symstart + blklen) % SYMLIMIT;
+ out->nsyms -= blklen;
+}
+
+/*
+ * Give the approximate log-base-2 of an input integer, measured in
+ * 8ths of a bit. (I.e. this computes an integer approximation to
+ * 8*logbase2(x).)
+ */
+static int approxlog2(unsigned x)
+{
+ int ret = 31*8;
+
+ /*
+ * Binary-search to get the top bit of x up to bit 31.
+ */
+ if (x < 0x00010000U) x <<= 16, ret -= 16*8;
+ if (x < 0x01000000U) x <<= 8, ret -= 8*8;
+ if (x < 0x10000000U) x <<= 4, ret -= 4*8;
+ if (x < 0x40000000U) x <<= 2, ret -= 2*8;
+ if (x < 0x80000000U) x <<= 1, ret -= 1*8;
+
+ /*
+ * Now we know the logarithm we want is in [ret,ret+1).
+ * Determine the bottom three bits by checking against
+ * threshold values.
+ *
+ * (Each of these threshold values is 0x80000000 times an odd
+ * power of 2^(1/16). Therefore, this function rounds to
+ * nearest.)
+ */
+ if (x <= 0xAD583EEAU) {
+ if (x <= 0x91C3D373U)
+ ret += (x <= 0x85AAC367U ? 0 : 1);
+ else
+ ret += (x <= 0x9EF53260U ? 2 : 3);
+ } else {
+ if (x <= 0xCE248C15U)
+ ret += (x <= 0xBD08A39FU ? 4 : 5);
+ else
+ ret += (x <= 0xE0CCDEECU ? 6 : x <= 0xF5257D15L ? 7 : 8);
+ }
+
+ return ret;
+}
+
+static void chooseblock(deflate_compress_ctx *out)
+{
+ int freqs1[286], freqs2[30];
+ int i, len, bestlen, longestlen = 0;
+ int total1, total2;
+ int bestvfm;
+
+ memset(freqs1, 0, sizeof(freqs1));
+ memset(freqs2, 0, sizeof(freqs2));
+ freqs1[256] = 1; /* we're bound to need one EOB */
+ total1 = 1;
+ total2 = 0;
+
+ /*
+ * Iterate over all possible block lengths, computing the
+ * entropic coding approximation to the final length at every
+ * stage. We divide the result by the number of symbols
+ * encoded, to determine the `value for money' (overall
+ * bits-per-symbol count) of a block of that length.
+ */
+ bestlen = -1;
+ bestvfm = 0;
+
+ len = 300 * 8; /* very approximate size of the Huffman trees */
+
+ for (i = 0; i < out->nsyms; i++) {
+ unsigned sym = out->syms[(out->symstart + i) % SYMLIMIT];
+
+ if (i > 0 && (sym & SYMPFX_MASK) == SYMPFX_LITLEN) {
+ /*
+ * This is a viable point at which to end the block.
+ * Compute the value for money.
+ */
+ int vfm = i * 32768 / len; /* symbols encoded per bit */
+
+ if (bestlen < 0 || vfm > bestvfm) {
+ bestlen = i;
+ bestvfm = vfm;
+ }
+
+ longestlen = i;
+ }
+
+ /*
+ * Increment the occurrence counter for this symbol, if
+ * it's in one of the Huffman alphabets and isn't extra
+ * bits.
+ */
+ if ((sym & SYMPFX_MASK) == SYMPFX_LITLEN) {
+ sym &= ~SYMPFX_MASK;
+ assert(sym < lenof(freqs1));
+ len += freqs1[sym] * approxlog2(freqs1[sym]);
+ len -= total1 * approxlog2(total1);
+ freqs1[sym]++;
+ total1++;
+ len -= freqs1[sym] * approxlog2(freqs1[sym]);
+ len += total1 * approxlog2(total1);
+ } else if ((sym & SYMPFX_MASK) == SYMPFX_DIST) {
+ sym &= ~SYMPFX_MASK;
+ assert(sym < lenof(freqs2));
+ len += freqs2[sym] * approxlog2(freqs2[sym]);
+ len -= total2 * approxlog2(total2);
+ freqs2[sym]++;
+ total2++;
+ len -= freqs2[sym] * approxlog2(freqs2[sym]);
+ len += total2 * approxlog2(total2);
+ } else if ((sym & SYMPFX_MASK) == SYMPFX_EXTRABITS) {
+ len += 8 * ((sym &~ SYMPFX_MASK) >> SYM_EXTRABITS_SHIFT);
+ }
+ }
+
+ assert(bestlen > 0);
+
+ outblock(out, bestlen, longestlen);
+}
+
+/*
+ * Force the current symbol buffer to be flushed out as a single
+ * block.
+ */
+static void flushblock(deflate_compress_ctx *out)
+{
+ /*
+ * No need to check that out->nsyms is a valid block length: we
+ * know it has to be, because flushblock() is called in between
+ * two matches/literals.
+ */
+ outblock(out, out->nsyms, out->nsyms);
+ assert(out->nsyms == 0);
+}
+
+/*
+ * Place a symbol into the symbols buffer.
+ */
+static void outsym(deflate_compress_ctx *out, unsigned long sym)
+{
+ assert(out->nsyms < SYMLIMIT);
+ out->syms[(out->symstart + out->nsyms++) % SYMLIMIT] = sym;
+
+ if (out->nsyms == SYMLIMIT)
+ chooseblock(out);
+}
+
+static void literal(struct LZ77Context *ectx, unsigned char c)
+{
+ deflate_compress_ctx *out = (deflate_compress_ctx *) ectx->userdata;
+
+ outsym(out, SYMPFX_LITLEN | c);
+}
+
+static void match(struct LZ77Context *ectx, int distance, int len)
+{
+ const coderecord *d, *l;
+ int i, j, k;
+ deflate_compress_ctx *out = (deflate_compress_ctx *) ectx->userdata;
+
+ while (len > 0) {
+ int thislen;
+
+ /*
+ * We can transmit matches of lengths 3 through 258
+ * inclusive. So if len exceeds 258, we must transmit in
+ * several steps, with 258 or less in each step.
+ *
+ * Specifically: if len >= 261, we can transmit 258 and be
+ * sure of having at least 3 left for the next step. And if
+ * len <= 258, we can just transmit len. But if len == 259
+ * or 260, we must transmit len-3.
+ */
+ thislen = (len > 260 ? 258 : len <= 258 ? len : len - 3);
+ len -= thislen;
+
+ /*
+ * Binary-search to find which length code we're
+ * transmitting.
+ */
+ i = -1;
+ j = sizeof(lencodes) / sizeof(*lencodes);
+ while (1) {
+ assert(j - i >= 2);
+ k = (j + i) / 2;
+ if (thislen < lencodes[k].min)
+ j = k;
+ else if (thislen > lencodes[k].max)
+ i = k;
+ else {
+ l = &lencodes[k];
+ break; /* found it! */
+ }
+ }
+
+ /*
+ * Transmit the length code.
+ */
+ outsym(out, SYMPFX_LITLEN | l->code);
+
+ /*
+ * Transmit the extra bits.
+ */
+ if (l->extrabits) {
+ outsym(out, (SYMPFX_EXTRABITS | (thislen - l->min) |
+ (l->extrabits << SYM_EXTRABITS_SHIFT)));
+ }
+
+ /*
+ * Binary-search to find which distance code we're
+ * transmitting.
+ */
+ i = -1;
+ j = sizeof(distcodes) / sizeof(*distcodes);
+ while (1) {
+ assert(j - i >= 2);
+ k = (j + i) / 2;
+ if (distance < distcodes[k].min)
+ j = k;
+ else if (distance > distcodes[k].max)
+ i = k;
+ else {
+ d = &distcodes[k];
+ break; /* found it! */
+ }
+ }
+
+ /*
+ * Write the distance code.
+ */
+ outsym(out, SYMPFX_DIST | d->code);
+
+ /*
+ * Transmit the extra bits.
+ */
+ if (d->extrabits) {
+ outsym(out, (SYMPFX_EXTRABITS | (distance - d->min) |
+ (d->extrabits << SYM_EXTRABITS_SHIFT)));
+ }
+ }
+}
+
+deflate_compress_ctx *deflate_compress_new(int type)
+{
+ deflate_compress_ctx *out;
+ struct LZ77Context *ectx = snew(struct LZ77Context);
+
+ lz77_init(ectx);
+ ectx->literal = literal;
+ ectx->match = match;
+
+ out = snew(deflate_compress_ctx);
+ out->type = type;
+ out->outbits = out->noutbits = 0;
+ out->firstblock = TRUE;
+#ifdef STATISTICS
+ out->bitcount = 0;
+#endif
+
+ out->syms = snewn(SYMLIMIT, unsigned long);
+ out->symstart = out->nsyms = 0;
+
+ out->checksum = (type == DEFLATE_TYPE_ZLIB ? 1 : 0);
+ out->datasize = 0;
+ out->lastblock = FALSE;
+ out->finished = FALSE;
+
+ /*
+ * Build the static Huffman tables now, so we'll have them
+ * available every time outblock() is called.
+ */
+ {
+ int i;
+
+ for (i = 0; i < lenof(out->static_len1); i++)
+ out->static_len1[i] = (i < 144 ? 8 :
+ i < 256 ? 9 :
+ i < 280 ? 7 : 8);
+ for (i = 0; i < lenof(out->static_len2); i++)
+ out->static_len2[i] = 5;
+ }
+ hufcodes(out->static_len1, out->static_code1, lenof(out->static_code1));
+ hufcodes(out->static_len2, out->static_code2, lenof(out->static_code2));
+ out->sht.len_litlen = out->static_len1;
+ out->sht.len_dist = out->static_len2;
+ out->sht.len_codelen = NULL;
+ out->sht.code_litlen = out->static_code1;
+ out->sht.code_dist = out->static_code2;
+ out->sht.code_codelen = NULL;
+
+ ectx->userdata = out;
+ out->lzc = ectx;
+
+ return out;
+}
+
+void deflate_compress_free(deflate_compress_ctx *out)
+{
+ struct LZ77Context *ectx = out->lzc;
+
+ sfree(out->syms);
+ sfree(ectx->ictx);
+ sfree(ectx);
+ sfree(out);
+}
+
+void deflate_compress_data(deflate_compress_ctx *out,
+ const void *vblock, int len, int flushtype,
+ void **outblock, int *outlen)
+{
+ struct LZ77Context *ectx = out->lzc;
+ const unsigned char *block = (const unsigned char *)vblock;
+
+ assert(!out->finished);
+
+ out->outbuf = NULL;
+ out->outlen = out->outsize = 0;
+
+ /*
+ * If this is the first block, output the header.
+ */
+ if (out->firstblock) {
+ switch (out->type) {
+ case DEFLATE_TYPE_BARE:
+ break; /* no header */
+ case DEFLATE_TYPE_ZLIB:
+ /*
+ * zlib (RFC1950) header bytes: 78 9C. (Deflate
+ * compression, 32K window size, default algorithm.)
+ */
+ outbits(out, 0x9C78, 16);
+ break;
+ case DEFLATE_TYPE_GZIP:
+ /*
+ * Minimal gzip (RFC1952) header:
+ *
+ * - basic header of 1F 8B
+ * - compression method byte (8 = deflate)
+ * - flags byte (zero: we use no optional features)
+ * - modification time (zero: no time stamp available)
+ * - extra flags byte (2: we use maximum compression
+ * always)
+ * - operating system byte (255: we do not specify)
+ */
+ outbits(out, 0x00088B1F, 32); /* header, CM, flags */
+ outbits(out, 0, 32); /* mtime */
+ outbits(out, 0xFF02, 16); /* xflags, OS */
+ break;
+ }
+ out->firstblock = FALSE;
+ }
+
+ /*
+ * Feed our data to the LZ77 compression phase.
+ */
+ lz77_compress(ectx, block, len, TRUE);
+
+ /*
+ * Update checksums and counters.
+ */
+ switch (out->type) {
+ case DEFLATE_TYPE_ZLIB:
+ out->checksum = adler32_update(out->checksum, block, len);
+ break;
+ case DEFLATE_TYPE_GZIP:
+ out->checksum = crc32_update(out->checksum, block, len);
+ break;
+ }
+ out->datasize += len;
+
+ switch (flushtype) {
+ /*
+ * FIXME: what other flush types are available and useful?
+ * In PuTTY, it was clear that we generally wanted to be in
+ * a static block so it was safe to open one. Here, we
+ * probably prefer to be _outside_ a block if we can. Think
+ * about this.
+ */
+ case DEFLATE_NO_FLUSH:
+ break; /* don't flush any data at all (duh) */
+ case DEFLATE_SYNC_FLUSH:
+ /*
+ * Close the current block.
+ */
+ flushblock(out);
+
+ /*
+ * Then output an empty _uncompressed_ block: send 000,
+ * then sync to byte boundary, then send bytes 00 00 FF
+ * FF.
+ */
+ outbits(out, 0, 3);
+ if (out->noutbits)
+ outbits(out, 0, 8 - out->noutbits);
+ outbits(out, 0, 16);
+ outbits(out, 0xFFFF, 16);
+ break;
+ case DEFLATE_END_OF_DATA:
+ /*
+ * Output a block with BFINAL set.
+ */
+ out->lastblock = TRUE;
+ flushblock(out);
+
+ /*
+ * Sync to byte boundary, flushing out the final byte.
+ */
+ if (out->noutbits)
+ outbits(out, 0, 8 - out->noutbits);
+
+ /*
+ * Format-specific trailer data.
+ */
+ switch (out->type) {
+ case DEFLATE_TYPE_ZLIB:
+ /*
+ * Just write out the Adler32 checksum.
+ */
+ outbits(out, (out->checksum >> 24) & 0xFF, 8);
+ outbits(out, (out->checksum >> 16) & 0xFF, 8);
+ outbits(out, (out->checksum >> 8) & 0xFF, 8);
+ outbits(out, (out->checksum >> 0) & 0xFF, 8);
+ break;
+ case DEFLATE_TYPE_GZIP:
+ /*
+ * Write out the CRC32 checksum and the data length.
+ */
+ outbits(out, out->checksum, 32);
+ outbits(out, out->datasize, 32);
+ break;
+ }
+
+ out->finished = TRUE;
+ break;
+ }
+
+ /*
+ * Return any data that we've generated.
+ */
+ *outblock = (void *)out->outbuf;
+ *outlen = out->outlen;
+}
+
+/* ----------------------------------------------------------------------
+ * Deflate decompression.
+ */
+
+/*
+ * The way we work the Huffman decode is to have a table lookup on
+ * the first N bits of the input stream (in the order they arrive,
+ * of course, i.e. the first bit of the Huffman code is in bit 0).
+ * Each table entry lists the number of bits to consume, plus
+ * either an output code or a pointer to a secondary table.
+ */
+struct table;
+struct tableentry;
+
+struct tableentry {
+ unsigned char nbits;
+ short code;
+ struct table *nexttable;
+};
+
+struct table {
+ int mask; /* mask applied to input bit stream */
+ struct tableentry *table;
+};
+
+#define MAXSYMS 288
+
+#define DWINSIZE 32768
+
+/*
+ * Build a single-level decode table for elements
+ * [minlength,maxlength) of the provided code/length tables, and
+ * recurse to build subtables.
+ */
+static struct table *mkonetab(int *codes, unsigned char *lengths, int nsyms,
+ int pfx, int pfxbits, int bits)
+{
+ struct table *tab = snew(struct table);
+ int pfxmask = (1 << pfxbits) - 1;
+ int nbits, i, j, code;
+
+ tab->table = snewn(1 << bits, struct tableentry);
+ tab->mask = (1 << bits) - 1;
+
+ for (code = 0; code <= tab->mask; code++) {
+ tab->table[code].code = -1;
+ tab->table[code].nbits = 0;
+ tab->table[code].nexttable = NULL;
+ }
+
+ for (i = 0; i < nsyms; i++) {
+ if (lengths[i] <= pfxbits || (codes[i] & pfxmask) != pfx)
+ continue;
+ code = (codes[i] >> pfxbits) & tab->mask;
+ for (j = code; j <= tab->mask; j += 1 << (lengths[i] - pfxbits)) {
+ tab->table[j].code = i;
+ nbits = lengths[i] - pfxbits;
+ if (tab->table[j].nbits < nbits)
+ tab->table[j].nbits = nbits;
+ }
+ }
+ for (code = 0; code <= tab->mask; code++) {
+ if (tab->table[code].nbits <= bits)
+ continue;
+ /* Generate a subtable. */
+ tab->table[code].code = -1;
+ nbits = tab->table[code].nbits - bits;
+ if (nbits > 7)
+ nbits = 7;
+ tab->table[code].nbits = bits;
+ tab->table[code].nexttable = mkonetab(codes, lengths, nsyms,
+ pfx | (code << pfxbits),
+ pfxbits + bits, nbits);
+ }
+
+ return tab;
+}
+
+/*
+ * Build a decode table, given a set of Huffman tree lengths.
+ */
+static struct table *mktable(unsigned char *lengths, int nlengths,
+#ifdef ANALYSIS
+ const char *alphabet,
+#endif
+ int *error)
+{
+ int codes[MAXSYMS];
+ int maxlen;
+
+#ifdef ANALYSIS
+ if (alphabet && analyse_level > 1) {
+ int i, col = 0;
+ printf("code lengths for %s alphabet:\n", alphabet);
+ for (i = 0; i < nlengths; i++) {
+ col += printf("%3d", lengths[i]);
+ if (col > 72) {
+ putchar('\n');
+ col = 0;
+ }
+ }
+ if (col > 0)
+ putchar('\n');
+ }
+#endif
+
+ maxlen = hufcodes(lengths, codes, nlengths);
+
+ if (maxlen < 0) {
+ *error = (maxlen == -1 ? DEFLATE_ERR_LARGE_HUFTABLE :
+ DEFLATE_ERR_SMALL_HUFTABLE);
+ return NULL;
+ }
+
+ /*
+ * Now we have the complete list of Huffman codes. Build a
+ * table.
+ */
+ return mkonetab(codes, lengths, nlengths, 0, 0, maxlen < 9 ? maxlen : 9);
+}
+
+static int freetable(struct table **ztab)
+{
+ struct table *tab;
+ int code;
+
+ if (ztab == NULL)
+ return -1;
+
+ if (*ztab == NULL)
+ return 0;
+
+ tab = *ztab;
+
+ for (code = 0; code <= tab->mask; code++)
+ if (tab->table[code].nexttable != NULL)
+ freetable(&tab->table[code].nexttable);
+
+ sfree(tab->table);
+ tab->table = NULL;
+
+ sfree(tab);
+ *ztab = NULL;
+
+ return (0);
+}
+
+struct deflate_decompress_ctx {
+ struct table *staticlentable, *staticdisttable;
+ struct table *currlentable, *currdisttable, *lenlentable;
+ enum {
+ ZLIBSTART,
+ GZIPSTART, GZIPMETHFLAGS, GZIPIGNORE1, GZIPIGNORE2, GZIPIGNORE3,
+ GZIPEXTRA, GZIPFNAME, GZIPCOMMENT,
+ OUTSIDEBLK, TREES_HDR, TREES_LENLEN, TREES_LEN, TREES_LENREP,
+ INBLK, GOTLENSYM, GOTLEN, GOTDISTSYM,
+ UNCOMP_LEN, UNCOMP_NLEN, UNCOMP_DATA,
+ END,
+ ADLER1, ADLER2,
+ CRC1, CRC2, ILEN1, ILEN2,
+ FINALSPIN
+ } state;
+ int sym, hlit, hdist, hclen, lenptr, lenextrabits, lenaddon, len,
+ lenrep, lastblock;
+ int uncomplen;
+ unsigned char lenlen[19];
+ unsigned char lengths[286 + 32];
+ unsigned long bits;
+ int nbits;
+ unsigned char window[DWINSIZE];
+ int winpos;
+ unsigned char *outblk;
+ int outlen, outsize;
+ int type;
+ unsigned long checksum;
+ unsigned long bytesout;
+ int gzflags, gzextralen;
+#ifdef ANALYSIS
+ int bytesread;
+ int bitcount_before;
+#define BITCOUNT(dctx) ( (dctx)->bytesread * 8 - (dctx)->nbits )
+#endif
+};
+
+deflate_decompress_ctx *deflate_decompress_new(int type)
+{
+ deflate_decompress_ctx *dctx = snew(deflate_decompress_ctx);
+ unsigned char lengths[288];
+
+ memset(lengths, 8, 144);
+ memset(lengths + 144, 9, 256 - 144);
+ memset(lengths + 256, 7, 280 - 256);
+ memset(lengths + 280, 8, 288 - 280);
+ dctx->staticlentable = mktable(lengths, 288,
+#ifdef ANALYSIS
+ NULL,
+#endif
+ NULL);
+ assert(dctx->staticlentable);
+ memset(lengths, 5, 32);
+ dctx->staticdisttable = mktable(lengths, 32,
+#ifdef ANALYSIS
+ NULL,
+#endif
+ NULL);
+ assert(dctx->staticdisttable);
+ dctx->state = (type == DEFLATE_TYPE_ZLIB ? ZLIBSTART :
+ type == DEFLATE_TYPE_GZIP ? GZIPSTART :
+ OUTSIDEBLK);
+ dctx->currlentable = dctx->currdisttable = dctx->lenlentable = NULL;
+ dctx->bits = 0;
+ dctx->nbits = 0;
+ dctx->winpos = 0;
+ dctx->type = type;
+ dctx->lastblock = FALSE;
+ dctx->checksum = (type == DEFLATE_TYPE_ZLIB ? 1 : 0);
+ dctx->bytesout = 0;
+ dctx->gzflags = dctx->gzextralen = 0;
+#ifdef ANALYSIS
+ dctx->bytesread = dctx->bitcount_before = 0;
+#endif
+
+ return dctx;
+}
+
+void deflate_decompress_free(deflate_decompress_ctx *dctx)
+{
+ if (dctx->currlentable && dctx->currlentable != dctx->staticlentable)
+ freetable(&dctx->currlentable);
+ if (dctx->currdisttable && dctx->currdisttable != dctx->staticdisttable)
+ freetable(&dctx->currdisttable);
+ if (dctx->lenlentable)
+ freetable(&dctx->lenlentable);
+ freetable(&dctx->staticlentable);
+ freetable(&dctx->staticdisttable);
+ sfree(dctx);
+}
+
+static int huflookup(unsigned long *bitsp, int *nbitsp, struct table *tab)
+{
+ unsigned long bits = *bitsp;
+ int nbits = *nbitsp;
+ while (1) {
+ struct tableentry *ent;
+ ent = &tab->table[bits & tab->mask];
+ if (ent->nbits > nbits)
+ return -1; /* not enough data */
+ bits >>= ent->nbits;
+ nbits -= ent->nbits;
+ if (ent->code == -1)
+ tab = ent->nexttable;
+ else {
+ *bitsp = bits;
+ *nbitsp = nbits;
+ return ent->code;
+ }
+
+ /*
+ * If we reach here with `tab' null, it can only be because
+ * there was a missing entry in the Huffman table. This
+ * should never occur even with invalid input data, because
+ * we enforce at mktable time that the Huffman codes should
+ * precisely cover the code space; so we can enforce this
+ * by assertion.
+ */
+ assert(tab);
+ }
+}
+
+static void emit_char(deflate_decompress_ctx *dctx, int c)
+{
+ dctx->window[dctx->winpos] = c;
+ dctx->winpos = (dctx->winpos + 1) & (DWINSIZE - 1);
+ if (dctx->outlen >= dctx->outsize) {
+ dctx->outsize = dctx->outlen * 3 / 2 + 512;
+ dctx->outblk = sresize(dctx->outblk, dctx->outsize, unsigned char);
+ }
+ if (dctx->type == DEFLATE_TYPE_ZLIB) {
+ unsigned char uc = c;
+ dctx->checksum = adler32_update(dctx->checksum, &uc, 1);
+ } else if (dctx->type == DEFLATE_TYPE_GZIP) {
+ unsigned char uc = c;
+ dctx->checksum = crc32_update(dctx->checksum, &uc, 1);
+ }
+ dctx->outblk[dctx->outlen++] = c;
+ dctx->bytesout++;
+}
+
+#define EATBITS(n) ( dctx->nbits -= (n), dctx->bits >>= (n) )
+
+int deflate_decompress_data(deflate_decompress_ctx *dctx,
+ const void *vblock, int len,
+ void **outblock, int *outlen)
+{
+ const coderecord *rec;
+ const unsigned char *block = (const unsigned char *)vblock;
+ int code, bfinal, btype, rep, dist, nlen, header, cksum;
+ int error = 0;
+
+ if (len == 0) {
+ *outblock = NULL;
+ *outlen = 0;
+ if (dctx->state != FINALSPIN)
+ return DEFLATE_ERR_UNEXPECTED_EOF;
+ else
+ return 0;
+ }
+
+ dctx->outblk = NULL;
+ dctx->outsize = 0;
+ dctx->outlen = 0;
+
+ while (len > 0 || dctx->nbits > 0) {
+ while (dctx->nbits < 24 && len > 0) {
+ dctx->bits |= (*block++) << dctx->nbits;
+ dctx->nbits += 8;
+ len--;
+#ifdef ANALYSIS
+ dctx->bytesread++;
+#endif
+ }
+ switch (dctx->state) {
+ case ZLIBSTART:
+ /* Expect 16-bit zlib header. */
+ if (dctx->nbits < 16)
+ goto finished; /* done all we can */
+
+ /*
+ * The header is stored as a big-endian 16-bit integer,
+ * in contrast to the general little-endian policy in
+ * the rest of the format :-(
+ */
+ header = (((dctx->bits & 0xFF00) >> 8) |
+ ((dctx->bits & 0x00FF) << 8));
+ EATBITS(16);
+
+ /*
+ * Check the header:
+ *
+ * - bits 8-11 should be 1000 (Deflate/RFC1951)
+ * - bits 12-15 should be at most 0111 (window size)
+ * - bit 5 should be zero (no dictionary present)
+ * - we don't care about bits 6-7 (compression rate)
+ * - bits 0-4 should be set up to make the whole thing
+ * a multiple of 31 (checksum).
+ */
+ if ((header & 0xF000) > 0x7000 ||
+ (header & 0x0020) != 0x0000 ||
+ (header % 31) != 0) {
+ error = DEFLATE_ERR_ZLIB_HEADER;
+ goto finished;
+ }
+ if ((header & 0x0F00) != 0x0800) {
+ error = DEFLATE_ERR_ZLIB_WRONGCOMP;
+ goto finished;
+ }
+ dctx->state = OUTSIDEBLK;
+ break;
+ case GZIPSTART:
+ /* Expect 16-bit gzip header. */
+ if (dctx->nbits < 16)
+ goto finished;
+ header = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ if (header != 0x8B1F) {
+ error = DEFLATE_ERR_GZIP_HEADER;
+ goto finished;
+ }
+ dctx->state = GZIPMETHFLAGS;
+ break;
+ case GZIPMETHFLAGS:
+ /* Expect gzip compression method and flags bytes. */
+ if (dctx->nbits < 16)
+ goto finished;
+ header = dctx->bits & 0xFF;
+ EATBITS(8);
+ if (header != 8) {
+ error = DEFLATE_ERR_GZIP_WRONGCOMP;
+ goto finished;
+ }
+ dctx->gzflags = dctx->bits & 0xFF;
+ if (dctx->gzflags & 2) {
+ /*
+ * The FHCRC flag is slightly confusing. RFC1952
+ * documents it as indicating the presence of a
+ * two-byte CRC16 of the gzip header, occurring
+ * just before the beginning of the Deflate stream.
+ * However, gzip itself (as of 1.3.5) appears to
+ * believe it indicates that the current gzip
+ * `member' is not the final one, i.e. that the
+ * stream is composed of multiple gzip members
+ * concatenated together, and furthermore gzip will
+ * refuse to decode any file that has it set.
+ *
+ * For this reason, I label it as `disputed' and
+ * also refuse to decode anything that has it set.
+ * I don't expect this to be a problem in practice.
+ */
+ error = DEFLATE_ERR_GZIP_FHCRC;
+ goto finished;
+ }
+ EATBITS(8);
+ dctx->state = GZIPIGNORE1;
+ break;
+ case GZIPIGNORE1:
+ case GZIPIGNORE2:
+ case GZIPIGNORE3:
+ /* Expect two bytes of gzip timestamp/XFL/OS, which we ignore. */
+ if (dctx->nbits < 16)
+ goto finished;
+ EATBITS(16);
+ if (dctx->state == GZIPIGNORE3) {
+ dctx->state = GZIPEXTRA;
+ } else
+ dctx->state++; /* maps IGNORE1 -> IGNORE2 -> IGNORE3 */
+ break;
+ case GZIPEXTRA:
+ if (dctx->gzflags & 4) {
+ /* Expect two bytes of extra-length count, then that many
+ * extra bytes of header data, all of which we ignore. */
+ if (!dctx->gzextralen) {
+ if (dctx->nbits < 16)
+ goto finished;
+ dctx->gzextralen = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ break;
+ } else if (dctx->gzextralen > 0) {
+ if (dctx->nbits < 8)
+ goto finished;
+ EATBITS(8);
+ if (--dctx->gzextralen > 0)
+ break;
+ }
+ }
+ dctx->state = GZIPFNAME;
+ break;
+ case GZIPFNAME:
+ if (dctx->gzflags & 8) {
+ /*
+ * Expect a NUL-terminated filename.
+ */
+ if (dctx->nbits < 8)
+ goto finished;
+ code = dctx->bits & 0xFF;
+ EATBITS(8);
+ } else
+ code = 0;
+ if (code == 0)
+ dctx->state = GZIPCOMMENT;
+ break;
+ case GZIPCOMMENT:
+ if (dctx->gzflags & 16) {
+ /*
+ * Expect a NUL-terminated filename.
+ */
+ if (dctx->nbits < 8)
+ goto finished;
+ code = dctx->bits & 0xFF;
+ EATBITS(8);
+ } else
+ code = 0;
+ if (code == 0)
+ dctx->state = OUTSIDEBLK;
+ break;
+ case OUTSIDEBLK:
+ /* Expect 3-bit block header. */
+ if (dctx->nbits < 3)
+ goto finished; /* done all we can */
+ bfinal = dctx->bits & 1;
+ if (bfinal)
+ dctx->lastblock = TRUE;
+ EATBITS(1);
+ btype = dctx->bits & 3;
+ EATBITS(2);
+ if (btype == 0) {
+ int to_eat = dctx->nbits & 7;
+ dctx->state = UNCOMP_LEN;
+ EATBITS(to_eat); /* align to byte boundary */
+ } else if (btype == 1) {
+ dctx->currlentable = dctx->staticlentable;
+ dctx->currdisttable = dctx->staticdisttable;
+ dctx->state = INBLK;
+ } else if (btype == 2) {
+ dctx->state = TREES_HDR;
+ }
+ debug(("recv: bfinal=%d btype=%d\n", bfinal, btype));
+#ifdef ANALYSIS
+ if (analyse_level > 1) {
+ static const char *const btypes[] = {
+ "uncompressed", "static", "dynamic", "type 3 (unknown)"
+ };
+ printf("new block, %sfinal, %s\n",
+ bfinal ? "" : "not ",
+ btypes[btype]);
+ }
+#endif
+ break;
+ case TREES_HDR:
+ /*
+ * Dynamic block header. Five bits of HLIT, five of
+ * HDIST, four of HCLEN.
+ */
+ if (dctx->nbits < 5 + 5 + 4)
+ goto finished; /* done all we can */
+ dctx->hlit = 257 + (dctx->bits & 31);
+ EATBITS(5);
+ dctx->hdist = 1 + (dctx->bits & 31);
+ EATBITS(5);
+ dctx->hclen = 4 + (dctx->bits & 15);
+ EATBITS(4);
+ debug(("recv: hlit=%d hdist=%d hclen=%d\n", dctx->hlit,
+ dctx->hdist, dctx->hclen));
+#ifdef ANALYSIS
+ if (analyse_level > 1)
+ printf("hlit=%d, hdist=%d, hclen=%d\n",
+ dctx->hlit, dctx->hdist, dctx->hclen);
+#endif
+ dctx->lenptr = 0;
+ dctx->state = TREES_LENLEN;
+ memset(dctx->lenlen, 0, sizeof(dctx->lenlen));
+ break;
+ case TREES_LENLEN:
+ if (dctx->nbits < 3)
+ goto finished;
+ while (dctx->lenptr < dctx->hclen && dctx->nbits >= 3) {
+ dctx->lenlen[lenlenmap[dctx->lenptr++]] =
+ (unsigned char) (dctx->bits & 7);
+ debug(("recv: lenlen %d\n", (unsigned char) (dctx->bits & 7)));
+ EATBITS(3);
+ }
+ if (dctx->lenptr == dctx->hclen) {
+ dctx->lenlentable = mktable(dctx->lenlen, 19,
+#ifdef ANALYSIS
+ "code length",
+#endif
+ &error);
+ if (!dctx->lenlentable)
+ goto finished; /* error code set up by mktable */
+ dctx->state = TREES_LEN;
+ dctx->lenptr = 0;
+ }
+ break;
+ case TREES_LEN:
+ if (dctx->lenptr >= dctx->hlit + dctx->hdist) {
+ dctx->currlentable = mktable(dctx->lengths, dctx->hlit,
+#ifdef ANALYSIS
+ "literal/length",
+#endif
+ &error);
+ if (!dctx->currlentable)
+ goto finished; /* error code set up by mktable */
+ dctx->currdisttable = mktable(dctx->lengths + dctx->hlit,
+ dctx->hdist,
+#ifdef ANALYSIS
+ "distance",
+#endif
+ &error);
+ if (!dctx->currdisttable)
+ goto finished; /* error code set up by mktable */
+ freetable(&dctx->lenlentable);
+ dctx->lenlentable = NULL;
+ dctx->state = INBLK;
+ break;
+ }
+ code = huflookup(&dctx->bits, &dctx->nbits, dctx->lenlentable);
+ debug(("recv: codelen %d\n", code));
+ if (code == -1)
+ goto finished;
+ if (code < 16) {
+#ifdef ANALYSIS
+ if (analyse_level > 1)
+ printf("code-length %d\n", code);
+#endif
+ dctx->lengths[dctx->lenptr++] = code;
+ } else {
+ dctx->lenextrabits = (code == 16 ? 2 : code == 17 ? 3 : 7);
+ dctx->lenaddon = (code == 18 ? 11 : 3);
+ dctx->lenrep = (code == 16 && dctx->lenptr > 0 ?
+ dctx->lengths[dctx->lenptr - 1] : 0);
+ dctx->state = TREES_LENREP;
+ }
+ break;
+ case TREES_LENREP:
+ if (dctx->nbits < dctx->lenextrabits)
+ goto finished;
+ rep =
+ dctx->lenaddon +
+ (dctx->bits & ((1 << dctx->lenextrabits) - 1));
+ EATBITS(dctx->lenextrabits);
+ if (dctx->lenextrabits)
+ debug(("recv: codelen-extrabits %d/%d\n", rep - dctx->lenaddon,
+ dctx->lenextrabits));
+#ifdef ANALYSIS
+ if (analyse_level > 1)
+ printf("code-length-repeat: %d copies of %d\n", rep,
+ dctx->lenrep);
+#endif
+ while (rep > 0 && dctx->lenptr < dctx->hlit + dctx->hdist) {
+ dctx->lengths[dctx->lenptr] = dctx->lenrep;
+ dctx->lenptr++;
+ rep--;
+ }
+ dctx->state = TREES_LEN;
+ break;
+ case INBLK:
+#ifdef ANALYSIS
+ dctx->bitcount_before = BITCOUNT(dctx);
+#endif
+ code = huflookup(&dctx->bits, &dctx->nbits, dctx->currlentable);
+ debug(("recv: litlen %d\n", code));
+ if (code == -1)
+ goto finished;
+ if (code < 256) {
+#ifdef ANALYSIS
+ if (analyse_level > 0)
+ printf("%lu: literal %d [%d]\n", dctx->bytesout, code,
+ BITCOUNT(dctx) - dctx->bitcount_before);
+#endif
+ emit_char(dctx, code);
+ } else if (code == 256) {
+ if (dctx->lastblock)
+ dctx->state = END;
+ else
+ dctx->state = OUTSIDEBLK;
+ if (dctx->currlentable != dctx->staticlentable) {
+ freetable(&dctx->currlentable);
+ dctx->currlentable = NULL;
+ }
+ if (dctx->currdisttable != dctx->staticdisttable) {
+ freetable(&dctx->currdisttable);
+ dctx->currdisttable = NULL;
+ }
+ } else if (code < 286) { /* static tree can give >285; ignore */
+ dctx->state = GOTLENSYM;
+ dctx->sym = code;
+ }
+ break;
+ case GOTLENSYM:
+ rec = &lencodes[dctx->sym - 257];
+ if (dctx->nbits < rec->extrabits)
+ goto finished;
+ dctx->len =
+ rec->min + (dctx->bits & ((1 << rec->extrabits) - 1));
+ if (rec->extrabits)
+ debug(("recv: litlen-extrabits %d/%d\n",
+ dctx->len - rec->min, rec->extrabits));
+ EATBITS(rec->extrabits);
+ dctx->state = GOTLEN;
+ break;
+ case GOTLEN:
+ code = huflookup(&dctx->bits, &dctx->nbits, dctx->currdisttable);
+ debug(("recv: dist %d\n", code));
+ if (code == -1)
+ goto finished;
+ dctx->state = GOTDISTSYM;
+ dctx->sym = code;
+ break;
+ case GOTDISTSYM:
+ rec = &distcodes[dctx->sym];
+ if (dctx->nbits < rec->extrabits)
+ goto finished;
+ dist = rec->min + (dctx->bits & ((1 << rec->extrabits) - 1));
+ if (rec->extrabits)
+ debug(("recv: dist-extrabits %d/%d\n",
+ dist - rec->min, rec->extrabits));
+ EATBITS(rec->extrabits);
+ dctx->state = INBLK;
+#ifdef ANALYSIS
+ if (analyse_level > 0)
+ printf("%lu: copy len=%d dist=%d [%d]\n", dctx->bytesout,
+ dctx->len, dist,
+ BITCOUNT(dctx) - dctx->bitcount_before);
+#endif
+ while (dctx->len--)
+ emit_char(dctx, dctx->window[(dctx->winpos - dist) &
+ (DWINSIZE - 1)]);
+ break;
+ case UNCOMP_LEN:
+ /*
+ * Uncompressed block. We expect to see a 16-bit LEN.
+ */
+ if (dctx->nbits < 16)
+ goto finished;
+ dctx->uncomplen = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ dctx->state = UNCOMP_NLEN;
+ break;
+ case UNCOMP_NLEN:
+ /*
+ * Uncompressed block. We expect to see a 16-bit NLEN,
+ * which should be the one's complement of the previous
+ * LEN.
+ */
+ if (dctx->nbits < 16)
+ goto finished;
+ nlen = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ if (dctx->uncomplen == 0)
+ dctx->state = OUTSIDEBLK; /* block is empty */
+ else
+ dctx->state = UNCOMP_DATA;
+ break;
+ case UNCOMP_DATA:
+ if (dctx->nbits < 8)
+ goto finished;
+#ifdef ANALYSIS
+ if (analyse_level > 0)
+ printf("%lu: uncompressed %d [8]\n", dctx->bytesout,
+ (int)(dctx->bits & 0xFF));
+#endif
+ emit_char(dctx, dctx->bits & 0xFF);
+ EATBITS(8);
+ if (--dctx->uncomplen == 0)
+ dctx->state = OUTSIDEBLK; /* end of uncompressed block */
+ break;
+ case END:
+ /*
+ * End of compressed data. We align to a byte boundary,
+ * and then look for format-specific trailer data.
+ */
+ {
+ int to_eat = dctx->nbits & 7;
+ EATBITS(to_eat);
+ }
+ if (dctx->type == DEFLATE_TYPE_ZLIB)
+ dctx->state = ADLER1;
+ else if (dctx->type == DEFLATE_TYPE_GZIP)
+ dctx->state = CRC1;
+ else
+ dctx->state = FINALSPIN;
+ break;
+ case ADLER1:
+ if (dctx->nbits < 16)
+ goto finished;
+ cksum = (dctx->bits & 0xFF) << 8;
+ EATBITS(8);
+ cksum |= (dctx->bits & 0xFF);
+ EATBITS(8);
+ if (cksum != ((dctx->checksum >> 16) & 0xFFFF)) {
+ error = DEFLATE_ERR_CHECKSUM;
+ goto finished;
+ }
+ dctx->state = ADLER2;
+ break;
+ case ADLER2:
+ if (dctx->nbits < 16)
+ goto finished;
+ cksum = (dctx->bits & 0xFF) << 8;
+ EATBITS(8);
+ cksum |= (dctx->bits & 0xFF);
+ EATBITS(8);
+ if (cksum != (dctx->checksum & 0xFFFF)) {
+ error = DEFLATE_ERR_CHECKSUM;
+ goto finished;
+ }
+ dctx->state = FINALSPIN;
+ break;
+ case CRC1:
+ if (dctx->nbits < 16)
+ goto finished;
+ cksum = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ if (cksum != (dctx->checksum & 0xFFFF)) {
+ error = DEFLATE_ERR_CHECKSUM;
+ goto finished;
+ }
+ dctx->state = CRC2;
+ break;
+ case CRC2:
+ if (dctx->nbits < 16)
+ goto finished;
+ cksum = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ if (cksum != ((dctx->checksum >> 16) & 0xFFFF)) {
+ error = DEFLATE_ERR_CHECKSUM;
+ goto finished;
+ }
+ dctx->state = ILEN1;
+ break;
+ case ILEN1:
+ if (dctx->nbits < 16)
+ goto finished;
+ cksum = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ if (cksum != (dctx->bytesout & 0xFFFF)) {
+ error = DEFLATE_ERR_INLEN;
+ goto finished;
+ }
+ dctx->state = ILEN2;
+ break;
+ case ILEN2:
+ if (dctx->nbits < 16)
+ goto finished;
+ cksum = dctx->bits & 0xFFFF;
+ EATBITS(16);
+ if (cksum != ((dctx->bytesout >> 16) & 0xFFFF)) {
+ error = DEFLATE_ERR_INLEN;
+ goto finished;
+ }
+ dctx->state = FINALSPIN;
+ break;
+ case FINALSPIN:
+ /* Just ignore any trailing garbage on the data stream. */
+ /* (We could alternatively throw an error here, if we wanted
+ * to detect and complain about trailing garbage.) */
+ EATBITS(dctx->nbits);
+ break;
+ }
+ }
+
+ finished:
+ *outblock = dctx->outblk;
+ *outlen = dctx->outlen;
+ return error;
+}
+
+#define A(code,str) str
+const char *const deflate_error_msg[DEFLATE_NUM_ERRORS] = {
+ DEFLATE_ERRORLIST(A)
+};
+#undef A
+
+#define A(code,str) #code
+const char *const deflate_error_sym[DEFLATE_NUM_ERRORS] = {
+ DEFLATE_ERRORLIST(A)
+};
+#undef A
+
+#ifdef STANDALONE
+
+int main(int argc, char **argv)
+{
+ unsigned char buf[65536];
+ void *outbuf;
+ int ret, err, outlen;
+ deflate_decompress_ctx *dhandle;
+ deflate_compress_ctx *chandle;
+ int type = DEFLATE_TYPE_ZLIB, opts = TRUE;
+ int compress = FALSE, decompress = FALSE;
+ int got_arg = FALSE;
+ char *filename = NULL;
+ FILE *fp;
+
+ while (--argc) {
+ char *p = *++argv;
+
+ got_arg = TRUE;
+
+ if (p[0] == '-' && opts) {
+ if (!strcmp(p, "-b"))
+ type = DEFLATE_TYPE_BARE;
+ else if (!strcmp(p, "-g"))
+ type = DEFLATE_TYPE_GZIP;
+ else if (!strcmp(p, "-c"))
+ compress = TRUE;
+ else if (!strcmp(p, "-d"))
+ decompress = TRUE;
+ else if (!strcmp(p, "-a"))
+ analyse_level++, decompress = TRUE;
+ else if (!strcmp(p, "--"))
+ opts = FALSE; /* next thing is filename */
+ else {
+ fprintf(stderr, "unknown command line option '%s'\n", p);
+ return 1;
+ }
+ } else if (!filename) {
+ filename = p;
+ } else {
+ fprintf(stderr, "can only handle one filename\n");
+ return 1;
+ }
+ }
+
+ if (!compress && !decompress) {
+ fprintf(stderr, "usage: deflate [ -c | -d | -a ] [ -b | -g ]"
+ " [filename]\n");
+ return (got_arg ? 1 : 0);
+ }
+
+ if (compress && decompress) {
+ fprintf(stderr, "please do not specify both compression and"
+ " decompression\n");
+ return (got_arg ? 1 : 0);
+ }
+
+ if (compress) {
+ chandle = deflate_compress_new(type);
+ dhandle = NULL;
+ } else {
+ dhandle = deflate_decompress_new(type);
+ chandle = NULL;
+ }
+
+ if (filename)
+ fp = fopen(filename, "rb");
+ else
+ fp = stdin;
+
+ if (!fp) {
+ assert(filename);
+ fprintf(stderr, "unable to open '%s'\n", filename);
+ return 1;
+ }
+
+ do {
+ ret = fread(buf, 1, sizeof(buf), fp);
+ outbuf = NULL;
+ if (dhandle) {
+ if (ret > 0)
+ err = deflate_decompress_data(dhandle, buf, ret,
+ (void **)&outbuf, &outlen);
+ else
+ err = deflate_decompress_data(dhandle, NULL, 0,
+ (void **)&outbuf, &outlen);
+ } else {
+ if (ret > 0)
+ deflate_compress_data(chandle, buf, ret, DEFLATE_NO_FLUSH,
+ (void **)&outbuf, &outlen);
+ else
+ deflate_compress_data(chandle, buf, ret, DEFLATE_END_OF_DATA,
+ (void **)&outbuf, &outlen);
+ err = 0;
+ }
+ if (outbuf) {
+ if (!analyse_level && outlen)
+ fwrite(outbuf, 1, outlen, stdout);
+ sfree(outbuf);
+ }
+ if (err > 0) {
+ fprintf(stderr, "decoding error: %s\n", deflate_error_msg[err]);
+ return 1;
+ }
+ } while (ret > 0);
+
+ if (dhandle)
+ deflate_decompress_free(dhandle);
+ if (chandle)
+ deflate_compress_free(chandle);
+
+ if (filename)
+ fclose(fp);
+
+ return 0;
+}
+
+#endif
+
+#ifdef TESTMODE
+
+int main(int argc, char **argv)
+{
+ char *filename = NULL;
+ FILE *fp;
+ deflate_compress_ctx *chandle;
+ deflate_decompress_ctx *dhandle;
+ unsigned char buf[65536], *outbuf, *outbuf2;
+ int ret, err, outlen, outlen2;
+ int dlen = 0, clen = 0;
+ int opts = TRUE;
+
+ while (--argc) {
+ char *p = *++argv;
+
+ if (p[0] == '-' && opts) {
+ if (!strcmp(p, "--"))
+ opts = FALSE; /* next thing is filename */
+ else {
+ fprintf(stderr, "unknown command line option '%s'\n", p);
+ return 1;
+ }
+ } else if (!filename) {
+ filename = p;
+ } else {
+ fprintf(stderr, "can only handle one filename\n");
+ return 1;
+ }
+ }
+
+ if (filename)
+ fp = fopen(filename, "rb");
+ else
+ fp = stdin;
+
+ if (!fp) {
+ assert(filename);
+ fprintf(stderr, "unable to open '%s'\n", filename);
+ return 1;
+ }
+
+ chandle = deflate_compress_new(DEFLATE_TYPE_ZLIB);
+ dhandle = deflate_decompress_new(DEFLATE_TYPE_ZLIB);
+
+ do {
+ ret = fread(buf, 1, sizeof(buf), fp);
+ if (ret <= 0) {
+ deflate_compress_data(chandle, NULL, 0, DEFLATE_END_OF_DATA,
+ (void **)&outbuf, &outlen);
+ } else {
+ dlen += ret;
+ deflate_compress_data(chandle, buf, ret, DEFLATE_NO_FLUSH,
+ (void **)&outbuf, &outlen);
+ }
+ if (outbuf) {
+ clen += outlen;
+ err = deflate_decompress_data(dhandle, outbuf, outlen,
+ (void **)&outbuf2, &outlen2);
+ sfree(outbuf);
+ if (outbuf2) {
+ if (outlen2)
+ fwrite(outbuf2, 1, outlen2, stdout);
+ sfree(outbuf2);
+ }
+ if (!err && ret <= 0) {
+ /*
+ * signal EOF
+ */
+ err = deflate_decompress_data(dhandle, NULL, 0,
+ (void **)&outbuf2, &outlen2);
+ assert(outbuf2 == NULL);
+ }
+ if (err) {
+ fprintf(stderr, "decoding error: %s\n",
+ deflate_error_msg[err]);
+ return 1;
+ }
+ }
+ } while (ret > 0);
+
+ fprintf(stderr, "%d plaintext -> %d compressed\n", dlen, clen);
+
+ return 0;
+}
+
+#endif
diff --git a/app/tools/halibut/deflate.h b/app/tools/halibut/deflate.h
new file mode 100644
index 0000000..80837f9
--- /dev/null
+++ b/app/tools/halibut/deflate.h
@@ -0,0 +1,168 @@
+/*
+ * Header file for my independent implementation of Deflate
+ * (RFC1951) compression.
+ */
+
+#ifndef DEFLATE_DEFLATE_H
+#define DEFLATE_DEFLATE_H
+
+/*
+ * Types of Deflate data stream.
+ *
+ * DEFLATE_TYPE_BARE represents the basic Deflate data format, as
+ * defined in RFC 1951. It has no checksum to detect errors and no
+ * magic-number header for ease of recognition, but it does have
+ * internal EOF indication.
+ *
+ * DEFLATE_TYPE_ZLIB represents the zlib container format, as
+ * defined in RFC 1950. It has a two-byte header, and a four-byte
+ * Adler32 checksum at the end to verify correct decoding, but
+ * apart from those six bytes it's exactly equivalent to
+ * DEFLATE_TYPE_BARE.
+ *
+ * DEFLATE_TYPE_GZIP represents the gzip compressed file format, as
+ * defined in RFC 1952. This is a more full-featured format, with a
+ * magic number, a CRC checksum of the compressed data, and various
+ * header features including storing the original filename. This
+ * implementation accepts but ignores all of those features on
+ * input except the checksum, and outputs them in the most trivial
+ * fashion. Also, this implementation will not decode multiple
+ * concatenated gzip members (permitted by the RFC).
+ */
+enum {
+ DEFLATE_TYPE_BARE,
+ DEFLATE_TYPE_ZLIB,
+ DEFLATE_TYPE_GZIP
+};
+
+/* ----------------------------------------------------------------------
+ * Compression functions. Create a compression context with
+ * deflate_compress_new(); feed it data with repeated calls to
+ * deflate_compress_data(); destroy it with
+ * deflate_compress_free().
+ */
+
+typedef struct deflate_compress_ctx deflate_compress_ctx;
+
+/*
+ * Create a new compression context. `type' indicates whether it's
+ * bare Deflate (as used in, say, zip files) or Zlib (as used in,
+ * say, PDF).
+ */
+deflate_compress_ctx *deflate_compress_new(int type);
+
+/*
+ * Free a compression context previously allocated by
+ * deflate_compress_new().
+ */
+void deflate_compress_free(deflate_compress_ctx *ctx);
+
+/*
+ * Give the compression context some data to compress. The input
+ * data is passed in `inblock', and has length `inlen'. This
+ * function may or may not produce some output data; if so, it is
+ * written to a dynamically allocated chunk of memory, a pointer to
+ * that memory is stored in `outblock', and the length of output
+ * data is stored in `outlen'. It is common for no data to be
+ * output, if the input data has merely been stored in internal
+ * buffers.
+ *
+ * `flushtype' indicates whether you want to force buffered data to
+ * be output. It can be one of the following values:
+ *
+ * - DEFLATE_NO_FLUSH: nothing is output if the compressor would
+ * rather not. Use this when the best compression is desired
+ * (i.e. most of the time).
+ *
+ * - DEFLATE_SYNC_FLUSH: all the buffered data is output, but the
+ * compressed data stream remains open and ready to continue
+ * compressing data. Use this in interactive protocols when a
+ * single compressed data stream is split across several network
+ * packets.
+ *
+ * - DEFLATE_END_OF_DATA: all the buffered data is output and the
+ * compressed data stream is cleaned up. Any checksums required
+ * at the end of the stream are also output.
+ */
+void deflate_compress_data(deflate_compress_ctx *ctx,
+ const void *inblock, int inlen, int flushtype,
+ void **outblock, int *outlen);
+
+enum {
+ DEFLATE_NO_FLUSH,
+ DEFLATE_SYNC_FLUSH,
+ DEFLATE_END_OF_DATA
+};
+
+/* ----------------------------------------------------------------------
+ * Decompression functions. Create a decompression context with
+ * deflate_decompress_new(); feed it data with repeated calls to
+ * deflate_decompress_data(); destroy it with
+ * deflate_decompress_free().
+ */
+
+typedef struct deflate_decompress_ctx deflate_decompress_ctx;
+
+/*
+ * Create a new decompression context. `type' means the same as it
+ * does in deflate_compress_new().
+ */
+deflate_decompress_ctx *deflate_decompress_new(int type);
+
+/*
+ * Free a decompression context previously allocated by
+ * deflate_decompress_new().
+ */
+void deflate_decompress_free(deflate_decompress_ctx *ctx);
+
+/*
+ * Give the decompression context some data to decompress. The
+ * input data is passed in `inblock', and has length `inlen'. This
+ * function may or may not produce some output data; if so, it is
+ * written to a dynamically allocated chunk of memory, a pointer to
+ * that memory is stored in `outblock', and the length of output
+ * data is stored in `outlen'.
+ *
+ * Returns 0 on success, or a non-zero error code if there was a
+ * decoding error. In case of an error return, the data decoded
+ * before the error is still returned as well. The possible errors
+ * are listed below.
+ *
+ * If you want to check that the compressed data stream was
+ * correctly terminated, you can call this function with inlen==0
+ * to signal input EOF and see if an error comes back. If you don't
+ * care, don't bother.
+ */
+int deflate_decompress_data(deflate_decompress_ctx *ctx,
+ const void *inblock, int inlen,
+ void **outblock, int *outlen);
+
+/*
+ * Enumeration of error codes. The strange macro is so that I can
+ * define description arrays in the accompanying source.
+ */
+#define DEFLATE_ERRORLIST(A) \
+ A(DEFLATE_NO_ERR, "success"), \
+ A(DEFLATE_ERR_ZLIB_HEADER, "invalid zlib header"), \
+ A(DEFLATE_ERR_ZLIB_WRONGCOMP, "zlib header specifies non-deflate compression"), \
+ A(DEFLATE_ERR_GZIP_HEADER, "invalid gzip header"), \
+ A(DEFLATE_ERR_GZIP_WRONGCOMP, "gzip header specifies non-deflate compression"), \
+ A(DEFLATE_ERR_GZIP_FHCRC, "gzip header specifies disputed FHCRC flag"), \
+ A(DEFLATE_ERR_SMALL_HUFTABLE, "under-committed Huffman code space"), \
+ A(DEFLATE_ERR_LARGE_HUFTABLE, "over-committed Huffman code space"), \
+ A(DEFLATE_ERR_CHECKSUM, "incorrect data checksum"), \
+ A(DEFLATE_ERR_INLEN, "incorrect data length"), \
+ A(DEFLATE_ERR_UNEXPECTED_EOF, "unexpected end of data")
+#define DEFLATE_ENUM_DEF(x,y) x
+enum { DEFLATE_ERRORLIST(DEFLATE_ENUM_DEF), DEFLATE_NUM_ERRORS };
+#undef DEFLATE_ENUM_DEF
+
+/*
+ * Arrays mapping the above error codes to, respectively, a text
+ * error string and a textual representation of the symbolic error
+ * code.
+ */
+extern const char *const deflate_error_msg[DEFLATE_NUM_ERRORS];
+extern const char *const deflate_error_sym[DEFLATE_NUM_ERRORS];
+
+#endif /* DEFLATE_DEFLATE_H */
diff --git a/app/tools/halibut/error.c b/app/tools/halibut/error.c
new file mode 100644
index 0000000..6b4254d
--- /dev/null
+++ b/app/tools/halibut/error.c
@@ -0,0 +1,378 @@
+/*
+ * error.c: Halibut error handling
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include "halibut.h"
+
+/*
+ * Error flags
+ */
+#define PREFIX 0x0001 /* give `halibut:' prefix */
+#define FILEPOS 0x0002 /* give file position prefix */
+
+static void do_error(int code, va_list ap) {
+ char error[1024];
+ char c;
+ int i, j;
+ char *sp, *sp2;
+ wchar_t *wsp, *wsp2;
+ filepos fpos, fpos2, *fposp;
+ int flags = 0;
+
+ switch(code) {
+ case err_nomemory: /* no arguments */
+ sprintf(error, "out of memory");
+ flags = PREFIX;
+ break;
+ case err_optnoarg:
+ sp = va_arg(ap, char *);
+ sprintf(error, "option `-%.200s' requires an argument", sp);
+ flags = PREFIX;
+ break;
+ case err_nosuchopt:
+ sp = va_arg(ap, char *);
+ sprintf(error, "unrecognised option `-%.200s'", sp);
+ flags = PREFIX;
+ break;
+ case err_cmdcharset:
+ sp = va_arg(ap, char *);
+ sprintf(error, "character set `%.200s' not recognised", sp);
+ flags = PREFIX;
+ break;
+ case err_futileopt:
+ sp = va_arg(ap, char *);
+ sp2 = va_arg(ap, char *);
+ sprintf(error, "warning: option `-%s' has no effect%s", sp, sp2);
+ flags = PREFIX;
+ break;
+ case err_noinput: /* no arguments */
+ sprintf(error, "no input files");
+ flags = PREFIX;
+ break;
+ case err_cantopen:
+ sp = va_arg(ap, char *);
+ sprintf(error, "unable to open input file `%.200s'", sp);
+ flags = PREFIX;
+ break;
+ case err_nodata: /* no arguments */
+ sprintf(error, "no data in input files");
+ flags = PREFIX;
+ break;
+ case err_brokencodepara:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "every line of a code paragraph should begin `\\c'");
+ flags = FILEPOS;
+ break;
+ case err_kwunclosed:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected `}' after paragraph keyword");
+ flags = FILEPOS;
+ break;
+ case err_kwexpected:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected a paragraph keyword");
+ flags = FILEPOS;
+ break;
+ case err_kwillegal:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected no paragraph keyword");
+ flags = FILEPOS;
+ break;
+ case err_kwtoomany:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected only one paragraph keyword");
+ flags = FILEPOS;
+ break;
+ case err_bodyillegal:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected no text after paragraph keyword");
+ flags = FILEPOS;
+ break;
+ case err_badparatype:
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "command `%.200s' unrecognised at start of"
+ " paragraph", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_badmidcmd:
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "command `%.200s' unexpected in mid-paragraph", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_unexbrace:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "brace character unexpected in mid-paragraph");
+ flags = FILEPOS;
+ break;
+ case err_explbr:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected `{' after command");
+ flags = FILEPOS;
+ break;
+ case err_commenteof:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "end of file unexpected inside `\\#{...}' comment");
+ flags = FILEPOS;
+ break;
+ case err_kwexprbr:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected `}' after cross-reference");
+ flags = FILEPOS;
+ break;
+ case err_codequote:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unable to nest \\q{...} within \\c{...} or \\cw{...}");
+ flags = FILEPOS;
+ break;
+ case err_missingrbrace:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unclosed braces at end of paragraph");
+ flags = FILEPOS;
+ break;
+ case err_missingrbrace2:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unclosed braces at end of input file");
+ flags = FILEPOS;
+ break;
+ case err_nestedstyles:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unable to nest text styles");
+ flags = FILEPOS;
+ break;
+ case err_nestedindex:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unable to nest index markings");
+ flags = FILEPOS;
+ break;
+ case err_indexcase:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ fpos2 = *va_arg(ap, filepos *);
+ wsp2 = va_arg(ap, wchar_t *);
+ sp2 = utoa_locale_dup(wsp2);
+ sprintf(error, "warning: index tag `%.200s' used with ", sp);
+ sprintf(error + strlen(error), "different case (`%.200s') at %s:%d",
+ sp2, fpos2.filename, fpos2.line);
+ flags = FILEPOS;
+ sfree(sp);
+ sfree(sp2);
+ break;
+ case err_nosuchkw:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "unable to resolve cross-reference to `%.200s'", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_multiBR:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "multiple `\\BR' entries given for `%.200s'", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_nosuchidxtag:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "`\\IM' on unknown index tag `%.200s'", sp);
+ sfree(sp);
+ flags = FILEPOS;
+ break;
+ case err_cantopenw:
+ sp = va_arg(ap, char *);
+ sprintf(error, "unable to open output file `%.200s'", sp);
+ flags = PREFIX;
+ break;
+ case err_macroexists:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "macro `%.200s' already defined", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_sectjump:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "expected higher heading levels before this one");
+ flags = FILEPOS;
+ break;
+ case err_winhelp_ctxclash:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ sp2 = va_arg(ap, char *);
+ sprintf(error, "Windows Help context id `%.200s' clashes with "
+ "previously defined `%.200s'", sp, sp2);
+ flags = FILEPOS;
+ break;
+ case err_multikw:
+ fpos = *va_arg(ap, filepos *);
+ fpos2 = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "paragraph keyword `%.200s' already defined at ", sp);
+ sprintf(error + strlen(error), "%s:%d", fpos2.filename, fpos2.line);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_misplacedlcont:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "\\lcont is only expected after a list item");
+ flags = FILEPOS;
+ break;
+ case err_sectmarkerinblock:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ sprintf(error, "section headings are not supported within \\%.100s",
+ sp);
+ flags = FILEPOS;
+ break;
+ case err_cfginsufarg:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ i = va_arg(ap, int);
+ sprintf(error, "\\cfg{%s} expects at least %d parameter%s", sp,
+ i, (i==1)?"":"s");
+ flags = FILEPOS;
+ break;
+ case err_infonodechar:
+ fposp = va_arg(ap, filepos *);
+ c = (char)va_arg(ap, int);
+ sprintf(error, "info output format does not support '%c' in"
+ " node names; removing", c);
+ if (fposp) {
+ flags = FILEPOS;
+ fpos = *fposp;
+ }
+ break;
+ case err_text_codeline:
+ fpos = *va_arg(ap, filepos *);
+ i = va_arg(ap, int);
+ j = va_arg(ap, int);
+ sprintf(error, "warning: code paragraph line is %d chars wide, wider"
+ " than body width %d", i, j);
+ flags = FILEPOS;
+ break;
+ case err_htmlver:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "unrecognised HTML version keyword `%.200s'", sp);
+ sfree(sp);
+ flags = FILEPOS;
+ break;
+ case err_charset:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "character set `%.200s' not recognised", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_nofont:
+ fpos = *va_arg(ap, filepos *);
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "font `%.200s' not recognised", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_afmeof:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "AFM file ended unexpectedly");
+ flags = FILEPOS;
+ break;
+ case err_afmkey:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ sprintf(error, "required AFM key '%.200s' missing", sp);
+ flags = FILEPOS;
+ break;
+ case err_afmvers:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unsupported AFM version");
+ flags = FILEPOS;
+ break;
+ case err_afmval:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ i = va_arg(ap, int);
+ if (i == 1)
+ sprintf(error, "AFM key '%.200s' requires a value", sp);
+ else
+ sprintf(error, "AFM key '%.200s' requires %d values", sp, i);
+ flags = FILEPOS;
+ break;
+ case err_pfeof:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "Type 1 font file ended unexpectedly");
+ flags = FILEPOS;
+ break;
+ case err_pfhead:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "Type 1 font file header line invalid");
+ flags = FILEPOS;
+ break;
+ case err_pfbad:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "Type 1 font file invalid");
+ flags = FILEPOS;
+ break;
+ case err_pfnoafm:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ sprintf(error, "no metrics available for Type 1 font '%.200s'", sp);
+ flags = FILEPOS;
+ break;
+ case err_chmnames:
+ sprintf(error, "only one of html-mshtmlhelp-chm and "
+ "html-mshtmlhelp-hhp found");
+ flags = PREFIX;
+ break;
+ case err_whatever:
+ sp = va_arg(ap, char *);
+ vsprintf(error, sp, ap);
+ flags = PREFIX;
+ break;
+ }
+
+ if (flags & PREFIX)
+ fputs("halibut: ", stderr);
+ if (flags & FILEPOS) {
+ fprintf(stderr, "%s:", fpos.filename);
+ if (fpos.line > 0)
+ fprintf(stderr, "%d:", fpos.line);
+ if (fpos.col > 0)
+ fprintf(stderr, "%d:", fpos.col);
+ fputc(' ', stderr);
+ }
+ fputs(error, stderr);
+ fputc('\n', stderr);
+}
+
+void fatal(int code, ...) {
+ va_list ap;
+ va_start(ap, code);
+ do_error(code, ap);
+ va_end(ap);
+ exit(EXIT_FAILURE);
+}
+
+void error(int code, ...) {
+ va_list ap;
+ va_start(ap, code);
+ do_error(code, ap);
+ va_end(ap);
+}
diff --git a/app/tools/halibut/halibut.h b/app/tools/halibut/halibut.h
new file mode 100644
index 0000000..8fe1f08
--- /dev/null
+++ b/app/tools/halibut/halibut.h
@@ -0,0 +1,548 @@
+#ifndef HALIBUT_HALIBUT_H
+#define HALIBUT_HALIBUT_H
+
+#include <stdio.h>
+#include <wchar.h>
+#include <time.h>
+#include <string.h>
+
+#include "charset.h"
+
+#ifdef __GNUC__
+#define NORETURN __attribute__((__noreturn__))
+#else
+#define NORETURN /* nothing */
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+/* For suppressing unused-parameter warnings */
+#define IGNORE(x) ( (x) = (x) )
+
+#include "tree234.h"
+
+/*
+ * Structure tags
+ */
+typedef struct input_Tag input;
+typedef struct filepos_Tag filepos;
+typedef struct paragraph_Tag paragraph;
+typedef struct word_Tag word;
+typedef struct keywordlist_Tag keywordlist;
+typedef struct keyword_Tag keyword;
+typedef struct numberstate_Tag numberstate;
+typedef struct indexdata_Tag indexdata;
+typedef struct indextag_Tag indextag;
+typedef struct indexentry_Tag indexentry;
+typedef struct macrostack_Tag macrostack;
+
+/*
+ * Data structure to hold a file name and index, a line and a
+ * column number, for reporting errors
+ */
+struct filepos_Tag {
+ char *filename;
+ int line, col;
+};
+
+/*
+ * Data structure to hold all the file names etc for input
+ */
+typedef struct pushback_Tag {
+ int chr;
+ filepos pos;
+} pushback;
+struct input_Tag {
+ char **filenames; /* complete list of input files */
+ int nfiles; /* how many in the list */
+ FILE *currfp; /* the currently open one */
+ int currindex; /* which one is that in the list */
+ pushback *pushback; /* pushed-back input characters */
+ int npushback, pushbacksize;
+ filepos pos;
+ int reportcols; /* report column numbers in errors */
+ macrostack *stack; /* macro expansions in force */
+ int defcharset, charset; /* character sets for input files */
+ charset_state csstate;
+ wchar_t wc[16]; /* wide chars from input conversion */
+ int nwc, wcpos; /* size of, and position in, wc[] */
+ char *pushback_chars; /* used to save input-encoding data */
+};
+
+/*
+ * Data structure to hold the input form of the source, ie a linked
+ * list of paragraphs
+ */
+struct paragraph_Tag {
+ paragraph *next;
+ int type;
+ wchar_t *keyword; /* for most special paragraphs */
+ char *origkeyword; /* same again in original charset */
+ word *words; /* list of words in paragraph */
+ int aux; /* number, in a numbered paragraph
+ * or subsection level
+ */
+ word *kwtext; /* chapter/section indication */
+ word *kwtext2; /* numeric-only form of kwtext */
+ filepos fpos;
+
+ paragraph *parent, *child, *sibling; /* for hierarchy navigation */
+
+ void *private_data; /* for temp use in backends */
+};
+enum {
+ para_IM, /* index merge */
+ para_BR, /* bibliography rewrite */
+ para_Rule, /* random horizontal rule */
+ para_Chapter,
+ para_Appendix,
+ para_UnnumberedChapter,
+ para_Heading,
+ para_Subsect,
+ para_Normal,
+ para_Biblio, /* causes no output unless turned ... */
+ para_BiblioCited, /* ... into this paragraph type */
+ para_Bullet,
+ para_NumberedList,
+ para_DescribedThing,
+ para_Description,
+ para_Code,
+ para_Copyright,
+ para_NoCite,
+ para_Title,
+ para_VersionID,
+ para_Config, /* configuration directive */
+ para_LcontPush, /* begin continuation of list item */
+ para_LcontPop, /* end continuation of list item */
+ para_QuotePush, /* begin block quote */
+ para_QuotePop, /* end block quote */
+ /*
+ * Back ends may define their own paragraph types beyond here,
+ * in case they need to use them internally.
+ */
+ para_NotParaType /* placeholder value */
+};
+
+/*
+ * Data structure to hold an individual word
+ */
+struct word_Tag {
+ word *next, *alt;
+ int type;
+ int aux;
+ int breaks; /* can a line break after it? */
+ wchar_t *text;
+ filepos fpos;
+
+ void *private_data; /* for temp use in backends */
+};
+enum {
+ /* ORDERING CONSTRAINT: these normal-word types ... */
+ word_Normal,
+ word_Emph,
+ word_Strong,
+ word_Code, /* monospaced; `quoted' in text */
+ word_WeakCode, /* monospaced, normal in text */
+ /* ... must be in the same order as these space types ... */
+ word_WhiteSpace, /* text is NULL or ignorable */
+ word_EmphSpace, /* WhiteSpace when emphasised */
+ word_StrongSpace,
+ word_CodeSpace, /* WhiteSpace when code */
+ word_WkCodeSpace, /* WhiteSpace when weak code */
+ /* ... and must be in the same order as these quote types ... */
+ word_Quote, /* text is NULL or ignorable */
+ word_EmphQuote, /* Quote when emphasised */
+ word_StrongQuote,
+ word_CodeQuote, /* (can't happen) */
+ word_WkCodeQuote, /* (can't happen) */
+ /* END ORDERING CONSTRAINT */
+ word_internal_endattrs,
+ word_UpperXref, /* \K */
+ word_LowerXref, /* \k */
+ word_XrefEnd, /* (invisible; no text) */
+ word_IndexRef, /* (always an invisible one) */
+ word_HyperLink, /* (invisible) */
+ word_HyperEnd, /* (also invisible; no text) */
+ word_Graphic, /* \G */
+ /*
+ * Back ends may define their own word types beyond here, in
+ * case they need to use them internally.
+ */
+ word_NotWordType /* placeholder value */
+};
+/* aux values for attributed words */
+enum {
+ attr_Only = 0x0000, /* a lone word with the attribute */
+ attr_First = 0x0001, /* the first of a series */
+ attr_Last = 0x0002, /* the last of a series */
+ attr_Always = 0x0003, /* any other part of a series */
+ attr_mask = 0x0003
+};
+/* aux values for quote-type words */
+enum {
+ quote_Open = 0x0010,
+ quote_Close = 0x0020,
+ quote_mask = 0x0030
+};
+#define isvis(x) ( ( (x) >= word_Normal && (x) <= word_LowerXref ) )
+#define isattr(x) ( ( (x) > word_Normal && (x) < word_WhiteSpace ) || \
+ ( (x) > word_WhiteSpace && (x) < word_internal_endattrs ) )
+
+#define ATTRSCOUNT (word_WhiteSpace - word_Normal)
+
+#define sameattr(x,y) (((x)%ATTRSCOUNT) == ((y)%ATTRSCOUNT))
+#define towordstyle(x) (word_Normal + ((x)%ATTRSCOUNT))
+#define tospacestyle(x) (word_WhiteSpace + ((x)%ATTRSCOUNT))
+#define toquotestyle(x) (word_Quote + ((x)%ATTRSCOUNT))
+#define removeattr(x) (word_Normal + (x)-((x)%ATTRSCOUNT))
+
+/*
+#define sameattr(x,y) ( (((x)-(y)) & 3) == 0 )
+#define towordstyle(x) ( word_Normal + ((x) & 3) )
+#define tospacestyle(x) ( word_WhiteSpace + ((x) & 3) )
+#define toquotestyle(x) ( word_Quote + ((x) & 3) )
+#define removeattr(x) ( word_Normal + ((x) &~ 3) )
+*/
+
+#define attraux(x) ( (x) & attr_mask )
+#define quoteaux(x) ( (x) & quote_mask )
+
+
+/*
+ * error.c
+ */
+void fatal(int code, ...) NORETURN;
+void error(int code, ...);
+enum {
+ err_nomemory, /* out of memory */
+ err_optnoarg, /* option `-%s' requires an argument */
+ err_nosuchopt, /* unrecognised option `-%s' */
+ err_cmdcharset, /* unrecognised charset %s (cmdline) */
+ err_futileopt, /* futile option `-%s'%s */
+ err_noinput, /* no input files */
+ err_cantopen, /* unable to open input file `%s' */
+ err_nodata, /* no data in input files */
+ err_brokencodepara, /* line in codepara didn't begin `\c' */
+ err_kwunclosed, /* expected `}' after keyword */
+ err_kwillegal, /* paragraph type expects no keyword */
+ err_kwexpected, /* paragraph type expects a keyword */
+ err_kwtoomany, /* paragraph type expects only 1 */
+ err_bodyillegal, /* paragraph type expects only kws! */
+ err_badparatype, /* invalid command at start of para */
+ err_badmidcmd, /* invalid command in mid-para */
+ err_unexbrace, /* unexpected brace */
+ err_explbr, /* expected `{' after command */
+ err_commenteof, /* EOF inside braced comment */
+ err_kwexprbr, /* expected `}' after cross-ref */
+ err_codequote, /* \q within \c is not supported */
+ err_missingrbrace, /* unclosed braces at end of para */
+ err_missingrbrace2, /* unclosed braces at end of file */
+ err_nestedstyles, /* unable to nest text styles */
+ err_nestedindex, /* unable to nest `\i' thingys */
+ err_indexcase, /* two \i differing only in case */
+ err_nosuchkw, /* unresolved cross-reference */
+ err_multiBR, /* multiple \BRs on same keyword */
+ err_nosuchidxtag, /* \IM on unknown index tag (warning) */
+ err_cantopenw, /* can't open output file for write */
+ err_macroexists, /* this macro already exists */
+ err_sectjump, /* jump a heading level, eg \C -> \S */
+ err_winhelp_ctxclash, /* WinHelp context ID hash clash */
+ err_multikw, /* keyword clash in sections */
+ err_misplacedlcont, /* \lcont not after a list item */
+ err_sectmarkerinblock, /* section marker appeared in block */
+ err_cfginsufarg, /* \cfg{%s} insufficient args (<%d) */
+ err_infonodechar, /* colon/comma in node name in info */
+ err_text_codeline, /* \c line too long in text backend */
+ err_htmlver, /* unrecognised HTML version keyword */
+ err_charset, /* unrecognised character set name */
+ err_nofont, /* unrecognised font name */
+ err_afmeof, /* eof in AFM file */
+ err_afmkey, /* missing expected keyword in AFM */
+ err_afmvers, /* unsupported AFM version */
+ err_afmval, /* missing value(s) for AFM key */
+ err_pfeof, /* eof in Type 1 font file */
+ err_pfhead, /* bad Type 1 header line */
+ err_pfbad, /* otherwise invalide Type 1 font */
+ err_pfnoafm, /* Type 1 font but no AFM */
+ err_chmnames, /* need both or neither of hhp+chm */
+ err_whatever /* random error of another type */
+};
+
+/*
+ * malloc.c
+ */
+#ifdef LOGALLOC
+void *smalloc(char *file, int line, int size);
+void *srealloc(char *file, int line, void *p, int size);
+void sfree(char *file, int line, void *p);
+#define smalloc(x) smalloc(__FILE__, __LINE__, x)
+#define srealloc(x, y) srealloc(__FILE__, __LINE__, x, y)
+#define sfree(x) sfree(__FILE__, __LINE__, x)
+#else
+void *smalloc(int size);
+void *srealloc(void *p, int size);
+void sfree(void *p);
+#endif
+void free_word_list(word *w);
+void free_para_list(paragraph *p);
+word *dup_word_list(word *w);
+char *dupstr(char *s);
+
+#define snew(type) ( (type *) smalloc (sizeof (type)) )
+#define snewn(number, type) ( (type *) smalloc ((number) * sizeof (type)) )
+#define sresize(array, number, type) \
+ ( (type *) srealloc ((array), (number) * sizeof (type)) )
+#define lenof(array) ( sizeof(array) / sizeof(*(array)) )
+
+/*
+ * ustring.c
+ */
+wchar_t *ustrdup(wchar_t const *s);
+char *ustrtoa(wchar_t const *s, char *outbuf, int size, int charset);
+char *ustrtoa_careful(wchar_t const *s, char *outbuf, int size, int charset);
+wchar_t *ustrfroma(char const *s, wchar_t *outbuf, int size, int charset);
+char *utoa_dup(wchar_t const *s, int charset);
+char *utoa_dup_len(wchar_t const *s, int charset, int *len);
+char *utoa_careful_dup(wchar_t const *s, int charset);
+wchar_t *ufroma_dup(char const *s, int charset);
+char *utoa_locale_dup(wchar_t const *s);
+wchar_t *ufroma_locale_dup(char const *s);
+int ustrlen(wchar_t const *s);
+wchar_t *uadv(wchar_t *s);
+wchar_t *ustrcpy(wchar_t *dest, wchar_t const *source);
+wchar_t *ustrncpy(wchar_t *dest, wchar_t const *source, int n);
+wchar_t utolower(wchar_t);
+int uisalpha(wchar_t);
+int ustrcmp(wchar_t *lhs, wchar_t *rhs);
+int ustricmp(wchar_t const *lhs, wchar_t const *rhs);
+int ustrnicmp(wchar_t const *lhs, wchar_t const *rhs, int maxlen);
+int utoi(wchar_t const *);
+double utof(wchar_t const *);
+int utob(wchar_t const *);
+int uisdigit(wchar_t);
+wchar_t *ustrlow(wchar_t *s);
+wchar_t *ustrftime(const wchar_t *wfmt, const struct tm *timespec);
+int cvt_ok(int charset, const wchar_t *s);
+int charset_from_ustr(filepos *fpos, const wchar_t *name);
+
+/*
+ * wcwidth.c
+ */
+int strwid(char const *s, int charset);
+int ustrwid(wchar_t const *s, int charset);
+
+/*
+ * help.c
+ */
+void help(void);
+void usage(void);
+void showversion(void);
+void listcharsets(void);
+
+/*
+ * licence.c
+ */
+void licence(void);
+
+/*
+ * version.c
+ */
+extern const char *const version;
+
+/*
+ * misc.c
+ */
+char *adv(char *s);
+
+typedef struct stackTag *stack;
+stack stk_new(void);
+void stk_free(stack);
+void stk_push(stack, void *);
+void *stk_pop(stack);
+void *stk_top(stack);
+
+typedef struct tagRdstring rdstring;
+struct tagRdstring {
+ int pos, size;
+ wchar_t *text;
+};
+typedef struct tagRdstringc rdstringc;
+struct tagRdstringc {
+ int pos, size;
+ char *text;
+};
+extern const rdstring empty_rdstring;
+extern const rdstringc empty_rdstringc;
+void rdadd(rdstring *rs, wchar_t c);
+void rdadds(rdstring *rs, wchar_t const *p);
+wchar_t *rdtrim(rdstring *rs);
+void rdaddc(rdstringc *rs, char c);
+void rdaddsc(rdstringc *rs, char const *p);
+void rdaddsn(rdstringc *rc, char const *p, int len);
+char *rdtrimc(rdstringc *rs);
+
+int compare_wordlists(word *a, word *b);
+
+void mark_attr_ends(word *words);
+
+typedef struct tagWrappedLine wrappedline;
+struct tagWrappedLine {
+ wrappedline *next;
+ word *begin, *end; /* first & last words of line */
+ int nspaces; /* number of whitespaces in line */
+ int shortfall; /* how much shorter than max width */
+};
+wrappedline *wrap_para(word *, int, int, int (*)(void *, word *), void *, int);
+void wrap_free(wrappedline *);
+void cmdline_cfg_add(paragraph *cfg, char *string);
+paragraph *cmdline_cfg_new(void);
+paragraph *cmdline_cfg_simple(char *string, ...);
+
+/*
+ * input.c
+ */
+paragraph *read_input(input *in, indexdata *idx);
+
+/*
+ * in_afm.c
+ */
+void read_afm_file(input *in);
+
+/*
+ * in_pf.c
+ */
+void read_pfa_file(input *in);
+void read_pfb_file(input *in);
+
+/*
+ * keywords.c
+ */
+struct keywordlist_Tag {
+ int nkeywords;
+ int size;
+ tree234 *keys; /* sorted by `key' field */
+ word **looseends; /* non-keyword list element numbers */
+ int nlooseends;
+ int looseendssize;
+};
+struct keyword_Tag {
+ wchar_t *key; /* the keyword itself */
+ word *text; /* "Chapter 2", "Appendix Q"... */
+ /* (NB: filepos are not set) */
+ paragraph *para; /* the paragraph referenced */
+};
+keyword *kw_lookup(keywordlist *, wchar_t *);
+keywordlist *get_keywords(paragraph *);
+void free_keywords(keywordlist *);
+void subst_keywords(paragraph *, keywordlist *);
+
+/*
+ * index.c
+ */
+
+/*
+ * Data structure to hold both sides of the index.
+ */
+struct indexdata_Tag {
+ tree234 *tags; /* holds type `indextag' */
+ tree234 *entries; /* holds type `indexentry' */
+};
+
+/*
+ * Data structure to hold an index tag (LHS of index).
+ */
+struct indextag_Tag {
+ wchar_t *name;
+ word *implicit_text;
+ filepos implicit_fpos;
+ word **explicit_texts;
+ filepos *explicit_fpos;
+ int nexplicit, explicit_size;
+ int nrefs;
+ indexentry **refs; /* array of entries referenced by tag */
+};
+
+/*
+ * Data structure to hold an index entry (RHS of index).
+ */
+struct indexentry_Tag {
+ word *text;
+ void *backend_data; /* private to back end */
+ filepos fpos;
+};
+
+indexdata *make_index(void);
+void cleanup_index(indexdata *);
+/* index_merge takes responsibility for freeing arg 3 iff implicit; never
+ * takes responsibility for arg 2 */
+void index_merge(indexdata *, int is_explicit, wchar_t *, word *, filepos *);
+void build_index(indexdata *);
+void index_debug(indexdata *);
+indextag *index_findtag(indexdata *idx, wchar_t *name);
+
+/*
+ * contents.c
+ */
+numberstate *number_init(void);
+void number_cfg(numberstate *, paragraph *);
+word *number_mktext(numberstate *, paragraph *, wchar_t *, int *, int *);
+void number_free(numberstate *);
+
+/*
+ * biblio.c
+ */
+void gen_citations(paragraph *, keywordlist *);
+
+/*
+ * bk_text.c
+ */
+void text_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *text_config_filename(char *filename);
+
+/*
+ * bk_html.c
+ */
+void html_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *html_config_filename(char *filename);
+
+/*
+ * bk_whlp.c
+ */
+void whlp_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *whlp_config_filename(char *filename);
+
+/*
+ * bk_man.c
+ */
+void man_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *man_config_filename(char *filename);
+
+/*
+ * bk_info.c
+ */
+void info_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *info_config_filename(char *filename);
+
+/*
+ * bk_paper.c
+ */
+void *paper_pre_backend(paragraph *, keywordlist *, indexdata *);
+
+/*
+ * bk_ps.c
+ */
+void ps_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *ps_config_filename(char *filename);
+
+/*
+ * bk_pdf.c
+ */
+void pdf_backend(paragraph *, keywordlist *, indexdata *, void *);
+paragraph *pdf_config_filename(char *filename);
+
+#endif
diff --git a/app/tools/halibut/help.c b/app/tools/halibut/help.c
new file mode 100644
index 0000000..8db2859
--- /dev/null
+++ b/app/tools/halibut/help.c
@@ -0,0 +1,56 @@
+/*
+ * help.c: usage instructions
+ */
+
+#include <stdio.h>
+#include "halibut.h"
+
+static const char *const helptext[] = {
+ "usage: halibut [options] files",
+ "options: --text[=filename] generate plain text output",
+ " --html[=filename] generate XHTML output",
+ " --winhelp[=filename] generate Windows Help output",
+ " --man[=filename] generate man page output",
+ " --info[=filename] generate GNU info output",
+ " --ps[=filename] generate PostScript output",
+ " --pdf[=filename] generate PDF output",
+ " -Cfoo:bar:baz append \\cfg{foo}{bar}{baz} to input",
+ " --input-charset=cs change default input file charset",
+ " --list-charsets display supported character set names",
+ " --precise report column numbers in error messages",
+ " --help display this text",
+ " --version display version number",
+ " --licence display licence text",
+ NULL
+};
+
+static const char *const usagetext[] = {
+ "usage: halibut [--format[=filename]] [options] file.but [file.but...]",
+ NULL
+};
+
+void help(void) {
+ const char *const *p;
+ for (p = helptext; *p; p++)
+ puts(*p);
+}
+
+void usage(void) {
+ const char *const *p;
+ for (p = usagetext; *p; p++)
+ puts(*p);
+}
+
+void showversion(void) {
+ printf("Halibut, %s\n", version);
+}
+
+void listcharsets(void) {
+ int i = 0, c;
+ do {
+ c = charset_localenc_nth(i);
+ if (c == CS_NONE) break;
+ printf("%s\n", charset_to_localenc(c));
+ i++;
+ } while (1);
+}
diff --git a/app/tools/halibut/in_afm.c b/app/tools/halibut/in_afm.c
new file mode 100644
index 0000000..b2aacae
--- /dev/null
+++ b/app/tools/halibut/in_afm.c
@@ -0,0 +1,276 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "halibut.h"
+#include "paper.h"
+
+char *afm_read_line(input *in) {
+ int i, len = 256;
+ int c;
+ char *line;
+
+ do {
+ i = 0;
+ in->pos.line++;
+ c = getc(in->currfp);
+ if (c == EOF) {
+ error(err_afmeof, &in->pos);
+ return NULL;
+ }
+ line = snewn(len, char);
+ while (c != EOF && c != '\r' && c != '\n') {
+ if (i >= len - 1) {
+ len += 256;
+ line = sresize(line, len, char);
+ }
+ line[i++] = c;
+ c = getc(in->currfp);
+ }
+ if (c == '\r') {
+ /* Cope with CRLF terminated lines */
+ c = getc(in->currfp);
+ if (c != '\n' && c != EOF)
+ ungetc(c, in->currfp);
+ }
+ line[i] = 0;
+ } while (line[(strspn(line, " \t"))] == 0 ||
+ strncmp(line, "Comment ", 8) == 0 ||
+ strncmp(line, "Comment\t", 8) == 0);
+
+ return line;
+}
+
+static int afm_require_key(char *line, char const *expected, input *in) {
+ char *key = strtok(line, " \t");
+
+ if (strcmp(key, expected) == 0)
+ return TRUE;
+ error(err_afmkey, &in->pos, expected);
+ return FALSE;
+}
+
+void read_afm_file(input *in) {
+ char *line, *key, *val;
+ font_info *fi;
+ size_t i;
+
+ fi = snew(font_info);
+ fi->name = NULL;
+ fi->widths = newtree234(width_cmp);
+ fi->fontfile = NULL;
+ fi->kerns = newtree234(kern_cmp);
+ fi->ligs = newtree234(lig_cmp);
+ fi->fontbbox[0] = fi->fontbbox[1] = fi->fontbbox[2] = fi->fontbbox[3] = 0;
+ fi->capheight = fi->xheight = fi->ascent = fi->descent = 0;
+ fi->stemh = fi->stemv = fi->italicangle = 0;
+ for (i = 0; i < lenof(fi->bmp); i++)
+ fi->bmp[i] = 0xFFFF;
+ in->pos.line = 0;
+ line = afm_read_line(in);
+ if (!line || !afm_require_key(line, "StartFontMetrics", in))
+ goto giveup;
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, in->pos, "StartFontMetrics", 1);
+ goto giveup;
+ }
+ if (atof(val) >= 5.0) {
+ error(err_afmvers, &in->pos);
+ goto giveup;
+ }
+ sfree(line);
+ for (;;) {
+ line = afm_read_line(in);
+ if (line == NULL)
+ goto giveup;
+ key = strtok(line, " \t");
+ if (strcmp(key, "EndFontMetrics") == 0) {
+ fi->next = all_fonts;
+ all_fonts = fi;
+ fclose(in->currfp);
+ return;
+ } else if (strcmp(key, "FontName") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->name = dupstr(val);
+ } else if (strcmp(key, "FontBBox") == 0) {
+ int i;
+ for (i = 0; i < 3; i++) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 4);
+ goto giveup;
+ }
+ fi->fontbbox[i] = atof(val);
+ }
+ } else if (strcmp(key, "CapHeight") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->capheight = atof(val);
+ } else if (strcmp(key, "XHeight") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->xheight = atof(val);
+ } else if (strcmp(key, "Ascender") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->ascent = atof(val);
+ } else if (strcmp(key, "Descender") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->descent = atof(val);
+ } else if (strcmp(key, "CapHeight") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->capheight = atof(val);
+ } else if (strcmp(key, "StdHW") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->stemh = atof(val);
+ } else if (strcmp(key, "StdVW") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->stemv = atof(val);
+ } else if (strcmp(key, "ItalicAngle") == 0) {
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ fi->italicangle = atof(val);
+ } else if (strcmp(key, "StartCharMetrics") == 0) {
+ int nglyphs, i;
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ nglyphs = atoi(val);
+ sfree(line);
+ for (i = 0; i < nglyphs; i++) {
+ int width = 0;
+ glyph g = NOGLYPH;
+
+ line = afm_read_line(in);
+ if (line == NULL)
+ goto giveup;
+ key = strtok(line, " \t");
+ while (key != NULL) {
+ if (strcmp(key, "WX") == 0 || strcmp(key, "W0X") == 0) {
+ if (!(val = strtok(NULL, " \t")) ||
+ !strcmp(val, ";")) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ width = atoi(val);
+ } else if (strcmp(key, "N") == 0) {
+ if (!(val = strtok(NULL, " \t")) ||
+ !strcmp(val, ";")) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ g = glyph_intern(val);
+ } else if (strcmp(key, "L") == 0) {
+ glyph succ, lig;
+ if (!(val = strtok(NULL, " \t")) ||
+ !strcmp(val, ";")) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ succ = glyph_intern(val);
+ if (!(val = strtok(NULL, " \t")) ||
+ !strcmp(val, ";")) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ lig = glyph_intern(val);
+ if (g != NOGLYPH && succ != NOGLYPH &&
+ lig != NOGLYPH) {
+ ligature *l = snew(ligature);
+ l->left = g;
+ l->right = succ;
+ l->lig = lig;
+ add234(fi->ligs, l);
+ }
+ }
+ do {
+ key = strtok(NULL, " \t");
+ } while (key && strcmp(key, ";"));
+ key = strtok(NULL, " \t");
+ }
+ sfree(line);
+ if (width != 0 && g != NOGLYPH) {
+ wchar_t ucs;
+ glyph_width *w = snew(glyph_width);
+ w->glyph = g;
+ w->width = width;
+ add234(fi->widths, w);
+ ucs = ps_glyph_to_unicode(g);
+ if (ucs < 0xFFFF)
+ fi->bmp[ucs] = g;
+ }
+ }
+ line = afm_read_line(in);
+ if (!line || !afm_require_key(line, "EndCharMetrics", in))
+ goto giveup;
+ sfree(line);
+
+ } else if (strcmp(key, "StartKernPairs") == 0 ||
+ strcmp(key, "StartKernPairs0") == 0) {
+ int nkerns, i;
+ kern_pair *kerns;
+ if (!(val = strtok(NULL, " \t"))) {
+ error(err_afmval, &in->pos, key, 1);
+ goto giveup;
+ }
+ nkerns = atoi(val);
+ sfree(line);
+ kerns = snewn(nkerns, kern_pair);
+ for (i = 0; i < nkerns; i++) {
+ line = afm_read_line(in);
+ if (line == NULL)
+ goto giveup;
+ key = strtok(line, " \t");
+ if (strcmp(key, "KPX") == 0) {
+ char *nl, *nr;
+ int l, r;
+ kern_pair *kp;
+ nl = strtok(NULL, " \t");
+ nr = strtok(NULL, " \t");
+ val = strtok(NULL, " \t");
+ if (!val) {
+ error(err_afmval, &in->pos, key, 3);
+ goto giveup;
+ }
+ l = glyph_intern(nl);
+ r = glyph_intern(nr);
+ if (l == -1 || r == -1) continue;
+ kp = snew(kern_pair);
+ kp->left = l;
+ kp->right = r;
+ kp->kern = atoi(val);
+ add234(fi->kerns, kp);
+ }
+ }
+ line = afm_read_line(in);
+ if (!line || !afm_require_key(line, "EndKernPairs", in))
+ goto giveup;
+ sfree(line);
+ }
+ }
+ giveup:
+ sfree(fi);
+ fclose(in->currfp);
+ return;
+}
diff --git a/app/tools/halibut/in_pf.c b/app/tools/halibut/in_pf.c
new file mode 100644
index 0000000..3df6d37
--- /dev/null
+++ b/app/tools/halibut/in_pf.c
@@ -0,0 +1,450 @@
+/*
+ * PostScript Type 1 font file support for Halibut
+ */
+/*
+ * Type 1 font file formats are specified by Adobe Technical Note
+ * #5040: "Supporting Downloadable PostScript Language Fonts".
+ * Halibut supports hexadecimal format (section 3.1) and IBM PC format
+ * (section 3.3), commonly called PFA and PFB respectively.
+ */
+
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "halibut.h"
+#include "paper.h"
+
+#define PFB_ASCII 1
+#define PFB_BINARY 2
+#define PFB_EOF 3
+
+typedef struct t1_font_Tag t1_font;
+typedef struct t1_data_Tag t1_data;
+
+struct t1_font_Tag {
+ t1_data *data;
+ size_t length1;
+ size_t length2;
+ filepos pos;
+};
+
+struct t1_data_Tag {
+ char type;
+ size_t length;
+ unsigned char *data;
+ t1_data *next;
+};
+
+typedef struct pfstate_Tag {
+ t1_data *data;
+ t1_data *curblock;
+ size_t offset;
+} pfstate;
+
+static void pf_identify(t1_font *tf);
+
+static t1_data *load_pfb_file(FILE *fp, filepos *pos) {
+ t1_data *head = NULL, *tail = NULL;
+ int c, i;
+ char type;
+
+ pos->line = 0;
+ for (;;) {
+ if (fgetc(fp) != 128) abort();
+ type = fgetc(fp);
+ if (type == PFB_EOF) return head;
+ if (tail) {
+ tail->next = snew(t1_data);
+ tail = tail->next;
+ } else {
+ head = snew(t1_data);
+ tail = head;
+ }
+ tail->type = type;
+ tail->length = 0;
+ for (i = 0; i < 4; i++) {
+ c = fgetc(fp);
+ if (c == EOF) abort();
+ tail->length |= c << (8 * i);
+ }
+ tail->data = snewn(tail->length, unsigned char);
+ if (fread(tail->data, 1, tail->length, fp) != tail->length) abort();
+ }
+}
+
+static t1_data *load_pfa_file(FILE *fp, filepos *pos) {
+ t1_data *ret = snew(t1_data);
+ size_t off = 0, len, got;
+
+ pos->line = 0;
+ ret->type = PFB_ASCII;
+ len = 32768;
+ ret->data = snewn(len, unsigned char);
+ for (;;) {
+ got = fread(ret->data + off, 1, len - off, fp);
+ off += got;
+ if (off != len) break;
+ len *= 2;
+ ret->data = sresize(ret->data, len, unsigned char);
+ }
+ ret->data = sresize(ret->data, off, unsigned char);
+ ret->length = off;
+ return ret;
+}
+
+void read_pfa_file(input *in) {
+ t1_font *tf = snew(t1_font);
+
+ tf->data = load_pfa_file(in->currfp, &in->pos);
+ tf->pos = in->pos;
+ tf->length1 = tf->length2 = 0;
+ fclose(in->currfp);
+ pf_identify(tf);
+}
+
+void read_pfb_file(input *in) {
+ t1_font *tf = snew(t1_font);
+
+ tf->data = load_pfb_file(in->currfp, &in->pos);
+ tf->pos = in->pos;
+ tf->length1 = tf->length2 = 0;
+ fclose(in->currfp);
+ pf_identify(tf);
+}
+static char *pf_read_token(pfstate *);
+
+/*
+ * Read a character from the initial plaintext part of a Type 1 font
+ */
+static int pf_getc(pfstate *pf) {
+ if (pf->offset == pf->curblock->length) {
+ if (pf->curblock->next == NULL) return EOF;
+ pf->curblock = pf->curblock->next;
+ pf->offset = 0;
+ }
+ if (pf->curblock->type != PFB_ASCII) return EOF;
+ return pf->curblock->data[pf->offset++];
+}
+
+static void pf_ungetc(int c, pfstate *pf) {
+ assert(pf->offset > 0);
+ pf->offset--;
+ assert(c == pf->curblock->data[pf->offset]);
+}
+
+static void pf_rewind(pfstate *pf) {
+ pf->curblock = pf->data;
+ pf->offset = 0;
+}
+
+static void pf_seek(pfstate *pf, size_t off) {
+ t1_data *td = pf->data;
+
+ while (td->length < off) {
+ off -= td->length;
+ td = td->next;
+ }
+ pf->curblock = td;
+ pf->offset = off;
+}
+
+static size_t pf_tell(pfstate *pf) {
+ t1_data *td = pf->data;
+ size_t o = 0;
+
+ while (td != pf->curblock) {
+ o += td->length;
+ td = td->next;
+ }
+ return o + pf->offset;
+}
+
+static void pf_identify(t1_font *tf) {
+ rdstringc rsc = { 0, 0, NULL };
+ char *p;
+ size_t len;
+ char *fontname;
+ font_info *fi;
+ int c;
+ pfstate pfs, *pf = &pfs;
+
+ pf->data = tf->data;
+ pf_rewind(pf);
+ do {
+ c = pf_getc(pf);
+ if (c == EOF) {
+ sfree(rsc.text);
+ error(err_pfeof, &tf->pos);
+ return;
+ }
+ rdaddc(&rsc, c);
+ } while (c != 012 && c != 015);
+ p = rsc.text;
+ if ((p = strchr(p, ':')) == NULL) {
+ sfree(rsc.text);
+ error(err_pfhead, &tf->pos);
+ return;
+ }
+ p++;
+ p += strspn(p, " \t");
+ len = strcspn(p, " \t");
+ fontname = snewn(len + 1, char);
+ memcpy(fontname, p, len);
+ fontname[len] = 0;
+ sfree(rsc.text);
+
+ for (fi = all_fonts; fi; fi = fi->next) {
+ if (strcmp(fi->name, fontname) == 0) {
+ fi->fontfile = tf;
+ sfree(fontname);
+ return;
+ }
+ }
+ error(err_pfnoafm, &tf->pos, fontname);
+ sfree(fontname);
+}
+
+/*
+ * PostScript white space characters; PLRM3 table 3.1
+ */
+static int pf_isspace(int c) {
+ return c == 000 || c == 011 || c == 012 || c == 014 || c == 015 ||
+ c == ' ';
+}
+
+/*
+ * PostScript special characters; PLRM3 page 27
+ */
+static int pf_isspecial(int c) {
+ return c == '(' || c == ')' || c == '<' || c == '>' || c == '[' ||
+ c == ']' || c == '{' || c == '}' || c == '/' || c == '%';
+}
+
+static size_t pf_findtoken(t1_font *tf, size_t off, char const *needle) {
+ char *tok;
+ pfstate pfs, *pf = &pfs;
+
+ pf->data = tf->data;
+ pf_seek(pf, off);
+ for (;;) {
+ tok = pf_read_token(pf);
+ if (tok == NULL) {
+ if (pf->offset == 0 && pf->curblock->type == PFB_BINARY)
+ pf->curblock = pf->curblock->next;
+ else
+ return (size_t)-1;
+ } else {
+ if (strcmp(tok, needle) == 0) {
+ sfree(tok);
+ return pf_tell(pf);
+ }
+ sfree(tok);
+ }
+ }
+}
+
+static size_t pf_length1(t1_font *tf) {
+ size_t ret;
+
+ ret = pf_findtoken(tf, 0, "eexec");
+ if (ret == (size_t)-1) {
+ error(err_pfeof, &tf->pos);
+ return 0;
+ }
+ return ret;
+}
+
+static size_t pf_length2(t1_font *tf) {
+ size_t ret;
+
+ if (tf->length1 == 0)
+ tf->length1 = pf_length1(tf);
+ ret = pf_findtoken(tf, tf->length1, "cleartomark");
+ if (ret == (size_t)-1) {
+ error(err_pfeof, &tf->pos);
+ return 0;
+ }
+ return ret - 12 - tf->length1; /* backspace over "cleartomark\n" */
+}
+
+static void pf_getascii(t1_font *tf, size_t off, size_t len,
+ char **bufp, size_t *lenp) {
+ t1_data *td = tf->data;
+ size_t blk, i;
+ char *p;
+
+ while (td && off >= td->length) {
+ off -= td->length;
+ td = td->next;
+ }
+ *bufp = NULL;
+ *lenp = 0;
+ while (td && len) {
+ blk = len < td->length ? len : td->length;
+ if (td->type == PFB_ASCII) {
+ *bufp = sresize(*bufp, *lenp + blk, char);
+ memcpy(*bufp + *lenp, td->data + off, blk);
+ *lenp += blk;
+ } else {
+ *bufp = sresize(*bufp, *lenp + blk * 2 + blk / 39 + 3, char);
+ p = *bufp + *lenp;
+ for (i = 0; i < blk; i++) {
+ if (i % 39 == 0) p += sprintf(p, "\n");
+ p += sprintf(p, "%02x", td->data[off + i]);
+ }
+ p += sprintf(p, "\n");
+ *lenp = p - *bufp;
+ }
+ len -= blk;
+ td = td->next;
+ off = 0;
+ }
+}
+
+void pf_writeps(font_info const *fi, FILE *ofp) {
+ char *buf;
+ size_t len;
+
+ pf_getascii(fi->fontfile, 0, INT_MAX, &buf, &len);
+ fwrite(buf, 1, len, ofp);
+ sfree(buf);
+}
+
+static int hexval(char c) {
+ if (c >= '0' && c <= '9') return c - '0';
+ if (c >= 'A' && c <= 'F') return c - 'A' + 0xA;
+ if (c >= 'a' && c <= 'f') return c - 'a' + 0xa;
+ return 0;
+}
+
+static void pf_getbinary(t1_font *tf, size_t off, size_t len,
+ char **bufp, size_t *lenp) {
+ t1_data *td = tf->data;
+ size_t blk, i;
+ int havenybble = 0;
+ char *p, nybble;
+
+ while (td && off >= td->length) {
+ off -= td->length;
+ td = td->next;
+ }
+ *bufp = NULL;
+ *lenp = 0;
+ while (td && len) {
+ blk = len < td->length ? len : td->length;
+ if (td->type == PFB_BINARY) {
+ *bufp = sresize(*bufp, *lenp + blk, char);
+ memcpy(*bufp + *lenp, td->data + off, blk);
+ *lenp += blk;
+ } else {
+ *bufp = sresize(*bufp, *lenp + blk / 2 + 1, char);
+ p = *bufp + *lenp;
+ for (i = 0; i < blk; i++) {
+ if (pf_isspace(td->data[off + i])) continue;
+ if (!havenybble)
+ nybble = hexval(td->data[off+i]);
+ else
+ *p++ = (nybble << 4) | hexval(td->data[off+i]);
+ havenybble = !havenybble;
+ }
+ *lenp = p - *bufp;
+ }
+ len -= blk;
+ td = td->next;
+ off = 0;
+ }
+}
+
+
+/*
+ * Return the initial, unencrypted, part of a font.
+ */
+void pf_part1(font_info *fi, char **bufp, size_t *lenp) {
+ t1_font *tf = fi->fontfile;
+
+ if (tf->length1 == 0)
+ tf->length1 = pf_length1(tf);
+ pf_getascii(tf, 0, tf->length1, bufp, lenp);
+}
+
+/*
+ * Return the middle, encrypted, part of a font.
+ */
+void pf_part2(font_info *fi, char **bufp, size_t *lenp) {
+ t1_font *tf = fi->fontfile;
+
+ if (tf->length2 == 0)
+ tf->length2 = pf_length2(tf);
+ pf_getbinary(tf, tf->length1, tf->length2, bufp, lenp);
+ if (*lenp >= 256)
+ *lenp -= 256;
+}
+
+static char *pf_read_litstring(pfstate *pf) {
+ rdstringc rsc = { 0, 0, NULL };
+ int depth = 1;
+ int c;
+
+ rdaddc(&rsc, '(');
+ do {
+ c = pf_getc(pf);
+ switch (c) {
+ case '(':
+ depth++; break;
+ case ')':
+ depth--; break;
+ case '\\':
+ rdaddc(&rsc, '\\');
+ c = pf_getc(pf);
+ break;
+ }
+ if (c != EOF) rdaddc(&rsc, c);
+ } while (depth > 0 && c != EOF);
+ return rsc.text;
+}
+
+static char *pf_read_hexstring(pfstate *pf) {
+ rdstringc rsc = { 0, 0, NULL };
+ int c;
+
+ rdaddc(&rsc, '<');
+ do {
+ c = pf_getc(pf);
+ if (c != EOF) rdaddc(&rsc, c);
+ } while (c != '>' && c != EOF);
+ return rsc.text;
+}
+
+static char *pf_read_word(pfstate *pf, int c) {
+ rdstringc rsc = { 0, 0, NULL };
+
+ rdaddc(&rsc, c);
+ if (c == '{' || c == '}' || c == '[' || c == ']')
+ return rsc.text;
+ for (;;) {
+ c = pf_getc(pf);
+ if (pf_isspecial(c) || pf_isspace(c) || c == EOF) break;
+ rdaddc(&rsc, c);
+ }
+ if (pf_isspecial(c)) pf_ungetc(c, pf);
+ return rsc.text;
+}
+
+static char *pf_read_token(pfstate *pf) {
+ int c;
+
+ do {
+ c = pf_getc(pf);
+ } while (pf_isspace(c));
+ if (c == EOF) return NULL;
+ if (c == '%') {
+ do {
+ c = pf_getc(pf);
+ } while (c != 012 && c != 015);
+ return pf_read_token(pf);
+ }
+ if (c == '(') return pf_read_litstring(pf);
+ if (c == '<') return pf_read_hexstring(pf);
+ return pf_read_word(pf, c);
+}
diff --git a/app/tools/halibut/index.c b/app/tools/halibut/index.c
new file mode 100644
index 0000000..628934e
--- /dev/null
+++ b/app/tools/halibut/index.c
@@ -0,0 +1,270 @@
+/*
+ * index.c: create and collate index data structures
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "halibut.h"
+
+static int compare_tags(void *av, void *bv);
+static int compare_entries(void *av, void *bv);
+
+indexdata *make_index(void) {
+ indexdata *ret = snew(indexdata);
+ ret->tags = newtree234(compare_tags);
+ ret->entries = newtree234(compare_entries);
+ return ret;
+}
+
+static indextag *make_indextag(void) {
+ indextag *ret = snew(indextag);
+ ret->name = NULL;
+ ret->implicit_text = NULL;
+ ret->explicit_texts = NULL;
+ ret->explicit_fpos = NULL;
+ ret->nexplicit = ret->explicit_size = ret->nrefs = 0;
+ ret->refs = NULL;
+ return ret;
+}
+
+static int compare_tags(void *av, void *bv) {
+ indextag *a = (indextag *)av, *b = (indextag *)bv;
+ return ustricmp(a->name, b->name);
+}
+
+static int compare_to_find_tag(void *av, void *bv) {
+ wchar_t *a = (wchar_t *)av;
+ indextag *b = (indextag *)bv;
+ return ustricmp(a, b->name);
+}
+
+static int compare_entries(void *av, void *bv) {
+ indexentry *a = (indexentry *)av, *b = (indexentry *)bv;
+ return compare_wordlists(a->text, b->text);
+}
+
+/*
+ * Back-end utility: find the indextag with a given name.
+ */
+indextag *index_findtag(indexdata *idx, wchar_t *name) {
+ return find234(idx->tags, name, compare_to_find_tag);
+}
+
+/*
+ * Add a \IM. `tags' points to a zero-terminated chain of
+ * zero-terminated strings ("first\0second\0thirdandlast\0\0").
+ * `text' points to a word list.
+ *
+ * Guarantee on calling sequence: all implicit merges are given
+ * before the explicit ones.
+ */
+void index_merge(indexdata *idx, int is_explicit, wchar_t *tags, word *text,
+ filepos *fpos) {
+ indextag *t, *existing;
+
+ /*
+ * For an implicit merge, we want to remove all emphasis,
+ * because the chances are that the user didn't really want to
+ * index the term as emphasised.
+ */
+ {
+ word *w;
+
+ for (w = text; w; w = w->next) {
+ if (w->type == word_Emph)
+ w->type = word_Normal;
+ else if (w->type == word_EmphSpace)
+ w->type = word_WhiteSpace;
+ else if (w->type == word_EmphQuote)
+ w->type = word_Quote;
+ }
+ }
+
+ /*
+ * FIXME: want to warn on overlapping source sets.
+ */
+ for (; *tags; tags = uadv(tags)) {
+ t = make_indextag();
+ t->name = tags;
+ existing = add234(idx->tags, t);
+ if (existing == t) {
+ /*
+ * Duplicate this so we can free it independently.
+ */
+ t->name = ustrdup(tags);
+
+ /*
+ * Every tag has an implicit \IM. So if this tag
+ * doesn't exist and we're explicit, then we should
+ * warn (and drop it, since it won't be referenced).
+ */
+ if (is_explicit) {
+ error(err_nosuchidxtag, fpos, tags);
+ continue;
+ }
+
+ /*
+ * Otherwise, this is a new tag with an implicit \IM.
+ */
+ t->implicit_text = text;
+ t->implicit_fpos = *fpos;
+ } else {
+ if (!is_explicit) {
+ /*
+ * An implicit \IM for a tag that's had an implicit
+ * \IM before. FIXME: we should check the text
+ * against the existing text and warn on
+ * differences. And check the tag for case match
+ * against the existing tag, likewise.
+ */
+
+ /*
+ * Check the tag against its previous occurrence to
+ * see if the cases match.
+ */
+ if (ustrcmp(t->name, existing->name)) {
+ error(err_indexcase, fpos, t->name,
+ &existing->implicit_fpos, existing->name);
+ }
+
+ sfree(t);
+ } else {
+ /*
+ * An explicit \IM added to a valid tag. In
+ * particular, this removes the implicit \IM if
+ * present.
+ */
+ sfree(t);
+ t = existing;
+ if (t->implicit_text) {
+ free_word_list(t->implicit_text);
+ t->implicit_text = NULL;
+ }
+ if (t->nexplicit >= t->explicit_size) {
+ t->explicit_size = t->nexplicit + 8;
+ t->explicit_texts = sresize(t->explicit_texts,
+ t->explicit_size, word *);
+ t->explicit_fpos = sresize(t->explicit_fpos,
+ t->explicit_size, filepos);
+ }
+ t->explicit_texts[t->nexplicit] = text;
+ t->explicit_fpos[t->nexplicit] = *fpos;
+ t->nexplicit++;
+ }
+ }
+ }
+}
+
+/*
+ * Build the final-form index. We now have every tag, with every
+ * \IM, set up in a 2-3 tree indexed by tag. We now want to collate
+ * the RHSes of the \IMs, and sort by final form, and decorate the
+ * entries in the original 2-3 tree with pointers to the RHS
+ * entries.
+ */
+void build_index(indexdata *i) {
+ indextag *t;
+ word **ta;
+ filepos *fa;
+ int ti;
+ int j;
+
+ for (ti = 0; (t = (indextag *)index234(i->tags, ti)) != NULL; ti++) {
+ if (t->implicit_text) {
+ t->nrefs = 1;
+ ta = &t->implicit_text;
+ fa = &t->implicit_fpos;
+ } else {
+ t->nrefs = t->nexplicit;
+ ta = t->explicit_texts;
+ fa = t->explicit_fpos;
+ }
+ if (t->nrefs) {
+ t->refs = snewn(t->nrefs, indexentry *);
+ for (j = 0; j < t->nrefs; j++) {
+ indexentry *ent = snew(indexentry);
+ ent->text = *ta++;
+ ent->fpos = *fa++;
+ t->refs[j] = add234(i->entries, ent);
+ if (t->refs[j] != ent) /* duplicate */
+ sfree(ent);
+ }
+ }
+ }
+}
+
+void cleanup_index(indexdata *i) {
+ indextag *t;
+ indexentry *ent;
+ int ti;
+
+ for (ti = 0; (t = (indextag *)index234(i->tags, ti)) != NULL; ti++) {
+ sfree(t->name);
+ free_word_list(t->implicit_text);
+ sfree(t->explicit_texts);
+ sfree(t->refs);
+ sfree(t);
+ }
+ freetree234(i->tags);
+ for (ti = 0; (ent = (indexentry *)index234(i->entries, ti))!=NULL; ti++) {
+ sfree(ent);
+ }
+ freetree234(i->entries);
+ sfree(i);
+}
+
+static void dbg_prtwordlist(int level, word *w);
+static void dbg_prtmerge(int is_explicit, wchar_t *tag, word *text);
+
+void index_debug(indexdata *i) {
+ indextag *t;
+ indexentry *y;
+ int ti;
+ int j;
+
+ printf("\nINDEX TAGS\n==========\n\n");
+ for (ti = 0; (t = (indextag *)index234(i->tags, ti)) != NULL; ti++) {
+ printf("\n");
+ if (t->implicit_text)
+ dbg_prtmerge(0, t->name, t->implicit_text);
+ for (j = 0; j < t->nexplicit; j++)
+ dbg_prtmerge(1, t->name, t->explicit_texts[j]);
+ }
+
+ printf("\nINDEX ENTRIES\n=============\n\n");
+ for (ti = 0; (y = (indexentry *)index234(i->entries, ti)) != NULL; ti++) {
+ printf("\n");
+ printf("{\n");
+ dbg_prtwordlist(1, y->text);
+ printf("}\n");
+ }
+}
+
+static void dbg_prtmerge(int is_explicit, wchar_t *tag, word *text) {
+ printf("\\IM: %splicit: \"", is_explicit ? "ex" : "im");
+ for (; *tag; tag++)
+ putchar(*tag);
+ printf("\" {\n");
+ dbg_prtwordlist(1, text);
+ printf("}\n");
+}
+
+static void dbg_prtwordlist(int level, word *w) {
+ for (; w; w = w->next) {
+ wchar_t *wp;
+ printf("%*sword %d ", level*4, "", w->type);
+ if (w->text) {
+ printf("\"");
+ for (wp = w->text; *wp; wp++)
+ putchar(*wp);
+ printf("\"");
+ } else
+ printf("(no text)");
+ if (w->alt) {
+ printf(" alt = {\n");
+ dbg_prtwordlist(level+1, w->alt);
+ printf("%*s}", level*4, "");
+ }
+ printf("\n");
+ }
+}
diff --git a/app/tools/halibut/input.c b/app/tools/halibut/input.c
new file mode 100644
index 0000000..b877508
--- /dev/null
+++ b/app/tools/halibut/input.c
@@ -0,0 +1,1644 @@
+/*
+ * input.c: read the source form
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <time.h>
+#include "halibut.h"
+
+#define TAB_STOP 8 /* for column number tracking */
+
+static void setpos(input *in, char *fname) {
+ in->pos.filename = fname;
+ in->pos.line = 1;
+ in->pos.col = (in->reportcols ? 1 : -1);
+}
+
+static void unget(input *in, int c, filepos *pos) {
+ if (in->npushback >= in->pushbacksize) {
+ in->pushbacksize = in->npushback + 16;
+ in->pushback = sresize(in->pushback, in->pushbacksize, pushback);
+ }
+ in->pushback[in->npushback].chr = c;
+ in->pushback[in->npushback].pos = *pos; /* structure copy */
+ in->npushback++;
+}
+
+/* ---------------------------------------------------------------------- */
+/*
+ * Macro subsystem
+ */
+typedef struct macro_Tag macro;
+struct macro_Tag {
+ wchar_t *name, *text;
+};
+struct macrostack_Tag {
+ macrostack *next;
+ wchar_t *text;
+ int ptr, npushback;
+ filepos pos;
+};
+static int macrocmp(void *av, void *bv) {
+ macro *a = (macro *)av, *b = (macro *)bv;
+ return ustrcmp(a->name, b->name);
+}
+static void macrodef(tree234 *macros, wchar_t *name, wchar_t *text,
+ filepos fpos) {
+ macro *m = snew(macro);
+ m->name = name;
+ m->text = text;
+ if (add234(macros, m) != m) {
+ error(err_macroexists, &fpos, name);
+ sfree(name);
+ sfree(text);
+ }
+}
+static int macrolookup(tree234 *macros, input *in, wchar_t *name,
+ filepos *pos) {
+ macro m, *gotit;
+ m.name = name;
+ gotit = find234(macros, &m, NULL);
+ if (gotit) {
+ macrostack *expansion = snew(macrostack);
+ expansion->next = in->stack;
+ expansion->text = gotit->text;
+ expansion->pos = *pos; /* structure copy */
+ expansion->ptr = 0;
+ expansion->npushback = in->npushback;
+ in->stack = expansion;
+ return TRUE;
+ } else
+ return FALSE;
+}
+static void macrocleanup(tree234 *macros) {
+ int ti;
+ macro *m;
+ for (ti = 0; (m = (macro *)index234(macros, ti)) != NULL; ti++) {
+ sfree(m->name);
+ sfree(m->text);
+ sfree(m);
+ }
+ freetree234(macros);
+}
+
+static void input_configure(input *in, paragraph *cfg) {
+ assert(cfg->type == para_Config);
+
+ if (!ustricmp(cfg->keyword, L"input-charset")) {
+ in->charset = charset_from_ustr(&cfg->fpos, uadv(cfg->keyword));
+ }
+}
+
+/*
+ * Can return EOF
+ */
+static int get(input *in, filepos *pos, rdstringc *rsc) {
+ int pushbackpt = in->stack ? in->stack->npushback : 0;
+ if (in->npushback > pushbackpt) {
+ --in->npushback;
+ if (pos)
+ *pos = in->pushback[in->npushback].pos; /* structure copy */
+ return in->pushback[in->npushback].chr;
+ }
+ else if (in->stack) {
+ wchar_t c = in->stack->text[in->stack->ptr];
+ if (pos)
+ *pos = in->stack->pos;
+ if (in->stack->text[++in->stack->ptr] == L'\0') {
+ macrostack *tmp = in->stack;
+ in->stack = tmp->next;
+ sfree(tmp);
+ }
+ return c;
+ }
+ else if (in->currfp) {
+
+ while (in->wcpos >= in->nwc) {
+
+ int c = getc(in->currfp);
+
+ if (c == EOF) {
+ fclose(in->currfp);
+ in->currfp = NULL;
+ return EOF;
+ }
+
+ if (rsc)
+ rdaddc(rsc, c);
+
+ /* Track line numbers, for error reporting */
+ if (pos)
+ *pos = in->pos;
+ if (in->reportcols) {
+ switch (c) {
+ case '\t':
+ in->pos.col = 1 + (in->pos.col + TAB_STOP-1) % TAB_STOP;
+ break;
+ case '\n':
+ in->pos.col = 1;
+ in->pos.line++;
+ break;
+ default:
+ in->pos.col++;
+ break;
+ }
+ } else {
+ in->pos.col = -1;
+ if (c == '\n')
+ in->pos.line++;
+ }
+
+ /*
+ * Do input character set translation, so that we return
+ * Unicode.
+ */
+ {
+ char buf[1];
+ char const *p;
+ int inlen;
+
+ buf[0] = (char)c;
+ p = buf;
+ inlen = 1;
+
+ in->nwc = charset_to_unicode(&p, &inlen,
+ in->wc, lenof(in->wc),
+ in->charset, &in->csstate,
+ NULL, 0);
+ assert(p == buf+1 && inlen == 0);
+
+ in->wcpos = 0;
+ }
+ }
+
+ return in->wc[in->wcpos++];
+
+ } else
+ return EOF;
+}
+
+/*
+ * Lexical analysis of source files.
+ */
+typedef struct token_Tag token;
+struct token_Tag {
+ int type;
+ int cmd, aux;
+ wchar_t *text;
+ char *origtext;
+ filepos pos;
+};
+enum {
+ tok_eof, /* end of file */
+ tok_eop, /* end of paragraph */
+ tok_white, /* whitespace */
+ tok_word, /* a word or word fragment */
+ tok_cmd, /* \command */
+ tok_lbrace, /* { */
+ tok_rbrace /* } */
+};
+
+/* Halibut command keywords. */
+enum {
+ c__invalid, /* invalid command */
+ c__comment, /* comment command (\#) */
+ c__escaped, /* escaped character */
+ c__nop, /* no-op */
+ c__nbsp, /* nonbreaking space */
+ c_A, /* appendix heading */
+ c_B, /* bibliography entry */
+ c_BR, /* bibliography rewrite */
+ c_C, /* chapter heading */
+ c_G, /* graphic */
+ c_H, /* heading */
+ c_I, /* invisible index mark */
+ c_IM, /* index merge/rewrite */
+ c_K, /* capitalised cross-reference */
+ c_S, /* aux field is 0, 1, 2, ... */
+ c_U, /* unnumbered-chapter heading */
+ c_W, /* Web hyperlink */
+ c_b, /* bulletted list */
+ c_c, /* code */
+ c_cfg, /* configuration directive */
+ c_copyright, /* copyright statement */
+ c_cq, /* quoted code (sugar for \q{\cw{x}}) */
+ c_cw, /* weak code */
+ c_date, /* document processing date */
+ c_dd, /* description list: description */
+ c_define, /* macro definition */
+ c_dt, /* description list: described thing */
+ c_e, /* emphasis */
+ c_f, /* strong (fat) */
+ c_i, /* visible index mark */
+ c_ii, /* uncapitalised visible index mark */
+ c_k, /* uncapitalised cross-reference */
+ c_lcont, /* continuation para(s) for list item */
+ c_n, /* numbered list */
+ c_nocite, /* bibliography trickery */
+ c_preamble, /* (obsolete) preamble text */
+ c_q, /* quote marks */
+ c_quote, /* block-quoted paragraphs */
+ c_rule, /* horizontal rule */
+ c_title, /* document title */
+ c_u, /* aux field is char code */
+ c_versionid /* document RCS id */
+};
+
+/* Perhaps whitespace should be defined in a more Unicode-friendly way? */
+#define iswhite(c) ( (c)==32 || (c)==9 || (c)==13 || (c)==10 )
+#define isnl(c) ( (c)==10 )
+#define isdec(c) ( ((c)>='0'&&(c)<='9') )
+#define fromdec(c) ( (c)-'0' )
+#define ishex(c) ( ((c)>='0'&&(c)<='9') || ((c)>='A'&&(c)<='F') || ((c)>='a'&&(c)<='f'))
+#define fromhex(c) ( (c)<='9' ? (c)-'0' : ((c)&0xDF) - ('A'-10) )
+#define iscmd(c) ( ((c)>='0'&&(c)<='9') || ((c)>='A'&&(c)<='Z') || ((c)>='a'&&(c)<='z'))
+
+/*
+ * Keyword comparison function. Like strcmp, but between a wchar_t *
+ * and a char *.
+ */
+static int kwcmp(wchar_t const *p, char const *q) {
+ int i;
+ do {
+ i = *p - *q;
+ } while (*p++ && *q++ && !i);
+ return i;
+}
+
+/*
+ * Match a keyword.
+ */
+static void match_kw(token *tok) {
+ /*
+ * FIXME. The ids are explicit in here so as to allow long-name
+ * equivalents to the various very short keywords.
+ */
+ static const struct { char const *name; int id; } keywords[] = {
+ {"#", c__comment}, /* comment command (\#) */
+ {"-", c__escaped}, /* nonbreaking hyphen */
+ {".", c__nop}, /* no-op */
+ {"A", c_A}, /* appendix heading */
+ {"B", c_B}, /* bibliography entry */
+ {"BR", c_BR}, /* bibliography rewrite */
+ {"C", c_C}, /* chapter heading */
+ {"G", c_G}, /* graphic */
+ {"H", c_H}, /* heading */
+ {"I", c_I}, /* invisible index mark */
+ {"IM", c_IM}, /* index merge/rewrite */
+ {"K", c_K}, /* capitalised cross-reference */
+ {"U", c_U}, /* unnumbered-chapter heading */
+ {"W", c_W}, /* Web hyperlink */
+ {"\\", c__escaped}, /* escaped backslash (\\) */
+ {"_", c__nbsp}, /* nonbreaking space (\_) */
+ {"b", c_b}, /* bulletted list */
+ {"c", c_c}, /* code */
+ {"cfg", c_cfg}, /* configuration directive */
+ {"copyright", c_copyright}, /* copyright statement */
+ {"cq", c_cq}, /* quoted code (sugar for \q{\cw{x}}) */
+ {"cw", c_cw}, /* weak code */
+ {"date", c_date}, /* document processing date */
+ {"dd", c_dd}, /* description list: description */
+ {"define", c_define}, /* macro definition */
+ {"dt", c_dt}, /* description list: described thing */
+ {"e", c_e}, /* emphasis */
+ {"f", c_f}, /* strong (fat) */
+ {"i", c_i}, /* visible index mark */
+ {"ii", c_ii}, /* uncapitalised visible index mark */
+ {"k", c_k}, /* uncapitalised cross-reference */
+ {"lcont", c_lcont}, /* continuation para(s) for list item */
+ {"n", c_n}, /* numbered list */
+ {"nocite", c_nocite}, /* bibliography trickery */
+ {"preamble", c_preamble}, /* (obsolete) preamble text */
+ {"q", c_q}, /* quote marks */
+ {"quote", c_quote}, /* block-quoted paragraphs */
+ {"rule", c_rule}, /* horizontal rule */
+ {"title", c_title}, /* document title */
+ {"versionid", c_versionid}, /* document RCS id */
+ {"{", c__escaped}, /* escaped lbrace (\{) */
+ {"}", c__escaped}, /* escaped rbrace (\}) */
+ };
+ int i, j, k, c;
+
+ /*
+ * Special cases: \S{0,1,2,...} and \uABCD. If the syntax
+ * doesn't match correctly, we just fall through to the
+ * binary-search phase.
+ */
+ if (tok->text[0] == 'S') {
+ /* We expect numeric characters thereafter. */
+ wchar_t *p = tok->text+1;
+ int n;
+ if (!*p)
+ n = 1;
+ else {
+ n = 0;
+ while (*p && isdec(*p)) {
+ n = 10 * n + fromdec(*p);
+ p++;
+ }
+ }
+ if (!*p) {
+ tok->cmd = c_S;
+ tok->aux = n;
+ return;
+ }
+ } else if (tok->text[0] == 'u') {
+ /* We expect hex characters thereafter. */
+ wchar_t *p = tok->text+1;
+ int n = 0;
+ while (*p && ishex(*p)) {
+ n = 16 * n + fromhex(*p);
+ p++;
+ }
+ if (!*p) {
+ tok->cmd = c_u;
+ tok->aux = n;
+ return;
+ }
+ }
+
+ i = -1;
+ j = sizeof(keywords)/sizeof(*keywords);
+ while (j-i > 1) {
+ k = (i+j)/2;
+ c = kwcmp(tok->text, keywords[k].name);
+ if (c < 0)
+ j = k;
+ else if (c > 0)
+ i = k;
+ else /* c == 0 */ {
+ tok->cmd = keywords[k].id;
+ return;
+ }
+ }
+
+ tok->cmd = c__invalid;
+}
+
+
+/*
+ * Read a token from the input file, in the normal way (`normal' in
+ * the sense that code paragraphs work a different way).
+ */
+token get_token(input *in) {
+ int c;
+ int nls;
+ int prevpos;
+ token ret;
+ rdstring rs = { 0, 0, NULL };
+ rdstringc rsc = { 0, 0, NULL };
+ filepos cpos;
+
+ ret.text = NULL; /* default */
+ ret.origtext = NULL; /* default */
+ if (in->pushback_chars) {
+ rdaddsc(&rsc, in->pushback_chars);
+ sfree(in->pushback_chars);
+ in->pushback_chars = NULL;
+ }
+ c = get(in, &cpos, &rsc);
+ ret.pos = cpos;
+ if (iswhite(c)) { /* tok_white or tok_eop */
+ nls = 0;
+ prevpos = 0;
+ do {
+ if (isnl(c))
+ nls++;
+ prevpos = rsc.pos;
+ } while ((c = get(in, &cpos, &rsc)) != EOF && iswhite(c));
+ if (c == EOF) {
+ ret.type = tok_eof;
+ sfree(rsc.text);
+ return ret;
+ }
+ if (rsc.text) {
+ in->pushback_chars = dupstr(rsc.text + prevpos);
+ sfree(rsc.text);
+ }
+ unget(in, c, &cpos);
+ ret.type = (nls > 1 ? tok_eop : tok_white);
+ return ret;
+ } else if (c == EOF) { /* tok_eof */
+ ret.type = tok_eof;
+ sfree(rsc.text);
+ return ret;
+ } else if (c == '\\') { /* tok_cmd */
+ rsc.pos = prevpos = 0;
+ c = get(in, &cpos, &rsc);
+ if (c == '-' || c == '\\' || c == '_' ||
+ c == '#' || c == '{' || c == '}' || c == '.') {
+ /* single-char command */
+ rdadd(&rs, c);
+ prevpos = rsc.pos;
+ } else if (c == 'u') {
+ int len = 0;
+ do {
+ rdadd(&rs, c);
+ len++;
+ prevpos = rsc.pos;
+ c = get(in, &cpos, &rsc);
+ } while (ishex(c) && len < 5);
+ unget(in, c, &cpos);
+ } else if (iscmd(c)) {
+ do {
+ rdadd(&rs, c);
+ prevpos = rsc.pos;
+ c = get(in, &cpos, &rsc);
+ } while (iscmd(c));
+ unget(in, c, &cpos);
+ }
+ /*
+ * Now match the command against the list of available
+ * ones.
+ */
+ ret.type = tok_cmd;
+ ret.text = ustrdup(rs.text);
+ if (rsc.text) {
+ in->pushback_chars = dupstr(rsc.text + prevpos);
+ rsc.text[prevpos] = '\0';
+ ret.origtext = dupstr(rsc.text);
+ } else {
+ ret.origtext = dupstr("");
+ }
+ match_kw(&ret);
+ sfree(rs.text);
+ sfree(rsc.text);
+ return ret;
+ } else if (c == '{') { /* tok_lbrace */
+ ret.type = tok_lbrace;
+ sfree(rsc.text);
+ return ret;
+ } else if (c == '}') { /* tok_rbrace */
+ ret.type = tok_rbrace;
+ sfree(rsc.text);
+ return ret;
+ } else { /* tok_word */
+ /*
+ * Read a word: the longest possible contiguous sequence of
+ * things other than whitespace, backslash, braces and
+ * hyphen. A hyphen terminates the word but is returned as
+ * part of it; everything else is pushed back for the next
+ * token. The `aux' field contains TRUE if the word ends in
+ * a hyphen.
+ */
+ ret.aux = FALSE; /* assumed for now */
+ prevpos = 0;
+ while (1) {
+ if (iswhite(c) || c=='{' || c=='}' || c=='\\' || c==EOF) {
+ /* Put back the character that caused termination */
+ unget(in, c, &cpos);
+ break;
+ } else {
+ rdadd(&rs, c);
+ if (c == '-') {
+ prevpos = rsc.pos;
+ ret.aux = TRUE;
+ break; /* hyphen terminates word */
+ }
+ }
+ prevpos = rsc.pos;
+ c = get(in, &cpos, &rsc);
+ }
+ ret.type = tok_word;
+ ret.text = ustrdup(rs.text);
+ if (rsc.text) {
+ in->pushback_chars = dupstr(rsc.text + prevpos);
+ rsc.text[prevpos] = '\0';
+ ret.origtext = dupstr(rsc.text);
+ } else {
+ ret.origtext = dupstr("");
+ }
+ sfree(rs.text);
+ sfree(rsc.text);
+ return ret;
+ }
+}
+
+/*
+ * Determine whether the next input character is an open brace (for
+ * telling code paragraphs from paragraphs which merely start with
+ * code).
+ */
+int isbrace(input *in) {
+ int c;
+ filepos cpos;
+
+ c = get(in, &cpos, NULL);
+ unget(in, c, &cpos);
+ return (c == '{');
+}
+
+/*
+ * Read the rest of a line that starts `\c'. Including nothing at
+ * all (tok_word with empty text).
+ */
+token get_codepar_token(input *in) {
+ int c;
+ token ret;
+ rdstring rs = { 0, 0, NULL };
+ filepos cpos;
+
+ ret.type = tok_word;
+ ret.origtext = NULL;
+ c = get(in, &cpos, NULL); /* expect (and discard) one space */
+ ret.pos = cpos;
+ if (c == ' ') {
+ c = get(in, &cpos, NULL);
+ ret.pos = cpos;
+ }
+ while (!isnl(c) && c != EOF) {
+ int c2 = c;
+ c = get(in, &cpos, NULL);
+ /* Discard \r just before \n. */
+ if (c2 != 13 || !isnl(c))
+ rdadd(&rs, c2);
+ }
+ unget(in, c, &cpos);
+ ret.text = ustrdup(rs.text);
+ sfree(rs.text);
+ return ret;
+}
+
+/*
+ * Adds a new word to a linked list
+ */
+static word *addword(word newword, word ***hptrptr) {
+ word *mnewword;
+ if (!hptrptr)
+ return NULL;
+ mnewword = snew(word);
+ *mnewword = newword; /* structure copy */
+ mnewword->next = NULL;
+ **hptrptr = mnewword;
+ *hptrptr = &mnewword->next;
+ return mnewword;
+}
+
+/*
+ * Adds a new paragraph to a linked list
+ */
+static paragraph *addpara(paragraph newpara, paragraph ***hptrptr) {
+ paragraph *mnewpara = snew(paragraph);
+ *mnewpara = newpara; /* structure copy */
+ mnewpara->next = NULL;
+ **hptrptr = mnewpara;
+ *hptrptr = &mnewpara->next;
+ return mnewpara;
+}
+
+/*
+ * Destructor before token is reassigned; should catch most memory
+ * leaks
+ */
+#define dtor(t) ( sfree(t.text), sfree(t.origtext) )
+
+/*
+ * Reads a single file (ie until get() returns EOF)
+ */
+static void read_file(paragraph ***ret, input *in, indexdata *idx,
+ tree234 *macros) {
+ token t;
+ paragraph par;
+ word wd, **whptr, **idximplicit;
+ wchar_t utext[2], *wdtext;
+ int style, spcstyle;
+ int already;
+ int iswhite, seenwhite;
+ int type;
+ int prev_para_type;
+ struct stack_item {
+ enum {
+ stack_nop = 0, /* do nothing (for error recovery) */
+ stack_ualt = 1, /* \u alternative */
+ stack_style = 2, /* \e, \c, \cw */
+ stack_idx = 4, /* \I, \i, \ii */
+ stack_hyper = 8, /* \W */
+ stack_quote = 16, /* \q */
+ stack_alttext = 32 /* \G */
+ } type;
+ word **whptr; /* to restore from \u alternatives */
+ word **idximplicit; /* to restore from \u alternatives */
+ filepos fpos;
+ int in_code;
+ } *sitem;
+ stack parsestk;
+ struct crossparaitem {
+ int type; /* currently c_lcont, c_quote or -1 */
+ int seen_lcont, seen_quote;
+ };
+ stack crossparastk;
+ word *indexword, *uword, *iword;
+ word *idxwordlist;
+ rdstring indexstr;
+ int index_downcase, index_visible, indexing;
+ const rdstring nullrs = { 0, 0, NULL };
+ wchar_t uchr;
+
+ t.text = NULL;
+ t.origtext = NULL;
+ already = FALSE;
+
+ crossparastk = stk_new();
+
+ /*
+ * Loop on each paragraph.
+ */
+ while (1) {
+ int start_cmd = c__invalid;
+ par.words = NULL;
+ par.keyword = NULL;
+ par.origkeyword = NULL;
+ whptr = &par.words;
+
+ /*
+ * Get a token.
+ */
+ do {
+ if (!already) {
+ dtor(t), t = get_token(in);
+ }
+ already = FALSE;
+ } while (t.type == tok_eop);
+ if (t.type == tok_eof)
+ break;
+
+ /*
+ * Parse code paragraphs separately.
+ */
+ if (t.type == tok_cmd && t.cmd == c_c && !isbrace(in)) {
+ int wtype = word_WeakCode;
+
+ par.type = para_Code;
+ par.fpos = t.pos;
+ while (1) {
+ dtor(t), t = get_codepar_token(in);
+ wd.type = wtype;
+ wd.breaks = FALSE; /* shouldn't need this... */
+ wd.text = ustrdup(t.text);
+ wd.alt = NULL;
+ wd.fpos = t.pos;
+ addword(wd, &whptr);
+ dtor(t), t = get_token(in);
+ if (t.type == tok_white) {
+ /*
+ * The newline after a code-paragraph line
+ */
+ dtor(t), t = get_token(in);
+ }
+ if (t.type == tok_eop || t.type == tok_eof ||
+ t.type == tok_rbrace) { /* might be } terminating \lcont */
+ if (t.type == tok_rbrace)
+ already = TRUE;
+ break;
+ } else if (t.type == tok_cmd && t.cmd == c_c) {
+ wtype = word_WeakCode;
+ } else if (t.type == tok_cmd && t.cmd == c_e &&
+ wtype == word_WeakCode) {
+ wtype = word_Emph;
+ } else if (t.type == tok_cmd && t.cmd == c_f &&
+ wtype == word_WeakCode) {
+ wtype = word_Strong;
+ } else {
+ error(err_brokencodepara, &t.pos);
+ prev_para_type = par.type;
+ addpara(par, ret);
+ while (t.type != tok_eop) /* error recovery: */
+ dtor(t), t = get_token(in); /* eat rest of paragraph */
+ goto codeparabroken; /* ick, but such is life */
+ }
+ }
+ prev_para_type = par.type;
+ addpara(par, ret);
+ codeparabroken:
+ continue;
+ }
+
+ /*
+ * Spot the special commands that define a grouping of more
+ * than one paragraph, and also the closing braces that
+ * finish them.
+ */
+ if (t.type == tok_cmd &&
+ (t.cmd == c_lcont || t.cmd == c_quote)) {
+ struct crossparaitem *sitem, *stop;
+ int cmd = t.cmd;
+
+ /*
+ * Expect, and swallow, an open brace.
+ */
+ dtor(t), t = get_token(in);
+ if (t.type != tok_lbrace) {
+ error(err_explbr, &t.pos);
+ continue;
+ }
+
+ /*
+ * Also expect, and swallow, any whitespace after that
+ * (a newline before a code paragraph wouldn't be
+ * surprising).
+ */
+ do {
+ dtor(t), t = get_token(in);
+ } while (t.type == tok_white);
+ already = TRUE;
+
+ if (cmd == c_lcont) {
+ /*
+ * \lcont causes a continuation of a list item into
+ * multiple paragraphs (which may in turn contain
+ * nested lists, code paras etc). Hence, the previous
+ * paragraph must be of a list type.
+ */
+ sitem = snew(struct crossparaitem);
+ stop = (struct crossparaitem *)stk_top(crossparastk);
+ if (stop)
+ *sitem = *stop;
+ else
+ sitem->seen_quote = sitem->seen_lcont = 0;
+
+ if (prev_para_type == para_Bullet ||
+ prev_para_type == para_NumberedList ||
+ prev_para_type == para_Description) {
+ sitem->type = c_lcont;
+ sitem->seen_lcont = 1;
+ par.type = para_LcontPush;
+ prev_para_type = par.type;
+ addpara(par, ret);
+ } else {
+ /*
+ * Push a null item on the cross-para stack so that
+ * when we see the corresponding closing brace we
+ * don't give a cascade error.
+ */
+ sitem->type = -1;
+ error(err_misplacedlcont, &t.pos);
+ }
+ } else {
+ /*
+ * \quote causes a group of paragraphs to be
+ * block-quoted (typically they will be indented a
+ * bit).
+ */
+ sitem = snew(struct crossparaitem);
+ stop = (struct crossparaitem *)stk_top(crossparastk);
+ if (stop)
+ *sitem = *stop;
+ else
+ sitem->seen_quote = sitem->seen_lcont = 0;
+ sitem->type = c_quote;
+ sitem->seen_quote = 1;
+ par.type = para_QuotePush;
+ prev_para_type = par.type;
+ addpara(par, ret);
+ }
+ stk_push(crossparastk, sitem);
+ continue;
+ } else if (t.type == tok_rbrace) {
+ struct crossparaitem *sitem = stk_pop(crossparastk);
+ if (!sitem)
+ error(err_unexbrace, &t.pos);
+ else {
+ switch (sitem->type) {
+ case c_lcont:
+ par.type = para_LcontPop;
+ prev_para_type = par.type;
+ addpara(par, ret);
+ break;
+ case c_quote:
+ par.type = para_QuotePop;
+ prev_para_type = par.type;
+ addpara(par, ret);
+ break;
+ }
+ sfree(sitem);
+ }
+ continue;
+ }
+
+ while (t.type == tok_cmd &&
+ macrolookup(macros, in, t.text, &t.pos)) {
+ dtor(t), t = get_token(in);
+ }
+
+ /*
+ * This token begins a paragraph. See if it's one of the
+ * special commands that define a paragraph type.
+ *
+ * (note that \# is special in a way, and \nocite takes no
+ * text)
+ */
+ par.type = para_Normal;
+ if (t.type == tok_cmd) {
+ int needkw;
+ int is_macro = FALSE;
+
+ par.fpos = t.pos;
+ switch (t.cmd) {
+ default:
+ needkw = -1;
+ break;
+ case c__invalid:
+ error(err_badparatype, t.text, &t.pos);
+ needkw = 4;
+ break;
+ case c__comment:
+ if (isbrace(in))
+ break; /* `\#{': isn't a comment para */
+ do {
+ dtor(t), t = get_token(in);
+ } while (t.type != tok_eop && t.type != tok_eof);
+ continue; /* next paragraph */
+ /*
+ * `needkw' values:
+ *
+ * 1 -- exactly one keyword
+ * 2 -- at least one keyword
+ * 4 -- any number of keywords including zero
+ * 8 -- at least one keyword and then nothing else
+ * 16 -- nothing at all! no keywords, no body
+ * 32 -- no keywords at all
+ */
+ case c_A: needkw = 2; par.type = para_Appendix; break;
+ case c_B: needkw = 2; par.type = para_Biblio; break;
+ case c_BR: needkw = 1; par.type = para_BR;
+ start_cmd = c_BR; break;
+ case c_C: needkw = 2; par.type = para_Chapter; break;
+ case c_H: needkw = 2; par.type = para_Heading;
+ par.aux = 0;
+ break;
+ case c_IM: needkw = 2; par.type = para_IM;
+ start_cmd = c_IM; break;
+ case c_S: needkw = 2; par.type = para_Subsect;
+ par.aux = t.aux; break;
+ case c_U: needkw = 32; par.type = para_UnnumberedChapter; break;
+ /* For \b and \n the keyword is optional */
+ case c_b: needkw = 4; par.type = para_Bullet; break;
+ case c_dt: needkw = 4; par.type = para_DescribedThing; break;
+ case c_dd: needkw = 4; par.type = para_Description; break;
+ case c_n: needkw = 4; par.type = para_NumberedList; break;
+ case c_cfg: needkw = 8; par.type = para_Config;
+ start_cmd = c_cfg; break;
+ case c_copyright: needkw = 32; par.type = para_Copyright; break;
+ case c_define: is_macro = TRUE; needkw = 1; break;
+ /* For \nocite the keyword is _everything_ */
+ case c_nocite: needkw = 8; par.type = para_NoCite; break;
+ case c_preamble: needkw = 32; par.type = para_Normal; break;
+ case c_rule: needkw = 16; par.type = para_Rule; break;
+ case c_title: needkw = 32; par.type = para_Title; break;
+ case c_versionid: needkw = 32; par.type = para_VersionID; break;
+ }
+
+ if (par.type == para_Chapter ||
+ par.type == para_Heading ||
+ par.type == para_Subsect ||
+ par.type == para_Appendix ||
+ par.type == para_UnnumberedChapter) {
+ struct crossparaitem *sitem = stk_top(crossparastk);
+ if (sitem && (sitem->seen_lcont || sitem->seen_quote)) {
+ error(err_sectmarkerinblock,
+ &t.pos,
+ (sitem->seen_lcont ? "lcont" : "quote"));
+ }
+ }
+
+ if (needkw > 0) {
+ rdstring rs = { 0, 0, NULL };
+ rdstringc rsc = { 0, 0, NULL };
+ int nkeys = 0;
+ filepos fp;
+
+ /* Get keywords. */
+ dtor(t), t = get_token(in);
+ fp = t.pos;
+ while (t.type == tok_lbrace ||
+ (t.type == tok_white && (needkw & 24))) {
+ /*
+ * In paragraph types which can't accept any
+ * body text (such as \cfg), we are lenient
+ * about whitespace between keywords. This is
+ * important for \cfg in particular since it
+ * can often have many keywords which are long
+ * pieces of text, so it's useful to permit the
+ * user to wrap the line between them.
+ */
+ if (t.type == tok_white) {
+ dtor(t), t = get_token(in); /* eat the space */
+ continue;
+ }
+ /* This is a keyword. */
+ nkeys++;
+ /* FIXME: there will be bugs if anyone specifies an
+ * empty keyword (\foo{}), so trap this case. */
+ while (dtor(t), t = get_token(in),
+ t.type == tok_word ||
+ t.type == tok_white ||
+ (t.type == tok_cmd && t.cmd == c__nbsp) ||
+ (t.type == tok_cmd && t.cmd == c__escaped) ||
+ (t.type == tok_cmd && t.cmd == c_u)) {
+ if (t.type == tok_white ||
+ (t.type == tok_cmd && t.cmd == c__nbsp)) {
+ rdadd(&rs, ' ');
+ rdaddc(&rsc, ' ');
+ } else if (t.type == tok_cmd && t.cmd == c_u) {
+ rdadd(&rs, t.aux);
+ rdaddc(&rsc, '\\');
+ rdaddsc(&rsc, t.origtext);
+ } else {
+ rdadds(&rs, t.text);
+ rdaddsc(&rsc, t.origtext);
+ }
+ }
+ if (t.type != tok_rbrace) {
+ error(err_kwunclosed, &t.pos);
+ continue;
+ }
+ rdadd(&rs, 0); /* add string terminator */
+ rdaddc(&rsc, 0); /* add string terminator */
+ dtor(t), t = get_token(in); /* eat right brace */
+ }
+
+ rdadd(&rs, 0); /* add string terminator */
+ rdaddc(&rsc, 0); /* add string terminator */
+
+ /* See whether we have the right number of keywords. */
+ if ((needkw & 48) && nkeys > 0)
+ error(err_kwillegal, &fp);
+ if ((needkw & 11) && nkeys == 0)
+ error(err_kwexpected, &fp);
+ if ((needkw & 5) && nkeys > 1)
+ error(err_kwtoomany, &fp);
+
+ if (is_macro) {
+ /*
+ * Macro definition. Get the rest of the line
+ * as a code-paragraph token, repeatedly until
+ * there's nothing more left of it. Separate
+ * with newlines.
+ */
+ rdstring macrotext = { 0, 0, NULL };
+ while (1) {
+ dtor(t), t = get_codepar_token(in);
+ if (macrotext.pos > 0)
+ rdadd(&macrotext, L'\n');
+ rdadds(&macrotext, t.text);
+ dtor(t), t = get_token(in);
+ if (t.type == tok_eop) break;
+ }
+ macrodef(macros, rs.text, macrotext.text, fp);
+ continue; /* next paragraph */
+ }
+
+ par.keyword = rdtrim(&rs);
+ par.origkeyword = rdtrimc(&rsc);
+
+ /* Move to EOP in case of needkw==8 or 16 (no body) */
+ if (needkw & 24) {
+ /* We allow whitespace even when we expect no para body */
+ while (t.type == tok_white)
+ dtor(t), t = get_token(in);
+ if (t.type != tok_eop && t.type != tok_eof &&
+ (start_cmd == c__invalid ||
+ t.type != tok_cmd || t.cmd != start_cmd)) {
+ error(err_bodyillegal, &t.pos);
+ /* Error recovery: eat the rest of the paragraph */
+ while (t.type != tok_eop && t.type != tok_eof &&
+ (start_cmd == c__invalid ||
+ t.type != tok_cmd || t.cmd != start_cmd))
+ dtor(t), t = get_token(in);
+ }
+ if (t.type == tok_cmd)
+ already = TRUE;/* inhibit get_token at top of loop */
+ prev_para_type = par.type;
+ addpara(par, ret);
+
+ if (par.type == para_Config) {
+ input_configure(in, &par);
+ }
+ continue; /* next paragraph */
+ }
+ }
+ }
+
+ /*
+ * Now read the actual paragraph, word by word, adding to
+ * the paragraph list.
+ *
+ * Mid-paragraph commands:
+ *
+ * \K \k
+ * \c \cw \cq
+ * \e
+ * \i \ii
+ * \I
+ * \q
+ * \u
+ * \W
+ * \date
+ * \\ \{ \}
+ */
+ parsestk = stk_new();
+ style = word_Normal;
+ spcstyle = word_WhiteSpace;
+ indexing = FALSE;
+ seenwhite = TRUE;
+ while (t.type != tok_eop && t.type != tok_eof) {
+ iswhite = FALSE;
+ already = FALSE;
+
+ /* Handle implicit paragraph breaks after \IM, \BR etc */
+ if (start_cmd != c__invalid &&
+ t.type == tok_cmd && t.cmd == start_cmd) {
+ already = TRUE; /* inhibit get_token at top of loop */
+ break;
+ }
+
+ if (t.type == tok_cmd && t.cmd == c__nop) {
+ dtor(t), t = get_token(in);
+ continue; /* do nothing! */
+ }
+
+ if (t.type == tok_cmd && t.cmd == c__escaped) {
+ t.type = tok_word; /* nice and simple */
+ t.aux = 0; /* even if `\-' - nonbreaking! */
+ }
+ if (t.type == tok_cmd && t.cmd == c__nbsp) {
+ t.type = tok_word; /* nice and simple */
+ sfree(t.text);
+ t.text = ustrdup(L" "); /* text is ` ' not `_' */
+ t.aux = 0; /* (nonbreaking) */
+ }
+ switch (t.type) {
+ case tok_white:
+ if (whptr == &par.words)
+ break; /* strip whitespace at start of para */
+ wd.text = NULL;
+ wd.type = spcstyle;
+ wd.alt = NULL;
+ wd.aux = 0;
+ wd.fpos = t.pos;
+ wd.breaks = FALSE;
+
+ /*
+ * Inhibit use of whitespace if it's (probably the
+ * newline) before a repeat \IM / \BR type
+ * directive.
+ */
+ if (start_cmd != c__invalid) {
+ dtor(t), t = get_token(in);
+ already = TRUE;
+ if (t.type == tok_cmd && t.cmd == start_cmd)
+ break;
+ }
+
+ if (indexing)
+ rdadd(&indexstr, ' ');
+ if (!indexing || index_visible)
+ addword(wd, &whptr);
+ if (indexing)
+ addword(wd, &idximplicit);
+ iswhite = TRUE;
+ break;
+ case tok_word:
+ if (indexing)
+ rdadds(&indexstr, t.text);
+ wd.type = style;
+ wd.alt = NULL;
+ wd.aux = 0;
+ wd.fpos = t.pos;
+ wd.breaks = t.aux;
+ if (!indexing || index_visible) {
+ wd.text = ustrdup(t.text);
+ addword(wd, &whptr);
+ }
+ if (indexing) {
+ wd.text = ustrdup(t.text);
+ addword(wd, &idximplicit);
+ }
+ break;
+ case tok_lbrace:
+ error(err_unexbrace, &t.pos);
+ /* Error recovery: push nop */
+ sitem = snew(struct stack_item);
+ sitem->type = stack_nop;
+ sitem->fpos = t.pos;
+ stk_push(parsestk, sitem);
+ break;
+ case tok_rbrace:
+ sitem = stk_pop(parsestk);
+ if (!sitem) {
+ /*
+ * This closing brace could have been an
+ * indication that the cross-paragraph stack
+ * wants popping. Accordingly, we treat it here
+ * as an indication that the paragraph is over.
+ */
+ already = TRUE;
+ goto finished_para;
+ } else {
+ if (sitem->type & stack_ualt) {
+ whptr = sitem->whptr;
+ idximplicit = sitem->idximplicit;
+ }
+ if (sitem->type & stack_style) {
+ style = word_Normal;
+ spcstyle = word_WhiteSpace;
+ }
+ if (sitem->type & stack_idx) {
+ indexword->text = ustrdup(indexstr.text);
+ if (index_downcase) {
+ word *w;
+
+ ustrlow(indexword->text);
+ ustrlow(indexstr.text);
+
+ for (w = idxwordlist; w; w = w->next)
+ if (w->text)
+ ustrlow(w->text);
+ }
+ indexing = FALSE;
+ rdadd(&indexstr, L'\0');
+ index_merge(idx, FALSE, indexstr.text,
+ idxwordlist, &sitem->fpos);
+ sfree(indexstr.text);
+ }
+ if (sitem->type & stack_hyper) {
+ wd.text = NULL;
+ wd.type = word_HyperEnd;
+ wd.alt = NULL;
+ wd.aux = 0;
+ wd.fpos = t.pos;
+ wd.breaks = FALSE;
+ if (!indexing || index_visible)
+ addword(wd, &whptr);
+ if (indexing)
+ addword(wd, &idximplicit);
+ }
+ if (sitem->type & stack_quote) {
+ wd.text = NULL;
+ wd.type = toquotestyle(style);
+ wd.alt = NULL;
+ wd.aux = quote_Close;
+ wd.fpos = t.pos;
+ wd.breaks = FALSE;
+ if (!indexing || index_visible)
+ addword(wd, &whptr);
+ if (indexing) {
+ rdadd(&indexstr, L'"');
+ addword(wd, &idximplicit);
+ }
+ }
+ }
+ sfree(sitem);
+ break;
+ case tok_cmd:
+ switch (t.cmd) {
+ case c__comment:
+ /*
+ * In-paragraph comment: \#{ balanced braces }
+ *
+ * Anything goes here; even tok_eop. We should
+ * eat whitespace after the close brace _if_
+ * there was whitespace before the \#.
+ */
+ dtor(t), t = get_token(in);
+ if (t.type != tok_lbrace) {
+ error(err_explbr, &t.pos);
+ } else {
+ int braces = 1;
+ while (braces > 0) {
+ dtor(t), t = get_token(in);
+ if (t.type == tok_lbrace)
+ braces++;
+ else if (t.type == tok_rbrace)
+ braces--;
+ else if (t.type == tok_eof) {
+ error(err_commenteof, &t.pos);
+ break;
+ }
+ }
+ }
+ if (seenwhite) {
+ already = TRUE;
+ dtor(t), t = get_token(in);
+ if (t.type == tok_white) {
+ iswhite = TRUE;
+ already = FALSE;
+ }
+ }
+ break;
+ case c_q:
+ case c_cq:
+ type = t.cmd;
+ dtor(t), t = get_token(in);
+ if (t.type != tok_lbrace) {
+ error(err_explbr, &t.pos);
+ } else {
+ /*
+ * Enforce that \q may not be used anywhere
+ * within \c. (It shouldn't be necessary
+ * since the whole point of \c should be
+ * that the user wants to exercise exact
+ * control over the glyphs used, and
+ * forbidding it has the useful effect of
+ * relieving some backends of having to
+ * make difficult decisions.)
+ */
+ int stype;
+
+ if (style != word_Code && style != word_WeakCode) {
+ wd.text = NULL;
+ wd.type = toquotestyle(style);
+ wd.alt = NULL;
+ wd.aux = quote_Open;
+ wd.fpos = t.pos;
+ wd.breaks = FALSE;
+ if (!indexing || index_visible)
+ addword(wd, &whptr);
+ if (indexing) {
+ rdadd(&indexstr, L'"');
+ addword(wd, &idximplicit);
+ }
+ stype = stack_quote;
+ } else {
+ error(err_codequote, &t.pos);
+ stype = stack_nop;
+ }
+ sitem = snew(struct stack_item);
+ sitem->fpos = t.pos;
+ sitem->type = stype;
+ if (type == c_cq) {
+ if (style != word_Normal) {
+ error(err_nestedstyles, &t.pos);
+ } else {
+ style = word_WeakCode;
+ spcstyle = tospacestyle(style);
+ sitem->type |= stack_style;
+ }
+ }
+ stk_push(parsestk, sitem);
+ }
+ break;
+ case c_K:
+ case c_k:
+ case c_W:
+ case c_G:
+ case c_date:
+ /*
+ * Keyword, hyperlink, or \date. We expect a
+ * left brace, some text, and then a right
+ * brace. No nesting; no arguments.
+ */
+ wd.fpos = t.pos;
+ wd.breaks = FALSE;
+ if (t.cmd == c_K)
+ wd.type = word_UpperXref;
+ else if (t.cmd == c_k)
+ wd.type = word_LowerXref;
+ else if (t.cmd == c_W)
+ wd.type = word_HyperLink;
+ else if (t.cmd == c_G)
+ wd.type = word_Graphic;
+ else
+ wd.type = word_Normal;
+ dtor(t), t = get_token(in);
+ if (t.type != tok_lbrace) {
+ if (wd.type == word_Normal) {
+ time_t thetime = time(NULL);
+ struct tm *broken = localtime(&thetime);
+ already = TRUE;
+ wdtext = ustrftime(NULL, broken);
+ wd.type = style;
+ } else {
+ error(err_explbr, &t.pos);
+ wdtext = NULL;
+ }
+ } else {
+ rdstring rs = { 0, 0, NULL };
+ while (dtor(t), t = get_token(in),
+ t.type == tok_word || t.type == tok_white) {
+ if (t.type == tok_white)
+ rdadd(&rs, ' ');
+ else
+ rdadds(&rs, t.text);
+ }
+ if (wd.type == word_Normal) {
+ time_t thetime = time(NULL);
+ struct tm *broken = localtime(&thetime);
+ wdtext = ustrftime(rs.text, broken);
+ wd.type = style;
+ } else {
+ wdtext = ustrdup(rs.text);
+ }
+ sfree(rs.text);
+ if (t.type != tok_rbrace) {
+ error(err_kwexprbr, &t.pos);
+ }
+ }
+ wd.alt = NULL;
+ wd.aux = 0;
+ if (!indexing || index_visible) {
+ wd.text = ustrdup(wdtext);
+ addword(wd, &whptr);
+ }
+ if (indexing) {
+ wd.text = ustrdup(wdtext);
+ addword(wd, &idximplicit);
+ }
+ sfree(wdtext);
+
+ if (wd.type == word_HyperLink) {
+ /*
+ * Hyperlinks are different: they then
+ * expect another left brace, to begin
+ * delimiting the text marked by the link.
+ */
+ dtor(t), t = get_token(in);
+ sitem = snew(struct stack_item);
+ sitem->fpos = wd.fpos;
+ sitem->type = stack_hyper;
+ /*
+ * Special cases: \W{}\i, \W{}\ii
+ */
+ if (t.type == tok_cmd &&
+ (t.cmd == c_i || t.cmd == c_ii)) {
+ if (indexing) {
+ error(err_nestedindex, &t.pos);
+ } else {
+ /* Add an index-reference word with no
+ * text as yet */
+ wd.type = word_IndexRef;
+ wd.text = NULL;
+ wd.alt = NULL;
+ wd.aux = 0;
+ wd.breaks = FALSE;
+ indexword = addword(wd, &whptr);
+ /* Set up a rdstring to read the
+ * index text */
+ indexstr = nullrs;
+ /* Flags so that we do the Right
+ * Things with text */
+ index_visible = (type != c_I);
+ index_downcase = (type == c_ii);
+ indexing = TRUE;
+ idxwordlist = NULL;
+ idximplicit = &idxwordlist;
+
+ sitem->type |= stack_idx;
+ }
+ dtor(t), t = get_token(in);
+ }
+ /*
+ * Special cases: \W{}\c, \W{}\e, \W{}\cw
+ */
+ if (t.type == tok_cmd &&
+ (t.cmd == c_e || t.cmd == c_f || t.cmd == c_c || t.cmd == c_cw)) {
+ if (style != word_Normal)
+ error(err_nestedstyles, &t.pos);
+ else {
+ style = (t.cmd == c_c ? word_Code :
+ t.cmd == c_cw ? word_WeakCode :
+ t.cmd == c_f ? word_Strong :
+ word_Emph);
+ spcstyle = tospacestyle(style);
+ sitem->type |= stack_style;
+ }
+ dtor(t), t = get_token(in);
+ }
+ if (t.type != tok_lbrace) {
+ error(err_explbr, &t.pos);
+ sfree(sitem);
+ } else {
+ stk_push(parsestk, sitem);
+ }
+ }
+ break;
+ case c_c:
+ case c_cw:
+ case c_e:
+ case c_f:
+ type = t.cmd;
+ if (style != word_Normal) {
+ error(err_nestedstyles, &t.pos);
+ /* Error recovery: eat lbrace, push nop. */
+ dtor(t), t = get_token(in);
+ sitem = snew(struct stack_item);
+ sitem->fpos = t.pos;
+ sitem->type = stack_nop;
+ stk_push(parsestk, sitem);
+ }
+ dtor(t), t = get_token(in);
+ if (t.type != tok_lbrace) {
+ error(err_explbr, &t.pos);
+ } else {
+ style = (type == c_c ? word_Code :
+ type == c_cw ? word_WeakCode :
+ type == c_f ? word_Strong :
+ word_Emph);
+ spcstyle = tospacestyle(style);
+ sitem = snew(struct stack_item);
+ sitem->fpos = t.pos;
+ sitem->type = stack_style;
+ stk_push(parsestk, sitem);
+ }
+ break;
+ case c_i:
+ case c_ii:
+ case c_I:
+ type = t.cmd;
+ if (indexing) {
+ error(err_nestedindex, &t.pos);
+ /* Error recovery: eat lbrace, push nop. */
+ dtor(t), t = get_token(in);
+ sitem = snew(struct stack_item);
+ sitem->fpos = t.pos;
+ sitem->type = stack_nop;
+ stk_push(parsestk, sitem);
+ }
+ sitem = snew(struct stack_item);
+ sitem->fpos = t.pos;
+ sitem->type = stack_idx;
+ dtor(t), t = get_token(in);
+ /*
+ * Special cases: \i\c, \i\e, \i\cw
+ */
+ wd.fpos = t.pos;
+ if (t.type == tok_cmd &&
+ (t.cmd == c_e || t.cmd == c_f || t.cmd == c_c || t.cmd == c_cw)) {
+ if (style != word_Normal)
+ error(err_nestedstyles, &t.pos);
+ else {
+ style = (t.cmd == c_c ? word_Code :
+ t.cmd == c_cw ? word_WeakCode :
+ t.cmd == c_f ? word_Strong :
+ word_Emph);
+ spcstyle = tospacestyle(style);
+ sitem->type |= stack_style;
+ }
+ dtor(t), t = get_token(in);
+ }
+ if (t.type != tok_lbrace) {
+ sfree(sitem);
+ error(err_explbr, &t.pos);
+ } else {
+ /* Add an index-reference word with no text as yet */
+ wd.type = word_IndexRef;
+ wd.text = NULL;
+ wd.alt = NULL;
+ wd.aux = 0;
+ wd.breaks = FALSE;
+ indexword = addword(wd, &whptr);
+ /* Set up a rdstring to read the index text */
+ indexstr = nullrs;
+ /* Flags so that we do the Right Things with text */
+ index_visible = (type != c_I);
+ index_downcase = (type == c_ii);
+ indexing = TRUE;
+ idxwordlist = NULL;
+ idximplicit = &idxwordlist;
+ /* Stack item to close the indexing on exit */
+ stk_push(parsestk, sitem);
+ }
+ break;
+ case c_u:
+ uchr = t.aux;
+ utext[0] = uchr; utext[1] = 0;
+ wd.type = style;
+ wd.breaks = FALSE;
+ wd.alt = NULL;
+ wd.aux = 0;
+ wd.fpos = t.pos;
+ if (!indexing || index_visible) {
+ wd.text = ustrdup(utext);
+ uword = addword(wd, &whptr);
+ } else
+ uword = NULL;
+ if (indexing) {
+ wd.text = ustrdup(utext);
+ iword = addword(wd, &idximplicit);
+ } else
+ iword = NULL;
+ dtor(t), t = get_token(in);
+ if (t.type == tok_lbrace) {
+ /*
+ * \u with a left brace. Until the brace
+ * closes, all further words go on a
+ * sidetrack from the main thread of the
+ * paragraph.
+ */
+ sitem = snew(struct stack_item);
+ sitem->fpos = t.pos;
+ sitem->type = stack_ualt;
+ sitem->whptr = whptr;
+ sitem->idximplicit = idximplicit;
+ stk_push(parsestk, sitem);
+ whptr = uword ? &uword->alt : NULL;
+ idximplicit = iword ? &iword->alt : NULL;
+ } else {
+ if (indexing)
+ rdadd(&indexstr, uchr);
+ already = TRUE;
+ }
+ break;
+ default:
+ if (!macrolookup(macros, in, t.text, &t.pos))
+ error(err_badmidcmd, t.text, &t.pos);
+ break;
+ }
+ }
+ if (!already)
+ dtor(t), t = get_token(in);
+ seenwhite = iswhite;
+ }
+ finished_para:
+ /* Check the stack is empty */
+ if (stk_top(parsestk)) {
+ while ((sitem = stk_pop(parsestk)))
+ sfree(sitem);
+ error(err_missingrbrace, &t.pos);
+ }
+ stk_free(parsestk);
+ prev_para_type = par.type;
+ /*
+ * Before we add the paragraph to the output list, we
+ * should check that there was any text in it at all; there
+ * might not be if (for example) the paragraph contained
+ * nothing but an unrecognised command sequence, and if we
+ * put an empty paragraph on the list it may confuse the
+ * back ends later on.
+ */
+ if (par.words) {
+ addpara(par, ret);
+ }
+ if (t.type == tok_eof)
+ already = TRUE;
+ }
+
+ if (stk_top(crossparastk)) {
+ void *p;
+
+ error(err_missingrbrace2, &t.pos);
+ while ((p = stk_pop(crossparastk)))
+ sfree(p);
+ }
+
+ /*
+ * We break to here rather than returning, because otherwise
+ * this cleanup doesn't happen.
+ */
+ dtor(t);
+
+ stk_free(crossparastk);
+}
+
+struct {
+ char const *magic;
+ size_t nmagic;
+ void (*reader)(input *);
+} magics[] = {
+ { "%!FontType1-", 12, &read_pfa_file },
+ { "%!PS-AdobeFont-", 15, &read_pfa_file },
+ { "\x80\x01", 2, &read_pfb_file },
+ { "StartFontMetrics", 16, &read_afm_file },
+};
+
+paragraph *read_input(input *in, indexdata *idx) {
+ paragraph *head = NULL;
+ paragraph **hptr = &head;
+ tree234 *macros;
+ char mag[16];
+ size_t len, i;
+ void (*reader)(input *);
+
+ macros = newtree234(macrocmp);
+
+ while (in->currindex < in->nfiles) {
+ in->currfp = fopen(in->filenames[in->currindex], "r");
+ if (in->currfp) {
+ setpos(in, in->filenames[in->currindex]);
+ in->charset = in->defcharset;
+ in->csstate = charset_init_state;
+ in->wcpos = in->nwc = 0;
+ in->pushback_chars = NULL;
+ reader = NULL;
+ len = fread(mag, 1, sizeof(mag), in->currfp);
+ for (i = 0; i < lenof(magics); i++) {
+ if (len >= magics[i].nmagic &&
+ memcmp(mag, magics[i].magic, magics[i].nmagic) == 0) {
+ reader = magics[i].reader;
+ break;
+ }
+ }
+ rewind(in->currfp);
+ if (reader == NULL)
+ read_file(&hptr, in, idx, macros);
+ else
+ (*reader)(in);
+ }
+ in->currindex++;
+ }
+
+ macrocleanup(macros);
+
+ return head;
+}
diff --git a/app/tools/halibut/keywords.c b/app/tools/halibut/keywords.c
new file mode 100644
index 0000000..8101282
--- /dev/null
+++ b/app/tools/halibut/keywords.c
@@ -0,0 +1,154 @@
+/*
+ * keywords.c: keep track of all cross-reference keywords
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "halibut.h"
+
+static int kwcmp(void *av, void *bv)
+{
+ const keyword *a = (const keyword *)av;
+ const keyword *b = (const keyword *)bv;
+ return ustrcmp(a->key, b->key);
+}
+
+static int kwfind(void *av, void *bv)
+{
+ wchar_t *a = (wchar_t *)av;
+ const keyword *b = (const keyword *)bv;
+ return ustrcmp(a, b->key);
+}
+
+keyword *kw_lookup(keywordlist *kl, wchar_t *str) {
+ return find234(kl->keys, str, kwfind);
+}
+
+/*
+ * This function reads through source form and collects the
+ * keywords. They get collected in a heap, sorted by Unicode
+ * collation, last at the top (so that we can Heapsort them when we
+ * finish).
+ */
+keywordlist *get_keywords(paragraph *source) {
+ int errors = FALSE;
+ keywordlist *kl = snew(keywordlist);
+ numberstate *n = number_init();
+ int prevpara = para_NotParaType;
+
+ number_cfg(n, source);
+
+ kl->size = 0;
+ kl->keys = newtree234(kwcmp);
+ kl->nlooseends = kl->looseendssize = 0;
+ kl->looseends = NULL;
+ for (; source; source = source->next) {
+ wchar_t *p, *q;
+ p = q = source->keyword;
+
+ /*
+ * Look for the section type override (`example',
+ * `question' or whatever - to replace `chapter' or
+ * `section' on a per-section basis).
+ */
+ if (q) {
+ q = uadv(q); /* point q at the word beyond */
+ if (!*q) q = NULL;
+ }
+
+ /*
+ * Number the chapter / section / list-item / whatever.
+ * This also sets up the `parent', `child' and `sibling'
+ * links.
+ */
+ source->kwtext = number_mktext(n, source, q, &prevpara, &errors);
+
+ if (p && *p) {
+ if (source->kwtext || source->type == para_Biblio) {
+ keyword *kw, *ret;
+
+ kw = snew(keyword);
+ kw->key = p;
+ kw->text = source->kwtext;
+ kw->para = source;
+ ret = add234(kl->keys, kw);
+ if (ret != kw) {
+ error(err_multikw, &source->fpos, &ret->para->fpos, p);
+ sfree(kw);
+ /* FIXME: what happens to kw->text? Does it leak? */
+ }
+ }
+ } else {
+ if (kl->nlooseends >= kl->looseendssize) {
+ kl->looseendssize = kl->nlooseends + 32;
+ kl->looseends = sresize(kl->looseends, kl->looseendssize,
+ word *);
+ }
+ kl->looseends[kl->nlooseends++] = source->kwtext;
+ }
+ }
+
+ number_free(n);
+
+ if (errors) {
+ free_keywords(kl);
+ return NULL;
+ }
+
+ return kl;
+}
+
+void free_keywords(keywordlist *kl) {
+ keyword *kw;
+ while (kl->nlooseends)
+ free_word_list(kl->looseends[--kl->nlooseends]);
+ sfree(kl->looseends);
+ while ( (kw = index234(kl->keys, 0)) != NULL) {
+ delpos234(kl->keys, 0);
+ free_word_list(kw->text);
+ sfree(kw);
+ }
+ freetree234(kl->keys);
+ sfree(kl);
+}
+
+void subst_keywords(paragraph *source, keywordlist *kl) {
+ for (; source; source = source->next) {
+ word *ptr;
+ for (ptr = source->words; ptr; ptr = ptr->next) {
+ if (ptr->type == word_UpperXref ||
+ ptr->type == word_LowerXref) {
+ keyword *kw;
+ word **endptr, *close, *subst;
+
+ kw = kw_lookup(kl, ptr->text);
+ if (!kw) {
+ error(err_nosuchkw, &ptr->fpos, ptr->text);
+ subst = NULL;
+ } else
+ subst = dup_word_list(kw->text);
+
+ if (subst && ptr->type == word_LowerXref &&
+ kw->para->type != para_Biblio &&
+ kw->para->type != para_BiblioCited)
+ ustrlow(subst->text);
+
+ close = snew(word);
+ close->text = NULL;
+ close->alt = NULL;
+ close->type = word_XrefEnd;
+ close->fpos = ptr->fpos;
+
+ close->next = ptr->next;
+ ptr->next = subst;
+
+ for (endptr = &ptr->next; *endptr; endptr = &(*endptr)->next)
+ (*endptr)->fpos = ptr->fpos;
+
+ *endptr = close;
+ ptr = close;
+ }
+ }
+ }
+}
diff --git a/app/tools/halibut/licence.c b/app/tools/halibut/licence.c
new file mode 100644
index 0000000..03fb11a
--- /dev/null
+++ b/app/tools/halibut/licence.c
@@ -0,0 +1,51 @@
+/*
+ * licence.c: licence text
+ */
+
+#include <stdio.h>
+
+static const char *const licencetext[] = {
+ "Halibut is copyright (c) 1999-2007 Simon Tatham.",
+ "",
+ "Permission is hereby granted, free of charge, to any person",
+ "obtaining a copy of this software and associated documentation files",
+ "(the \"Software\"), to deal in the Software without restriction,",
+ "including without limitation the rights to use, copy, modify, merge,",
+ "publish, distribute, sublicense, and/or sell copies of the Software,",
+ "and to permit persons to whom the Software is furnished to do so,",
+ "subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be",
+ "included in all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,",
+ "EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF",
+ "MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND",
+ "NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS",
+ "BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN",
+ "ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN",
+ "CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE",
+ "SOFTWARE.",
+ "",
+ "Halibut contains font metrics derived from the \"Font Metrics for PDF",
+ "Core 14 Fonts\", which carry the following copyright notice and licence:",
+ "",
+ " Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1993, 1997",
+ " Adobe Systems Incorporated. All Rights Reserved.",
+ "",
+ " This file and the 14 PostScript(R) AFM files it accompanies may be",
+ " used, copied, and distributed for any purpose and without charge,",
+ " with or without modification, provided that all copyright notices",
+ " are retained; that the AFM files are not distributed without this",
+ " file; that all modifications to this file or any of the AFM files",
+ " are prominently noted in the modified file(s); and that this",
+ " paragraph is not modified. Adobe Systems has no responsibility or",
+ " obligation to support the use of the AFM files.",
+ NULL
+};
+
+void licence(void) {
+ const char *const *p;
+ for (p = licencetext; *p; p++)
+ puts(*p);
+}
diff --git a/app/tools/halibut/main.c b/app/tools/halibut/main.c
new file mode 100644
index 0000000..ffc70cc
--- /dev/null
+++ b/app/tools/halibut/main.c
@@ -0,0 +1,473 @@
+/*
+ * main.c: command line parsing and top level
+ */
+
+#include <assert.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "halibut.h"
+
+static void dbg_prtsource(paragraph *sourceform);
+static void dbg_prtwordlist(int level, word *w);
+static void dbg_prtkws(keywordlist *kws);
+
+static const struct pre_backend {
+ void *(*func)(paragraph *, keywordlist *, indexdata *);
+ int bitfield;
+} pre_backends[] = {
+ {paper_pre_backend, 0x0001}
+};
+
+static const struct backend {
+ char *name;
+ void (*func)(paragraph *, keywordlist *, indexdata *, void *);
+ paragraph *(*filename)(char *filename);
+ int bitfield, prebackend_bitfield;
+} backends[] = {
+ {"xhtml", html_backend, html_config_filename, 0x0002, 0},
+ {"html", html_backend, html_config_filename, 0x0002, 0}
+/* {"text", text_backend, text_config_filename, 0x0001, 0},
+ {"xhtml", html_backend, html_config_filename, 0x0002, 0},
+ {"html", html_backend, html_config_filename, 0x0002, 0},
+ {"hlp", whlp_backend, whlp_config_filename, 0x0004, 0},
+ {"whlp", whlp_backend, whlp_config_filename, 0x0004, 0},
+ {"winhelp", whlp_backend, whlp_config_filename, 0x0004, 0},
+ {"man", man_backend, man_config_filename, 0x0008, 0},
+ {"info", info_backend, info_config_filename, 0x0010, 0},
+ {"ps", ps_backend, ps_config_filename, 0x0020, 0x0001},
+ {"pdf", pdf_backend, pdf_config_filename, 0x0040, 0x0001}, */
+};
+
+int main(int argc, char **argv) {
+ char **infiles;
+ int nfiles;
+ int nogo;
+ int errs;
+ int reportcols;
+ int input_charset;
+ int debug;
+ int backendbits, prebackbits;
+ int k, b;
+ paragraph *cfg, *cfg_tail;
+ void *pre_backend_data[16];
+
+ /*
+ * Use the specified locale everywhere. It'll be used for
+ * output of error messages, and as the default character set
+ * for input files if one is not explicitly specified.
+ *
+ * However, we need to use standard numeric formatting for
+ * output of things like PDF.
+ */
+ setlocale(LC_ALL, "");
+ setlocale(LC_NUMERIC, "C");
+
+ /*
+ * Set up initial (default) parameters.
+ */
+ infiles = snewn(argc, char *);
+ nfiles = 0;
+ nogo = errs = FALSE;
+ reportcols = 0;
+ input_charset = CS_ASCII;
+ debug = 0;
+ backendbits = 0;
+ cfg = cfg_tail = NULL;
+
+ if (argc == 1) {
+ usage();
+ exit(EXIT_SUCCESS);
+ }
+
+ /*
+ * Parse command line arguments.
+ */
+ while (--argc) {
+ char *p = *++argv;
+ if (*p == '-') {
+ /*
+ * An option.
+ */
+ while (p && *++p) {
+ char c = *p;
+ switch (c) {
+ case '-':
+ /*
+ * Long option.
+ */
+ {
+ char *opt, *val;
+ opt = p++; /* opt will have _one_ leading - */
+ while (*p && *p != '=')
+ p++; /* find end of option */
+ if (*p == '=') {
+ *p++ = '\0';
+ val = p;
+ } else
+ val = NULL;
+
+ assert(opt[0] == '-');
+ for (k = 0; k < (int)lenof(backends); k++)
+ if (!strcmp(opt+1, backends[k].name)) {
+ backendbits |= backends[k].bitfield;
+ if (val) {
+ paragraph *p = backends[k].filename(val);
+ assert(p);
+ if (cfg_tail)
+ cfg_tail->next = p;
+ else
+ cfg = p;
+ while (p->next)
+ p = p->next;
+ cfg_tail = p;
+ }
+ break;
+ }
+ if (k < (int)lenof(backends)) {
+ /* do nothing */;
+ } else if (!strcmp(opt, "-input-charset")) {
+ if (!val) {
+ errs = TRUE, error(err_optnoarg, opt);
+ } else {
+ int charset = charset_from_localenc(val);
+ if (charset == CS_NONE) {
+ errs = TRUE, error(err_cmdcharset, val);
+ } else {
+ input_charset = charset;
+ }
+ }
+ } else if (!strcmp(opt, "-help")) {
+ help();
+ nogo = TRUE;
+ } else if (!strcmp(opt, "-version")) {
+ showversion();
+ nogo = TRUE;
+ } else if (!strcmp(opt, "-licence") ||
+ !strcmp(opt, "-license")) {
+ licence();
+ nogo = TRUE;
+ } else if (!strcmp(opt, "-list-charsets")) {
+ listcharsets();
+ nogo = TRUE;
+ } else if (!strcmp(opt, "-precise")) {
+ reportcols = 1;
+ } else {
+ errs = TRUE, error(err_nosuchopt, opt);
+ }
+ }
+ p = NULL;
+ break;
+ case 'h':
+ case 'V':
+ case 'L':
+ case 'P':
+ case 'd':
+ /*
+ * Option requiring no parameter.
+ */
+ switch (c) {
+ case 'h':
+ help();
+ nogo = TRUE;
+ break;
+ case 'V':
+ showversion();
+ nogo = TRUE;
+ break;
+ case 'L':
+ licence();
+ nogo = TRUE;
+ break;
+ case 'P':
+ reportcols = 1;
+ break;
+ case 'd':
+ debug = TRUE;
+ break;
+ }
+ break;
+ case 'C':
+ /*
+ * Option requiring parameter.
+ */
+ p++;
+ if (!*p && argc > 1)
+ --argc, p = *++argv;
+ else if (!*p) {
+ char opt[2];
+ opt[0] = c;
+ opt[1] = '\0';
+ errs = TRUE, error(err_optnoarg, opt);
+ }
+ /*
+ * Now c is the option and p is the parameter.
+ */
+ switch (c) {
+ case 'C':
+ /*
+ * -C means we split our argument up into
+ * colon-separated chunks and assemble them
+ * into a config paragraph.
+ */
+ {
+ char *s = dupstr(p), *q, *r;
+ paragraph *para;
+
+ para = cmdline_cfg_new();
+
+ q = r = s;
+ while (*q) {
+ if (*q == ':') {
+ *r = '\0';
+ /* XXX ad-hoc diagnostic */
+ if (!strcmp(s, "input-charset"))
+ error(err_futileopt, "Cinput-charset",
+ "; use --input-charset");
+ cmdline_cfg_add(para, s);
+ r = s;
+ } else {
+ if (*q == '\\' && q[1])
+ q++;
+ *r++ = *q;
+ }
+ q++;
+ }
+ *r = '\0';
+ cmdline_cfg_add(para, s);
+
+ if (cfg_tail)
+ cfg_tail->next = para;
+ else
+ cfg = para;
+ cfg_tail = para;
+ }
+ break;
+ }
+ p = NULL; /* prevent continued processing */
+ break;
+ default:
+ /*
+ * Unrecognised option.
+ */
+ {
+ char opt[2];
+ opt[0] = c;
+ opt[1] = '\0';
+ errs = TRUE, error(err_nosuchopt, opt);
+ }
+ }
+ }
+ } else {
+ /*
+ * A non-option argument.
+ */
+ infiles[nfiles++] = p;
+ }
+ }
+
+ if (errs)
+ exit(EXIT_FAILURE);
+ if (nogo)
+ exit(EXIT_SUCCESS);
+
+ /*
+ * Do the work.
+ */
+ if (nfiles == 0) {
+ error(err_noinput);
+ usage();
+ exit(EXIT_FAILURE);
+ }
+
+ {
+ input in;
+ paragraph *sourceform, *p;
+ indexdata *idx;
+ keywordlist *keywords;
+
+ in.filenames = infiles;
+ in.nfiles = nfiles;
+ in.currfp = NULL;
+ in.currindex = 0;
+ in.npushback = in.pushbacksize = 0;
+ in.pushback = NULL;
+ in.reportcols = reportcols;
+ in.stack = NULL;
+ in.defcharset = input_charset;
+
+ idx = make_index();
+
+ sourceform = read_input(&in, idx);
+ if (!sourceform)
+ exit(EXIT_FAILURE);
+
+ /*
+ * Append the config directives acquired from the command
+ * line.
+ */
+ {
+ paragraph *end;
+
+ end = sourceform;
+ while (end && end->next)
+ end = end->next;
+ assert(end);
+
+ end->next = cfg;
+ }
+
+ sfree(in.pushback);
+
+ sfree(infiles);
+
+ keywords = get_keywords(sourceform);
+ if (!keywords)
+ exit(EXIT_FAILURE);
+ gen_citations(sourceform, keywords);
+ subst_keywords(sourceform, keywords);
+
+ for (p = sourceform; p; p = p->next)
+ if (p->type == para_IM)
+ index_merge(idx, TRUE, p->keyword, p->words, &p->fpos);
+
+ build_index(idx);
+
+ /*
+ * Set up attr_First / attr_Last / attr_Always, in the main
+ * document and in the index entries.
+ */
+ for (p = sourceform; p; p = p->next)
+ mark_attr_ends(p->words);
+ {
+ int i;
+ indexentry *entry;
+
+ for (i = 0; (entry = index234(idx->entries, i)) != NULL; i++)
+ mark_attr_ends(entry->text);
+ }
+
+ if (debug) {
+ index_debug(idx);
+ dbg_prtkws(keywords);
+ dbg_prtsource(sourceform);
+ }
+
+ /*
+ * Select and run the pre-backends.
+ */
+ prebackbits = 0;
+ for (k = 0; k < (int)lenof(backends); k++)
+ if (backendbits == 0 || (backendbits & backends[k].bitfield))
+ prebackbits |= backends[k].prebackend_bitfield;
+ for (k = 0; k < (int)lenof(pre_backends); k++)
+ if (prebackbits & pre_backends[k].bitfield) {
+ assert(k < (int)lenof(pre_backend_data));
+ pre_backend_data[k] =
+ pre_backends[k].func(sourceform, keywords, idx);
+ }
+
+ /*
+ * Run the selected set of backends.
+ */
+ for (k = b = 0; k < (int)lenof(backends); k++)
+ if (b != backends[k].bitfield) {
+ b = backends[k].bitfield;
+ if (backendbits == 0 || (backendbits & b)) {
+ void *pbd = NULL;
+ int pbb = backends[k].prebackend_bitfield;
+ int m;
+
+ for (m = 0; m < (int)lenof(pre_backends); m++)
+ if (pbb & pre_backends[m].bitfield) {
+ assert(m < (int)lenof(pre_backend_data));
+ pbd = pre_backend_data[m];
+ break;
+ }
+
+ backends[k].func(sourceform, keywords, idx, pbd);
+ }
+ }
+
+ free_para_list(sourceform);
+ free_keywords(keywords);
+ cleanup_index(idx);
+ }
+
+ return 0;
+}
+
+static void dbg_prtsource(paragraph *sourceform) {
+ /*
+ * Output source form in debugging format.
+ */
+
+ paragraph *p;
+ for (p = sourceform; p; p = p->next) {
+ wchar_t *wp;
+ printf("para %d ", p->type);
+ if (p->keyword) {
+ wp = p->keyword;
+ while (*wp) {
+ putchar('\"');
+ for (; *wp; wp++)
+ putchar(*wp);
+ putchar('\"');
+ if (*++wp)
+ printf(", ");
+ }
+ } else
+ printf("(no keyword)");
+ printf(" {\n");
+ dbg_prtwordlist(1, p->words);
+ printf("}\n");
+ }
+}
+
+static void dbg_prtkws(keywordlist *kws) {
+ /*
+ * Output keywords in debugging format.
+ */
+
+ int i;
+ keyword *kw;
+
+ for (i = 0; (kw = index234(kws->keys, i)) != NULL; i++) {
+ wchar_t *wp;
+ printf("keyword ");
+ wp = kw->key;
+ while (*wp) {
+ putchar('\"');
+ for (; *wp; wp++)
+ putchar(*wp);
+ putchar('\"');
+ if (*++wp)
+ printf(", ");
+ }
+ printf(" {\n");
+ dbg_prtwordlist(1, kw->text);
+ printf("}\n");
+ }
+}
+
+static void dbg_prtwordlist(int level, word *w) {
+ for (; w; w = w->next) {
+ wchar_t *wp;
+ printf("%*sword %d ", level*4, "", w->type);
+ if (w->text) {
+ printf("\"");
+ for (wp = w->text; *wp; wp++)
+ putchar(*wp);
+ printf("\"");
+ } else
+ printf("(no text)");
+ if (w->breaks)
+ printf(" [breaks]");
+ if (w->alt) {
+ printf(" alt = {\n");
+ dbg_prtwordlist(level+1, w->alt);
+ printf("%*s}", level*4, "");
+ }
+ printf("\n");
+ }
+}
diff --git a/app/tools/halibut/malloc.c b/app/tools/halibut/malloc.c
new file mode 100644
index 0000000..2ff22fd
--- /dev/null
+++ b/app/tools/halibut/malloc.c
@@ -0,0 +1,149 @@
+/*
+ * malloc.c: safe wrappers around malloc, realloc, free, strdup
+ */
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include "halibut.h"
+
+#ifdef LOGALLOC
+#define LOGPARAMS char *file, int line,
+static FILE *logallocfp = NULL;
+static int logline = 2; /* off by 1: `null pointer is' */
+static void loginc(void) { }
+static void logallocinit(void) {
+ if (!logallocfp) {
+ logallocfp = fopen("malloc.log", "w");
+ if (!logallocfp) {
+ fprintf(stderr, "panic: unable to open malloc.log\n");
+ exit(10);
+ }
+ setvbuf (logallocfp, NULL, _IOLBF, BUFSIZ);
+ fprintf(logallocfp, "null pointer is %p\n", NULL);
+ }
+}
+static void logprintf(char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(logallocfp, fmt, ap);
+ va_end(ap);
+}
+#define LOGPRINT(x) ( logallocinit(), logprintf x )
+#define LOGINC do { loginc(); logline++; } while (0)
+#else
+#define LOGPARAMS
+#define LOGPRINT(x)
+#define LOGINC ((void)0)
+#endif
+
+/*
+ * smalloc should guarantee to return a useful pointer - Halibut
+ * can do nothing except die when it's out of memory anyway.
+ */
+void *(smalloc)(LOGPARAMS int size) {
+ void *p;
+ LOGINC;
+ LOGPRINT(("%s %d malloc(%ld)",
+ file, line, (long)size));
+ p = malloc(size);
+ if (!p)
+ fatal(err_nomemory);
+ LOGPRINT((" returns %p\n", p));
+ return p;
+}
+
+/*
+ * sfree should guaranteeably deal gracefully with freeing NULL
+ */
+void (sfree)(LOGPARAMS void *p) {
+ if (p) {
+ LOGINC;
+ LOGPRINT(("%s %d free(%p)\n",
+ file, line, p));
+ free(p);
+ }
+}
+
+/*
+ * srealloc should guaranteeably be able to realloc NULL
+ */
+void *(srealloc)(LOGPARAMS void *p, int size) {
+ void *q;
+ if (p) {
+ LOGINC;
+ LOGPRINT(("%s %d realloc(%p,%ld)",
+ file, line, p, (long)size));
+ q = realloc(p, size);
+ LOGPRINT((" returns %p\n", q));
+ } else {
+ LOGINC;
+ LOGPRINT(("%s %d malloc(%ld)",
+ file, line, (long)size));
+ q = malloc(size);
+ LOGPRINT((" returns %p\n", q));
+ }
+ if (!q)
+ fatal(err_nomemory);
+ return q;
+}
+
+/*
+ * dupstr is like strdup, but with the never-return-NULL property
+ * of smalloc (and also reliably defined in all environments :-)
+ */
+char *dupstr(char *s) {
+ char *r = smalloc(1+strlen(s));
+ strcpy(r,s);
+ return r;
+}
+
+/*
+ * Duplicate a linked list of words
+ */
+word *dup_word_list(word *w) {
+ word *head = NULL, **eptr = &head;
+
+ while (w) {
+ word *newwd = snew(word);
+ *newwd = *w; /* structure copy */
+ newwd->text = ustrdup(w->text);
+ if (w->alt)
+ newwd->alt = dup_word_list(w->alt);
+ *eptr = newwd;
+ newwd->next = NULL;
+ eptr = &newwd->next;
+
+ w = w->next;
+ }
+
+ return head;
+}
+
+/*
+ * Free a linked list of words
+ */
+void free_word_list(word *w) {
+ word *t;
+ while (w) {
+ t = w;
+ w = w->next;
+ sfree(t->text);
+ if (t->alt)
+ free_word_list(t->alt);
+ sfree(t);
+ }
+}
+
+/*
+ * Free a linked list of paragraphs
+ */
+void free_para_list(paragraph *p) {
+ paragraph *t;
+ while (p) {
+ t = p;
+ p = p->next;
+ sfree(t->keyword);
+ free_word_list(t->words);
+ sfree(t);
+ }
+}
diff --git a/app/tools/halibut/misc.c b/app/tools/halibut/misc.c
new file mode 100644
index 0000000..3f2483c
--- /dev/null
+++ b/app/tools/halibut/misc.c
@@ -0,0 +1,580 @@
+/*
+ * misc.c: miscellaneous useful items
+ */
+
+#include <stdarg.h>
+#include "halibut.h"
+
+char *adv(char *s) {
+ return s + 1 + strlen(s);
+}
+
+struct stackTag {
+ void **data;
+ int sp;
+ int size;
+};
+
+stack stk_new(void) {
+ stack s;
+
+ s = snew(struct stackTag);
+ s->sp = 0;
+ s->size = 0;
+ s->data = NULL;
+
+ return s;
+}
+
+void stk_free(stack s) {
+ sfree(s->data);
+ sfree(s);
+}
+
+void stk_push(stack s, void *item) {
+ if (s->size <= s->sp) {
+ s->size = s->sp + 32;
+ s->data = sresize(s->data, s->size, void *);
+ }
+ s->data[s->sp++] = item;
+}
+
+void *stk_pop(stack s) {
+ if (s->sp > 0)
+ return s->data[--s->sp];
+ else
+ return NULL;
+}
+
+void *stk_top(stack s) {
+ if (s->sp > 0)
+ return s->data[s->sp-1];
+ else
+ return NULL;
+}
+
+/*
+ * Small routines to amalgamate a string from an input source.
+ */
+const rdstring empty_rdstring = {0, 0, NULL};
+const rdstringc empty_rdstringc = {0, 0, NULL};
+
+void rdadd(rdstring *rs, wchar_t c) {
+ if (rs->pos >= rs->size-1) {
+ rs->size = rs->pos + 128;
+ rs->text = sresize(rs->text, rs->size, wchar_t);
+ }
+ rs->text[rs->pos++] = c;
+ rs->text[rs->pos] = 0;
+}
+void rdadds(rdstring *rs, wchar_t const *p) {
+ int len = ustrlen(p);
+ if (rs->pos >= rs->size - len) {
+ rs->size = rs->pos + len + 128;
+ rs->text = sresize(rs->text, rs->size, wchar_t);
+ }
+ ustrcpy(rs->text + rs->pos, p);
+ rs->pos += len;
+}
+wchar_t *rdtrim(rdstring *rs) {
+ rs->text = sresize(rs->text, rs->pos + 1, wchar_t);
+ return rs->text;
+}
+
+void rdaddc(rdstringc *rs, char c) {
+ if (rs->pos >= rs->size-1) {
+ rs->size = rs->pos + 128;
+ rs->text = sresize(rs->text, rs->size, char);
+ }
+ rs->text[rs->pos++] = c;
+ rs->text[rs->pos] = 0;
+}
+void rdaddsc(rdstringc *rs, char const *p) {
+ rdaddsn(rs, p, strlen(p));
+}
+void rdaddsn(rdstringc *rs, char const *p, int len) {
+ if (rs->pos >= rs->size - len) {
+ rs->size = rs->pos + len + 128;
+ rs->text = sresize(rs->text, rs->size, char);
+ }
+ memcpy(rs->text + rs->pos, p, len);
+ rs->pos += len;
+ rs->text[rs->pos] = 0;
+}
+char *rdtrimc(rdstringc *rs) {
+ rs->text = sresize(rs->text, rs->pos + 1, char);
+ return rs->text;
+}
+
+static int compare_wordlists_literally(word *a, word *b) {
+ int t;
+ while (a && b) {
+ if (a->type != b->type)
+ return (a->type < b->type ? -1 : +1); /* FIXME? */
+ t = a->type;
+ if ((t != word_Normal && t != word_Code &&
+ t != word_WeakCode && t != word_Emph) ||
+ a->alt || b->alt) {
+ int c;
+ if (a->text && b->text) {
+ c = ustricmp(a->text, b->text);
+ if (c)
+ return c;
+ }
+ c = compare_wordlists_literally(a->alt, b->alt);
+ if (c)
+ return c;
+ a = a->next;
+ b = b->next;
+ } else {
+ wchar_t *ap = a->text, *bp = b->text;
+ while (*ap && *bp) {
+ wchar_t ac = *ap, bc = *bp;
+ if (ac != bc)
+ return (ac < bc ? -1 : +1);
+ if (!*++ap && a->next && a->next->type == t && !a->next->alt)
+ a = a->next, ap = a->text;
+ if (!*++bp && b->next && b->next->type == t && !b->next->alt)
+ b = b->next, bp = b->text;
+ }
+ if (*ap || *bp)
+ return (*ap ? +1 : -1);
+ a = a->next;
+ b = b->next;
+ }
+ }
+
+ if (a || b)
+ return (a ? +1 : -1);
+ else
+ return 0;
+}
+
+int compare_wordlists(word *a, word *b) {
+ /*
+ * First we compare only the alphabetic content of the word
+ * lists, with case not a factor. If that comes out equal,
+ * _then_ we compare the word lists literally.
+ */
+ struct {
+ word *w;
+ int i;
+ wchar_t c;
+ } pos[2];
+
+ pos[0].w = a;
+ pos[1].w = b;
+ pos[0].i = pos[1].i = 0;
+
+ while (1) {
+ /*
+ * Find the next alphabetic character in each word list.
+ */
+ int k;
+
+ for (k = 0; k < 2; k++) {
+ /*
+ * Advance until we hit either an alphabetic character
+ * or the end of the word list.
+ */
+ while (1) {
+ if (!pos[k].w) {
+ /* End of word list. */
+ pos[k].c = 0;
+ break;
+ } else if (!pos[k].w->text || !pos[k].w->text[pos[k].i]) {
+ /* No characters remaining in this word; move on. */
+ pos[k].w = pos[k].w->next;
+ pos[k].i = 0;
+ } else if (!uisalpha(pos[k].w->text[pos[k].i])) {
+ /* This character isn't alphabetic; move on. */
+ pos[k].i++;
+ } else {
+ /* We have an alphabetic! Lowercase it and continue. */
+ pos[k].c = utolower(pos[k].w->text[pos[k].i]);
+ break;
+ }
+ }
+ }
+
+#ifdef HAS_WCSCOLL
+ {
+ wchar_t a[2], b[2];
+ int ret;
+
+ a[0] = pos[0].c;
+ b[0] = pos[1].c;
+ a[1] = b[1] = L'\0';
+
+ ret = wcscoll(a, b);
+ if (ret)
+ return ret;
+ }
+#else
+ if (pos[0].c < pos[1].c)
+ return -1;
+ else if (pos[0].c > pos[1].c)
+ return +1;
+#endif
+
+ if (!pos[0].c)
+ break; /* they're equal */
+
+ pos[0].i++;
+ pos[1].i++;
+ }
+
+ /*
+ * If we reach here, the strings were alphabetically equal, so
+ * compare in more detail.
+ */
+ return compare_wordlists_literally(a, b);
+}
+
+void mark_attr_ends(word *words)
+{
+ word *w, *wp;
+
+ wp = NULL;
+ for (w = words; w; w = w->next) {
+ int both;
+ if (!isvis(w->type))
+ /* Invisible elements should not affect this calculation */
+ continue;
+ both = (isattr(w->type) &&
+ wp && isattr(wp->type) &&
+ sameattr(wp->type, w->type));
+ w->aux |= both ? attr_Always : attr_First;
+ if (wp && !both) {
+ /* If previous considered word turns out to have been
+ * the end of a run, tidy it up. */
+ int wp_attr = attraux(wp->aux);
+ wp->aux = (wp->aux & ~attr_mask) |
+ ((wp_attr == attr_Always) ? attr_Last
+ /* attr_First */ : attr_Only);
+ }
+ wp = w;
+ }
+
+ /* Tidy up last word touched */
+ if (wp) {
+ int wp_attr = attraux(wp->aux);
+ wp->aux = (wp->aux & ~attr_mask) |
+ ((wp_attr == attr_Always) ? attr_Last
+ /* attr_First */ : attr_Only);
+ }
+}
+
+/*
+ * This function implements the optimal paragraph wrapping
+ * algorithm, pretty much as used in TeX. A cost function is
+ * defined for each line of the wrapped paragraph (typically some
+ * convex function of the difference between the line's length and
+ * its desired length), and a dynamic programming approach is used
+ * to optimise globally across all possible layouts of the
+ * paragraph to find the one with the minimum total cost.
+ *
+ * The function as implemented here gives a choice of two options
+ * for the cost function:
+ *
+ * - If `natural_space' is zero, then the algorithm attempts to
+ * make each line the maximum possible width (either `width' or
+ * `subsequentwidth' depending on whether it's the first line of
+ * the paragraph or not), and the cost function is simply the
+ * square of the unused space at the end of each line. This is a
+ * simple mechanism suitable for use in fixed-pitch environments
+ * such as plain text displayed on a terminal.
+ *
+ * - However, if `natural_space' is positive, the algorithm
+ * assumes the medium is fully graphical and that the width of
+ * space characters can be adjusted finely, and it attempts to
+ * make each _space character_ the width given in
+ * `natural_space'. (The provided width function should return
+ * the _minimum_ acceptable width of a space character in this
+ * case.) Therefore, the cost function for a line is dependent
+ * on the number of spaces on that line as well as the amount by
+ * which the line width differs from the optimum.
+ */
+wrappedline *wrap_para(word *text, int width, int subsequentwidth,
+ int (*widthfn)(void *, word *), void *ctx,
+ int natural_space) {
+ wrappedline *head = NULL, **ptr = &head;
+ int nwords, wordsize;
+ struct wrapword {
+ word *begin, *end;
+ int width;
+ int spacewidth;
+ int cost;
+ int nwords;
+ } *wrapwords;
+ int i, j, n;
+
+ /*
+ * Break the line up into wrappable components.
+ */
+ nwords = wordsize = 0;
+ wrapwords = NULL;
+ while (text) {
+ if (nwords >= wordsize) {
+ wordsize = nwords + 64;
+ wrapwords = srealloc(wrapwords, wordsize * sizeof(*wrapwords));
+ }
+ wrapwords[nwords].width = 0;
+ wrapwords[nwords].begin = text;
+ while (text) {
+ wrapwords[nwords].width += widthfn(ctx, text);
+ wrapwords[nwords].end = text->next;
+ if (text->next && (text->next->type == word_WhiteSpace ||
+ text->next->type == word_EmphSpace ||
+ text->breaks))
+ break;
+ text = text->next;
+ }
+ if (text && text->next && (text->next->type == word_WhiteSpace ||
+ text->next->type == word_EmphSpace)) {
+ wrapwords[nwords].spacewidth = widthfn(ctx, text->next);
+ text = text->next;
+ } else {
+ wrapwords[nwords].spacewidth = 0;
+ }
+ nwords++;
+ if (text)
+ text = text->next;
+ }
+
+ /*
+ * Perform the dynamic wrapping algorithm: work backwards from
+ * nwords-1, determining the optimal wrapping for each terminal
+ * subsequence of the paragraph.
+ */
+ for (i = nwords; i-- ;) {
+ int best = -1;
+ int bestcost = 0;
+ int cost;
+ int linelen = 0, spacewidth = 0, minspacewidth = 0;
+ int nspaces;
+ int thiswidth = (i == 0 ? width : subsequentwidth);
+
+ j = 0;
+ nspaces = 0;
+ while (i+j < nwords) {
+ /*
+ * See what happens if we put j+1 words on this line.
+ */
+ if (spacewidth) {
+ nspaces++;
+ minspacewidth = spacewidth;
+ }
+ linelen += spacewidth + wrapwords[i+j].width;
+ spacewidth = wrapwords[i+j].spacewidth;
+ j++;
+ if (linelen > thiswidth) {
+ /*
+ * If we're over the width limit, abandon ship,
+ * _unless_ there is no best-effort yet (which will
+ * only happen if the first word is too long all by
+ * itself).
+ */
+ if (best > 0)
+ break;
+ }
+
+ /*
+ * Compute the cost of this line. The method of doing
+ * this differs hugely depending on whether
+ * natural_space is nonzero or not.
+ */
+ if (natural_space) {
+ if (!nspaces && linelen > thiswidth) {
+ /*
+ * Special case: if there are no spaces at all
+ * on the line because one single word is too
+ * long for its line, cost is zero because
+ * there's nothing we can do about it anyway.
+ */
+ cost = 0;
+ } else {
+ int shortfall = thiswidth - linelen;
+ int spaceextra = shortfall / (nspaces ? nspaces : 1);
+ int spaceshortfall = natural_space -
+ (minspacewidth + spaceextra);
+
+ if (i+j == nwords && spaceshortfall < 0) {
+ /*
+ * Special case: on the very last line of
+ * the paragraph, we don't score penalty
+ * points for having to _stretch_ the line,
+ * since we won't stretch it anyway.
+ * However, we score penalties as normal
+ * for having to squeeze it.
+ */
+ cost = 0;
+ } else {
+ /*
+ * Squaring this number is tricky since
+ * it's liable to be quite big. Let's
+ * divide it through by 256.
+ */
+ int x = spaceshortfall >> 8;
+ int xf = spaceshortfall & 0xFF;
+
+ /*
+ * Not counting strange variable-fixed-
+ * point oddities, we are computing
+ *
+ * (x+xf)^2 = x^2 + 2*x*xf + xf*xf
+ *
+ * except that _our_ xf is 256 times the
+ * one listed there.
+ */
+
+ cost = x * x;
+ cost += (2 * x * xf) >> 8;
+ }
+ }
+ } else {
+ if (i+j == nwords) {
+ /*
+ * Special case: if we're at the very end of the
+ * paragraph, we don't score penalty points for the
+ * white space left on the line.
+ */
+ cost = 0;
+ } else {
+ cost = (thiswidth-linelen) * (thiswidth-linelen);
+ }
+ }
+
+ /*
+ * Add in the cost of wrapping all lines after this
+ * point too.
+ */
+ if (i+j < nwords)
+ cost += wrapwords[i+j].cost;
+
+ /*
+ * We compare bestcost >= cost, not bestcost > cost,
+ * because in cases where the costs are identical we
+ * want to try to look like the greedy algorithm,
+ * because readers are likely to have spent a lot of
+ * time looking at greedy-wrapped paragraphs and
+ * there's no point violating the Principle of Least
+ * Surprise if it doesn't actually gain anything.
+ */
+ if (best < 0 || bestcost >= cost) {
+ bestcost = cost;
+ best = j;
+ }
+ }
+ /*
+ * Now we know the optimal answer for this terminal
+ * subsequence, so put it in wrapwords.
+ */
+ wrapwords[i].cost = bestcost;
+ wrapwords[i].nwords = best;
+ }
+
+ /*
+ * We've wrapped the paragraph. Now build the output
+ * `wrappedline' list.
+ */
+ i = 0;
+ while (i < nwords) {
+ wrappedline *w = snew(wrappedline);
+ *ptr = w;
+ ptr = &w->next;
+ w->next = NULL;
+
+ n = wrapwords[i].nwords;
+ w->begin = wrapwords[i].begin;
+ w->end = wrapwords[i+n-1].end;
+
+ /*
+ * Count along the words to find nspaces and shortfall.
+ */
+ w->nspaces = 0;
+ w->shortfall = width;
+ for (j = 0; j < n; j++) {
+ w->shortfall -= wrapwords[i+j].width;
+ if (j < n-1 && wrapwords[i+j].spacewidth) {
+ w->nspaces++;
+ w->shortfall -= wrapwords[i+j].spacewidth;
+ }
+ }
+ i += n;
+ }
+
+ sfree(wrapwords);
+
+ return head;
+}
+
+void wrap_free(wrappedline *w) {
+ while (w) {
+ wrappedline *t = w->next;
+ sfree(w);
+ w = t;
+ }
+}
+
+void cmdline_cfg_add(paragraph *cfg, char *string)
+{
+ wchar_t *ustring;
+ int upos, ulen, pos, len;
+
+ ulen = 0;
+ while (cfg->keyword[ulen])
+ ulen += 1 + ustrlen(cfg->keyword+ulen);
+ len = 0;
+ while (cfg->origkeyword[len])
+ len += 1 + strlen(cfg->origkeyword+len);
+
+ ustring = ufroma_locale_dup(string);
+
+ upos = ulen;
+ ulen += 2 + ustrlen(ustring);
+ cfg->keyword = sresize(cfg->keyword, ulen, wchar_t);
+ ustrcpy(cfg->keyword+upos, ustring);
+ cfg->keyword[ulen-1] = L'\0';
+
+ pos = len;
+ len += 2 + strlen(string);
+ cfg->origkeyword = sresize(cfg->origkeyword, len, char);
+ strcpy(cfg->origkeyword+pos, string);
+ cfg->origkeyword[len-1] = '\0';
+
+ sfree(ustring);
+}
+
+paragraph *cmdline_cfg_new(void)
+{
+ paragraph *p;
+
+ p = snew(paragraph);
+ memset(p, 0, sizeof(*p));
+ p->type = para_Config;
+ p->next = NULL;
+ p->fpos.filename = "<command line>";
+ p->fpos.line = p->fpos.col = -1;
+ p->keyword = ustrdup(L"\0");
+ p->origkeyword = dupstr("\0");
+
+ return p;
+}
+
+paragraph *cmdline_cfg_simple(char *string, ...)
+{
+ va_list ap;
+ char *s;
+ paragraph *p;
+
+ p = cmdline_cfg_new();
+ cmdline_cfg_add(p, string);
+
+ va_start(ap, string);
+ while ((s = va_arg(ap, char *)) != NULL)
+ cmdline_cfg_add(p, s);
+ va_end(ap);
+
+ return p;
+}
diff --git a/app/tools/halibut/paper.h b/app/tools/halibut/paper.h
new file mode 100644
index 0000000..29d6407
--- /dev/null
+++ b/app/tools/halibut/paper.h
@@ -0,0 +1,405 @@
+/*
+ * Paper printing definitions.
+ *
+ * This header file defines data structures and constants which are
+ * shared between bk_paper.c and its clients bk_ps.c and bk_pdf.c.
+ */
+
+#ifndef HALIBUT_PAPER_H
+#define HALIBUT_PAPER_H
+
+/* Number of internal units per PostScript point. */
+#define UNITS_PER_PT 1000
+#define FUNITS_PER_PT 1000.0
+
+/* Glyphs are represented by integer indicies into a table of names. */
+typedef unsigned short glyph;
+#define NOGLYPH 0xFFFF
+
+typedef struct document_Tag document;
+typedef struct glyph_width_Tag glyph_width;
+typedef struct kern_pair_Tag kern_pair;
+typedef struct ligature_Tag ligature;
+typedef struct font_info_Tag font_info;
+typedef struct font_data_Tag font_data;
+typedef struct font_encoding_Tag font_encoding;
+typedef struct font_list_Tag font_list;
+typedef struct para_data_Tag para_data;
+typedef struct line_data_Tag line_data;
+typedef struct page_data_Tag page_data;
+typedef struct subfont_map_entry_Tag subfont_map_entry;
+typedef struct text_fragment_Tag text_fragment;
+typedef struct xref_Tag xref;
+typedef struct xref_dest_Tag xref_dest;
+typedef struct rect_Tag rect;
+typedef struct outline_element_Tag outline_element;
+
+/*
+ * This data structure represents the overall document, in the form
+ * it will be given to the client backends.
+ */
+struct document_Tag {
+ int paper_width, paper_height;
+ font_list *fonts;
+ page_data *pages;
+ outline_element *outline_elements;
+ int n_outline_elements;
+};
+
+/*
+ * This data structure represents the normal width of a single glyph
+ * in a font.
+ */
+struct glyph_width_Tag {
+ glyph glyph;
+ int width;
+};
+
+/*
+ * This data structure represents a kerning pair within a font.
+ */
+struct kern_pair_Tag {
+ /* Glyph indices. */
+ glyph left, right;
+ /* Kern amount, in internal units. */
+ int kern;
+};
+
+/*
+ * ... and this one represents a ligature.
+ */
+struct ligature_Tag {
+ glyph left, right, lig;
+};
+
+/*
+ * This data structure holds static information about a font that doesn't
+ * depend on the particular document. It gets generated when the font's
+ * metrics are read in.
+ */
+
+font_info *all_fonts;
+
+struct font_info_Tag {
+ font_info *next;
+ /*
+ * Specify the PostScript name of the font and its point size.
+ */
+ const char *name;
+ /*
+ * Pointer to data about the file containing the font, if any.
+ */
+ void *fontfile;
+ /* A tree of glyph_widths */
+ tree234 *widths;
+ /* A tree of kern_pairs */
+ tree234 *kerns;
+ /* ... and one of ligatures */
+ tree234 *ligs;
+ /*
+ * For reasonably speedy lookup, we set up a 65536-element
+ * table representing the Unicode BMP (I can conveniently
+ * restrict myself to the BMP for the moment since I happen to
+ * know that no glyph in the Adobe Glyph List falls outside
+ * it), whose elements are indices into the above two arrays.
+ */
+ glyph bmp[65536];
+ /*
+ * Various bits of metadata needed for the /FontDescriptor dictionary
+ * in PDF.
+ */
+ float fontbbox[4];
+ float capheight;
+ float xheight;
+ float ascent;
+ float descent;
+ float stemv;
+ float stemh;
+ float italicangle;
+};
+
+/*
+ * This structure holds the information about how a font is used
+ * in a document.
+ */
+struct font_data_Tag {
+ font_info const *info;
+ /*
+ * At some point I'm going to divide the font into sub-fonts
+ * with largely non-overlapping encoding vectors. This tree
+ * will track which glyphs go into which subfonts. Also here I
+ * keep track of the latest subfont of any given font, so I can
+ * go back and extend its encoding.
+ */
+ tree234 *subfont_map;
+ font_encoding *latest_subfont;
+ /*
+ * The font list to which this font belongs.
+ */
+ font_list *list;
+};
+
+struct subfont_map_entry_Tag {
+ font_encoding *subfont;
+ unsigned char position;
+};
+
+/*
+ * This data structure represents a sub-font: a font with an
+ * encoding vector.
+ */
+struct font_encoding_Tag {
+ font_encoding *next;
+
+ char *name; /* used by client backends */
+
+ font_data *font; /* the parent font structure */
+ glyph vector[256]; /* the actual encoding vector */
+ wchar_t to_unicode[256]; /* PDF will want to know this */
+ int free_pos; /* space left to extend encoding */
+};
+
+/*
+ * This data structure represents the overall list of sub-fonts in
+ * the whole document.
+ */
+struct font_list_Tag {
+ font_encoding *head;
+ font_encoding *tail;
+};
+
+/*
+ * Constants defining array indices for the various fonts used in a
+ * paragraph.
+ */
+enum {
+ FONT_NORMAL,
+ FONT_EMPH,
+ FONT_CODE,
+ NFONTS
+};
+
+/*
+ * This is the data structure which is stored in the private_data
+ * field of each paragraph. It divides the paragraph up into a
+ * linked list of lines, while at the same time providing for those
+ * lines to be linked together into a much longer list spanning the
+ * whole document for page-breaking purposes.
+ */
+
+struct para_data_Tag {
+ para_data *next;
+ /*
+ * Data about the fonts used in this paragraph. Indices are the
+ * FONT_* constants defined above.
+ */
+ font_data *fonts[NFONTS];
+ int sizes[NFONTS];
+ /*
+ * Pointers to the first and last line of the paragraph. The
+ * line structures are linked into a list, which runs from
+ * `first' to `last' as might be expected. However, the list
+ * does not terminate there: first->prev will end up pointing
+ * to the last line of the previous paragraph in most cases,
+ * and likewise last->next will point to the first line of the
+ * next paragraph.
+ */
+ line_data *first; /* first line in paragraph */
+ line_data *last; /* last line in paragraph */
+ /*
+ * Some paragraphs have associated graphics; currently this is
+ * nothing more complex than a single black rectangle.
+ */
+ enum {
+ RECT_NONE, RECT_CHAPTER_UNDERLINE, RECT_RULE
+ } rect_type;
+ /*
+ * We left- and right-justify in special circumstances.
+ */
+ enum {
+ JUST, LEFT, RIGHT
+ } justification;
+ /*
+ * Sometimes (in code paragraphs) we want to override the flags
+ * passed to render_string().
+ */
+ unsigned extraflags;
+ /*
+ * For constructing the page outline.
+ */
+ int outline_level; /* 0=title 1=C 2=H 3=S 4=S2... */
+ wchar_t *outline_title;
+ /*
+ * For adding the page number of a contents entry afterwards.
+ */
+ paragraph *contents_entry;
+};
+
+struct line_data_Tag {
+ /*
+ * The parent paragraph.
+ */
+ para_data *pdata;
+ /*
+ * Pointers to join lines into a linked list.
+ */
+ line_data *prev;
+ line_data *next;
+ /*
+ * The extent of the text displayed on this line. Also mention
+ * its starting x position, and by how much the width of spaces
+ * needs to be adjusted for paragraph justification.
+ *
+ * (Unlike most of the `last' pointers defined in this file,
+ * this `end' pointer points to the word _after_ the last one
+ * that should be displayed on the line. This is how it's
+ * returned from wrap_para().)
+ */
+ word *first;
+ word *end;
+ int xpos;
+ int hshortfall, nspaces; /* for justifying paragraphs */
+ int real_shortfall;
+ /*
+ * Auxiliary text: a section number in a margin, or a list item
+ * bullet or number. Also mention where to display this text
+ * relative to the left margin.
+ */
+ word *aux_text;
+ word *aux_text_2;
+ int aux_left_indent;
+ /*
+ * This line might have a non-negotiable page break before it.
+ * Also there will be space required above and below it; also I
+ * store the physical line height (defined as the maximum of
+ * the heights of the three fonts in the pdata) because it's
+ * easier than looking it up repeatedly during page breaking.
+ */
+ int page_break;
+ int space_before;
+ int space_after;
+ int line_height;
+ /*
+ * Penalties for page breaking before or after this line.
+ */
+ int penalty_before, penalty_after;
+ /*
+ * These fields are used in the page breaking algorithm.
+ */
+ int *bestcost;
+ int *vshortfall, *text, *space;
+ line_data **page_last; /* last line on a page starting here */
+ /*
+ * After page breaking, we can assign an actual y-coordinate on
+ * the page to each line. Also we store a pointer back to the
+ * page structure itself.
+ */
+ int ypos;
+ page_data *page;
+};
+
+/*
+ * This data structure is constructed to describe each page of the
+ * printed output.
+ */
+struct page_data_Tag {
+ /*
+ * Pointers to join pages into a linked list.
+ */
+ page_data *prev;
+ page_data *next;
+ /*
+ * The set of lines displayed on this page.
+ */
+ line_data *first_line;
+ line_data *last_line;
+ /*
+ * After text rendering: the set of actual pieces of text
+ * needing to be displayed on this page.
+ */
+ text_fragment *first_text;
+ text_fragment *last_text;
+ /*
+ * Cross-references.
+ */
+ xref *first_xref;
+ xref *last_xref;
+ /*
+ * Rectangles to be drawn. (These are currently only used for
+ * underlining chapter titles and drawing horizontal rules.)
+ */
+ rect *first_rect;
+ rect *last_rect;
+ /*
+ * The page number, as a string.
+ */
+ wchar_t *number;
+ /*
+ * This spare pointer field is for use by the client backends.
+ */
+ void *spare;
+};
+
+struct text_fragment_Tag {
+ text_fragment *next;
+ int x, y;
+ font_encoding *fe;
+ int fontsize;
+ char *text;
+ int width;
+};
+
+struct xref_dest_Tag {
+ enum { NONE, PAGE, URL } type;
+ page_data *page;
+ char *url;
+};
+
+struct xref_Tag {
+ xref *next;
+ int lx, rx, ty, by;
+ xref_dest dest;
+};
+
+struct rect_Tag {
+ rect *next;
+ int x, y, w, h;
+};
+
+struct outline_element_Tag {
+ int level; /* 0=title 1=C 2=H 3=S 4=S2... */
+ para_data *pdata;
+};
+
+/*
+ * Functions exported from bk_paper.c
+ */
+int width_cmp(void *, void *); /* use when setting up widths */
+int kern_cmp(void *, void *); /* use when setting up kern_pairs */
+int lig_cmp(void *, void *); /* use when setting up ligatures */
+int find_width(font_data *, glyph);
+
+/*
+ * Functions and data exported from psdata.c.
+ */
+glyph glyph_intern(char const *);
+char const *glyph_extern(glyph);
+wchar_t ps_glyph_to_unicode(glyph);
+extern const char *const ps_std_glyphs[];
+void init_std_fonts(void);
+const int *ps_std_font_widths(char const *fontname);
+const kern_pair *ps_std_font_kerns(char const *fontname);
+
+/*
+ * Function from bk_pdf.c borrowed by bk_ps.c
+ */
+char *pdf_outline_convert(wchar_t *s, int *len);
+
+/*
+ * Backend functions exported by in_pf.c
+ */
+void pf_part1(font_info *fi, char **bufp, size_t *lenp);
+void pf_part2(font_info *fi, char **bufp, size_t *lenp);
+void pf_writeps(font_info const *fi, FILE *ofp);
+
+#endif
diff --git a/app/tools/halibut/psdata.c b/app/tools/halibut/psdata.c
new file mode 100644
index 0000000..4412055
--- /dev/null
+++ b/app/tools/halibut/psdata.c
@@ -0,0 +1,4523 @@
+/*
+ * Data, and supporting functions, for PostScript-based output
+ * formats.
+ */
+
+#include <assert.h>
+#include "halibut.h"
+#include "paper.h"
+
+/*
+ * Within the paper backends, PostScript glyph names are represented
+ * by small integers. For standard glyphs, these are indicies into
+ * a table generated from the Adobe Glyph List from
+ * <http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt>.
+ * Since all the scripts that generate fragments of code for this file
+ * need that list, it's worth generating a file containing just the names.
+
+grep '^[^#;][^;]*;[^ ][^ ][^ ][^ ]$' glyphlist.txt | sort -t\; -k1,2 | \
+ cut -f1 -d\; > glyphnames.txt
+
+< glyphnames.txt xargs printf '"%s", ' | fold -s -w68 | sed 's/^/ /'; echo
+
+ */
+static const char *const ps_glyphs_alphabetic[] = {
+ "A", "AE", "AEacute", "AEmacron", "AEsmall", "Aacute",
+ "Aacutesmall", "Abreve", "Abreveacute", "Abrevecyrillic",
+ "Abrevedotbelow", "Abrevegrave", "Abrevehookabove", "Abrevetilde",
+ "Acaron", "Acircle", "Acircumflex", "Acircumflexacute",
+ "Acircumflexdotbelow", "Acircumflexgrave", "Acircumflexhookabove",
+ "Acircumflexsmall", "Acircumflextilde", "Acute", "Acutesmall",
+ "Acyrillic", "Adblgrave", "Adieresis", "Adieresiscyrillic",
+ "Adieresismacron", "Adieresissmall", "Adotbelow", "Adotmacron",
+ "Agrave", "Agravesmall", "Ahookabove", "Aiecyrillic",
+ "Ainvertedbreve", "Alpha", "Alphatonos", "Amacron", "Amonospace",
+ "Aogonek", "Aring", "Aringacute", "Aringbelow", "Aringsmall",
+ "Asmall", "Atilde", "Atildesmall", "Aybarmenian", "B", "Bcircle",
+ "Bdotaccent", "Bdotbelow", "Becyrillic", "Benarmenian", "Beta",
+ "Bhook", "Blinebelow", "Bmonospace", "Brevesmall", "Bsmall",
+ "Btopbar", "C", "Caarmenian", "Cacute", "Caron", "Caronsmall",
+ "Ccaron", "Ccedilla", "Ccedillaacute", "Ccedillasmall", "Ccircle",
+ "Ccircumflex", "Cdot", "Cdotaccent", "Cedillasmall", "Chaarmenian",
+ "Cheabkhasiancyrillic", "Checyrillic",
+ "Chedescenderabkhasiancyrillic", "Chedescendercyrillic",
+ "Chedieresiscyrillic", "Cheharmenian", "Chekhakassiancyrillic",
+ "Cheverticalstrokecyrillic", "Chi", "Chook", "Circumflexsmall",
+ "Cmonospace", "Coarmenian", "Csmall", "D", "DZ", "DZcaron",
+ "Daarmenian", "Dafrican", "Dcaron", "Dcedilla", "Dcircle",
+ "Dcircumflexbelow", "Dcroat", "Ddotaccent", "Ddotbelow",
+ "Decyrillic", "Deicoptic", "Delta", "Deltagreek", "Dhook",
+ "Dieresis", "DieresisAcute", "DieresisGrave", "Dieresissmall",
+ "Digammagreek", "Djecyrillic", "Dlinebelow", "Dmonospace",
+ "Dotaccentsmall", "Dslash", "Dsmall", "Dtopbar", "Dz", "Dzcaron",
+ "Dzeabkhasiancyrillic", "Dzecyrillic", "Dzhecyrillic", "E",
+ "Eacute", "Eacutesmall", "Ebreve", "Ecaron", "Ecedillabreve",
+ "Echarmenian", "Ecircle", "Ecircumflex", "Ecircumflexacute",
+ "Ecircumflexbelow", "Ecircumflexdotbelow", "Ecircumflexgrave",
+ "Ecircumflexhookabove", "Ecircumflexsmall", "Ecircumflextilde",
+ "Ecyrillic", "Edblgrave", "Edieresis", "Edieresissmall", "Edot",
+ "Edotaccent", "Edotbelow", "Efcyrillic", "Egrave", "Egravesmall",
+ "Eharmenian", "Ehookabove", "Eightroman", "Einvertedbreve",
+ "Eiotifiedcyrillic", "Elcyrillic", "Elevenroman", "Emacron",
+ "Emacronacute", "Emacrongrave", "Emcyrillic", "Emonospace",
+ "Encyrillic", "Endescendercyrillic", "Eng", "Enghecyrillic",
+ "Enhookcyrillic", "Eogonek", "Eopen", "Epsilon", "Epsilontonos",
+ "Ercyrillic", "Ereversed", "Ereversedcyrillic", "Escyrillic",
+ "Esdescendercyrillic", "Esh", "Esmall", "Eta", "Etarmenian",
+ "Etatonos", "Eth", "Ethsmall", "Etilde", "Etildebelow", "Euro",
+ "Ezh", "Ezhcaron", "Ezhreversed", "F", "Fcircle", "Fdotaccent",
+ "Feharmenian", "Feicoptic", "Fhook", "Fitacyrillic", "Fiveroman",
+ "Fmonospace", "Fourroman", "Fsmall", "G", "GBsquare", "Gacute",
+ "Gamma", "Gammaafrican", "Gangiacoptic", "Gbreve", "Gcaron",
+ "Gcedilla", "Gcircle", "Gcircumflex", "Gcommaaccent", "Gdot",
+ "Gdotaccent", "Gecyrillic", "Ghadarmenian",
+ "Ghemiddlehookcyrillic", "Ghestrokecyrillic", "Gheupturncyrillic",
+ "Ghook", "Gimarmenian", "Gjecyrillic", "Gmacron", "Gmonospace",
+ "Grave", "Gravesmall", "Gsmall", "Gsmallhook", "Gstroke", "H",
+ "H18533", "H18543", "H18551", "H22073", "HPsquare",
+ "Haabkhasiancyrillic", "Hadescendercyrillic", "Hardsigncyrillic",
+ "Hbar", "Hbrevebelow", "Hcedilla", "Hcircle", "Hcircumflex",
+ "Hdieresis", "Hdotaccent", "Hdotbelow", "Hmonospace", "Hoarmenian",
+ "Horicoptic", "Hsmall", "Hungarumlaut", "Hungarumlautsmall",
+ "Hzsquare", "I", "IAcyrillic", "IJ", "IUcyrillic", "Iacute",
+ "Iacutesmall", "Ibreve", "Icaron", "Icircle", "Icircumflex",
+ "Icircumflexsmall", "Icyrillic", "Idblgrave", "Idieresis",
+ "Idieresisacute", "Idieresiscyrillic", "Idieresissmall", "Idot",
+ "Idotaccent", "Idotbelow", "Iebrevecyrillic", "Iecyrillic",
+ "Ifraktur", "Igrave", "Igravesmall", "Ihookabove", "Iicyrillic",
+ "Iinvertedbreve", "Iishortcyrillic", "Imacron", "Imacroncyrillic",
+ "Imonospace", "Iniarmenian", "Iocyrillic", "Iogonek", "Iota",
+ "Iotaafrican", "Iotadieresis", "Iotatonos", "Ismall", "Istroke",
+ "Itilde", "Itildebelow", "Izhitsacyrillic",
+ "Izhitsadblgravecyrillic", "J", "Jaarmenian", "Jcircle",
+ "Jcircumflex", "Jecyrillic", "Jheharmenian", "Jmonospace",
+ "Jsmall", "K", "KBsquare", "KKsquare", "Kabashkircyrillic",
+ "Kacute", "Kacyrillic", "Kadescendercyrillic", "Kahookcyrillic",
+ "Kappa", "Kastrokecyrillic", "Kaverticalstrokecyrillic", "Kcaron",
+ "Kcedilla", "Kcircle", "Kcommaaccent", "Kdotbelow", "Keharmenian",
+ "Kenarmenian", "Khacyrillic", "Kheicoptic", "Khook", "Kjecyrillic",
+ "Klinebelow", "Kmonospace", "Koppacyrillic", "Koppagreek",
+ "Ksicyrillic", "Ksmall", "L", "LJ", "LL", "Lacute", "Lambda",
+ "Lcaron", "Lcedilla", "Lcircle", "Lcircumflexbelow",
+ "Lcommaaccent", "Ldot", "Ldotaccent", "Ldotbelow",
+ "Ldotbelowmacron", "Liwnarmenian", "Lj", "Ljecyrillic",
+ "Llinebelow", "Lmonospace", "Lslash", "Lslashsmall", "Lsmall", "M",
+ "MBsquare", "Macron", "Macronsmall", "Macute", "Mcircle",
+ "Mdotaccent", "Mdotbelow", "Menarmenian", "Mmonospace", "Msmall",
+ "Mturned", "Mu", "N", "NJ", "Nacute", "Ncaron", "Ncedilla",
+ "Ncircle", "Ncircumflexbelow", "Ncommaaccent", "Ndotaccent",
+ "Ndotbelow", "Nhookleft", "Nineroman", "Nj", "Njecyrillic",
+ "Nlinebelow", "Nmonospace", "Nowarmenian", "Nsmall", "Ntilde",
+ "Ntildesmall", "Nu", "O", "OE", "OEsmall", "Oacute", "Oacutesmall",
+ "Obarredcyrillic", "Obarreddieresiscyrillic", "Obreve", "Ocaron",
+ "Ocenteredtilde", "Ocircle", "Ocircumflex", "Ocircumflexacute",
+ "Ocircumflexdotbelow", "Ocircumflexgrave", "Ocircumflexhookabove",
+ "Ocircumflexsmall", "Ocircumflextilde", "Ocyrillic", "Odblacute",
+ "Odblgrave", "Odieresis", "Odieresiscyrillic", "Odieresissmall",
+ "Odotbelow", "Ogoneksmall", "Ograve", "Ogravesmall", "Oharmenian",
+ "Ohm", "Ohookabove", "Ohorn", "Ohornacute", "Ohorndotbelow",
+ "Ohorngrave", "Ohornhookabove", "Ohorntilde", "Ohungarumlaut",
+ "Oi", "Oinvertedbreve", "Omacron", "Omacronacute", "Omacrongrave",
+ "Omega", "Omegacyrillic", "Omegagreek", "Omegaroundcyrillic",
+ "Omegatitlocyrillic", "Omegatonos", "Omicron", "Omicrontonos",
+ "Omonospace", "Oneroman", "Oogonek", "Oogonekmacron", "Oopen",
+ "Oslash", "Oslashacute", "Oslashsmall", "Osmall", "Ostrokeacute",
+ "Otcyrillic", "Otilde", "Otildeacute", "Otildedieresis",
+ "Otildesmall", "P", "Pacute", "Pcircle", "Pdotaccent",
+ "Pecyrillic", "Peharmenian", "Pemiddlehookcyrillic", "Phi",
+ "Phook", "Pi", "Piwrarmenian", "Pmonospace", "Psi", "Psicyrillic",
+ "Psmall", "Q", "Qcircle", "Qmonospace", "Qsmall", "R",
+ "Raarmenian", "Racute", "Rcaron", "Rcedilla", "Rcircle",
+ "Rcommaaccent", "Rdblgrave", "Rdotaccent", "Rdotbelow",
+ "Rdotbelowmacron", "Reharmenian", "Rfraktur", "Rho", "Ringsmall",
+ "Rinvertedbreve", "Rlinebelow", "Rmonospace", "Rsmall",
+ "Rsmallinverted", "Rsmallinvertedsuperior", "S", "SF010000",
+ "SF020000", "SF030000", "SF040000", "SF050000", "SF060000",
+ "SF070000", "SF080000", "SF090000", "SF100000", "SF110000",
+ "SF190000", "SF200000", "SF210000", "SF220000", "SF230000",
+ "SF240000", "SF250000", "SF260000", "SF270000", "SF280000",
+ "SF360000", "SF370000", "SF380000", "SF390000", "SF400000",
+ "SF410000", "SF420000", "SF430000", "SF440000", "SF450000",
+ "SF460000", "SF470000", "SF480000", "SF490000", "SF500000",
+ "SF510000", "SF520000", "SF530000", "SF540000", "Sacute",
+ "Sacutedotaccent", "Sampigreek", "Scaron", "Scarondotaccent",
+ "Scaronsmall", "Scedilla", "Schwa", "Schwacyrillic",
+ "Schwadieresiscyrillic", "Scircle", "Scircumflex", "Scommaaccent",
+ "Sdotaccent", "Sdotbelow", "Sdotbelowdotaccent", "Seharmenian",
+ "Sevenroman", "Shaarmenian", "Shacyrillic", "Shchacyrillic",
+ "Sheicoptic", "Shhacyrillic", "Shimacoptic", "Sigma", "Sixroman",
+ "Smonospace", "Softsigncyrillic", "Ssmall", "Stigmagreek", "T",
+ "Tau", "Tbar", "Tcaron", "Tcedilla", "Tcircle", "Tcircumflexbelow",
+ "Tcommaaccent", "Tdotaccent", "Tdotbelow", "Tecyrillic",
+ "Tedescendercyrillic", "Tenroman", "Tetsecyrillic", "Theta",
+ "Thook", "Thorn", "Thornsmall", "Threeroman", "Tildesmall",
+ "Tiwnarmenian", "Tlinebelow", "Tmonospace", "Toarmenian",
+ "Tonefive", "Tonesix", "Tonetwo", "Tretroflexhook", "Tsecyrillic",
+ "Tshecyrillic", "Tsmall", "Twelveroman", "Tworoman", "U", "Uacute",
+ "Uacutesmall", "Ubreve", "Ucaron", "Ucircle", "Ucircumflex",
+ "Ucircumflexbelow", "Ucircumflexsmall", "Ucyrillic", "Udblacute",
+ "Udblgrave", "Udieresis", "Udieresisacute", "Udieresisbelow",
+ "Udieresiscaron", "Udieresiscyrillic", "Udieresisgrave",
+ "Udieresismacron", "Udieresissmall", "Udotbelow", "Ugrave",
+ "Ugravesmall", "Uhookabove", "Uhorn", "Uhornacute",
+ "Uhorndotbelow", "Uhorngrave", "Uhornhookabove", "Uhorntilde",
+ "Uhungarumlaut", "Uhungarumlautcyrillic", "Uinvertedbreve",
+ "Ukcyrillic", "Umacron", "Umacroncyrillic", "Umacrondieresis",
+ "Umonospace", "Uogonek", "Upsilon", "Upsilon1",
+ "Upsilonacutehooksymbolgreek", "Upsilonafrican", "Upsilondieresis",
+ "Upsilondieresishooksymbolgreek", "Upsilonhooksymbol",
+ "Upsilontonos", "Uring", "Ushortcyrillic", "Usmall",
+ "Ustraightcyrillic", "Ustraightstrokecyrillic", "Utilde",
+ "Utildeacute", "Utildebelow", "V", "Vcircle", "Vdotbelow",
+ "Vecyrillic", "Vewarmenian", "Vhook", "Vmonospace", "Voarmenian",
+ "Vsmall", "Vtilde", "W", "Wacute", "Wcircle", "Wcircumflex",
+ "Wdieresis", "Wdotaccent", "Wdotbelow", "Wgrave", "Wmonospace",
+ "Wsmall", "X", "Xcircle", "Xdieresis", "Xdotaccent", "Xeharmenian",
+ "Xi", "Xmonospace", "Xsmall", "Y", "Yacute", "Yacutesmall",
+ "Yatcyrillic", "Ycircle", "Ycircumflex", "Ydieresis",
+ "Ydieresissmall", "Ydotaccent", "Ydotbelow", "Yericyrillic",
+ "Yerudieresiscyrillic", "Ygrave", "Yhook", "Yhookabove",
+ "Yiarmenian", "Yicyrillic", "Yiwnarmenian", "Ymonospace", "Ysmall",
+ "Ytilde", "Yusbigcyrillic", "Yusbigiotifiedcyrillic",
+ "Yuslittlecyrillic", "Yuslittleiotifiedcyrillic", "Z",
+ "Zaarmenian", "Zacute", "Zcaron", "Zcaronsmall", "Zcircle",
+ "Zcircumflex", "Zdot", "Zdotaccent", "Zdotbelow", "Zecyrillic",
+ "Zedescendercyrillic", "Zedieresiscyrillic", "Zeta", "Zhearmenian",
+ "Zhebrevecyrillic", "Zhecyrillic", "Zhedescendercyrillic",
+ "Zhedieresiscyrillic", "Zlinebelow", "Zmonospace", "Zsmall",
+ "Zstroke", "a", "aabengali", "aacute", "aadeva", "aagujarati",
+ "aagurmukhi", "aamatragurmukhi", "aarusquare",
+ "aavowelsignbengali", "aavowelsigndeva", "aavowelsigngujarati",
+ "abbreviationmarkarmenian", "abbreviationsigndeva", "abengali",
+ "abopomofo", "abreve", "abreveacute", "abrevecyrillic",
+ "abrevedotbelow", "abrevegrave", "abrevehookabove", "abrevetilde",
+ "acaron", "acircle", "acircumflex", "acircumflexacute",
+ "acircumflexdotbelow", "acircumflexgrave", "acircumflexhookabove",
+ "acircumflextilde", "acute", "acutebelowcmb", "acutecmb",
+ "acutecomb", "acutedeva", "acutelowmod", "acutetonecmb",
+ "acyrillic", "adblgrave", "addakgurmukhi", "adeva", "adieresis",
+ "adieresiscyrillic", "adieresismacron", "adotbelow", "adotmacron",
+ "ae", "aeacute", "aekorean", "aemacron", "afii00208", "afii08941",
+ "afii10017", "afii10018", "afii10019", "afii10020", "afii10021",
+ "afii10022", "afii10023", "afii10024", "afii10025", "afii10026",
+ "afii10027", "afii10028", "afii10029", "afii10030", "afii10031",
+ "afii10032", "afii10033", "afii10034", "afii10035", "afii10036",
+ "afii10037", "afii10038", "afii10039", "afii10040", "afii10041",
+ "afii10042", "afii10043", "afii10044", "afii10045", "afii10046",
+ "afii10047", "afii10048", "afii10049", "afii10050", "afii10051",
+ "afii10052", "afii10053", "afii10054", "afii10055", "afii10056",
+ "afii10057", "afii10058", "afii10059", "afii10060", "afii10061",
+ "afii10062", "afii10063", "afii10064", "afii10065", "afii10066",
+ "afii10067", "afii10068", "afii10069", "afii10070", "afii10071",
+ "afii10072", "afii10073", "afii10074", "afii10075", "afii10076",
+ "afii10077", "afii10078", "afii10079", "afii10080", "afii10081",
+ "afii10082", "afii10083", "afii10084", "afii10085", "afii10086",
+ "afii10087", "afii10088", "afii10089", "afii10090", "afii10091",
+ "afii10092", "afii10093", "afii10094", "afii10095", "afii10096",
+ "afii10097", "afii10098", "afii10099", "afii10100", "afii10101",
+ "afii10102", "afii10103", "afii10104", "afii10105", "afii10106",
+ "afii10107", "afii10108", "afii10109", "afii10110", "afii10145",
+ "afii10146", "afii10147", "afii10148", "afii10192", "afii10193",
+ "afii10194", "afii10195", "afii10196", "afii10831", "afii10832",
+ "afii10846", "afii299", "afii300", "afii301", "afii57381",
+ "afii57388", "afii57392", "afii57393", "afii57394", "afii57395",
+ "afii57396", "afii57397", "afii57398", "afii57399", "afii57400",
+ "afii57401", "afii57403", "afii57407", "afii57409", "afii57410",
+ "afii57411", "afii57412", "afii57413", "afii57414", "afii57415",
+ "afii57416", "afii57417", "afii57418", "afii57419", "afii57420",
+ "afii57421", "afii57422", "afii57423", "afii57424", "afii57425",
+ "afii57426", "afii57427", "afii57428", "afii57429", "afii57430",
+ "afii57431", "afii57432", "afii57433", "afii57434", "afii57440",
+ "afii57441", "afii57442", "afii57443", "afii57444", "afii57445",
+ "afii57446", "afii57448", "afii57449", "afii57450", "afii57451",
+ "afii57452", "afii57453", "afii57454", "afii57455", "afii57456",
+ "afii57457", "afii57458", "afii57470", "afii57505", "afii57506",
+ "afii57507", "afii57508", "afii57509", "afii57511", "afii57512",
+ "afii57513", "afii57514", "afii57519", "afii57534", "afii57636",
+ "afii57645", "afii57658", "afii57664", "afii57665", "afii57666",
+ "afii57667", "afii57668", "afii57669", "afii57670", "afii57671",
+ "afii57672", "afii57673", "afii57674", "afii57675", "afii57676",
+ "afii57677", "afii57678", "afii57679", "afii57680", "afii57681",
+ "afii57682", "afii57683", "afii57684", "afii57685", "afii57686",
+ "afii57687", "afii57688", "afii57689", "afii57690", "afii57694",
+ "afii57695", "afii57700", "afii57705", "afii57716", "afii57717",
+ "afii57718", "afii57723", "afii57793", "afii57794", "afii57795",
+ "afii57796", "afii57797", "afii57798", "afii57799", "afii57800",
+ "afii57801", "afii57802", "afii57803", "afii57804", "afii57806",
+ "afii57807", "afii57839", "afii57841", "afii57842", "afii57929",
+ "afii61248", "afii61289", "afii61352", "afii61573", "afii61574",
+ "afii61575", "afii61664", "afii63167", "afii64937", "agrave",
+ "agujarati", "agurmukhi", "ahiragana", "ahookabove", "aibengali",
+ "aibopomofo", "aideva", "aiecyrillic", "aigujarati", "aigurmukhi",
+ "aimatragurmukhi", "ainarabic", "ainfinalarabic",
+ "aininitialarabic", "ainmedialarabic", "ainvertedbreve",
+ "aivowelsignbengali", "aivowelsigndeva", "aivowelsigngujarati",
+ "akatakana", "akatakanahalfwidth", "akorean", "alef", "alefarabic",
+ "alefdageshhebrew", "aleffinalarabic", "alefhamzaabovearabic",
+ "alefhamzaabovefinalarabic", "alefhamzabelowarabic",
+ "alefhamzabelowfinalarabic", "alefhebrew", "aleflamedhebrew",
+ "alefmaddaabovearabic", "alefmaddaabovefinalarabic",
+ "alefmaksuraarabic", "alefmaksurafinalarabic",
+ "alefmaksurainitialarabic", "alefmaksuramedialarabic",
+ "alefpatahhebrew", "alefqamatshebrew", "aleph", "allequal",
+ "alpha", "alphatonos", "amacron", "amonospace", "ampersand",
+ "ampersandmonospace", "ampersandsmall", "amsquare", "anbopomofo",
+ "angbopomofo", "angkhankhuthai", "angle", "anglebracketleft",
+ "anglebracketleftvertical", "anglebracketright",
+ "anglebracketrightvertical", "angleleft", "angleright", "angstrom",
+ "anoteleia", "anudattadeva", "anusvarabengali", "anusvaradeva",
+ "anusvaragujarati", "aogonek", "apaatosquare", "aparen",
+ "apostrophearmenian", "apostrophemod", "apple", "approaches",
+ "approxequal", "approxequalorimage", "approximatelyequal",
+ "araeaekorean", "araeakorean", "arc", "arighthalfring", "aring",
+ "aringacute", "aringbelow", "arrowboth", "arrowdashdown",
+ "arrowdashleft", "arrowdashright", "arrowdashup", "arrowdblboth",
+ "arrowdbldown", "arrowdblleft", "arrowdblright", "arrowdblup",
+ "arrowdown", "arrowdownleft", "arrowdownright", "arrowdownwhite",
+ "arrowheaddownmod", "arrowheadleftmod", "arrowheadrightmod",
+ "arrowheadupmod", "arrowhorizex", "arrowleft", "arrowleftdbl",
+ "arrowleftdblstroke", "arrowleftoverright", "arrowleftwhite",
+ "arrowright", "arrowrightdblstroke", "arrowrightheavy",
+ "arrowrightoverleft", "arrowrightwhite", "arrowtableft",
+ "arrowtabright", "arrowup", "arrowupdn", "arrowupdnbse",
+ "arrowupdownbase", "arrowupleft", "arrowupleftofdown",
+ "arrowupright", "arrowupwhite", "arrowvertex", "asciicircum",
+ "asciicircummonospace", "asciitilde", "asciitildemonospace",
+ "ascript", "ascriptturned", "asmallhiragana", "asmallkatakana",
+ "asmallkatakanahalfwidth", "asterisk", "asteriskaltonearabic",
+ "asteriskarabic", "asteriskmath", "asteriskmonospace",
+ "asterisksmall", "asterism", "asuperior", "asymptoticallyequal",
+ "at", "atilde", "atmonospace", "atsmall", "aturned", "aubengali",
+ "aubopomofo", "audeva", "augujarati", "augurmukhi",
+ "aulengthmarkbengali", "aumatragurmukhi", "auvowelsignbengali",
+ "auvowelsigndeva", "auvowelsigngujarati", "avagrahadeva",
+ "aybarmenian", "ayin", "ayinaltonehebrew", "ayinhebrew", "b",
+ "babengali", "backslash", "backslashmonospace", "badeva",
+ "bagujarati", "bagurmukhi", "bahiragana", "bahtthai", "bakatakana",
+ "bar", "barmonospace", "bbopomofo", "bcircle", "bdotaccent",
+ "bdotbelow", "beamedsixteenthnotes", "because", "becyrillic",
+ "beharabic", "behfinalarabic", "behinitialarabic", "behiragana",
+ "behmedialarabic", "behmeeminitialarabic", "behmeemisolatedarabic",
+ "behnoonfinalarabic", "bekatakana", "benarmenian", "bet", "beta",
+ "betasymbolgreek", "betdagesh", "betdageshhebrew", "bethebrew",
+ "betrafehebrew", "bhabengali", "bhadeva", "bhagujarati",
+ "bhagurmukhi", "bhook", "bihiragana", "bikatakana",
+ "bilabialclick", "bindigurmukhi", "birusquare", "blackcircle",
+ "blackdiamond", "blackdownpointingtriangle",
+ "blackleftpointingpointer", "blackleftpointingtriangle",
+ "blacklenticularbracketleft", "blacklenticularbracketleftvertical",
+ "blacklenticularbracketright",
+ "blacklenticularbracketrightvertical", "blacklowerlefttriangle",
+ "blacklowerrighttriangle", "blackrectangle",
+ "blackrightpointingpointer", "blackrightpointingtriangle",
+ "blacksmallsquare", "blacksmilingface", "blacksquare", "blackstar",
+ "blackupperlefttriangle", "blackupperrighttriangle",
+ "blackuppointingsmalltriangle", "blackuppointingtriangle", "blank",
+ "blinebelow", "block", "bmonospace", "bobaimaithai", "bohiragana",
+ "bokatakana", "bparen", "bqsquare", "braceex", "braceleft",
+ "braceleftbt", "braceleftmid", "braceleftmonospace",
+ "braceleftsmall", "bracelefttp", "braceleftvertical", "braceright",
+ "bracerightbt", "bracerightmid", "bracerightmonospace",
+ "bracerightsmall", "bracerighttp", "bracerightvertical",
+ "bracketleft", "bracketleftbt", "bracketleftex",
+ "bracketleftmonospace", "bracketlefttp", "bracketright",
+ "bracketrightbt", "bracketrightex", "bracketrightmonospace",
+ "bracketrighttp", "breve", "brevebelowcmb", "brevecmb",
+ "breveinvertedbelowcmb", "breveinvertedcmb",
+ "breveinverteddoublecmb", "bridgebelowcmb",
+ "bridgeinvertedbelowcmb", "brokenbar", "bstroke", "bsuperior",
+ "btopbar", "buhiragana", "bukatakana", "bullet", "bulletinverse",
+ "bulletoperator", "bullseye", "c", "caarmenian", "cabengali",
+ "cacute", "cadeva", "cagujarati", "cagurmukhi", "calsquare",
+ "candrabindubengali", "candrabinducmb", "candrabindudeva",
+ "candrabindugujarati", "capslock", "careof", "caron",
+ "caronbelowcmb", "caroncmb", "carriagereturn", "cbopomofo",
+ "ccaron", "ccedilla", "ccedillaacute", "ccircle", "ccircumflex",
+ "ccurl", "cdot", "cdotaccent", "cdsquare", "cedilla", "cedillacmb",
+ "cent", "centigrade", "centinferior", "centmonospace",
+ "centoldstyle", "centsuperior", "chaarmenian", "chabengali",
+ "chadeva", "chagujarati", "chagurmukhi", "chbopomofo",
+ "cheabkhasiancyrillic", "checkmark", "checyrillic",
+ "chedescenderabkhasiancyrillic", "chedescendercyrillic",
+ "chedieresiscyrillic", "cheharmenian", "chekhakassiancyrillic",
+ "cheverticalstrokecyrillic", "chi", "chieuchacirclekorean",
+ "chieuchaparenkorean", "chieuchcirclekorean", "chieuchkorean",
+ "chieuchparenkorean", "chochangthai", "chochanthai",
+ "chochingthai", "chochoethai", "chook", "cieucacirclekorean",
+ "cieucaparenkorean", "cieuccirclekorean", "cieuckorean",
+ "cieucparenkorean", "cieucuparenkorean", "circle",
+ "circlemultiply", "circleot", "circleplus", "circlepostalmark",
+ "circlewithlefthalfblack", "circlewithrighthalfblack",
+ "circumflex", "circumflexbelowcmb", "circumflexcmb", "clear",
+ "clickalveolar", "clickdental", "clicklateral", "clickretroflex",
+ "club", "clubsuitblack", "clubsuitwhite", "cmcubedsquare",
+ "cmonospace", "cmsquaredsquare", "coarmenian", "colon",
+ "colonmonetary", "colonmonospace", "colonsign", "colonsmall",
+ "colontriangularhalfmod", "colontriangularmod", "comma",
+ "commaabovecmb", "commaaboverightcmb", "commaaccent",
+ "commaarabic", "commaarmenian", "commainferior", "commamonospace",
+ "commareversedabovecmb", "commareversedmod", "commasmall",
+ "commasuperior", "commaturnedabovecmb", "commaturnedmod",
+ "compass", "congruent", "contourintegral", "control", "controlACK",
+ "controlBEL", "controlBS", "controlCAN", "controlCR", "controlDC1",
+ "controlDC2", "controlDC3", "controlDC4", "controlDEL",
+ "controlDLE", "controlEM", "controlENQ", "controlEOT",
+ "controlESC", "controlETB", "controlETX", "controlFF", "controlFS",
+ "controlGS", "controlHT", "controlLF", "controlNAK", "controlRS",
+ "controlSI", "controlSO", "controlSOT", "controlSTX", "controlSUB",
+ "controlSYN", "controlUS", "controlVT", "copyright",
+ "copyrightsans", "copyrightserif", "cornerbracketleft",
+ "cornerbracketlefthalfwidth", "cornerbracketleftvertical",
+ "cornerbracketright", "cornerbracketrighthalfwidth",
+ "cornerbracketrightvertical", "corporationsquare", "cosquare",
+ "coverkgsquare", "cparen", "cruzeiro", "cstretched", "curlyand",
+ "curlyor", "currency", "cyrBreve", "cyrFlex", "cyrbreve",
+ "cyrflex", "d", "daarmenian", "dabengali", "dadarabic", "dadeva",
+ "dadfinalarabic", "dadinitialarabic", "dadmedialarabic", "dagesh",
+ "dageshhebrew", "dagger", "daggerdbl", "dagujarati", "dagurmukhi",
+ "dahiragana", "dakatakana", "dalarabic", "dalet", "daletdagesh",
+ "daletdageshhebrew", "dalethebrew", "dalfinalarabic",
+ "dammaarabic", "dammalowarabic", "dammatanaltonearabic",
+ "dammatanarabic", "danda", "dargahebrew", "dargalefthebrew",
+ "dasiapneumatacyrilliccmb", "dblGrave", "dblanglebracketleft",
+ "dblanglebracketleftvertical", "dblanglebracketright",
+ "dblanglebracketrightvertical", "dblarchinvertedbelowcmb",
+ "dblarrowleft", "dblarrowright", "dbldanda", "dblgrave",
+ "dblgravecmb", "dblintegral", "dbllowline", "dbllowlinecmb",
+ "dbloverlinecmb", "dblprimemod", "dblverticalbar",
+ "dblverticallineabovecmb", "dbopomofo", "dbsquare", "dcaron",
+ "dcedilla", "dcircle", "dcircumflexbelow", "dcroat", "ddabengali",
+ "ddadeva", "ddagujarati", "ddagurmukhi", "ddalarabic",
+ "ddalfinalarabic", "dddhadeva", "ddhabengali", "ddhadeva",
+ "ddhagujarati", "ddhagurmukhi", "ddotaccent", "ddotbelow",
+ "decimalseparatorarabic", "decimalseparatorpersian", "decyrillic",
+ "degree", "dehihebrew", "dehiragana", "deicoptic", "dekatakana",
+ "deleteleft", "deleteright", "delta", "deltaturned",
+ "denominatorminusonenumeratorbengali", "dezh", "dhabengali",
+ "dhadeva", "dhagujarati", "dhagurmukhi", "dhook", "dialytikatonos",
+ "dialytikatonoscmb", "diamond", "diamondsuitwhite", "dieresis",
+ "dieresisacute", "dieresisbelowcmb", "dieresiscmb",
+ "dieresisgrave", "dieresistonos", "dihiragana", "dikatakana",
+ "dittomark", "divide", "divides", "divisionslash", "djecyrillic",
+ "dkshade", "dlinebelow", "dlsquare", "dmacron", "dmonospace",
+ "dnblock", "dochadathai", "dodekthai", "dohiragana", "dokatakana",
+ "dollar", "dollarinferior", "dollarmonospace", "dollaroldstyle",
+ "dollarsmall", "dollarsuperior", "dong", "dorusquare", "dotaccent",
+ "dotaccentcmb", "dotbelowcmb", "dotbelowcomb", "dotkatakana",
+ "dotlessi", "dotlessj", "dotlessjstrokehook", "dotmath",
+ "dottedcircle", "doubleyodpatah", "doubleyodpatahhebrew",
+ "downtackbelowcmb", "downtackmod", "dparen", "dsuperior", "dtail",
+ "dtopbar", "duhiragana", "dukatakana", "dz", "dzaltone", "dzcaron",
+ "dzcurl", "dzeabkhasiancyrillic", "dzecyrillic", "dzhecyrillic",
+ "e", "eacute", "earth", "ebengali", "ebopomofo", "ebreve",
+ "ecandradeva", "ecandragujarati", "ecandravowelsigndeva",
+ "ecandravowelsigngujarati", "ecaron", "ecedillabreve",
+ "echarmenian", "echyiwnarmenian", "ecircle", "ecircumflex",
+ "ecircumflexacute", "ecircumflexbelow", "ecircumflexdotbelow",
+ "ecircumflexgrave", "ecircumflexhookabove", "ecircumflextilde",
+ "ecyrillic", "edblgrave", "edeva", "edieresis", "edot",
+ "edotaccent", "edotbelow", "eegurmukhi", "eematragurmukhi",
+ "efcyrillic", "egrave", "egujarati", "eharmenian", "ehbopomofo",
+ "ehiragana", "ehookabove", "eibopomofo", "eight", "eightarabic",
+ "eightbengali", "eightcircle", "eightcircleinversesansserif",
+ "eightdeva", "eighteencircle", "eighteenparen", "eighteenperiod",
+ "eightgujarati", "eightgurmukhi", "eighthackarabic",
+ "eighthangzhou", "eighthnotebeamed", "eightideographicparen",
+ "eightinferior", "eightmonospace", "eightoldstyle", "eightparen",
+ "eightperiod", "eightpersian", "eightroman", "eightsuperior",
+ "eightthai", "einvertedbreve", "eiotifiedcyrillic", "ekatakana",
+ "ekatakanahalfwidth", "ekonkargurmukhi", "ekorean", "elcyrillic",
+ "element", "elevencircle", "elevenparen", "elevenperiod",
+ "elevenroman", "ellipsis", "ellipsisvertical", "emacron",
+ "emacronacute", "emacrongrave", "emcyrillic", "emdash",
+ "emdashvertical", "emonospace", "emphasismarkarmenian", "emptyset",
+ "enbopomofo", "encyrillic", "endash", "endashvertical",
+ "endescendercyrillic", "eng", "engbopomofo", "enghecyrillic",
+ "enhookcyrillic", "enspace", "eogonek", "eokorean", "eopen",
+ "eopenclosed", "eopenreversed", "eopenreversedclosed",
+ "eopenreversedhook", "eparen", "epsilon", "epsilontonos", "equal",
+ "equalmonospace", "equalsmall", "equalsuperior", "equivalence",
+ "erbopomofo", "ercyrillic", "ereversed", "ereversedcyrillic",
+ "escyrillic", "esdescendercyrillic", "esh", "eshcurl",
+ "eshortdeva", "eshortvowelsigndeva", "eshreversedloop",
+ "eshsquatreversed", "esmallhiragana", "esmallkatakana",
+ "esmallkatakanahalfwidth", "estimated", "esuperior", "eta",
+ "etarmenian", "etatonos", "eth", "etilde", "etildebelow",
+ "etnahtafoukhhebrew", "etnahtafoukhlefthebrew", "etnahtahebrew",
+ "etnahtalefthebrew", "eturned", "eukorean", "euro",
+ "evowelsignbengali", "evowelsigndeva", "evowelsigngujarati",
+ "exclam", "exclamarmenian", "exclamdbl", "exclamdown",
+ "exclamdownsmall", "exclammonospace", "exclamsmall", "existential",
+ "ezh", "ezhcaron", "ezhcurl", "ezhreversed", "ezhtail", "f",
+ "fadeva", "fagurmukhi", "fahrenheit", "fathaarabic",
+ "fathalowarabic", "fathatanarabic", "fbopomofo", "fcircle",
+ "fdotaccent", "feharabic", "feharmenian", "fehfinalarabic",
+ "fehinitialarabic", "fehmedialarabic", "feicoptic", "female", "ff",
+ "ffi", "ffl", "fi", "fifteencircle", "fifteenparen",
+ "fifteenperiod", "figuredash", "filledbox", "filledrect",
+ "finalkaf", "finalkafdagesh", "finalkafdageshhebrew",
+ "finalkafhebrew", "finalmem", "finalmemhebrew", "finalnun",
+ "finalnunhebrew", "finalpe", "finalpehebrew", "finaltsadi",
+ "finaltsadihebrew", "firsttonechinese", "fisheye", "fitacyrillic",
+ "five", "fivearabic", "fivebengali", "fivecircle",
+ "fivecircleinversesansserif", "fivedeva", "fiveeighths",
+ "fivegujarati", "fivegurmukhi", "fivehackarabic", "fivehangzhou",
+ "fiveideographicparen", "fiveinferior", "fivemonospace",
+ "fiveoldstyle", "fiveparen", "fiveperiod", "fivepersian",
+ "fiveroman", "fivesuperior", "fivethai", "fl", "florin",
+ "fmonospace", "fmsquare", "fofanthai", "fofathai", "fongmanthai",
+ "forall", "four", "fourarabic", "fourbengali", "fourcircle",
+ "fourcircleinversesansserif", "fourdeva", "fourgujarati",
+ "fourgurmukhi", "fourhackarabic", "fourhangzhou",
+ "fourideographicparen", "fourinferior", "fourmonospace",
+ "fournumeratorbengali", "fouroldstyle", "fourparen", "fourperiod",
+ "fourpersian", "fourroman", "foursuperior", "fourteencircle",
+ "fourteenparen", "fourteenperiod", "fourthai", "fourthtonechinese",
+ "fparen", "fraction", "franc", "g", "gabengali", "gacute",
+ "gadeva", "gafarabic", "gaffinalarabic", "gafinitialarabic",
+ "gafmedialarabic", "gagujarati", "gagurmukhi", "gahiragana",
+ "gakatakana", "gamma", "gammalatinsmall", "gammasuperior",
+ "gangiacoptic", "gbopomofo", "gbreve", "gcaron", "gcedilla",
+ "gcircle", "gcircumflex", "gcommaaccent", "gdot", "gdotaccent",
+ "gecyrillic", "gehiragana", "gekatakana", "geometricallyequal",
+ "gereshaccenthebrew", "gereshhebrew", "gereshmuqdamhebrew",
+ "germandbls", "gershayimaccenthebrew", "gershayimhebrew",
+ "getamark", "ghabengali", "ghadarmenian", "ghadeva", "ghagujarati",
+ "ghagurmukhi", "ghainarabic", "ghainfinalarabic",
+ "ghaininitialarabic", "ghainmedialarabic", "ghemiddlehookcyrillic",
+ "ghestrokecyrillic", "gheupturncyrillic", "ghhadeva",
+ "ghhagurmukhi", "ghook", "ghzsquare", "gihiragana", "gikatakana",
+ "gimarmenian", "gimel", "gimeldagesh", "gimeldageshhebrew",
+ "gimelhebrew", "gjecyrillic", "glottalinvertedstroke",
+ "glottalstop", "glottalstopinverted", "glottalstopmod",
+ "glottalstopreversed", "glottalstopreversedmod",
+ "glottalstopreversedsuperior", "glottalstopstroke",
+ "glottalstopstrokereversed", "gmacron", "gmonospace", "gohiragana",
+ "gokatakana", "gparen", "gpasquare", "gradient", "grave",
+ "gravebelowcmb", "gravecmb", "gravecomb", "gravedeva",
+ "gravelowmod", "gravemonospace", "gravetonecmb", "greater",
+ "greaterequal", "greaterequalorless", "greatermonospace",
+ "greaterorequivalent", "greaterorless", "greateroverequal",
+ "greatersmall", "gscript", "gstroke", "guhiragana",
+ "guillemotleft", "guillemotright", "guilsinglleft",
+ "guilsinglright", "gukatakana", "guramusquare", "gysquare", "h",
+ "haabkhasiancyrillic", "haaltonearabic", "habengali",
+ "hadescendercyrillic", "hadeva", "hagujarati", "hagurmukhi",
+ "haharabic", "hahfinalarabic", "hahinitialarabic", "hahiragana",
+ "hahmedialarabic", "haitusquare", "hakatakana",
+ "hakatakanahalfwidth", "halantgurmukhi", "hamzaarabic",
+ "hamzalowarabic", "hangulfiller", "hardsigncyrillic",
+ "harpoonleftbarbup", "harpoonrightbarbup", "hasquare",
+ "hatafpatah", "hatafpatah16", "hatafpatah23", "hatafpatah2f",
+ "hatafpatahhebrew", "hatafpatahnarrowhebrew",
+ "hatafpatahquarterhebrew", "hatafpatahwidehebrew", "hatafqamats",
+ "hatafqamats1b", "hatafqamats28", "hatafqamats34",
+ "hatafqamatshebrew", "hatafqamatsnarrowhebrew",
+ "hatafqamatsquarterhebrew", "hatafqamatswidehebrew", "hatafsegol",
+ "hatafsegol17", "hatafsegol24", "hatafsegol30", "hatafsegolhebrew",
+ "hatafsegolnarrowhebrew", "hatafsegolquarterhebrew",
+ "hatafsegolwidehebrew", "hbar", "hbopomofo", "hbrevebelow",
+ "hcedilla", "hcircle", "hcircumflex", "hdieresis", "hdotaccent",
+ "hdotbelow", "he", "heart", "heartsuitblack", "heartsuitwhite",
+ "hedagesh", "hedageshhebrew", "hehaltonearabic", "heharabic",
+ "hehebrew", "hehfinalaltonearabic", "hehfinalalttwoarabic",
+ "hehfinalarabic", "hehhamzaabovefinalarabic",
+ "hehhamzaaboveisolatedarabic", "hehinitialaltonearabic",
+ "hehinitialarabic", "hehiragana", "hehmedialaltonearabic",
+ "hehmedialarabic", "heiseierasquare", "hekatakana",
+ "hekatakanahalfwidth", "hekutaarusquare", "henghook",
+ "herutusquare", "het", "hethebrew", "hhook", "hhooksuperior",
+ "hieuhacirclekorean", "hieuhaparenkorean", "hieuhcirclekorean",
+ "hieuhkorean", "hieuhparenkorean", "hihiragana", "hikatakana",
+ "hikatakanahalfwidth", "hiriq", "hiriq14", "hiriq21", "hiriq2d",
+ "hiriqhebrew", "hiriqnarrowhebrew", "hiriqquarterhebrew",
+ "hiriqwidehebrew", "hlinebelow", "hmonospace", "hoarmenian",
+ "hohipthai", "hohiragana", "hokatakana", "hokatakanahalfwidth",
+ "holam", "holam19", "holam26", "holam32", "holamhebrew",
+ "holamnarrowhebrew", "holamquarterhebrew", "holamwidehebrew",
+ "honokhukthai", "hookabovecomb", "hookcmb",
+ "hookpalatalizedbelowcmb", "hookretroflexbelowcmb", "hoonsquare",
+ "horicoptic", "horizontalbar", "horncmb", "hotsprings", "house",
+ "hparen", "hsuperior", "hturned", "huhiragana", "huiitosquare",
+ "hukatakana", "hukatakanahalfwidth", "hungarumlaut",
+ "hungarumlautcmb", "hv", "hyphen", "hypheninferior",
+ "hyphenmonospace", "hyphensmall", "hyphensuperior", "hyphentwo",
+ "i", "iacute", "iacyrillic", "ibengali", "ibopomofo", "ibreve",
+ "icaron", "icircle", "icircumflex", "icyrillic", "idblgrave",
+ "ideographearthcircle", "ideographfirecircle",
+ "ideographicallianceparen", "ideographiccallparen",
+ "ideographiccentrecircle", "ideographicclose", "ideographiccomma",
+ "ideographiccommaleft", "ideographiccongratulationparen",
+ "ideographiccorrectcircle", "ideographicearthparen",
+ "ideographicenterpriseparen", "ideographicexcellentcircle",
+ "ideographicfestivalparen", "ideographicfinancialcircle",
+ "ideographicfinancialparen", "ideographicfireparen",
+ "ideographichaveparen", "ideographichighcircle",
+ "ideographiciterationmark", "ideographiclaborcircle",
+ "ideographiclaborparen", "ideographicleftcircle",
+ "ideographiclowcircle", "ideographicmedicinecircle",
+ "ideographicmetalparen", "ideographicmoonparen",
+ "ideographicnameparen", "ideographicperiod",
+ "ideographicprintcircle", "ideographicreachparen",
+ "ideographicrepresentparen", "ideographicresourceparen",
+ "ideographicrightcircle", "ideographicsecretcircle",
+ "ideographicselfparen", "ideographicsocietyparen",
+ "ideographicspace", "ideographicspecialparen",
+ "ideographicstockparen", "ideographicstudyparen",
+ "ideographicsunparen", "ideographicsuperviseparen",
+ "ideographicwaterparen", "ideographicwoodparen", "ideographiczero",
+ "ideographmetalcircle", "ideographmooncircle",
+ "ideographnamecircle", "ideographsuncircle",
+ "ideographwatercircle", "ideographwoodcircle", "ideva",
+ "idieresis", "idieresisacute", "idieresiscyrillic", "idotbelow",
+ "iebrevecyrillic", "iecyrillic", "ieungacirclekorean",
+ "ieungaparenkorean", "ieungcirclekorean", "ieungkorean",
+ "ieungparenkorean", "igrave", "igujarati", "igurmukhi",
+ "ihiragana", "ihookabove", "iibengali", "iicyrillic", "iideva",
+ "iigujarati", "iigurmukhi", "iimatragurmukhi", "iinvertedbreve",
+ "iishortcyrillic", "iivowelsignbengali", "iivowelsigndeva",
+ "iivowelsigngujarati", "ij", "ikatakana", "ikatakanahalfwidth",
+ "ikorean", "ilde", "iluyhebrew", "imacron", "imacroncyrillic",
+ "imageorapproximatelyequal", "imatragurmukhi", "imonospace",
+ "increment", "infinity", "iniarmenian", "integral",
+ "integralbottom", "integralbt", "integralex", "integraltop",
+ "integraltp", "intersection", "intisquare", "invbullet",
+ "invcircle", "invsmileface", "iocyrillic", "iogonek", "iota",
+ "iotadieresis", "iotadieresistonos", "iotalatin", "iotatonos",
+ "iparen", "irigurmukhi", "ismallhiragana", "ismallkatakana",
+ "ismallkatakanahalfwidth", "issharbengali", "istroke", "isuperior",
+ "iterationhiragana", "iterationkatakana", "itilde", "itildebelow",
+ "iubopomofo", "iucyrillic", "ivowelsignbengali", "ivowelsigndeva",
+ "ivowelsigngujarati", "izhitsacyrillic", "izhitsadblgravecyrillic",
+ "j", "jaarmenian", "jabengali", "jadeva", "jagujarati",
+ "jagurmukhi", "jbopomofo", "jcaron", "jcircle", "jcircumflex",
+ "jcrossedtail", "jdotlessstroke", "jecyrillic", "jeemarabic",
+ "jeemfinalarabic", "jeeminitialarabic", "jeemmedialarabic",
+ "jeharabic", "jehfinalarabic", "jhabengali", "jhadeva",
+ "jhagujarati", "jhagurmukhi", "jheharmenian", "jis", "jmonospace",
+ "jparen", "jsuperior", "k", "kabashkircyrillic", "kabengali",
+ "kacute", "kacyrillic", "kadescendercyrillic", "kadeva", "kaf",
+ "kafarabic", "kafdagesh", "kafdageshhebrew", "kaffinalarabic",
+ "kafhebrew", "kafinitialarabic", "kafmedialarabic",
+ "kafrafehebrew", "kagujarati", "kagurmukhi", "kahiragana",
+ "kahookcyrillic", "kakatakana", "kakatakanahalfwidth", "kappa",
+ "kappasymbolgreek", "kapyeounmieumkorean", "kapyeounphieuphkorean",
+ "kapyeounpieupkorean", "kapyeounssangpieupkorean", "karoriisquare",
+ "kashidaautoarabic", "kashidaautonosidebearingarabic",
+ "kasmallkatakana", "kasquare", "kasraarabic", "kasratanarabic",
+ "kastrokecyrillic", "katahiraprolongmarkhalfwidth",
+ "kaverticalstrokecyrillic", "kbopomofo", "kcalsquare", "kcaron",
+ "kcedilla", "kcircle", "kcommaaccent", "kdotbelow", "keharmenian",
+ "kehiragana", "kekatakana", "kekatakanahalfwidth", "kenarmenian",
+ "kesmallkatakana", "kgreenlandic", "khabengali", "khacyrillic",
+ "khadeva", "khagujarati", "khagurmukhi", "khaharabic",
+ "khahfinalarabic", "khahinitialarabic", "khahmedialarabic",
+ "kheicoptic", "khhadeva", "khhagurmukhi", "khieukhacirclekorean",
+ "khieukhaparenkorean", "khieukhcirclekorean", "khieukhkorean",
+ "khieukhparenkorean", "khokhaithai", "khokhonthai", "khokhuatthai",
+ "khokhwaithai", "khomutthai", "khook", "khorakhangthai",
+ "khzsquare", "kihiragana", "kikatakana", "kikatakanahalfwidth",
+ "kiroguramusquare", "kiromeetorusquare", "kirosquare",
+ "kiyeokacirclekorean", "kiyeokaparenkorean", "kiyeokcirclekorean",
+ "kiyeokkorean", "kiyeokparenkorean", "kiyeoksioskorean",
+ "kjecyrillic", "klinebelow", "klsquare", "kmcubedsquare",
+ "kmonospace", "kmsquaredsquare", "kohiragana", "kohmsquare",
+ "kokaithai", "kokatakana", "kokatakanahalfwidth", "kooposquare",
+ "koppacyrillic", "koreanstandardsymbol", "koroniscmb", "kparen",
+ "kpasquare", "ksicyrillic", "ktsquare", "kturned", "kuhiragana",
+ "kukatakana", "kukatakanahalfwidth", "kvsquare", "kwsquare", "l",
+ "labengali", "lacute", "ladeva", "lagujarati", "lagurmukhi",
+ "lakkhangyaothai", "lamaleffinalarabic",
+ "lamalefhamzaabovefinalarabic", "lamalefhamzaaboveisolatedarabic",
+ "lamalefhamzabelowfinalarabic", "lamalefhamzabelowisolatedarabic",
+ "lamalefisolatedarabic", "lamalefmaddaabovefinalarabic",
+ "lamalefmaddaaboveisolatedarabic", "lamarabic", "lambda",
+ "lambdastroke", "lamed", "lameddagesh", "lameddageshhebrew",
+ "lamedhebrew", "lamfinalarabic", "lamhahinitialarabic",
+ "laminitialarabic", "lamjeeminitialarabic", "lamkhahinitialarabic",
+ "lamlamhehisolatedarabic", "lammedialarabic",
+ "lammeemhahinitialarabic", "lammeeminitialarabic", "largecircle",
+ "lbar", "lbelt", "lbopomofo", "lcaron", "lcedilla", "lcircle",
+ "lcircumflexbelow", "lcommaaccent", "ldot", "ldotaccent",
+ "ldotbelow", "ldotbelowmacron", "leftangleabovecmb",
+ "lefttackbelowcmb", "less", "lessequal", "lessequalorgreater",
+ "lessmonospace", "lessorequivalent", "lessorgreater",
+ "lessoverequal", "lesssmall", "lezh", "lfblock", "lhookretroflex",
+ "lira", "liwnarmenian", "lj", "ljecyrillic", "ll", "lladeva",
+ "llagujarati", "llinebelow", "llladeva", "llvocalicbengali",
+ "llvocalicdeva", "llvocalicvowelsignbengali",
+ "llvocalicvowelsigndeva", "lmiddletilde", "lmonospace", "lmsquare",
+ "lochulathai", "logicaland", "logicalnot", "logicalnotreversed",
+ "logicalor", "lolingthai", "longs", "lowlinecenterline",
+ "lowlinecmb", "lowlinedashed", "lozenge", "lparen", "lslash",
+ "lsquare", "lsuperior", "ltshade", "luthai", "lvocalicbengali",
+ "lvocalicdeva", "lvocalicvowelsignbengali",
+ "lvocalicvowelsigndeva", "lxsquare", "m", "mabengali", "macron",
+ "macronbelowcmb", "macroncmb", "macronlowmod", "macronmonospace",
+ "macute", "madeva", "magujarati", "magurmukhi", "mahapakhhebrew",
+ "mahapakhlefthebrew", "mahiragana", "maichattawalowleftthai",
+ "maichattawalowrightthai", "maichattawathai",
+ "maichattawaupperleftthai", "maieklowleftthai",
+ "maieklowrightthai", "maiekthai", "maiekupperleftthai",
+ "maihanakatleftthai", "maihanakatthai", "maitaikhuleftthai",
+ "maitaikhuthai", "maitholowleftthai", "maitholowrightthai",
+ "maithothai", "maithoupperleftthai", "maitrilowleftthai",
+ "maitrilowrightthai", "maitrithai", "maitriupperleftthai",
+ "maiyamokthai", "makatakana", "makatakanahalfwidth", "male",
+ "mansyonsquare", "maqafhebrew", "mars", "masoracirclehebrew",
+ "masquare", "mbopomofo", "mbsquare", "mcircle", "mcubedsquare",
+ "mdotaccent", "mdotbelow", "meemarabic", "meemfinalarabic",
+ "meeminitialarabic", "meemmedialarabic", "meemmeeminitialarabic",
+ "meemmeemisolatedarabic", "meetorusquare", "mehiragana",
+ "meizierasquare", "mekatakana", "mekatakanahalfwidth", "mem",
+ "memdagesh", "memdageshhebrew", "memhebrew", "menarmenian",
+ "merkhahebrew", "merkhakefulahebrew", "merkhakefulalefthebrew",
+ "merkhalefthebrew", "mhook", "mhzsquare",
+ "middledotkatakanahalfwidth", "middot", "mieumacirclekorean",
+ "mieumaparenkorean", "mieumcirclekorean", "mieumkorean",
+ "mieumpansioskorean", "mieumparenkorean", "mieumpieupkorean",
+ "mieumsioskorean", "mihiragana", "mikatakana",
+ "mikatakanahalfwidth", "minus", "minusbelowcmb", "minuscircle",
+ "minusmod", "minusplus", "minute", "miribaarusquare", "mirisquare",
+ "mlonglegturned", "mlsquare", "mmcubedsquare", "mmonospace",
+ "mmsquaredsquare", "mohiragana", "mohmsquare", "mokatakana",
+ "mokatakanahalfwidth", "molsquare", "momathai", "moverssquare",
+ "moverssquaredsquare", "mparen", "mpasquare", "mssquare",
+ "msuperior", "mturned", "mu", "mu1", "muasquare", "muchgreater",
+ "muchless", "mufsquare", "mugreek", "mugsquare", "muhiragana",
+ "mukatakana", "mukatakanahalfwidth", "mulsquare", "multiply",
+ "mumsquare", "munahhebrew", "munahlefthebrew", "musicalnote",
+ "musicalnotedbl", "musicflatsign", "musicsharpsign", "mussquare",
+ "muvsquare", "muwsquare", "mvmegasquare", "mvsquare",
+ "mwmegasquare", "mwsquare", "n", "nabengali", "nabla", "nacute",
+ "nadeva", "nagujarati", "nagurmukhi", "nahiragana", "nakatakana",
+ "nakatakanahalfwidth", "napostrophe", "nasquare", "nbopomofo",
+ "nbspace", "ncaron", "ncedilla", "ncircle", "ncircumflexbelow",
+ "ncommaaccent", "ndotaccent", "ndotbelow", "nehiragana",
+ "nekatakana", "nekatakanahalfwidth", "newsheqelsign", "nfsquare",
+ "ngabengali", "ngadeva", "ngagujarati", "ngagurmukhi",
+ "ngonguthai", "nhiragana", "nhookleft", "nhookretroflex",
+ "nieunacirclekorean", "nieunaparenkorean", "nieuncieuckorean",
+ "nieuncirclekorean", "nieunhieuhkorean", "nieunkorean",
+ "nieunpansioskorean", "nieunparenkorean", "nieunsioskorean",
+ "nieuntikeutkorean", "nihiragana", "nikatakana",
+ "nikatakanahalfwidth", "nikhahitleftthai", "nikhahitthai", "nine",
+ "ninearabic", "ninebengali", "ninecircle",
+ "ninecircleinversesansserif", "ninedeva", "ninegujarati",
+ "ninegurmukhi", "ninehackarabic", "ninehangzhou",
+ "nineideographicparen", "nineinferior", "ninemonospace",
+ "nineoldstyle", "nineparen", "nineperiod", "ninepersian",
+ "nineroman", "ninesuperior", "nineteencircle", "nineteenparen",
+ "nineteenperiod", "ninethai", "nj", "njecyrillic", "nkatakana",
+ "nkatakanahalfwidth", "nlegrightlong", "nlinebelow", "nmonospace",
+ "nmsquare", "nnabengali", "nnadeva", "nnagujarati", "nnagurmukhi",
+ "nnnadeva", "nohiragana", "nokatakana", "nokatakanahalfwidth",
+ "nonbreakingspace", "nonenthai", "nonuthai", "noonarabic",
+ "noonfinalarabic", "noonghunnaarabic", "noonghunnafinalarabic",
+ "nooninitialarabic", "noonjeeminitialarabic",
+ "noonjeemisolatedarabic", "noonmedialarabic",
+ "noonmeeminitialarabic", "noonmeemisolatedarabic",
+ "noonnoonfinalarabic", "notcontains", "notelement", "notelementof",
+ "notequal", "notgreater", "notgreaternorequal",
+ "notgreaternorless", "notidentical", "notless", "notlessnorequal",
+ "notparallel", "notprecedes", "notsubset", "notsucceeds",
+ "notsuperset", "nowarmenian", "nparen", "nssquare", "nsuperior",
+ "ntilde", "nu", "nuhiragana", "nukatakana", "nukatakanahalfwidth",
+ "nuktabengali", "nuktadeva", "nuktagujarati", "nuktagurmukhi",
+ "numbersign", "numbersignmonospace", "numbersignsmall",
+ "numeralsigngreek", "numeralsignlowergreek", "numero", "nun",
+ "nundagesh", "nundageshhebrew", "nunhebrew", "nvsquare",
+ "nwsquare", "nyabengali", "nyadeva", "nyagujarati", "nyagurmukhi",
+ "o", "oacute", "oangthai", "obarred", "obarredcyrillic",
+ "obarreddieresiscyrillic", "obengali", "obopomofo", "obreve",
+ "ocandradeva", "ocandragujarati", "ocandravowelsigndeva",
+ "ocandravowelsigngujarati", "ocaron", "ocircle", "ocircumflex",
+ "ocircumflexacute", "ocircumflexdotbelow", "ocircumflexgrave",
+ "ocircumflexhookabove", "ocircumflextilde", "ocyrillic",
+ "odblacute", "odblgrave", "odeva", "odieresis",
+ "odieresiscyrillic", "odotbelow", "oe", "oekorean", "ogonek",
+ "ogonekcmb", "ograve", "ogujarati", "oharmenian", "ohiragana",
+ "ohookabove", "ohorn", "ohornacute", "ohorndotbelow", "ohorngrave",
+ "ohornhookabove", "ohorntilde", "ohungarumlaut", "oi",
+ "oinvertedbreve", "okatakana", "okatakanahalfwidth", "okorean",
+ "olehebrew", "omacron", "omacronacute", "omacrongrave", "omdeva",
+ "omega", "omega1", "omegacyrillic", "omegalatinclosed",
+ "omegaroundcyrillic", "omegatitlocyrillic", "omegatonos",
+ "omgujarati", "omicron", "omicrontonos", "omonospace", "one",
+ "onearabic", "onebengali", "onecircle",
+ "onecircleinversesansserif", "onedeva", "onedotenleader",
+ "oneeighth", "onefitted", "onegujarati", "onegurmukhi",
+ "onehackarabic", "onehalf", "onehangzhou", "oneideographicparen",
+ "oneinferior", "onemonospace", "onenumeratorbengali",
+ "oneoldstyle", "oneparen", "oneperiod", "onepersian", "onequarter",
+ "oneroman", "onesuperior", "onethai", "onethird", "oogonek",
+ "oogonekmacron", "oogurmukhi", "oomatragurmukhi", "oopen",
+ "oparen", "openbullet", "option", "ordfeminine", "ordmasculine",
+ "orthogonal", "oshortdeva", "oshortvowelsigndeva", "oslash",
+ "oslashacute", "osmallhiragana", "osmallkatakana",
+ "osmallkatakanahalfwidth", "ostrokeacute", "osuperior",
+ "otcyrillic", "otilde", "otildeacute", "otildedieresis",
+ "oubopomofo", "overline", "overlinecenterline", "overlinecmb",
+ "overlinedashed", "overlinedblwavy", "overlinewavy", "overscore",
+ "ovowelsignbengali", "ovowelsigndeva", "ovowelsigngujarati", "p",
+ "paampssquare", "paasentosquare", "pabengali", "pacute", "padeva",
+ "pagedown", "pageup", "pagujarati", "pagurmukhi", "pahiragana",
+ "paiyannoithai", "pakatakana", "palatalizationcyrilliccmb",
+ "palochkacyrillic", "pansioskorean", "paragraph", "parallel",
+ "parenleft", "parenleftaltonearabic", "parenleftbt", "parenleftex",
+ "parenleftinferior", "parenleftmonospace", "parenleftsmall",
+ "parenleftsuperior", "parenlefttp", "parenleftvertical",
+ "parenright", "parenrightaltonearabic", "parenrightbt",
+ "parenrightex", "parenrightinferior", "parenrightmonospace",
+ "parenrightsmall", "parenrightsuperior", "parenrighttp",
+ "parenrightvertical", "partialdiff", "paseqhebrew", "pashtahebrew",
+ "pasquare", "patah", "patah11", "patah1d", "patah2a",
+ "patahhebrew", "patahnarrowhebrew", "patahquarterhebrew",
+ "patahwidehebrew", "pazerhebrew", "pbopomofo", "pcircle",
+ "pdotaccent", "pe", "pecyrillic", "pedagesh", "pedageshhebrew",
+ "peezisquare", "pefinaldageshhebrew", "peharabic", "peharmenian",
+ "pehebrew", "pehfinalarabic", "pehinitialarabic", "pehiragana",
+ "pehmedialarabic", "pekatakana", "pemiddlehookcyrillic",
+ "perafehebrew", "percent", "percentarabic", "percentmonospace",
+ "percentsmall", "period", "periodarmenian", "periodcentered",
+ "periodhalfwidth", "periodinferior", "periodmonospace",
+ "periodsmall", "periodsuperior", "perispomenigreekcmb",
+ "perpendicular", "perthousand", "peseta", "pfsquare", "phabengali",
+ "phadeva", "phagujarati", "phagurmukhi", "phi", "phi1",
+ "phieuphacirclekorean", "phieuphaparenkorean",
+ "phieuphcirclekorean", "phieuphkorean", "phieuphparenkorean",
+ "philatin", "phinthuthai", "phisymbolgreek", "phook",
+ "phophanthai", "phophungthai", "phosamphaothai", "pi",
+ "pieupacirclekorean", "pieupaparenkorean", "pieupcieuckorean",
+ "pieupcirclekorean", "pieupkiyeokkorean", "pieupkorean",
+ "pieupparenkorean", "pieupsioskiyeokkorean", "pieupsioskorean",
+ "pieupsiostikeutkorean", "pieupthieuthkorean", "pieuptikeutkorean",
+ "pihiragana", "pikatakana", "pisymbolgreek", "piwrarmenian",
+ "plus", "plusbelowcmb", "pluscircle", "plusminus", "plusmod",
+ "plusmonospace", "plussmall", "plussuperior", "pmonospace",
+ "pmsquare", "pohiragana", "pointingindexdownwhite",
+ "pointingindexleftwhite", "pointingindexrightwhite",
+ "pointingindexupwhite", "pokatakana", "poplathai", "postalmark",
+ "postalmarkface", "pparen", "precedes", "prescription", "primemod",
+ "primereversed", "product", "projective", "prolongedkana",
+ "propellor", "propersubset", "propersuperset", "proportion",
+ "proportional", "psi", "psicyrillic", "psilipneumatacyrilliccmb",
+ "pssquare", "puhiragana", "pukatakana", "pvsquare", "pwsquare",
+ "q", "qadeva", "qadmahebrew", "qafarabic", "qaffinalarabic",
+ "qafinitialarabic", "qafmedialarabic", "qamats", "qamats10",
+ "qamats1a", "qamats1c", "qamats27", "qamats29", "qamats33",
+ "qamatsde", "qamatshebrew", "qamatsnarrowhebrew",
+ "qamatsqatanhebrew", "qamatsqatannarrowhebrew",
+ "qamatsqatanquarterhebrew", "qamatsqatanwidehebrew",
+ "qamatsquarterhebrew", "qamatswidehebrew", "qarneyparahebrew",
+ "qbopomofo", "qcircle", "qhook", "qmonospace", "qof", "qofdagesh",
+ "qofdageshhebrew", "qofhebrew", "qparen", "quarternote", "qubuts",
+ "qubuts18", "qubuts25", "qubuts31", "qubutshebrew",
+ "qubutsnarrowhebrew", "qubutsquarterhebrew", "qubutswidehebrew",
+ "question", "questionarabic", "questionarmenian", "questiondown",
+ "questiondownsmall", "questiongreek", "questionmonospace",
+ "questionsmall", "quotedbl", "quotedblbase", "quotedblleft",
+ "quotedblmonospace", "quotedblprime", "quotedblprimereversed",
+ "quotedblright", "quoteleft", "quoteleftreversed", "quotereversed",
+ "quoteright", "quoterightn", "quotesinglbase", "quotesingle",
+ "quotesinglemonospace", "r", "raarmenian", "rabengali", "racute",
+ "radeva", "radical", "radicalex", "radoverssquare",
+ "radoverssquaredsquare", "radsquare", "rafe", "rafehebrew",
+ "ragujarati", "ragurmukhi", "rahiragana", "rakatakana",
+ "rakatakanahalfwidth", "ralowerdiagonalbengali",
+ "ramiddlediagonalbengali", "ramshorn", "ratio", "rbopomofo",
+ "rcaron", "rcedilla", "rcircle", "rcommaaccent", "rdblgrave",
+ "rdotaccent", "rdotbelow", "rdotbelowmacron", "referencemark",
+ "reflexsubset", "reflexsuperset", "registered", "registersans",
+ "registerserif", "reharabic", "reharmenian", "rehfinalarabic",
+ "rehiragana", "rekatakana", "rekatakanahalfwidth", "resh",
+ "reshdageshhebrew", "reshhebrew", "reversedtilde", "reviahebrew",
+ "reviamugrashhebrew", "revlogicalnot", "rfishhook",
+ "rfishhookreversed", "rhabengali", "rhadeva", "rho", "rhook",
+ "rhookturned", "rhookturnedsuperior", "rhosymbolgreek",
+ "rhotichookmod", "rieulacirclekorean", "rieulaparenkorean",
+ "rieulcirclekorean", "rieulhieuhkorean", "rieulkiyeokkorean",
+ "rieulkiyeoksioskorean", "rieulkorean", "rieulmieumkorean",
+ "rieulpansioskorean", "rieulparenkorean", "rieulphieuphkorean",
+ "rieulpieupkorean", "rieulpieupsioskorean", "rieulsioskorean",
+ "rieulthieuthkorean", "rieultikeutkorean",
+ "rieulyeorinhieuhkorean", "rightangle", "righttackbelowcmb",
+ "righttriangle", "rihiragana", "rikatakana", "rikatakanahalfwidth",
+ "ring", "ringbelowcmb", "ringcmb", "ringhalfleft",
+ "ringhalfleftarmenian", "ringhalfleftbelowcmb",
+ "ringhalfleftcentered", "ringhalfright", "ringhalfrightbelowcmb",
+ "ringhalfrightcentered", "rinvertedbreve", "rittorusquare",
+ "rlinebelow", "rlongleg", "rlonglegturned", "rmonospace",
+ "rohiragana", "rokatakana", "rokatakanahalfwidth", "roruathai",
+ "rparen", "rrabengali", "rradeva", "rragurmukhi", "rreharabic",
+ "rrehfinalarabic", "rrvocalicbengali", "rrvocalicdeva",
+ "rrvocalicgujarati", "rrvocalicvowelsignbengali",
+ "rrvocalicvowelsigndeva", "rrvocalicvowelsigngujarati",
+ "rsuperior", "rtblock", "rturned", "rturnedsuperior", "ruhiragana",
+ "rukatakana", "rukatakanahalfwidth", "rupeemarkbengali",
+ "rupeesignbengali", "rupiah", "ruthai", "rvocalicbengali",
+ "rvocalicdeva", "rvocalicgujarati", "rvocalicvowelsignbengali",
+ "rvocalicvowelsigndeva", "rvocalicvowelsigngujarati", "s",
+ "sabengali", "sacute", "sacutedotaccent", "sadarabic", "sadeva",
+ "sadfinalarabic", "sadinitialarabic", "sadmedialarabic",
+ "sagujarati", "sagurmukhi", "sahiragana", "sakatakana",
+ "sakatakanahalfwidth", "sallallahoualayhewasallamarabic", "samekh",
+ "samekhdagesh", "samekhdageshhebrew", "samekhhebrew", "saraaathai",
+ "saraaethai", "saraaimaimalaithai", "saraaimaimuanthai",
+ "saraamthai", "saraathai", "saraethai", "saraiileftthai",
+ "saraiithai", "saraileftthai", "saraithai", "saraothai",
+ "saraueeleftthai", "saraueethai", "saraueleftthai", "sarauethai",
+ "sarauthai", "sarauuthai", "sbopomofo", "scaron",
+ "scarondotaccent", "scedilla", "schwa", "schwacyrillic",
+ "schwadieresiscyrillic", "schwahook", "scircle", "scircumflex",
+ "scommaaccent", "sdotaccent", "sdotbelow", "sdotbelowdotaccent",
+ "seagullbelowcmb", "second", "secondtonechinese", "section",
+ "seenarabic", "seenfinalarabic", "seeninitialarabic",
+ "seenmedialarabic", "segol", "segol13", "segol1f", "segol2c",
+ "segolhebrew", "segolnarrowhebrew", "segolquarterhebrew",
+ "segoltahebrew", "segolwidehebrew", "seharmenian", "sehiragana",
+ "sekatakana", "sekatakanahalfwidth", "semicolon",
+ "semicolonarabic", "semicolonmonospace", "semicolonsmall",
+ "semivoicedmarkkana", "semivoicedmarkkanahalfwidth", "sentisquare",
+ "sentosquare", "seven", "sevenarabic", "sevenbengali",
+ "sevencircle", "sevencircleinversesansserif", "sevendeva",
+ "seveneighths", "sevengujarati", "sevengurmukhi",
+ "sevenhackarabic", "sevenhangzhou", "sevenideographicparen",
+ "seveninferior", "sevenmonospace", "sevenoldstyle", "sevenparen",
+ "sevenperiod", "sevenpersian", "sevenroman", "sevensuperior",
+ "seventeencircle", "seventeenparen", "seventeenperiod",
+ "seventhai", "sfthyphen", "shaarmenian", "shabengali",
+ "shacyrillic", "shaddaarabic", "shaddadammaarabic",
+ "shaddadammatanarabic", "shaddafathaarabic", "shaddakasraarabic",
+ "shaddakasratanarabic", "shade", "shadedark", "shadelight",
+ "shademedium", "shadeva", "shagujarati", "shagurmukhi",
+ "shalshelethebrew", "shbopomofo", "shchacyrillic", "sheenarabic",
+ "sheenfinalarabic", "sheeninitialarabic", "sheenmedialarabic",
+ "sheicoptic", "sheqel", "sheqelhebrew", "sheva", "sheva115",
+ "sheva15", "sheva22", "sheva2e", "shevahebrew",
+ "shevanarrowhebrew", "shevaquarterhebrew", "shevawidehebrew",
+ "shhacyrillic", "shimacoptic", "shin", "shindagesh",
+ "shindageshhebrew", "shindageshshindot", "shindageshshindothebrew",
+ "shindageshsindot", "shindageshsindothebrew", "shindothebrew",
+ "shinhebrew", "shinshindot", "shinshindothebrew", "shinsindot",
+ "shinsindothebrew", "shook", "sigma", "sigma1", "sigmafinal",
+ "sigmalunatesymbolgreek", "sihiragana", "sikatakana",
+ "sikatakanahalfwidth", "siluqhebrew", "siluqlefthebrew", "similar",
+ "sindothebrew", "siosacirclekorean", "siosaparenkorean",
+ "sioscieuckorean", "sioscirclekorean", "sioskiyeokkorean",
+ "sioskorean", "siosnieunkorean", "siosparenkorean",
+ "siospieupkorean", "siostikeutkorean", "six", "sixarabic",
+ "sixbengali", "sixcircle", "sixcircleinversesansserif", "sixdeva",
+ "sixgujarati", "sixgurmukhi", "sixhackarabic", "sixhangzhou",
+ "sixideographicparen", "sixinferior", "sixmonospace",
+ "sixoldstyle", "sixparen", "sixperiod", "sixpersian", "sixroman",
+ "sixsuperior", "sixteencircle",
+ "sixteencurrencydenominatorbengali", "sixteenparen",
+ "sixteenperiod", "sixthai", "slash", "slashmonospace", "slong",
+ "slongdotaccent", "smileface", "smonospace", "sofpasuqhebrew",
+ "softhyphen", "softsigncyrillic", "sohiragana", "sokatakana",
+ "sokatakanahalfwidth", "soliduslongoverlaycmb",
+ "solidusshortoverlaycmb", "sorusithai", "sosalathai", "sosothai",
+ "sosuathai", "space", "spacehackarabic", "spade", "spadesuitblack",
+ "spadesuitwhite", "sparen", "squarebelowcmb", "squarecc",
+ "squarecm", "squarediagonalcrosshatchfill", "squarehorizontalfill",
+ "squarekg", "squarekm", "squarekmcapital", "squareln", "squarelog",
+ "squaremg", "squaremil", "squaremm", "squaremsquared",
+ "squareorthogonalcrosshatchfill",
+ "squareupperlefttolowerrightfill",
+ "squareupperrighttolowerleftfill", "squareverticalfill",
+ "squarewhitewithsmallblack", "srsquare", "ssabengali", "ssadeva",
+ "ssagujarati", "ssangcieuckorean", "ssanghieuhkorean",
+ "ssangieungkorean", "ssangkiyeokkorean", "ssangnieunkorean",
+ "ssangpieupkorean", "ssangsioskorean", "ssangtikeutkorean",
+ "ssuperior", "sterling", "sterlingmonospace",
+ "strokelongoverlaycmb", "strokeshortoverlaycmb", "subset",
+ "subsetnotequal", "subsetorequal", "succeeds", "suchthat",
+ "suhiragana", "sukatakana", "sukatakanahalfwidth", "sukunarabic",
+ "summation", "sun", "superset", "supersetnotequal",
+ "supersetorequal", "svsquare", "syouwaerasquare", "t", "tabengali",
+ "tackdown", "tackleft", "tadeva", "tagujarati", "tagurmukhi",
+ "taharabic", "tahfinalarabic", "tahinitialarabic", "tahiragana",
+ "tahmedialarabic", "taisyouerasquare", "takatakana",
+ "takatakanahalfwidth", "tatweelarabic", "tau", "tav", "tavdages",
+ "tavdagesh", "tavdageshhebrew", "tavhebrew", "tbar", "tbopomofo",
+ "tcaron", "tccurl", "tcedilla", "tcheharabic", "tchehfinalarabic",
+ "tchehinitialarabic", "tchehmedialarabic", "tcircle",
+ "tcircumflexbelow", "tcommaaccent", "tdieresis", "tdotaccent",
+ "tdotbelow", "tecyrillic", "tedescendercyrillic", "teharabic",
+ "tehfinalarabic", "tehhahinitialarabic", "tehhahisolatedarabic",
+ "tehinitialarabic", "tehiragana", "tehjeeminitialarabic",
+ "tehjeemisolatedarabic", "tehmarbutaarabic",
+ "tehmarbutafinalarabic", "tehmedialarabic", "tehmeeminitialarabic",
+ "tehmeemisolatedarabic", "tehnoonfinalarabic", "tekatakana",
+ "tekatakanahalfwidth", "telephone", "telephoneblack",
+ "telishagedolahebrew", "telishaqetanahebrew", "tencircle",
+ "tenideographicparen", "tenparen", "tenperiod", "tenroman", "tesh",
+ "tet", "tetdagesh", "tetdageshhebrew", "tethebrew",
+ "tetsecyrillic", "tevirhebrew", "tevirlefthebrew", "thabengali",
+ "thadeva", "thagujarati", "thagurmukhi", "thalarabic",
+ "thalfinalarabic", "thanthakhatlowleftthai",
+ "thanthakhatlowrightthai", "thanthakhatthai",
+ "thanthakhatupperleftthai", "theharabic", "thehfinalarabic",
+ "thehinitialarabic", "thehmedialarabic", "thereexists",
+ "therefore", "theta", "theta1", "thetasymbolgreek",
+ "thieuthacirclekorean", "thieuthaparenkorean",
+ "thieuthcirclekorean", "thieuthkorean", "thieuthparenkorean",
+ "thirteencircle", "thirteenparen", "thirteenperiod",
+ "thonangmonthothai", "thook", "thophuthaothai", "thorn",
+ "thothahanthai", "thothanthai", "thothongthai", "thothungthai",
+ "thousandcyrillic", "thousandsseparatorarabic",
+ "thousandsseparatorpersian", "three", "threearabic",
+ "threebengali", "threecircle", "threecircleinversesansserif",
+ "threedeva", "threeeighths", "threegujarati", "threegurmukhi",
+ "threehackarabic", "threehangzhou", "threeideographicparen",
+ "threeinferior", "threemonospace", "threenumeratorbengali",
+ "threeoldstyle", "threeparen", "threeperiod", "threepersian",
+ "threequarters", "threequartersemdash", "threeroman",
+ "threesuperior", "threethai", "thzsquare", "tihiragana",
+ "tikatakana", "tikatakanahalfwidth", "tikeutacirclekorean",
+ "tikeutaparenkorean", "tikeutcirclekorean", "tikeutkorean",
+ "tikeutparenkorean", "tilde", "tildebelowcmb", "tildecmb",
+ "tildecomb", "tildedoublecmb", "tildeoperator", "tildeoverlaycmb",
+ "tildeverticalcmb", "timescircle", "tipehahebrew",
+ "tipehalefthebrew", "tippigurmukhi", "titlocyrilliccmb",
+ "tiwnarmenian", "tlinebelow", "tmonospace", "toarmenian",
+ "tohiragana", "tokatakana", "tokatakanahalfwidth",
+ "tonebarextrahighmod", "tonebarextralowmod", "tonebarhighmod",
+ "tonebarlowmod", "tonebarmidmod", "tonefive", "tonesix", "tonetwo",
+ "tonos", "tonsquare", "topatakthai", "tortoiseshellbracketleft",
+ "tortoiseshellbracketleftsmall",
+ "tortoiseshellbracketleftvertical", "tortoiseshellbracketright",
+ "tortoiseshellbracketrightsmall",
+ "tortoiseshellbracketrightvertical", "totaothai", "tpalatalhook",
+ "tparen", "trademark", "trademarksans", "trademarkserif",
+ "tretroflexhook", "triagdn", "triaglf", "triagrt", "triagup", "ts",
+ "tsadi", "tsadidagesh", "tsadidageshhebrew", "tsadihebrew",
+ "tsecyrillic", "tsere", "tsere12", "tsere1e", "tsere2b",
+ "tserehebrew", "tserenarrowhebrew", "tserequarterhebrew",
+ "tserewidehebrew", "tshecyrillic", "tsuperior", "ttabengali",
+ "ttadeva", "ttagujarati", "ttagurmukhi", "tteharabic",
+ "ttehfinalarabic", "ttehinitialarabic", "ttehmedialarabic",
+ "tthabengali", "tthadeva", "tthagujarati", "tthagurmukhi",
+ "tturned", "tuhiragana", "tukatakana", "tukatakanahalfwidth",
+ "tusmallhiragana", "tusmallkatakana", "tusmallkatakanahalfwidth",
+ "twelvecircle", "twelveparen", "twelveperiod", "twelveroman",
+ "twentycircle", "twentyhangzhou", "twentyparen", "twentyperiod",
+ "two", "twoarabic", "twobengali", "twocircle",
+ "twocircleinversesansserif", "twodeva", "twodotenleader",
+ "twodotleader", "twodotleadervertical", "twogujarati",
+ "twogurmukhi", "twohackarabic", "twohangzhou",
+ "twoideographicparen", "twoinferior", "twomonospace",
+ "twonumeratorbengali", "twooldstyle", "twoparen", "twoperiod",
+ "twopersian", "tworoman", "twostroke", "twosuperior", "twothai",
+ "twothirds", "u", "uacute", "ubar", "ubengali", "ubopomofo",
+ "ubreve", "ucaron", "ucircle", "ucircumflex", "ucircumflexbelow",
+ "ucyrillic", "udattadeva", "udblacute", "udblgrave", "udeva",
+ "udieresis", "udieresisacute", "udieresisbelow", "udieresiscaron",
+ "udieresiscyrillic", "udieresisgrave", "udieresismacron",
+ "udotbelow", "ugrave", "ugujarati", "ugurmukhi", "uhiragana",
+ "uhookabove", "uhorn", "uhornacute", "uhorndotbelow", "uhorngrave",
+ "uhornhookabove", "uhorntilde", "uhungarumlaut",
+ "uhungarumlautcyrillic", "uinvertedbreve", "ukatakana",
+ "ukatakanahalfwidth", "ukcyrillic", "ukorean", "umacron",
+ "umacroncyrillic", "umacrondieresis", "umatragurmukhi",
+ "umonospace", "underscore", "underscoredbl", "underscoremonospace",
+ "underscorevertical", "underscorewavy", "union", "universal",
+ "uogonek", "uparen", "upblock", "upperdothebrew", "upsilon",
+ "upsilondieresis", "upsilondieresistonos", "upsilonlatin",
+ "upsilontonos", "uptackbelowcmb", "uptackmod", "uragurmukhi",
+ "uring", "ushortcyrillic", "usmallhiragana", "usmallkatakana",
+ "usmallkatakanahalfwidth", "ustraightcyrillic",
+ "ustraightstrokecyrillic", "utilde", "utildeacute", "utildebelow",
+ "uubengali", "uudeva", "uugujarati", "uugurmukhi",
+ "uumatragurmukhi", "uuvowelsignbengali", "uuvowelsigndeva",
+ "uuvowelsigngujarati", "uvowelsignbengali", "uvowelsigndeva",
+ "uvowelsigngujarati", "v", "vadeva", "vagujarati", "vagurmukhi",
+ "vakatakana", "vav", "vavdagesh", "vavdagesh65", "vavdageshhebrew",
+ "vavhebrew", "vavholam", "vavholamhebrew", "vavvavhebrew",
+ "vavyodhebrew", "vcircle", "vdotbelow", "vecyrillic", "veharabic",
+ "vehfinalarabic", "vehinitialarabic", "vehmedialarabic",
+ "vekatakana", "venus", "verticalbar", "verticallineabovecmb",
+ "verticallinebelowcmb", "verticallinelowmod", "verticallinemod",
+ "vewarmenian", "vhook", "vikatakana", "viramabengali",
+ "viramadeva", "viramagujarati", "visargabengali", "visargadeva",
+ "visargagujarati", "vmonospace", "voarmenian",
+ "voicediterationhiragana", "voicediterationkatakana",
+ "voicedmarkkana", "voicedmarkkanahalfwidth", "vokatakana",
+ "vparen", "vtilde", "vturned", "vuhiragana", "vukatakana", "w",
+ "wacute", "waekorean", "wahiragana", "wakatakana",
+ "wakatakanahalfwidth", "wakorean", "wasmallhiragana",
+ "wasmallkatakana", "wattosquare", "wavedash",
+ "wavyunderscorevertical", "wawarabic", "wawfinalarabic",
+ "wawhamzaabovearabic", "wawhamzaabovefinalarabic", "wbsquare",
+ "wcircle", "wcircumflex", "wdieresis", "wdotaccent", "wdotbelow",
+ "wehiragana", "weierstrass", "wekatakana", "wekorean", "weokorean",
+ "wgrave", "whitebullet", "whitecircle", "whitecircleinverse",
+ "whitecornerbracketleft", "whitecornerbracketleftvertical",
+ "whitecornerbracketright", "whitecornerbracketrightvertical",
+ "whitediamond", "whitediamondcontainingblacksmalldiamond",
+ "whitedownpointingsmalltriangle", "whitedownpointingtriangle",
+ "whiteleftpointingsmalltriangle", "whiteleftpointingtriangle",
+ "whitelenticularbracketleft", "whitelenticularbracketright",
+ "whiterightpointingsmalltriangle", "whiterightpointingtriangle",
+ "whitesmallsquare", "whitesmilingface", "whitesquare", "whitestar",
+ "whitetelephone", "whitetortoiseshellbracketleft",
+ "whitetortoiseshellbracketright", "whiteuppointingsmalltriangle",
+ "whiteuppointingtriangle", "wihiragana", "wikatakana", "wikorean",
+ "wmonospace", "wohiragana", "wokatakana", "wokatakanahalfwidth",
+ "won", "wonmonospace", "wowaenthai", "wparen", "wring",
+ "wsuperior", "wturned", "wynn", "x", "xabovecmb", "xbopomofo",
+ "xcircle", "xdieresis", "xdotaccent", "xeharmenian", "xi",
+ "xmonospace", "xparen", "xsuperior", "y", "yaadosquare",
+ "yabengali", "yacute", "yadeva", "yaekorean", "yagujarati",
+ "yagurmukhi", "yahiragana", "yakatakana", "yakatakanahalfwidth",
+ "yakorean", "yamakkanthai", "yasmallhiragana", "yasmallkatakana",
+ "yasmallkatakanahalfwidth", "yatcyrillic", "ycircle",
+ "ycircumflex", "ydieresis", "ydotaccent", "ydotbelow", "yeharabic",
+ "yehbarreearabic", "yehbarreefinalarabic", "yehfinalarabic",
+ "yehhamzaabovearabic", "yehhamzaabovefinalarabic",
+ "yehhamzaaboveinitialarabic", "yehhamzaabovemedialarabic",
+ "yehinitialarabic", "yehmedialarabic", "yehmeeminitialarabic",
+ "yehmeemisolatedarabic", "yehnoonfinalarabic",
+ "yehthreedotsbelowarabic", "yekorean", "yen", "yenmonospace",
+ "yeokorean", "yeorinhieuhkorean", "yerahbenyomohebrew",
+ "yerahbenyomolefthebrew", "yericyrillic", "yerudieresiscyrillic",
+ "yesieungkorean", "yesieungpansioskorean", "yesieungsioskorean",
+ "yetivhebrew", "ygrave", "yhook", "yhookabove", "yiarmenian",
+ "yicyrillic", "yikorean", "yinyang", "yiwnarmenian", "ymonospace",
+ "yod", "yoddagesh", "yoddageshhebrew", "yodhebrew", "yodyodhebrew",
+ "yodyodpatahhebrew", "yohiragana", "yoikorean", "yokatakana",
+ "yokatakanahalfwidth", "yokorean", "yosmallhiragana",
+ "yosmallkatakana", "yosmallkatakanahalfwidth", "yotgreek",
+ "yoyaekorean", "yoyakorean", "yoyakthai", "yoyingthai", "yparen",
+ "ypogegrammeni", "ypogegrammenigreekcmb", "yr", "yring",
+ "ysuperior", "ytilde", "yturned", "yuhiragana", "yuikorean",
+ "yukatakana", "yukatakanahalfwidth", "yukorean", "yusbigcyrillic",
+ "yusbigiotifiedcyrillic", "yuslittlecyrillic",
+ "yuslittleiotifiedcyrillic", "yusmallhiragana", "yusmallkatakana",
+ "yusmallkatakanahalfwidth", "yuyekorean", "yuyeokorean",
+ "yyabengali", "yyadeva", "z", "zaarmenian", "zacute", "zadeva",
+ "zagurmukhi", "zaharabic", "zahfinalarabic", "zahinitialarabic",
+ "zahiragana", "zahmedialarabic", "zainarabic", "zainfinalarabic",
+ "zakatakana", "zaqefgadolhebrew", "zaqefqatanhebrew",
+ "zarqahebrew", "zayin", "zayindagesh", "zayindageshhebrew",
+ "zayinhebrew", "zbopomofo", "zcaron", "zcircle", "zcircumflex",
+ "zcurl", "zdot", "zdotaccent", "zdotbelow", "zecyrillic",
+ "zedescendercyrillic", "zedieresiscyrillic", "zehiragana",
+ "zekatakana", "zero", "zeroarabic", "zerobengali", "zerodeva",
+ "zerogujarati", "zerogurmukhi", "zerohackarabic", "zeroinferior",
+ "zeromonospace", "zerooldstyle", "zeropersian", "zerosuperior",
+ "zerothai", "zerowidthjoiner", "zerowidthnonjoiner",
+ "zerowidthspace", "zeta", "zhbopomofo", "zhearmenian",
+ "zhebrevecyrillic", "zhecyrillic", "zhedescendercyrillic",
+ "zhedieresiscyrillic", "zihiragana", "zikatakana", "zinorhebrew",
+ "zlinebelow", "zmonospace", "zohiragana", "zokatakana", "zparen",
+ "zretroflexhook", "zstroke", "zuhiragana", "zukatakana",
+};
+
+glyph glyph_intern(char const *glyphname)
+{
+ int i, j, k, c;
+
+ i = -1;
+ j = lenof(ps_glyphs_alphabetic);
+ while (j-i > 1) {
+ k = (i + j) / 2;
+ c = strcmp(glyphname, ps_glyphs_alphabetic[k]);
+
+ if (c == 0)
+ return k;
+ else if (c < 0)
+ j = k;
+ else
+ i = k;
+ }
+
+ return NOGLYPH; /* illegal value means not found */
+}
+
+char const *glyph_extern(glyph glyph)
+{
+
+ if (glyph == NOGLYPH) return ".notdef";
+ assert(glyph < lenof(ps_glyphs_alphabetic));
+ return ps_glyphs_alphabetic[glyph];
+}
+
+/* ----------------------------------------------------------------------
+ * Mapping between PS character names (/aacute, /zcaron etc) and
+ * Unicode code points.
+ *
+ * Generated from the Adobe Glyph List at
+ *
+ * http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
+ *
+ * by another Perl/sh fragment.
+
+grep '^[^#;][^;]*;[^ ][^ ][^ ][^ ]$' glyphlist.txt | sort -t\; +0 -1 | \
+ cut -f2 -d\; | perl -ne 'chomp; print "0x$_, "' | \
+ fold -s -w68 | sed 's/^/ /'; echo
+
+ */
+static const unsigned short ps_codes_alphabetic[] = {
+ 0x0041, 0x00C6, 0x01FC, 0x01E2, 0xF7E6, 0x00C1, 0xF7E1, 0x0102,
+ 0x1EAE, 0x04D0, 0x1EB6, 0x1EB0, 0x1EB2, 0x1EB4, 0x01CD, 0x24B6,
+ 0x00C2, 0x1EA4, 0x1EAC, 0x1EA6, 0x1EA8, 0xF7E2, 0x1EAA, 0xF6C9,
+ 0xF7B4, 0x0410, 0x0200, 0x00C4, 0x04D2, 0x01DE, 0xF7E4, 0x1EA0,
+ 0x01E0, 0x00C0, 0xF7E0, 0x1EA2, 0x04D4, 0x0202, 0x0391, 0x0386,
+ 0x0100, 0xFF21, 0x0104, 0x00C5, 0x01FA, 0x1E00, 0xF7E5, 0xF761,
+ 0x00C3, 0xF7E3, 0x0531, 0x0042, 0x24B7, 0x1E02, 0x1E04, 0x0411,
+ 0x0532, 0x0392, 0x0181, 0x1E06, 0xFF22, 0xF6F4, 0xF762, 0x0182,
+ 0x0043, 0x053E, 0x0106, 0xF6CA, 0xF6F5, 0x010C, 0x00C7, 0x1E08,
+ 0xF7E7, 0x24B8, 0x0108, 0x010A, 0x010A, 0xF7B8, 0x0549, 0x04BC,
+ 0x0427, 0x04BE, 0x04B6, 0x04F4, 0x0543, 0x04CB, 0x04B8, 0x03A7,
+ 0x0187, 0xF6F6, 0xFF23, 0x0551, 0xF763, 0x0044, 0x01F1, 0x01C4,
+ 0x0534, 0x0189, 0x010E, 0x1E10, 0x24B9, 0x1E12, 0x0110, 0x1E0A,
+ 0x1E0C, 0x0414, 0x03EE, 0x2206, 0x0394, 0x018A, 0xF6CB, 0xF6CC,
+ 0xF6CD, 0xF7A8, 0x03DC, 0x0402, 0x1E0E, 0xFF24, 0xF6F7, 0x0110,
+ 0xF764, 0x018B, 0x01F2, 0x01C5, 0x04E0, 0x0405, 0x040F, 0x0045,
+ 0x00C9, 0xF7E9, 0x0114, 0x011A, 0x1E1C, 0x0535, 0x24BA, 0x00CA,
+ 0x1EBE, 0x1E18, 0x1EC6, 0x1EC0, 0x1EC2, 0xF7EA, 0x1EC4, 0x0404,
+ 0x0204, 0x00CB, 0xF7EB, 0x0116, 0x0116, 0x1EB8, 0x0424, 0x00C8,
+ 0xF7E8, 0x0537, 0x1EBA, 0x2167, 0x0206, 0x0464, 0x041B, 0x216A,
+ 0x0112, 0x1E16, 0x1E14, 0x041C, 0xFF25, 0x041D, 0x04A2, 0x014A,
+ 0x04A4, 0x04C7, 0x0118, 0x0190, 0x0395, 0x0388, 0x0420, 0x018E,
+ 0x042D, 0x0421, 0x04AA, 0x01A9, 0xF765, 0x0397, 0x0538, 0x0389,
+ 0x00D0, 0xF7F0, 0x1EBC, 0x1E1A, 0x20AC, 0x01B7, 0x01EE, 0x01B8,
+ 0x0046, 0x24BB, 0x1E1E, 0x0556, 0x03E4, 0x0191, 0x0472, 0x2164,
+ 0xFF26, 0x2163, 0xF766, 0x0047, 0x3387, 0x01F4, 0x0393, 0x0194,
+ 0x03EA, 0x011E, 0x01E6, 0x0122, 0x24BC, 0x011C, 0x0122, 0x0120,
+ 0x0120, 0x0413, 0x0542, 0x0494, 0x0492, 0x0490, 0x0193, 0x0533,
+ 0x0403, 0x1E20, 0xFF27, 0xF6CE, 0xF760, 0xF767, 0x029B, 0x01E4,
+ 0x0048, 0x25CF, 0x25AA, 0x25AB, 0x25A1, 0x33CB, 0x04A8, 0x04B2,
+ 0x042A, 0x0126, 0x1E2A, 0x1E28, 0x24BD, 0x0124, 0x1E26, 0x1E22,
+ 0x1E24, 0xFF28, 0x0540, 0x03E8, 0xF768, 0xF6CF, 0xF6F8, 0x3390,
+ 0x0049, 0x042F, 0x0132, 0x042E, 0x00CD, 0xF7ED, 0x012C, 0x01CF,
+ 0x24BE, 0x00CE, 0xF7EE, 0x0406, 0x0208, 0x00CF, 0x1E2E, 0x04E4,
+ 0xF7EF, 0x0130, 0x0130, 0x1ECA, 0x04D6, 0x0415, 0x2111, 0x00CC,
+ 0xF7EC, 0x1EC8, 0x0418, 0x020A, 0x0419, 0x012A, 0x04E2, 0xFF29,
+ 0x053B, 0x0401, 0x012E, 0x0399, 0x0196, 0x03AA, 0x038A, 0xF769,
+ 0x0197, 0x0128, 0x1E2C, 0x0474, 0x0476, 0x004A, 0x0541, 0x24BF,
+ 0x0134, 0x0408, 0x054B, 0xFF2A, 0xF76A, 0x004B, 0x3385, 0x33CD,
+ 0x04A0, 0x1E30, 0x041A, 0x049A, 0x04C3, 0x039A, 0x049E, 0x049C,
+ 0x01E8, 0x0136, 0x24C0, 0x0136, 0x1E32, 0x0554, 0x053F, 0x0425,
+ 0x03E6, 0x0198, 0x040C, 0x1E34, 0xFF2B, 0x0480, 0x03DE, 0x046E,
+ 0xF76B, 0x004C, 0x01C7, 0xF6BF, 0x0139, 0x039B, 0x013D, 0x013B,
+ 0x24C1, 0x1E3C, 0x013B, 0x013F, 0x013F, 0x1E36, 0x1E38, 0x053C,
+ 0x01C8, 0x0409, 0x1E3A, 0xFF2C, 0x0141, 0xF6F9, 0xF76C, 0x004D,
+ 0x3386, 0xF6D0, 0xF7AF, 0x1E3E, 0x24C2, 0x1E40, 0x1E42, 0x0544,
+ 0xFF2D, 0xF76D, 0x019C, 0x039C, 0x004E, 0x01CA, 0x0143, 0x0147,
+ 0x0145, 0x24C3, 0x1E4A, 0x0145, 0x1E44, 0x1E46, 0x019D, 0x2168,
+ 0x01CB, 0x040A, 0x1E48, 0xFF2E, 0x0546, 0xF76E, 0x00D1, 0xF7F1,
+ 0x039D, 0x004F, 0x0152, 0xF6FA, 0x00D3, 0xF7F3, 0x04E8, 0x04EA,
+ 0x014E, 0x01D1, 0x019F, 0x24C4, 0x00D4, 0x1ED0, 0x1ED8, 0x1ED2,
+ 0x1ED4, 0xF7F4, 0x1ED6, 0x041E, 0x0150, 0x020C, 0x00D6, 0x04E6,
+ 0xF7F6, 0x1ECC, 0xF6FB, 0x00D2, 0xF7F2, 0x0555, 0x2126, 0x1ECE,
+ 0x01A0, 0x1EDA, 0x1EE2, 0x1EDC, 0x1EDE, 0x1EE0, 0x0150, 0x01A2,
+ 0x020E, 0x014C, 0x1E52, 0x1E50, 0x2126, 0x0460, 0x03A9, 0x047A,
+ 0x047C, 0x038F, 0x039F, 0x038C, 0xFF2F, 0x2160, 0x01EA, 0x01EC,
+ 0x0186, 0x00D8, 0x01FE, 0xF7F8, 0xF76F, 0x01FE, 0x047E, 0x00D5,
+ 0x1E4C, 0x1E4E, 0xF7F5, 0x0050, 0x1E54, 0x24C5, 0x1E56, 0x041F,
+ 0x054A, 0x04A6, 0x03A6, 0x01A4, 0x03A0, 0x0553, 0xFF30, 0x03A8,
+ 0x0470, 0xF770, 0x0051, 0x24C6, 0xFF31, 0xF771, 0x0052, 0x054C,
+ 0x0154, 0x0158, 0x0156, 0x24C7, 0x0156, 0x0210, 0x1E58, 0x1E5A,
+ 0x1E5C, 0x0550, 0x211C, 0x03A1, 0xF6FC, 0x0212, 0x1E5E, 0xFF32,
+ 0xF772, 0x0281, 0x02B6, 0x0053, 0x250C, 0x2514, 0x2510, 0x2518,
+ 0x253C, 0x252C, 0x2534, 0x251C, 0x2524, 0x2500, 0x2502, 0x2561,
+ 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C,
+ 0x255B, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560,
+ 0x2550, 0x256C, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558,
+ 0x2552, 0x2553, 0x256B, 0x256A, 0x015A, 0x1E64, 0x03E0, 0x0160,
+ 0x1E66, 0xF6FD, 0x015E, 0x018F, 0x04D8, 0x04DA, 0x24C8, 0x015C,
+ 0x0218, 0x1E60, 0x1E62, 0x1E68, 0x054D, 0x2166, 0x0547, 0x0428,
+ 0x0429, 0x03E2, 0x04BA, 0x03EC, 0x03A3, 0x2165, 0xFF33, 0x042C,
+ 0xF773, 0x03DA, 0x0054, 0x03A4, 0x0166, 0x0164, 0x0162, 0x24C9,
+ 0x1E70, 0x0162, 0x1E6A, 0x1E6C, 0x0422, 0x04AC, 0x2169, 0x04B4,
+ 0x0398, 0x01AC, 0x00DE, 0xF7FE, 0x2162, 0xF6FE, 0x054F, 0x1E6E,
+ 0xFF34, 0x0539, 0x01BC, 0x0184, 0x01A7, 0x01AE, 0x0426, 0x040B,
+ 0xF774, 0x216B, 0x2161, 0x0055, 0x00DA, 0xF7FA, 0x016C, 0x01D3,
+ 0x24CA, 0x00DB, 0x1E76, 0xF7FB, 0x0423, 0x0170, 0x0214, 0x00DC,
+ 0x01D7, 0x1E72, 0x01D9, 0x04F0, 0x01DB, 0x01D5, 0xF7FC, 0x1EE4,
+ 0x00D9, 0xF7F9, 0x1EE6, 0x01AF, 0x1EE8, 0x1EF0, 0x1EEA, 0x1EEC,
+ 0x1EEE, 0x0170, 0x04F2, 0x0216, 0x0478, 0x016A, 0x04EE, 0x1E7A,
+ 0xFF35, 0x0172, 0x03A5, 0x03D2, 0x03D3, 0x01B1, 0x03AB, 0x03D4,
+ 0x03D2, 0x038E, 0x016E, 0x040E, 0xF775, 0x04AE, 0x04B0, 0x0168,
+ 0x1E78, 0x1E74, 0x0056, 0x24CB, 0x1E7E, 0x0412, 0x054E, 0x01B2,
+ 0xFF36, 0x0548, 0xF776, 0x1E7C, 0x0057, 0x1E82, 0x24CC, 0x0174,
+ 0x1E84, 0x1E86, 0x1E88, 0x1E80, 0xFF37, 0xF777, 0x0058, 0x24CD,
+ 0x1E8C, 0x1E8A, 0x053D, 0x039E, 0xFF38, 0xF778, 0x0059, 0x00DD,
+ 0xF7FD, 0x0462, 0x24CE, 0x0176, 0x0178, 0xF7FF, 0x1E8E, 0x1EF4,
+ 0x042B, 0x04F8, 0x1EF2, 0x01B3, 0x1EF6, 0x0545, 0x0407, 0x0552,
+ 0xFF39, 0xF779, 0x1EF8, 0x046A, 0x046C, 0x0466, 0x0468, 0x005A,
+ 0x0536, 0x0179, 0x017D, 0xF6FF, 0x24CF, 0x1E90, 0x017B, 0x017B,
+ 0x1E92, 0x0417, 0x0498, 0x04DE, 0x0396, 0x053A, 0x04C1, 0x0416,
+ 0x0496, 0x04DC, 0x1E94, 0xFF3A, 0xF77A, 0x01B5, 0x0061, 0x0986,
+ 0x00E1, 0x0906, 0x0A86, 0x0A06, 0x0A3E, 0x3303, 0x09BE, 0x093E,
+ 0x0ABE, 0x055F, 0x0970, 0x0985, 0x311A, 0x0103, 0x1EAF, 0x04D1,
+ 0x1EB7, 0x1EB1, 0x1EB3, 0x1EB5, 0x01CE, 0x24D0, 0x00E2, 0x1EA5,
+ 0x1EAD, 0x1EA7, 0x1EA9, 0x1EAB, 0x00B4, 0x0317, 0x0301, 0x0301,
+ 0x0954, 0x02CF, 0x0341, 0x0430, 0x0201, 0x0A71, 0x0905, 0x00E4,
+ 0x04D3, 0x01DF, 0x1EA1, 0x01E1, 0x00E6, 0x01FD, 0x3150, 0x01E3,
+ 0x2015, 0x20A4, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C,
+ 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424,
+ 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C,
+ 0x042D, 0x042E, 0x042F, 0x0490, 0x0402, 0x0403, 0x0404, 0x0405,
+ 0x0406, 0x0407, 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040E,
+ 0xF6C4, 0xF6C5, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C,
+ 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444,
+ 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C,
+ 0x044D, 0x044E, 0x044F, 0x0491, 0x0452, 0x0453, 0x0454, 0x0455,
+ 0x0456, 0x0457, 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045E,
+ 0x040F, 0x0462, 0x0472, 0x0474, 0xF6C6, 0x045F, 0x0463, 0x0473,
+ 0x0475, 0xF6C7, 0xF6C8, 0x04D9, 0x200E, 0x200F, 0x200D, 0x066A,
+ 0x060C, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666,
+ 0x0667, 0x0668, 0x0669, 0x061B, 0x061F, 0x0621, 0x0622, 0x0623,
+ 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062A, 0x062B,
+ 0x062C, 0x062D, 0x062E, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633,
+ 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x063A, 0x0640,
+ 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0648, 0x0649,
+ 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, 0x0650, 0x0651,
+ 0x0652, 0x0647, 0x06A4, 0x067E, 0x0686, 0x0698, 0x06AF, 0x0679,
+ 0x0688, 0x0691, 0x06BA, 0x06D2, 0x06D5, 0x20AA, 0x05BE, 0x05C3,
+ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
+ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
+ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
+ 0x05E8, 0x05E9, 0x05EA, 0xFB2A, 0xFB2B, 0xFB4B, 0xFB1F, 0x05F0,
+ 0x05F1, 0x05F2, 0xFB35, 0x05B4, 0x05B5, 0x05B6, 0x05BB, 0x05B8,
+ 0x05B7, 0x05B0, 0x05B2, 0x05B1, 0x05B3, 0x05C2, 0x05C1, 0x05B9,
+ 0x05BC, 0x05BD, 0x05BF, 0x05C0, 0x02BC, 0x2105, 0x2113, 0x2116,
+ 0x202C, 0x202D, 0x202E, 0x200C, 0x066D, 0x02BD, 0x00E0, 0x0A85,
+ 0x0A05, 0x3042, 0x1EA3, 0x0990, 0x311E, 0x0910, 0x04D5, 0x0A90,
+ 0x0A10, 0x0A48, 0x0639, 0xFECA, 0xFECB, 0xFECC, 0x0203, 0x09C8,
+ 0x0948, 0x0AC8, 0x30A2, 0xFF71, 0x314F, 0x05D0, 0x0627, 0xFB30,
+ 0xFE8E, 0x0623, 0xFE84, 0x0625, 0xFE88, 0x05D0, 0xFB4F, 0x0622,
+ 0xFE82, 0x0649, 0xFEF0, 0xFEF3, 0xFEF4, 0xFB2E, 0xFB2F, 0x2135,
+ 0x224C, 0x03B1, 0x03AC, 0x0101, 0xFF41, 0x0026, 0xFF06, 0xF726,
+ 0x33C2, 0x3122, 0x3124, 0x0E5A, 0x2220, 0x3008, 0xFE3F, 0x3009,
+ 0xFE40, 0x2329, 0x232A, 0x212B, 0x0387, 0x0952, 0x0982, 0x0902,
+ 0x0A82, 0x0105, 0x3300, 0x249C, 0x055A, 0x02BC, 0xF8FF, 0x2250,
+ 0x2248, 0x2252, 0x2245, 0x318E, 0x318D, 0x2312, 0x1E9A, 0x00E5,
+ 0x01FB, 0x1E01, 0x2194, 0x21E3, 0x21E0, 0x21E2, 0x21E1, 0x21D4,
+ 0x21D3, 0x21D0, 0x21D2, 0x21D1, 0x2193, 0x2199, 0x2198, 0x21E9,
+ 0x02C5, 0x02C2, 0x02C3, 0x02C4, 0xF8E7, 0x2190, 0x21D0, 0x21CD,
+ 0x21C6, 0x21E6, 0x2192, 0x21CF, 0x279E, 0x21C4, 0x21E8, 0x21E4,
+ 0x21E5, 0x2191, 0x2195, 0x21A8, 0x21A8, 0x2196, 0x21C5, 0x2197,
+ 0x21E7, 0xF8E6, 0x005E, 0xFF3E, 0x007E, 0xFF5E, 0x0251, 0x0252,
+ 0x3041, 0x30A1, 0xFF67, 0x002A, 0x066D, 0x066D, 0x2217, 0xFF0A,
+ 0xFE61, 0x2042, 0xF6E9, 0x2243, 0x0040, 0x00E3, 0xFF20, 0xFE6B,
+ 0x0250, 0x0994, 0x3120, 0x0914, 0x0A94, 0x0A14, 0x09D7, 0x0A4C,
+ 0x09CC, 0x094C, 0x0ACC, 0x093D, 0x0561, 0x05E2, 0xFB20, 0x05E2,
+ 0x0062, 0x09AC, 0x005C, 0xFF3C, 0x092C, 0x0AAC, 0x0A2C, 0x3070,
+ 0x0E3F, 0x30D0, 0x007C, 0xFF5C, 0x3105, 0x24D1, 0x1E03, 0x1E05,
+ 0x266C, 0x2235, 0x0431, 0x0628, 0xFE90, 0xFE91, 0x3079, 0xFE92,
+ 0xFC9F, 0xFC08, 0xFC6D, 0x30D9, 0x0562, 0x05D1, 0x03B2, 0x03D0,
+ 0xFB31, 0xFB31, 0x05D1, 0xFB4C, 0x09AD, 0x092D, 0x0AAD, 0x0A2D,
+ 0x0253, 0x3073, 0x30D3, 0x0298, 0x0A02, 0x3331, 0x25CF, 0x25C6,
+ 0x25BC, 0x25C4, 0x25C0, 0x3010, 0xFE3B, 0x3011, 0xFE3C, 0x25E3,
+ 0x25E2, 0x25AC, 0x25BA, 0x25B6, 0x25AA, 0x263B, 0x25A0, 0x2605,
+ 0x25E4, 0x25E5, 0x25B4, 0x25B2, 0x2423, 0x1E07, 0x2588, 0xFF42,
+ 0x0E1A, 0x307C, 0x30DC, 0x249D, 0x33C3, 0xF8F4, 0x007B, 0xF8F3,
+ 0xF8F2, 0xFF5B, 0xFE5B, 0xF8F1, 0xFE37, 0x007D, 0xF8FE, 0xF8FD,
+ 0xFF5D, 0xFE5C, 0xF8FC, 0xFE38, 0x005B, 0xF8F0, 0xF8EF, 0xFF3B,
+ 0xF8EE, 0x005D, 0xF8FB, 0xF8FA, 0xFF3D, 0xF8F9, 0x02D8, 0x032E,
+ 0x0306, 0x032F, 0x0311, 0x0361, 0x032A, 0x033A, 0x00A6, 0x0180,
+ 0xF6EA, 0x0183, 0x3076, 0x30D6, 0x2022, 0x25D8, 0x2219, 0x25CE,
+ 0x0063, 0x056E, 0x099A, 0x0107, 0x091A, 0x0A9A, 0x0A1A, 0x3388,
+ 0x0981, 0x0310, 0x0901, 0x0A81, 0x21EA, 0x2105, 0x02C7, 0x032C,
+ 0x030C, 0x21B5, 0x3118, 0x010D, 0x00E7, 0x1E09, 0x24D2, 0x0109,
+ 0x0255, 0x010B, 0x010B, 0x33C5, 0x00B8, 0x0327, 0x00A2, 0x2103,
+ 0xF6DF, 0xFFE0, 0xF7A2, 0xF6E0, 0x0579, 0x099B, 0x091B, 0x0A9B,
+ 0x0A1B, 0x3114, 0x04BD, 0x2713, 0x0447, 0x04BF, 0x04B7, 0x04F5,
+ 0x0573, 0x04CC, 0x04B9, 0x03C7, 0x3277, 0x3217, 0x3269, 0x314A,
+ 0x3209, 0x0E0A, 0x0E08, 0x0E09, 0x0E0C, 0x0188, 0x3276, 0x3216,
+ 0x3268, 0x3148, 0x3208, 0x321C, 0x25CB, 0x2297, 0x2299, 0x2295,
+ 0x3036, 0x25D0, 0x25D1, 0x02C6, 0x032D, 0x0302, 0x2327, 0x01C2,
+ 0x01C0, 0x01C1, 0x01C3, 0x2663, 0x2663, 0x2667, 0x33A4, 0xFF43,
+ 0x33A0, 0x0581, 0x003A, 0x20A1, 0xFF1A, 0x20A1, 0xFE55, 0x02D1,
+ 0x02D0, 0x002C, 0x0313, 0x0315, 0xF6C3, 0x060C, 0x055D, 0xF6E1,
+ 0xFF0C, 0x0314, 0x02BD, 0xFE50, 0xF6E2, 0x0312, 0x02BB, 0x263C,
+ 0x2245, 0x222E, 0x2303, 0x0006, 0x0007, 0x0008, 0x0018, 0x000D,
+ 0x0011, 0x0012, 0x0013, 0x0014, 0x007F, 0x0010, 0x0019, 0x0005,
+ 0x0004, 0x001B, 0x0017, 0x0003, 0x000C, 0x001C, 0x001D, 0x0009,
+ 0x000A, 0x0015, 0x001E, 0x000F, 0x000E, 0x0002, 0x0001, 0x001A,
+ 0x0016, 0x001F, 0x000B, 0x00A9, 0xF8E9, 0xF6D9, 0x300C, 0xFF62,
+ 0xFE41, 0x300D, 0xFF63, 0xFE42, 0x337F, 0x33C7, 0x33C6, 0x249E,
+ 0x20A2, 0x0297, 0x22CF, 0x22CE, 0x00A4, 0xF6D1, 0xF6D2, 0xF6D4,
+ 0xF6D5, 0x0064, 0x0564, 0x09A6, 0x0636, 0x0926, 0xFEBE, 0xFEBF,
+ 0xFEC0, 0x05BC, 0x05BC, 0x2020, 0x2021, 0x0AA6, 0x0A26, 0x3060,
+ 0x30C0, 0x062F, 0x05D3, 0xFB33, 0xFB33, 0x05D3, 0xFEAA, 0x064F,
+ 0x064F, 0x064C, 0x064C, 0x0964, 0x05A7, 0x05A7, 0x0485, 0xF6D3,
+ 0x300A, 0xFE3D, 0x300B, 0xFE3E, 0x032B, 0x21D4, 0x21D2, 0x0965,
+ 0xF6D6, 0x030F, 0x222C, 0x2017, 0x0333, 0x033F, 0x02BA, 0x2016,
+ 0x030E, 0x3109, 0x33C8, 0x010F, 0x1E11, 0x24D3, 0x1E13, 0x0111,
+ 0x09A1, 0x0921, 0x0AA1, 0x0A21, 0x0688, 0xFB89, 0x095C, 0x09A2,
+ 0x0922, 0x0AA2, 0x0A22, 0x1E0B, 0x1E0D, 0x066B, 0x066B, 0x0434,
+ 0x00B0, 0x05AD, 0x3067, 0x03EF, 0x30C7, 0x232B, 0x2326, 0x03B4,
+ 0x018D, 0x09F8, 0x02A4, 0x09A7, 0x0927, 0x0AA7, 0x0A27, 0x0257,
+ 0x0385, 0x0344, 0x2666, 0x2662, 0x00A8, 0xF6D7, 0x0324, 0x0308,
+ 0xF6D8, 0x0385, 0x3062, 0x30C2, 0x3003, 0x00F7, 0x2223, 0x2215,
+ 0x0452, 0x2593, 0x1E0F, 0x3397, 0x0111, 0xFF44, 0x2584, 0x0E0E,
+ 0x0E14, 0x3069, 0x30C9, 0x0024, 0xF6E3, 0xFF04, 0xF724, 0xFE69,
+ 0xF6E4, 0x20AB, 0x3326, 0x02D9, 0x0307, 0x0323, 0x0323, 0x30FB,
+ 0x0131, 0xF6BE, 0x0284, 0x22C5, 0x25CC, 0xFB1F, 0xFB1F, 0x031E,
+ 0x02D5, 0x249F, 0xF6EB, 0x0256, 0x018C, 0x3065, 0x30C5, 0x01F3,
+ 0x02A3, 0x01C6, 0x02A5, 0x04E1, 0x0455, 0x045F, 0x0065, 0x00E9,
+ 0x2641, 0x098F, 0x311C, 0x0115, 0x090D, 0x0A8D, 0x0945, 0x0AC5,
+ 0x011B, 0x1E1D, 0x0565, 0x0587, 0x24D4, 0x00EA, 0x1EBF, 0x1E19,
+ 0x1EC7, 0x1EC1, 0x1EC3, 0x1EC5, 0x0454, 0x0205, 0x090F, 0x00EB,
+ 0x0117, 0x0117, 0x1EB9, 0x0A0F, 0x0A47, 0x0444, 0x00E8, 0x0A8F,
+ 0x0567, 0x311D, 0x3048, 0x1EBB, 0x311F, 0x0038, 0x0668, 0x09EE,
+ 0x2467, 0x2791, 0x096E, 0x2471, 0x2485, 0x2499, 0x0AEE, 0x0A6E,
+ 0x0668, 0x3028, 0x266B, 0x3227, 0x2088, 0xFF18, 0xF738, 0x247B,
+ 0x248F, 0x06F8, 0x2177, 0x2078, 0x0E58, 0x0207, 0x0465, 0x30A8,
+ 0xFF74, 0x0A74, 0x3154, 0x043B, 0x2208, 0x246A, 0x247E, 0x2492,
+ 0x217A, 0x2026, 0x22EE, 0x0113, 0x1E17, 0x1E15, 0x043C, 0x2014,
+ 0xFE31, 0xFF45, 0x055B, 0x2205, 0x3123, 0x043D, 0x2013, 0xFE32,
+ 0x04A3, 0x014B, 0x3125, 0x04A5, 0x04C8, 0x2002, 0x0119, 0x3153,
+ 0x025B, 0x029A, 0x025C, 0x025E, 0x025D, 0x24A0, 0x03B5, 0x03AD,
+ 0x003D, 0xFF1D, 0xFE66, 0x207C, 0x2261, 0x3126, 0x0440, 0x0258,
+ 0x044D, 0x0441, 0x04AB, 0x0283, 0x0286, 0x090E, 0x0946, 0x01AA,
+ 0x0285, 0x3047, 0x30A7, 0xFF6A, 0x212E, 0xF6EC, 0x03B7, 0x0568,
+ 0x03AE, 0x00F0, 0x1EBD, 0x1E1B, 0x0591, 0x0591, 0x0591, 0x0591,
+ 0x01DD, 0x3161, 0x20AC, 0x09C7, 0x0947, 0x0AC7, 0x0021, 0x055C,
+ 0x203C, 0x00A1, 0xF7A1, 0xFF01, 0xF721, 0x2203, 0x0292, 0x01EF,
+ 0x0293, 0x01B9, 0x01BA, 0x0066, 0x095E, 0x0A5E, 0x2109, 0x064E,
+ 0x064E, 0x064B, 0x3108, 0x24D5, 0x1E1F, 0x0641, 0x0586, 0xFED2,
+ 0xFED3, 0xFED4, 0x03E5, 0x2640, 0xFB00, 0xFB03, 0xFB04, 0xFB01,
+ 0x246E, 0x2482, 0x2496, 0x2012, 0x25A0, 0x25AC, 0x05DA, 0xFB3A,
+ 0xFB3A, 0x05DA, 0x05DD, 0x05DD, 0x05DF, 0x05DF, 0x05E3, 0x05E3,
+ 0x05E5, 0x05E5, 0x02C9, 0x25C9, 0x0473, 0x0035, 0x0665, 0x09EB,
+ 0x2464, 0x278E, 0x096B, 0x215D, 0x0AEB, 0x0A6B, 0x0665, 0x3025,
+ 0x3224, 0x2085, 0xFF15, 0xF735, 0x2478, 0x248C, 0x06F5, 0x2174,
+ 0x2075, 0x0E55, 0xFB02, 0x0192, 0xFF46, 0x3399, 0x0E1F, 0x0E1D,
+ 0x0E4F, 0x2200, 0x0034, 0x0664, 0x09EA, 0x2463, 0x278D, 0x096A,
+ 0x0AEA, 0x0A6A, 0x0664, 0x3024, 0x3223, 0x2084, 0xFF14, 0x09F7,
+ 0xF734, 0x2477, 0x248B, 0x06F4, 0x2173, 0x2074, 0x246D, 0x2481,
+ 0x2495, 0x0E54, 0x02CB, 0x24A1, 0x2044, 0x20A3, 0x0067, 0x0997,
+ 0x01F5, 0x0917, 0x06AF, 0xFB93, 0xFB94, 0xFB95, 0x0A97, 0x0A17,
+ 0x304C, 0x30AC, 0x03B3, 0x0263, 0x02E0, 0x03EB, 0x310D, 0x011F,
+ 0x01E7, 0x0123, 0x24D6, 0x011D, 0x0123, 0x0121, 0x0121, 0x0433,
+ 0x3052, 0x30B2, 0x2251, 0x059C, 0x05F3, 0x059D, 0x00DF, 0x059E,
+ 0x05F4, 0x3013, 0x0998, 0x0572, 0x0918, 0x0A98, 0x0A18, 0x063A,
+ 0xFECE, 0xFECF, 0xFED0, 0x0495, 0x0493, 0x0491, 0x095A, 0x0A5A,
+ 0x0260, 0x3393, 0x304E, 0x30AE, 0x0563, 0x05D2, 0xFB32, 0xFB32,
+ 0x05D2, 0x0453, 0x01BE, 0x0294, 0x0296, 0x02C0, 0x0295, 0x02C1,
+ 0x02E4, 0x02A1, 0x02A2, 0x1E21, 0xFF47, 0x3054, 0x30B4, 0x24A2,
+ 0x33AC, 0x2207, 0x0060, 0x0316, 0x0300, 0x0300, 0x0953, 0x02CE,
+ 0xFF40, 0x0340, 0x003E, 0x2265, 0x22DB, 0xFF1E, 0x2273, 0x2277,
+ 0x2267, 0xFE65, 0x0261, 0x01E5, 0x3050, 0x00AB, 0x00BB, 0x2039,
+ 0x203A, 0x30B0, 0x3318, 0x33C9, 0x0068, 0x04A9, 0x06C1, 0x09B9,
+ 0x04B3, 0x0939, 0x0AB9, 0x0A39, 0x062D, 0xFEA2, 0xFEA3, 0x306F,
+ 0xFEA4, 0x332A, 0x30CF, 0xFF8A, 0x0A4D, 0x0621, 0x0621, 0x3164,
+ 0x044A, 0x21BC, 0x21C0, 0x33CA, 0x05B2, 0x05B2, 0x05B2, 0x05B2,
+ 0x05B2, 0x05B2, 0x05B2, 0x05B2, 0x05B3, 0x05B3, 0x05B3, 0x05B3,
+ 0x05B3, 0x05B3, 0x05B3, 0x05B3, 0x05B1, 0x05B1, 0x05B1, 0x05B1,
+ 0x05B1, 0x05B1, 0x05B1, 0x05B1, 0x0127, 0x310F, 0x1E2B, 0x1E29,
+ 0x24D7, 0x0125, 0x1E27, 0x1E23, 0x1E25, 0x05D4, 0x2665, 0x2665,
+ 0x2661, 0xFB34, 0xFB34, 0x06C1, 0x0647, 0x05D4, 0xFBA7, 0xFEEA,
+ 0xFEEA, 0xFBA5, 0xFBA4, 0xFBA8, 0xFEEB, 0x3078, 0xFBA9, 0xFEEC,
+ 0x337B, 0x30D8, 0xFF8D, 0x3336, 0x0267, 0x3339, 0x05D7, 0x05D7,
+ 0x0266, 0x02B1, 0x327B, 0x321B, 0x326D, 0x314E, 0x320D, 0x3072,
+ 0x30D2, 0xFF8B, 0x05B4, 0x05B4, 0x05B4, 0x05B4, 0x05B4, 0x05B4,
+ 0x05B4, 0x05B4, 0x1E96, 0xFF48, 0x0570, 0x0E2B, 0x307B, 0x30DB,
+ 0xFF8E, 0x05B9, 0x05B9, 0x05B9, 0x05B9, 0x05B9, 0x05B9, 0x05B9,
+ 0x05B9, 0x0E2E, 0x0309, 0x0309, 0x0321, 0x0322, 0x3342, 0x03E9,
+ 0x2015, 0x031B, 0x2668, 0x2302, 0x24A3, 0x02B0, 0x0265, 0x3075,
+ 0x3333, 0x30D5, 0xFF8C, 0x02DD, 0x030B, 0x0195, 0x002D, 0xF6E5,
+ 0xFF0D, 0xFE63, 0xF6E6, 0x2010, 0x0069, 0x00ED, 0x044F, 0x0987,
+ 0x3127, 0x012D, 0x01D0, 0x24D8, 0x00EE, 0x0456, 0x0209, 0x328F,
+ 0x328B, 0x323F, 0x323A, 0x32A5, 0x3006, 0x3001, 0xFF64, 0x3237,
+ 0x32A3, 0x322F, 0x323D, 0x329D, 0x3240, 0x3296, 0x3236, 0x322B,
+ 0x3232, 0x32A4, 0x3005, 0x3298, 0x3238, 0x32A7, 0x32A6, 0x32A9,
+ 0x322E, 0x322A, 0x3234, 0x3002, 0x329E, 0x3243, 0x3239, 0x323E,
+ 0x32A8, 0x3299, 0x3242, 0x3233, 0x3000, 0x3235, 0x3231, 0x323B,
+ 0x3230, 0x323C, 0x322C, 0x322D, 0x3007, 0x328E, 0x328A, 0x3294,
+ 0x3290, 0x328C, 0x328D, 0x0907, 0x00EF, 0x1E2F, 0x04E5, 0x1ECB,
+ 0x04D7, 0x0435, 0x3275, 0x3215, 0x3267, 0x3147, 0x3207, 0x00EC,
+ 0x0A87, 0x0A07, 0x3044, 0x1EC9, 0x0988, 0x0438, 0x0908, 0x0A88,
+ 0x0A08, 0x0A40, 0x020B, 0x0439, 0x09C0, 0x0940, 0x0AC0, 0x0133,
+ 0x30A4, 0xFF72, 0x3163, 0x02DC, 0x05AC, 0x012B, 0x04E3, 0x2253,
+ 0x0A3F, 0xFF49, 0x2206, 0x221E, 0x056B, 0x222B, 0x2321, 0x2321,
+ 0xF8F5, 0x2320, 0x2320, 0x2229, 0x3305, 0x25D8, 0x25D9, 0x263B,
+ 0x0451, 0x012F, 0x03B9, 0x03CA, 0x0390, 0x0269, 0x03AF, 0x24A4,
+ 0x0A72, 0x3043, 0x30A3, 0xFF68, 0x09FA, 0x0268, 0xF6ED, 0x309D,
+ 0x30FD, 0x0129, 0x1E2D, 0x3129, 0x044E, 0x09BF, 0x093F, 0x0ABF,
+ 0x0475, 0x0477, 0x006A, 0x0571, 0x099C, 0x091C, 0x0A9C, 0x0A1C,
+ 0x3110, 0x01F0, 0x24D9, 0x0135, 0x029D, 0x025F, 0x0458, 0x062C,
+ 0xFE9E, 0xFE9F, 0xFEA0, 0x0698, 0xFB8B, 0x099D, 0x091D, 0x0A9D,
+ 0x0A1D, 0x057B, 0x3004, 0xFF4A, 0x24A5, 0x02B2, 0x006B, 0x04A1,
+ 0x0995, 0x1E31, 0x043A, 0x049B, 0x0915, 0x05DB, 0x0643, 0xFB3B,
+ 0xFB3B, 0xFEDA, 0x05DB, 0xFEDB, 0xFEDC, 0xFB4D, 0x0A95, 0x0A15,
+ 0x304B, 0x04C4, 0x30AB, 0xFF76, 0x03BA, 0x03F0, 0x3171, 0x3184,
+ 0x3178, 0x3179, 0x330D, 0x0640, 0x0640, 0x30F5, 0x3384, 0x0650,
+ 0x064D, 0x049F, 0xFF70, 0x049D, 0x310E, 0x3389, 0x01E9, 0x0137,
+ 0x24DA, 0x0137, 0x1E33, 0x0584, 0x3051, 0x30B1, 0xFF79, 0x056F,
+ 0x30F6, 0x0138, 0x0996, 0x0445, 0x0916, 0x0A96, 0x0A16, 0x062E,
+ 0xFEA6, 0xFEA7, 0xFEA8, 0x03E7, 0x0959, 0x0A59, 0x3278, 0x3218,
+ 0x326A, 0x314B, 0x320A, 0x0E02, 0x0E05, 0x0E03, 0x0E04, 0x0E5B,
+ 0x0199, 0x0E06, 0x3391, 0x304D, 0x30AD, 0xFF77, 0x3315, 0x3316,
+ 0x3314, 0x326E, 0x320E, 0x3260, 0x3131, 0x3200, 0x3133, 0x045C,
+ 0x1E35, 0x3398, 0x33A6, 0xFF4B, 0x33A2, 0x3053, 0x33C0, 0x0E01,
+ 0x30B3, 0xFF7A, 0x331E, 0x0481, 0x327F, 0x0343, 0x24A6, 0x33AA,
+ 0x046F, 0x33CF, 0x029E, 0x304F, 0x30AF, 0xFF78, 0x33B8, 0x33BE,
+ 0x006C, 0x09B2, 0x013A, 0x0932, 0x0AB2, 0x0A32, 0x0E45, 0xFEFC,
+ 0xFEF8, 0xFEF7, 0xFEFA, 0xFEF9, 0xFEFB, 0xFEF6, 0xFEF5, 0x0644,
+ 0x03BB, 0x019B, 0x05DC, 0xFB3C, 0xFB3C, 0x05DC, 0xFEDE, 0xFCCA,
+ 0xFEDF, 0xFCC9, 0xFCCB, 0xFDF2, 0xFEE0, 0xFD88, 0xFCCC, 0x25EF,
+ 0x019A, 0x026C, 0x310C, 0x013E, 0x013C, 0x24DB, 0x1E3D, 0x013C,
+ 0x0140, 0x0140, 0x1E37, 0x1E39, 0x031A, 0x0318, 0x003C, 0x2264,
+ 0x22DA, 0xFF1C, 0x2272, 0x2276, 0x2266, 0xFE64, 0x026E, 0x258C,
+ 0x026D, 0x20A4, 0x056C, 0x01C9, 0x0459, 0xF6C0, 0x0933, 0x0AB3,
+ 0x1E3B, 0x0934, 0x09E1, 0x0961, 0x09E3, 0x0963, 0x026B, 0xFF4C,
+ 0x33D0, 0x0E2C, 0x2227, 0x00AC, 0x2310, 0x2228, 0x0E25, 0x017F,
+ 0xFE4E, 0x0332, 0xFE4D, 0x25CA, 0x24A7, 0x0142, 0x2113, 0xF6EE,
+ 0x2591, 0x0E26, 0x098C, 0x090C, 0x09E2, 0x0962, 0x33D3, 0x006D,
+ 0x09AE, 0x00AF, 0x0331, 0x0304, 0x02CD, 0xFFE3, 0x1E3F, 0x092E,
+ 0x0AAE, 0x0A2E, 0x05A4, 0x05A4, 0x307E, 0xF895, 0xF894, 0x0E4B,
+ 0xF893, 0xF88C, 0xF88B, 0x0E48, 0xF88A, 0xF884, 0x0E31, 0xF889,
+ 0x0E47, 0xF88F, 0xF88E, 0x0E49, 0xF88D, 0xF892, 0xF891, 0x0E4A,
+ 0xF890, 0x0E46, 0x30DE, 0xFF8F, 0x2642, 0x3347, 0x05BE, 0x2642,
+ 0x05AF, 0x3383, 0x3107, 0x33D4, 0x24DC, 0x33A5, 0x1E41, 0x1E43,
+ 0x0645, 0xFEE2, 0xFEE3, 0xFEE4, 0xFCD1, 0xFC48, 0x334D, 0x3081,
+ 0x337E, 0x30E1, 0xFF92, 0x05DE, 0xFB3E, 0xFB3E, 0x05DE, 0x0574,
+ 0x05A5, 0x05A6, 0x05A6, 0x05A5, 0x0271, 0x3392, 0xFF65, 0x00B7,
+ 0x3272, 0x3212, 0x3264, 0x3141, 0x3170, 0x3204, 0x316E, 0x316F,
+ 0x307F, 0x30DF, 0xFF90, 0x2212, 0x0320, 0x2296, 0x02D7, 0x2213,
+ 0x2032, 0x334A, 0x3349, 0x0270, 0x3396, 0x33A3, 0xFF4D, 0x339F,
+ 0x3082, 0x33C1, 0x30E2, 0xFF93, 0x33D6, 0x0E21, 0x33A7, 0x33A8,
+ 0x24A8, 0x33AB, 0x33B3, 0xF6EF, 0x026F, 0x00B5, 0x00B5, 0x3382,
+ 0x226B, 0x226A, 0x338C, 0x03BC, 0x338D, 0x3080, 0x30E0, 0xFF91,
+ 0x3395, 0x00D7, 0x339B, 0x05A3, 0x05A3, 0x266A, 0x266B, 0x266D,
+ 0x266F, 0x33B2, 0x33B6, 0x33BC, 0x33B9, 0x33B7, 0x33BF, 0x33BD,
+ 0x006E, 0x09A8, 0x2207, 0x0144, 0x0928, 0x0AA8, 0x0A28, 0x306A,
+ 0x30CA, 0xFF85, 0x0149, 0x3381, 0x310B, 0x00A0, 0x0148, 0x0146,
+ 0x24DD, 0x1E4B, 0x0146, 0x1E45, 0x1E47, 0x306D, 0x30CD, 0xFF88,
+ 0x20AA, 0x338B, 0x0999, 0x0919, 0x0A99, 0x0A19, 0x0E07, 0x3093,
+ 0x0272, 0x0273, 0x326F, 0x320F, 0x3135, 0x3261, 0x3136, 0x3134,
+ 0x3168, 0x3201, 0x3167, 0x3166, 0x306B, 0x30CB, 0xFF86, 0xF899,
+ 0x0E4D, 0x0039, 0x0669, 0x09EF, 0x2468, 0x2792, 0x096F, 0x0AEF,
+ 0x0A6F, 0x0669, 0x3029, 0x3228, 0x2089, 0xFF19, 0xF739, 0x247C,
+ 0x2490, 0x06F9, 0x2178, 0x2079, 0x2472, 0x2486, 0x249A, 0x0E59,
+ 0x01CC, 0x045A, 0x30F3, 0xFF9D, 0x019E, 0x1E49, 0xFF4E, 0x339A,
+ 0x09A3, 0x0923, 0x0AA3, 0x0A23, 0x0929, 0x306E, 0x30CE, 0xFF89,
+ 0x00A0, 0x0E13, 0x0E19, 0x0646, 0xFEE6, 0x06BA, 0xFB9F, 0xFEE7,
+ 0xFCD2, 0xFC4B, 0xFEE8, 0xFCD5, 0xFC4E, 0xFC8D, 0x220C, 0x2209,
+ 0x2209, 0x2260, 0x226F, 0x2271, 0x2279, 0x2262, 0x226E, 0x2270,
+ 0x2226, 0x2280, 0x2284, 0x2281, 0x2285, 0x0576, 0x24A9, 0x33B1,
+ 0x207F, 0x00F1, 0x03BD, 0x306C, 0x30CC, 0xFF87, 0x09BC, 0x093C,
+ 0x0ABC, 0x0A3C, 0x0023, 0xFF03, 0xFE5F, 0x0374, 0x0375, 0x2116,
+ 0x05E0, 0xFB40, 0xFB40, 0x05E0, 0x33B5, 0x33BB, 0x099E, 0x091E,
+ 0x0A9E, 0x0A1E, 0x006F, 0x00F3, 0x0E2D, 0x0275, 0x04E9, 0x04EB,
+ 0x0993, 0x311B, 0x014F, 0x0911, 0x0A91, 0x0949, 0x0AC9, 0x01D2,
+ 0x24DE, 0x00F4, 0x1ED1, 0x1ED9, 0x1ED3, 0x1ED5, 0x1ED7, 0x043E,
+ 0x0151, 0x020D, 0x0913, 0x00F6, 0x04E7, 0x1ECD, 0x0153, 0x315A,
+ 0x02DB, 0x0328, 0x00F2, 0x0A93, 0x0585, 0x304A, 0x1ECF, 0x01A1,
+ 0x1EDB, 0x1EE3, 0x1EDD, 0x1EDF, 0x1EE1, 0x0151, 0x01A3, 0x020F,
+ 0x30AA, 0xFF75, 0x3157, 0x05AB, 0x014D, 0x1E53, 0x1E51, 0x0950,
+ 0x03C9, 0x03D6, 0x0461, 0x0277, 0x047B, 0x047D, 0x03CE, 0x0AD0,
+ 0x03BF, 0x03CC, 0xFF4F, 0x0031, 0x0661, 0x09E7, 0x2460, 0x278A,
+ 0x0967, 0x2024, 0x215B, 0xF6DC, 0x0AE7, 0x0A67, 0x0661, 0x00BD,
+ 0x3021, 0x3220, 0x2081, 0xFF11, 0x09F4, 0xF731, 0x2474, 0x2488,
+ 0x06F1, 0x00BC, 0x2170, 0x00B9, 0x0E51, 0x2153, 0x01EB, 0x01ED,
+ 0x0A13, 0x0A4B, 0x0254, 0x24AA, 0x25E6, 0x2325, 0x00AA, 0x00BA,
+ 0x221F, 0x0912, 0x094A, 0x00F8, 0x01FF, 0x3049, 0x30A9, 0xFF6B,
+ 0x01FF, 0xF6F0, 0x047F, 0x00F5, 0x1E4D, 0x1E4F, 0x3121, 0x203E,
+ 0xFE4A, 0x0305, 0xFE49, 0xFE4C, 0xFE4B, 0x00AF, 0x09CB, 0x094B,
+ 0x0ACB, 0x0070, 0x3380, 0x332B, 0x09AA, 0x1E55, 0x092A, 0x21DF,
+ 0x21DE, 0x0AAA, 0x0A2A, 0x3071, 0x0E2F, 0x30D1, 0x0484, 0x04C0,
+ 0x317F, 0x00B6, 0x2225, 0x0028, 0xFD3E, 0xF8ED, 0xF8EC, 0x208D,
+ 0xFF08, 0xFE59, 0x207D, 0xF8EB, 0xFE35, 0x0029, 0xFD3F, 0xF8F8,
+ 0xF8F7, 0x208E, 0xFF09, 0xFE5A, 0x207E, 0xF8F6, 0xFE36, 0x2202,
+ 0x05C0, 0x0599, 0x33A9, 0x05B7, 0x05B7, 0x05B7, 0x05B7, 0x05B7,
+ 0x05B7, 0x05B7, 0x05B7, 0x05A1, 0x3106, 0x24DF, 0x1E57, 0x05E4,
+ 0x043F, 0xFB44, 0xFB44, 0x333B, 0xFB43, 0x067E, 0x057A, 0x05E4,
+ 0xFB57, 0xFB58, 0x307A, 0xFB59, 0x30DA, 0x04A7, 0xFB4E, 0x0025,
+ 0x066A, 0xFF05, 0xFE6A, 0x002E, 0x0589, 0x00B7, 0xFF61, 0xF6E7,
+ 0xFF0E, 0xFE52, 0xF6E8, 0x0342, 0x22A5, 0x2030, 0x20A7, 0x338A,
+ 0x09AB, 0x092B, 0x0AAB, 0x0A2B, 0x03C6, 0x03D5, 0x327A, 0x321A,
+ 0x326C, 0x314D, 0x320C, 0x0278, 0x0E3A, 0x03D5, 0x01A5, 0x0E1E,
+ 0x0E1C, 0x0E20, 0x03C0, 0x3273, 0x3213, 0x3176, 0x3265, 0x3172,
+ 0x3142, 0x3205, 0x3174, 0x3144, 0x3175, 0x3177, 0x3173, 0x3074,
+ 0x30D4, 0x03D6, 0x0583, 0x002B, 0x031F, 0x2295, 0x00B1, 0x02D6,
+ 0xFF0B, 0xFE62, 0x207A, 0xFF50, 0x33D8, 0x307D, 0x261F, 0x261C,
+ 0x261E, 0x261D, 0x30DD, 0x0E1B, 0x3012, 0x3020, 0x24AB, 0x227A,
+ 0x211E, 0x02B9, 0x2035, 0x220F, 0x2305, 0x30FC, 0x2318, 0x2282,
+ 0x2283, 0x2237, 0x221D, 0x03C8, 0x0471, 0x0486, 0x33B0, 0x3077,
+ 0x30D7, 0x33B4, 0x33BA, 0x0071, 0x0958, 0x05A8, 0x0642, 0xFED6,
+ 0xFED7, 0xFED8, 0x05B8, 0x05B8, 0x05B8, 0x05B8, 0x05B8, 0x05B8,
+ 0x05B8, 0x05B8, 0x05B8, 0x05B8, 0x05B8, 0x05B8, 0x05B8, 0x05B8,
+ 0x05B8, 0x05B8, 0x059F, 0x3111, 0x24E0, 0x02A0, 0xFF51, 0x05E7,
+ 0xFB47, 0xFB47, 0x05E7, 0x24AC, 0x2669, 0x05BB, 0x05BB, 0x05BB,
+ 0x05BB, 0x05BB, 0x05BB, 0x05BB, 0x05BB, 0x003F, 0x061F, 0x055E,
+ 0x00BF, 0xF7BF, 0x037E, 0xFF1F, 0xF73F, 0x0022, 0x201E, 0x201C,
+ 0xFF02, 0x301E, 0x301D, 0x201D, 0x2018, 0x201B, 0x201B, 0x2019,
+ 0x0149, 0x201A, 0x0027, 0xFF07, 0x0072, 0x057C, 0x09B0, 0x0155,
+ 0x0930, 0x221A, 0xF8E5, 0x33AE, 0x33AF, 0x33AD, 0x05BF, 0x05BF,
+ 0x0AB0, 0x0A30, 0x3089, 0x30E9, 0xFF97, 0x09F1, 0x09F0, 0x0264,
+ 0x2236, 0x3116, 0x0159, 0x0157, 0x24E1, 0x0157, 0x0211, 0x1E59,
+ 0x1E5B, 0x1E5D, 0x203B, 0x2286, 0x2287, 0x00AE, 0xF8E8, 0xF6DA,
+ 0x0631, 0x0580, 0xFEAE, 0x308C, 0x30EC, 0xFF9A, 0x05E8, 0xFB48,
+ 0x05E8, 0x223D, 0x0597, 0x0597, 0x2310, 0x027E, 0x027F, 0x09DD,
+ 0x095D, 0x03C1, 0x027D, 0x027B, 0x02B5, 0x03F1, 0x02DE, 0x3271,
+ 0x3211, 0x3263, 0x3140, 0x313A, 0x3169, 0x3139, 0x313B, 0x316C,
+ 0x3203, 0x313F, 0x313C, 0x316B, 0x313D, 0x313E, 0x316A, 0x316D,
+ 0x221F, 0x0319, 0x22BF, 0x308A, 0x30EA, 0xFF98, 0x02DA, 0x0325,
+ 0x030A, 0x02BF, 0x0559, 0x031C, 0x02D3, 0x02BE, 0x0339, 0x02D2,
+ 0x0213, 0x3351, 0x1E5F, 0x027C, 0x027A, 0xFF52, 0x308D, 0x30ED,
+ 0xFF9B, 0x0E23, 0x24AD, 0x09DC, 0x0931, 0x0A5C, 0x0691, 0xFB8D,
+ 0x09E0, 0x0960, 0x0AE0, 0x09C4, 0x0944, 0x0AC4, 0xF6F1, 0x2590,
+ 0x0279, 0x02B4, 0x308B, 0x30EB, 0xFF99, 0x09F2, 0x09F3, 0xF6DD,
+ 0x0E24, 0x098B, 0x090B, 0x0A8B, 0x09C3, 0x0943, 0x0AC3, 0x0073,
+ 0x09B8, 0x015B, 0x1E65, 0x0635, 0x0938, 0xFEBA, 0xFEBB, 0xFEBC,
+ 0x0AB8, 0x0A38, 0x3055, 0x30B5, 0xFF7B, 0xFDFA, 0x05E1, 0xFB41,
+ 0xFB41, 0x05E1, 0x0E32, 0x0E41, 0x0E44, 0x0E43, 0x0E33, 0x0E30,
+ 0x0E40, 0xF886, 0x0E35, 0xF885, 0x0E34, 0x0E42, 0xF888, 0x0E37,
+ 0xF887, 0x0E36, 0x0E38, 0x0E39, 0x3119, 0x0161, 0x1E67, 0x015F,
+ 0x0259, 0x04D9, 0x04DB, 0x025A, 0x24E2, 0x015D, 0x0219, 0x1E61,
+ 0x1E63, 0x1E69, 0x033C, 0x2033, 0x02CA, 0x00A7, 0x0633, 0xFEB2,
+ 0xFEB3, 0xFEB4, 0x05B6, 0x05B6, 0x05B6, 0x05B6, 0x05B6, 0x05B6,
+ 0x05B6, 0x0592, 0x05B6, 0x057D, 0x305B, 0x30BB, 0xFF7E, 0x003B,
+ 0x061B, 0xFF1B, 0xFE54, 0x309C, 0xFF9F, 0x3322, 0x3323, 0x0037,
+ 0x0667, 0x09ED, 0x2466, 0x2790, 0x096D, 0x215E, 0x0AED, 0x0A6D,
+ 0x0667, 0x3027, 0x3226, 0x2087, 0xFF17, 0xF737, 0x247A, 0x248E,
+ 0x06F7, 0x2176, 0x2077, 0x2470, 0x2484, 0x2498, 0x0E57, 0x00AD,
+ 0x0577, 0x09B6, 0x0448, 0x0651, 0xFC61, 0xFC5E, 0xFC60, 0xFC62,
+ 0xFC5F, 0x2592, 0x2593, 0x2591, 0x2592, 0x0936, 0x0AB6, 0x0A36,
+ 0x0593, 0x3115, 0x0449, 0x0634, 0xFEB6, 0xFEB7, 0xFEB8, 0x03E3,
+ 0x20AA, 0x20AA, 0x05B0, 0x05B0, 0x05B0, 0x05B0, 0x05B0, 0x05B0,
+ 0x05B0, 0x05B0, 0x05B0, 0x04BB, 0x03ED, 0x05E9, 0xFB49, 0xFB49,
+ 0xFB2C, 0xFB2C, 0xFB2D, 0xFB2D, 0x05C1, 0x05E9, 0xFB2A, 0xFB2A,
+ 0xFB2B, 0xFB2B, 0x0282, 0x03C3, 0x03C2, 0x03C2, 0x03F2, 0x3057,
+ 0x30B7, 0xFF7C, 0x05BD, 0x05BD, 0x223C, 0x05C2, 0x3274, 0x3214,
+ 0x317E, 0x3266, 0x317A, 0x3145, 0x317B, 0x3206, 0x317D, 0x317C,
+ 0x0036, 0x0666, 0x09EC, 0x2465, 0x278F, 0x096C, 0x0AEC, 0x0A6C,
+ 0x0666, 0x3026, 0x3225, 0x2086, 0xFF16, 0xF736, 0x2479, 0x248D,
+ 0x06F6, 0x2175, 0x2076, 0x246F, 0x09F9, 0x2483, 0x2497, 0x0E56,
+ 0x002F, 0xFF0F, 0x017F, 0x1E9B, 0x263A, 0xFF53, 0x05C3, 0x00AD,
+ 0x044C, 0x305D, 0x30BD, 0xFF7F, 0x0338, 0x0337, 0x0E29, 0x0E28,
+ 0x0E0B, 0x0E2A, 0x0020, 0x0020, 0x2660, 0x2660, 0x2664, 0x24AE,
+ 0x033B, 0x33C4, 0x339D, 0x25A9, 0x25A4, 0x338F, 0x339E, 0x33CE,
+ 0x33D1, 0x33D2, 0x338E, 0x33D5, 0x339C, 0x33A1, 0x25A6, 0x25A7,
+ 0x25A8, 0x25A5, 0x25A3, 0x33DB, 0x09B7, 0x0937, 0x0AB7, 0x3149,
+ 0x3185, 0x3180, 0x3132, 0x3165, 0x3143, 0x3146, 0x3138, 0xF6F2,
+ 0x00A3, 0xFFE1, 0x0336, 0x0335, 0x2282, 0x228A, 0x2286, 0x227B,
+ 0x220B, 0x3059, 0x30B9, 0xFF7D, 0x0652, 0x2211, 0x263C, 0x2283,
+ 0x228B, 0x2287, 0x33DC, 0x337C, 0x0074, 0x09A4, 0x22A4, 0x22A3,
+ 0x0924, 0x0AA4, 0x0A24, 0x0637, 0xFEC2, 0xFEC3, 0x305F, 0xFEC4,
+ 0x337D, 0x30BF, 0xFF80, 0x0640, 0x03C4, 0x05EA, 0xFB4A, 0xFB4A,
+ 0xFB4A, 0x05EA, 0x0167, 0x310A, 0x0165, 0x02A8, 0x0163, 0x0686,
+ 0xFB7B, 0xFB7C, 0xFB7D, 0x24E3, 0x1E71, 0x0163, 0x1E97, 0x1E6B,
+ 0x1E6D, 0x0442, 0x04AD, 0x062A, 0xFE96, 0xFCA2, 0xFC0C, 0xFE97,
+ 0x3066, 0xFCA1, 0xFC0B, 0x0629, 0xFE94, 0xFE98, 0xFCA4, 0xFC0E,
+ 0xFC73, 0x30C6, 0xFF83, 0x2121, 0x260E, 0x05A0, 0x05A9, 0x2469,
+ 0x3229, 0x247D, 0x2491, 0x2179, 0x02A7, 0x05D8, 0xFB38, 0xFB38,
+ 0x05D8, 0x04B5, 0x059B, 0x059B, 0x09A5, 0x0925, 0x0AA5, 0x0A25,
+ 0x0630, 0xFEAC, 0xF898, 0xF897, 0x0E4C, 0xF896, 0x062B, 0xFE9A,
+ 0xFE9B, 0xFE9C, 0x2203, 0x2234, 0x03B8, 0x03D1, 0x03D1, 0x3279,
+ 0x3219, 0x326B, 0x314C, 0x320B, 0x246C, 0x2480, 0x2494, 0x0E11,
+ 0x01AD, 0x0E12, 0x00FE, 0x0E17, 0x0E10, 0x0E18, 0x0E16, 0x0482,
+ 0x066C, 0x066C, 0x0033, 0x0663, 0x09E9, 0x2462, 0x278C, 0x0969,
+ 0x215C, 0x0AE9, 0x0A69, 0x0663, 0x3023, 0x3222, 0x2083, 0xFF13,
+ 0x09F6, 0xF733, 0x2476, 0x248A, 0x06F3, 0x00BE, 0xF6DE, 0x2172,
+ 0x00B3, 0x0E53, 0x3394, 0x3061, 0x30C1, 0xFF81, 0x3270, 0x3210,
+ 0x3262, 0x3137, 0x3202, 0x02DC, 0x0330, 0x0303, 0x0303, 0x0360,
+ 0x223C, 0x0334, 0x033E, 0x2297, 0x0596, 0x0596, 0x0A70, 0x0483,
+ 0x057F, 0x1E6F, 0xFF54, 0x0569, 0x3068, 0x30C8, 0xFF84, 0x02E5,
+ 0x02E9, 0x02E6, 0x02E8, 0x02E7, 0x01BD, 0x0185, 0x01A8, 0x0384,
+ 0x3327, 0x0E0F, 0x3014, 0xFE5D, 0xFE39, 0x3015, 0xFE5E, 0xFE3A,
+ 0x0E15, 0x01AB, 0x24AF, 0x2122, 0xF8EA, 0xF6DB, 0x0288, 0x25BC,
+ 0x25C4, 0x25BA, 0x25B2, 0x02A6, 0x05E6, 0xFB46, 0xFB46, 0x05E6,
+ 0x0446, 0x05B5, 0x05B5, 0x05B5, 0x05B5, 0x05B5, 0x05B5, 0x05B5,
+ 0x05B5, 0x045B, 0xF6F3, 0x099F, 0x091F, 0x0A9F, 0x0A1F, 0x0679,
+ 0xFB67, 0xFB68, 0xFB69, 0x09A0, 0x0920, 0x0AA0, 0x0A20, 0x0287,
+ 0x3064, 0x30C4, 0xFF82, 0x3063, 0x30C3, 0xFF6F, 0x246B, 0x247F,
+ 0x2493, 0x217B, 0x2473, 0x5344, 0x2487, 0x249B, 0x0032, 0x0662,
+ 0x09E8, 0x2461, 0x278B, 0x0968, 0x2025, 0x2025, 0xFE30, 0x0AE8,
+ 0x0A68, 0x0662, 0x3022, 0x3221, 0x2082, 0xFF12, 0x09F5, 0xF732,
+ 0x2475, 0x2489, 0x06F2, 0x2171, 0x01BB, 0x00B2, 0x0E52, 0x2154,
+ 0x0075, 0x00FA, 0x0289, 0x0989, 0x3128, 0x016D, 0x01D4, 0x24E4,
+ 0x00FB, 0x1E77, 0x0443, 0x0951, 0x0171, 0x0215, 0x0909, 0x00FC,
+ 0x01D8, 0x1E73, 0x01DA, 0x04F1, 0x01DC, 0x01D6, 0x1EE5, 0x00F9,
+ 0x0A89, 0x0A09, 0x3046, 0x1EE7, 0x01B0, 0x1EE9, 0x1EF1, 0x1EEB,
+ 0x1EED, 0x1EEF, 0x0171, 0x04F3, 0x0217, 0x30A6, 0xFF73, 0x0479,
+ 0x315C, 0x016B, 0x04EF, 0x1E7B, 0x0A41, 0xFF55, 0x005F, 0x2017,
+ 0xFF3F, 0xFE33, 0xFE4F, 0x222A, 0x2200, 0x0173, 0x24B0, 0x2580,
+ 0x05C4, 0x03C5, 0x03CB, 0x03B0, 0x028A, 0x03CD, 0x031D, 0x02D4,
+ 0x0A73, 0x016F, 0x045E, 0x3045, 0x30A5, 0xFF69, 0x04AF, 0x04B1,
+ 0x0169, 0x1E79, 0x1E75, 0x098A, 0x090A, 0x0A8A, 0x0A0A, 0x0A42,
+ 0x09C2, 0x0942, 0x0AC2, 0x09C1, 0x0941, 0x0AC1, 0x0076, 0x0935,
+ 0x0AB5, 0x0A35, 0x30F7, 0x05D5, 0xFB35, 0xFB35, 0xFB35, 0x05D5,
+ 0xFB4B, 0xFB4B, 0x05F0, 0x05F1, 0x24E5, 0x1E7F, 0x0432, 0x06A4,
+ 0xFB6B, 0xFB6C, 0xFB6D, 0x30F9, 0x2640, 0x007C, 0x030D, 0x0329,
+ 0x02CC, 0x02C8, 0x057E, 0x028B, 0x30F8, 0x09CD, 0x094D, 0x0ACD,
+ 0x0983, 0x0903, 0x0A83, 0xFF56, 0x0578, 0x309E, 0x30FE, 0x309B,
+ 0xFF9E, 0x30FA, 0x24B1, 0x1E7D, 0x028C, 0x3094, 0x30F4, 0x0077,
+ 0x1E83, 0x3159, 0x308F, 0x30EF, 0xFF9C, 0x3158, 0x308E, 0x30EE,
+ 0x3357, 0x301C, 0xFE34, 0x0648, 0xFEEE, 0x0624, 0xFE86, 0x33DD,
+ 0x24E6, 0x0175, 0x1E85, 0x1E87, 0x1E89, 0x3091, 0x2118, 0x30F1,
+ 0x315E, 0x315D, 0x1E81, 0x25E6, 0x25CB, 0x25D9, 0x300E, 0xFE43,
+ 0x300F, 0xFE44, 0x25C7, 0x25C8, 0x25BF, 0x25BD, 0x25C3, 0x25C1,
+ 0x3016, 0x3017, 0x25B9, 0x25B7, 0x25AB, 0x263A, 0x25A1, 0x2606,
+ 0x260F, 0x3018, 0x3019, 0x25B5, 0x25B3, 0x3090, 0x30F0, 0x315F,
+ 0xFF57, 0x3092, 0x30F2, 0xFF66, 0x20A9, 0xFFE6, 0x0E27, 0x24B2,
+ 0x1E98, 0x02B7, 0x028D, 0x01BF, 0x0078, 0x033D, 0x3112, 0x24E7,
+ 0x1E8D, 0x1E8B, 0x056D, 0x03BE, 0xFF58, 0x24B3, 0x02E3, 0x0079,
+ 0x334E, 0x09AF, 0x00FD, 0x092F, 0x3152, 0x0AAF, 0x0A2F, 0x3084,
+ 0x30E4, 0xFF94, 0x3151, 0x0E4E, 0x3083, 0x30E3, 0xFF6C, 0x0463,
+ 0x24E8, 0x0177, 0x00FF, 0x1E8F, 0x1EF5, 0x064A, 0x06D2, 0xFBAF,
+ 0xFEF2, 0x0626, 0xFE8A, 0xFE8B, 0xFE8C, 0xFEF3, 0xFEF4, 0xFCDD,
+ 0xFC58, 0xFC94, 0x06D1, 0x3156, 0x00A5, 0xFFE5, 0x3155, 0x3186,
+ 0x05AA, 0x05AA, 0x044B, 0x04F9, 0x3181, 0x3183, 0x3182, 0x059A,
+ 0x1EF3, 0x01B4, 0x1EF7, 0x0575, 0x0457, 0x3162, 0x262F, 0x0582,
+ 0xFF59, 0x05D9, 0xFB39, 0xFB39, 0x05D9, 0x05F2, 0xFB1F, 0x3088,
+ 0x3189, 0x30E8, 0xFF96, 0x315B, 0x3087, 0x30E7, 0xFF6E, 0x03F3,
+ 0x3188, 0x3187, 0x0E22, 0x0E0D, 0x24B4, 0x037A, 0x0345, 0x01A6,
+ 0x1E99, 0x02B8, 0x1EF9, 0x028E, 0x3086, 0x318C, 0x30E6, 0xFF95,
+ 0x3160, 0x046B, 0x046D, 0x0467, 0x0469, 0x3085, 0x30E5, 0xFF6D,
+ 0x318B, 0x318A, 0x09DF, 0x095F, 0x007A, 0x0566, 0x017A, 0x095B,
+ 0x0A5B, 0x0638, 0xFEC6, 0xFEC7, 0x3056, 0xFEC8, 0x0632, 0xFEB0,
+ 0x30B6, 0x0595, 0x0594, 0x0598, 0x05D6, 0xFB36, 0xFB36, 0x05D6,
+ 0x3117, 0x017E, 0x24E9, 0x1E91, 0x0291, 0x017C, 0x017C, 0x1E93,
+ 0x0437, 0x0499, 0x04DF, 0x305C, 0x30BC, 0x0030, 0x0660, 0x09E6,
+ 0x0966, 0x0AE6, 0x0A66, 0x0660, 0x2080, 0xFF10, 0xF730, 0x06F0,
+ 0x2070, 0x0E50, 0xFEFF, 0x200C, 0x200B, 0x03B6, 0x3113, 0x056A,
+ 0x04C2, 0x0436, 0x0497, 0x04DD, 0x3058, 0x30B8, 0x05AE, 0x1E95,
+ 0xFF5A, 0x305E, 0x30BE, 0x24B5, 0x0290, 0x01B6, 0x305A, 0x30BA,
+};
+
+wchar_t ps_glyph_to_unicode(glyph g)
+{
+ if (g == NOGLYPH) return 0xFFFF;
+ return ps_codes_alphabetic[g];
+}
+
+/* ----------------------------------------------------------------------
+ * Data about the standard fonts: available glyphs and font metrics.
+ */
+
+/*
+ * Character set list extracted from the back of the PostScript
+ * Language Reference Manual.
+ *
+ * I'm going to include a bit of shell which creates a file
+ * containing the list of characters, and then several further bits
+ * of shell that process it in different ways.
+ */
+
+/*
+
+tr -s ' \n' '\n' << EOF > stdchars.txt
+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
+AE Aacute Acircumflex Adieresis Agrave Aring Atilde
+Ccedilla
+Eacute Ecircumflex Edieresis Egrave
+Eth
+Iacute Icircumflex Idieresis Igrave
+Lslash
+Ntilde
+OE Oacute Ocircumflex Odieresis Ograve Oslash Otilde
+Scaron
+Thorn
+Uacute Ucircumflex Udieresis Ugrave
+Yacute Ydieresis
+Zcaron
+ae aacute acircumflex adieresis agrave aring atilde
+ccedilla
+eacute ecircumflex edieresis egrave
+eth
+iacute icircumflex idieresis igrave
+lslash
+ntilde
+oe oacute ocircumflex odieresis ograve oslash otilde
+scaron
+thorn
+uacute ucircumflex udieresis ugrave
+yacute ydieresis
+zcaron
+acute ampersand asciicircum asciitilde asterisk at backslash bar
+braceleft braceright bracketleft bracketright breve brokenbar bullet
+caron cedilla cent circumflex colon comma copyright currency dagger
+daggerdbl degree dieresis divide dollar dotaccent dotlessi eight
+ellipsis emdash endash equal exclam exclamdown fi five fl florin
+four fraction germandbls grave greater guillemotleft guillemotright
+guilsinglleft guilsinglright hungarumlaut hyphen less logicalnot
+macron minus mu multiply nine numbersign ogonek one onehalf onequarter
+onesuperior ordfeminine ordmasculine paragraph parenleft parenright
+percent period periodcentered perthousand plus plusminus question
+questiondown quotedbl quotedblbase quotedblleft quotedblright quoteleft
+quoteright quotesinglbase quotesingle registered ring section semicolon
+seven six slash space sterling three threequarters threesuperior tilde
+trademark two twosuperior underscore yen zero
+EOF
+
+ */
+
+/*
+ * A simple string array giving the glyph list.
+ */
+
+/*
+
+perl -ne 'chomp; print "\"$_\", "; END { print "NULL" }' stdchars.txt | \
+ fold -s -w68 | sed 's/^/ /'
+
+*/
+
+const char *const ps_std_glyphs[] = {
+ "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",
+ "AE", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring",
+ "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis",
+ "Egrave", "Eth", "Iacute", "Icircumflex", "Idieresis", "Igrave",
+ "Lslash", "Ntilde", "OE", "Oacute", "Ocircumflex", "Odieresis",
+ "Ograve", "Oslash", "Otilde", "Scaron", "Thorn", "Uacute",
+ "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis",
+ "Zcaron", "ae", "aacute", "acircumflex", "adieresis", "agrave",
+ "aring", "atilde", "ccedilla", "eacute", "ecircumflex",
+ "edieresis", "egrave", "eth", "iacute", "icircumflex", "idieresis",
+ "igrave", "lslash", "ntilde", "oe", "oacute", "ocircumflex",
+ "odieresis", "ograve", "oslash", "otilde", "scaron", "thorn",
+ "uacute", "ucircumflex", "udieresis", "ugrave", "yacute",
+ "ydieresis", "zcaron", "acute", "ampersand", "asciicircum",
+ "asciitilde", "asterisk", "at", "backslash", "bar", "braceleft",
+ "braceright", "bracketleft", "bracketright", "breve", "brokenbar",
+ "bullet", "caron", "cedilla", "cent", "circumflex", "colon",
+ "comma", "copyright", "currency", "dagger", "daggerdbl", "degree",
+ "dieresis", "divide", "dollar", "dotaccent", "dotlessi", "eight",
+ "ellipsis", "emdash", "endash", "equal", "exclam", "exclamdown",
+ "fi", "five", "fl", "florin", "four", "fraction", "germandbls",
+ "grave", "greater", "guillemotleft", "guillemotright",
+ "guilsinglleft", "guilsinglright", "hungarumlaut", "hyphen",
+ "less", "logicalnot", "macron", "minus", "mu", "multiply", "nine",
+ "numbersign", "ogonek", "one", "onehalf", "onequarter",
+ "onesuperior", "ordfeminine", "ordmasculine", "paragraph",
+ "parenleft", "parenright", "percent", "period", "periodcentered",
+ "perthousand", "plus", "plusminus", "question", "questiondown",
+ "quotedbl", "quotedblbase", "quotedblleft", "quotedblright",
+ "quoteleft", "quoteright", "quotesinglbase", "quotesingle",
+ "registered", "ring", "section", "semicolon", "seven", "six",
+ "slash", "space", "sterling", "three", "threequarters",
+ "threesuperior", "tilde", "trademark", "two", "twosuperior",
+ "underscore", "yen", "zero", NULL
+};
+
+/*
+ * Character width information from the standard PS fonts.
+ * Units are UNITS_PER_PT defined in paper.h.
+ * Extracted from the AFM files in
+ * <http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.tar>
+ * by the following script:
+
+fonts="Times-Roman Times-Italic Times-Bold Times-BoldItalic \
+ Helvetica Helvetica-Oblique Helvetica-Bold Helvetica-BoldOblique \
+ Courier Courier-Oblique Courier-Bold Courier-BoldOblique"
+
+for i in $fonts; do
+ printf 'static const kern_pair %s_kerns[] = {\n' $(echo $i | tr 'A-Z\-' a-z_)
+ perl -e '
+open S, "stdchars.txt" or die;
+chomp(@s = <S>);
+open G, "glyphnames.txt" or die;
+chomp(@g = <G>); %g = map(($_, $i++), @g); %g = map(($_, $g{$_}), @s);
+open M, "$ARGV[0].afm" or die;
+while (<M>) { /KPX (\S+) (\S+) (\S+)/ and exists $g{$1} and exists $g{$2} and
+ print "{$g{$1},$g{$2},$3}, "; } print "\n"' $i |\
+ fold -sw 68 | sed 's/^/ /'
+ printf ' {NOGLYPH,NOGLYPH,0}\n};\n'
+ printf 'static const ligature %s_ligs[] = {\n' $(echo $i | tr 'A-Z\-' a-z_)
+ perl -e '
+open S, "stdchars.txt" or die;
+chomp(@s = <S>);
+open G, "glyphnames.txt" or die;
+chomp(@g = <G>); %g = map(($_, $i++), @g); %g = map(($_, $g{$_}), @s);
+open M, "$ARGV[0].afm" or die;
+while (<M>) { / N (\S+) / and $l = $1;
+ while (/ L (\S+) (\S+) /g) { exists $g{$l} and exists $g{$1} and
+ exists $g{$2} and print "{$g{$l},$g{$1},$g{$2}}, "; } } print "\n"' $i |\
+ fold -sw 68 | sed 's/^/ /'
+ printf ' {NOGLYPH,NOGLYPH,NOGLYPH}\n};\n'
+done
+
+cat <<DECL
+
+static const struct ps_std_font_data {
+ char const *name;
+ kern_pair const *kerns;
+ ligature const *ligs;
+ int widths[lenof(ps_std_glyphs)-1];
+} ps_std_fonts[] = {
+DECL
+for i in $fonts; do
+ printf ' { "%s",\n\t%s_kerns, %s_ligs, {\n' $i \
+ $(echo $i | tr 'A-Z\-' a-z_) $(echo $i | tr 'A-Z\-' a-z_)
+ perl -e '
+open M, "$ARGV[0].afm" or die;
+while (<M>) { /WX (\d+) ; N (\S+)/ and $m{$2} = $1; }
+open G, "stdchars.txt" or die;
+while (<G>) { chomp; print "$m{$_}, " }; print "\n"' $i |\
+ fold -sw 68 | sed 's/^/ /'
+ printf ' }},\n'
+done
+printf '};\n'
+
+ * The AFM files have the following copyright and licence:
+ *
+ * Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1993, 1997
+ * Adobe Systems Incorporated. All Rights Reserved.
+ *
+ * This file and the 14 PostScript(R) AFM files it accompanies may be
+ * used, copied, and distributed for any purpose and without charge,
+ * with or without modification, provided that all copyright notices
+ * are retained; that the AFM files are not distributed without this
+ * file; that all modifications to this file or any of the AFM files
+ * are prominently noted in the modified file(s); and that this
+ * paragraph is not modified. Adobe Systems has no responsibility or
+ * obligation to support the use of the AFM files.
+ */
+
+static const kern_pair times_roman_kerns[] = {
+ {0,64,-40}, {0,70,-40}, {0,203,-40}, {0,393,-55}, {0,396,-55},
+ {0,404,-55}, {0,414,-55}, {0,419,-55}, {0,449,-55}, {0,455,-55},
+ {0,474,-55}, {0,570,-111}, {0,603,-55}, {0,604,-55}, {0,609,-55},
+ {0,615,-55}, {0,624,-55}, {0,658,-135}, {0,668,-90}, {0,686,-105},
+ {0,687,-105}, {0,692,-105}, {0,3143,-111}, {0,3902,-74},
+ {0,3951,-92}, {0,4031,-92}, {0,4034,-92}, {0,4050,-92}, {5,64,-40},
+ {5,70,-40}, {5,203,-40}, {5,393,-55}, {5,396,-55}, {5,404,-55},
+ {5,414,-55}, {5,419,-55}, {5,449,-55}, {5,455,-55}, {5,474,-55},
+ {5,570,-111}, {5,603,-55}, {5,604,-55}, {5,609,-55}, {5,615,-55},
+ {5,624,-55}, {5,658,-135}, {5,668,-90}, {5,686,-105}, {5,687,-105},
+ {5,692,-105}, {5,3143,-111}, {5,3902,-74}, {5,3951,-92},
+ {5,4031,-92}, {5,4034,-92}, {5,4050,-92}, {16,64,-40}, {16,70,-40},
+ {16,203,-40}, {16,393,-55}, {16,396,-55}, {16,404,-55},
+ {16,414,-55}, {16,419,-55}, {16,449,-55}, {16,455,-55},
+ {16,474,-55}, {16,570,-111}, {16,603,-55}, {16,604,-55},
+ {16,609,-55}, {16,615,-55}, {16,624,-55}, {16,658,-135},
+ {16,668,-90}, {16,686,-105}, {16,687,-105}, {16,692,-105},
+ {16,3143,-111}, {16,3902,-74}, {16,3951,-92}, {16,4031,-92},
+ {16,4034,-92}, {16,4050,-92}, {27,64,-40}, {27,70,-40},
+ {27,203,-40}, {27,393,-55}, {27,396,-55}, {27,404,-55},
+ {27,414,-55}, {27,419,-55}, {27,449,-55}, {27,455,-55},
+ {27,474,-55}, {27,570,-111}, {27,603,-55}, {27,604,-55},
+ {27,609,-55}, {27,615,-55}, {27,624,-55}, {27,658,-135},
+ {27,668,-90}, {27,686,-105}, {27,687,-105}, {27,692,-105},
+ {27,3143,-111}, {27,3902,-74}, {27,3951,-92}, {27,4031,-92},
+ {27,4034,-92}, {27,4050,-92}, {33,64,-40}, {33,70,-40},
+ {33,203,-40}, {33,393,-55}, {33,396,-55}, {33,404,-55},
+ {33,414,-55}, {33,419,-55}, {33,449,-55}, {33,455,-55},
+ {33,474,-55}, {33,570,-111}, {33,603,-55}, {33,604,-55},
+ {33,609,-55}, {33,615,-55}, {33,624,-55}, {33,658,-135},
+ {33,668,-90}, {33,686,-105}, {33,687,-105}, {33,692,-105},
+ {33,3143,-111}, {33,3902,-74}, {33,3951,-92}, {33,4031,-92},
+ {33,4034,-92}, {33,4050,-92}, {43,64,-40}, {43,70,-40},
+ {43,203,-40}, {43,393,-55}, {43,396,-55}, {43,404,-55},
+ {43,414,-55}, {43,419,-55}, {43,449,-55}, {43,455,-55},
+ {43,474,-55}, {43,570,-111}, {43,603,-55}, {43,604,-55},
+ {43,609,-55}, {43,615,-55}, {43,624,-55}, {43,658,-135},
+ {43,668,-90}, {43,686,-105}, {43,687,-105}, {43,692,-105},
+ {43,3143,-111}, {43,3902,-74}, {43,3951,-92}, {43,4031,-92},
+ {43,4034,-92}, {43,4050,-92}, {48,64,-40}, {48,70,-40},
+ {48,203,-40}, {48,393,-55}, {48,396,-55}, {48,404,-55},
+ {48,414,-55}, {48,419,-55}, {48,449,-55}, {48,455,-55},
+ {48,474,-55}, {48,570,-111}, {48,603,-55}, {48,604,-55},
+ {48,609,-55}, {48,615,-55}, {48,624,-55}, {48,658,-135},
+ {48,668,-90}, {48,686,-105}, {48,687,-105}, {48,692,-105},
+ {48,3143,-111}, {48,3902,-74}, {48,3951,-92}, {48,4031,-92},
+ {48,4034,-92}, {48,4050,-92}, {51,0,-35}, {51,5,-35}, {51,16,-35},
+ {51,27,-35}, {51,33,-35}, {51,43,-35}, {51,48,-35}, {51,603,-10},
+ {51,604,-10}, {51,609,-10}, {51,615,-10}, {51,624,-10}, {93,0,-40},
+ {93,5,-40}, {93,16,-40}, {93,27,-40}, {93,33,-40}, {93,43,-40},
+ {93,48,-40}, {93,658,-40}, {93,668,-30}, {93,686,-55},
+ {93,687,-55}, {93,692,-55}, {192,0,-74}, {192,5,-74}, {192,16,-74},
+ {192,27,-74}, {192,33,-74}, {192,43,-74}, {192,48,-74},
+ {192,734,-15}, {192,736,-15}, {192,758,-15}, {192,775,-15},
+ {192,1030,-15}, {192,1111,-15}, {192,1173,-15}, {192,1409,-80},
+ {192,2794,-15}, {192,2795,-15}, {192,2809,-15}, {192,2819,-15},
+ {192,2826,-15}, {192,2899,-15}, {192,2907,-15}, {192,2995,-80},
+ {301,0,-60}, {301,5,-60}, {301,16,-60}, {301,27,-60}, {301,33,-60},
+ {301,43,-60}, {301,48,-60}, {309,393,-30}, {309,396,-30},
+ {309,404,-30}, {309,414,-30}, {309,419,-30}, {309,449,-30},
+ {309,455,-30}, {309,1630,-25}, {309,1631,-25}, {309,1645,-25},
+ {309,1655,-25}, {309,1662,-25}, {309,2794,-35}, {309,2795,-35},
+ {309,2809,-35}, {309,2819,-35}, {309,2826,-35}, {309,2899,-35},
+ {309,2907,-35}, {309,3816,-15}, {309,3817,-15}, {309,3824,-15},
+ {309,3831,-15}, {309,3839,-15}, {309,4031,-25}, {309,4034,-25},
+ {309,4050,-25}, {337,570,-92}, {337,658,-100}, {337,668,-74},
+ {337,686,-100}, {337,687,-100}, {337,692,-100}, {337,3143,-92},
+ {337,4031,-55}, {337,4034,-55}, {337,4050,-55}, {356,570,-92},
+ {356,658,-100}, {356,668,-74}, {356,686,-100}, {356,687,-100},
+ {356,692,-100}, {356,3143,-92}, {356,4031,-55}, {356,4034,-55},
+ {356,4050,-55}, {372,0,-35}, {372,5,-35}, {372,16,-35},
+ {372,27,-35}, {372,33,-35}, {372,43,-35}, {372,48,-35},
+ {390,0,-35}, {390,5,-35}, {390,16,-35}, {390,27,-35}, {390,33,-35},
+ {390,43,-35}, {390,48,-35}, {393,0,-35}, {393,5,-35}, {393,16,-35},
+ {393,27,-35}, {393,33,-35}, {393,43,-35}, {393,48,-35},
+ {393,570,-40}, {393,658,-50}, {393,668,-35}, {393,678,-40},
+ {393,686,-50}, {393,687,-50}, {393,692,-50}, {396,0,-35},
+ {396,5,-35}, {396,16,-35}, {396,27,-35}, {396,33,-35},
+ {396,43,-35}, {396,48,-35}, {396,570,-40}, {396,658,-50},
+ {396,668,-35}, {396,678,-40}, {396,686,-50}, {396,687,-50},
+ {396,692,-50}, {404,0,-35}, {404,5,-35}, {404,16,-35},
+ {404,27,-35}, {404,33,-35}, {404,43,-35}, {404,48,-35},
+ {404,570,-40}, {404,658,-50}, {404,668,-35}, {404,678,-40},
+ {404,686,-50}, {404,687,-50}, {404,692,-50}, {414,0,-35},
+ {414,5,-35}, {414,16,-35}, {414,27,-35}, {414,33,-35},
+ {414,43,-35}, {414,48,-35}, {414,570,-40}, {414,658,-50},
+ {414,668,-35}, {414,678,-40}, {414,686,-50}, {414,687,-50},
+ {414,692,-50}, {419,0,-35}, {419,5,-35}, {419,16,-35},
+ {419,27,-35}, {419,33,-35}, {419,43,-35}, {419,48,-35},
+ {419,570,-40}, {419,658,-50}, {419,668,-35}, {419,678,-40},
+ {419,686,-50}, {419,687,-50}, {419,692,-50}, {449,0,-35},
+ {449,5,-35}, {449,16,-35}, {449,27,-35}, {449,33,-35},
+ {449,43,-35}, {449,48,-35}, {449,570,-40}, {449,658,-50},
+ {449,668,-35}, {449,678,-40}, {449,686,-50}, {449,687,-50},
+ {449,692,-50}, {455,0,-35}, {455,5,-35}, {455,16,-35},
+ {455,27,-35}, {455,33,-35}, {455,43,-35}, {455,48,-35},
+ {455,570,-40}, {455,658,-50}, {455,668,-35}, {455,678,-40},
+ {455,686,-50}, {455,687,-50}, {455,692,-50}, {459,0,-92},
+ {459,5,-92}, {459,16,-92}, {459,27,-92}, {459,33,-92},
+ {459,43,-92}, {459,48,-92}, {459,734,-15}, {459,736,-15},
+ {459,758,-15}, {459,775,-15}, {459,1030,-15}, {459,1111,-15},
+ {459,1173,-15}, {459,1409,-111}, {459,2995,-111}, {474,603,-10},
+ {474,604,-10}, {474,609,-10}, {474,615,-10}, {474,624,-10},
+ {478,393,-40}, {478,396,-40}, {478,404,-40}, {478,414,-40},
+ {478,419,-40}, {478,449,-40}, {478,455,-40}, {478,570,-60},
+ {478,603,-40}, {478,604,-40}, {478,609,-40}, {478,615,-40},
+ {478,624,-40}, {478,658,-80}, {478,668,-55}, {478,686,-65},
+ {478,687,-65}, {478,692,-65}, {570,0,-93}, {570,5,-93},
+ {570,16,-93}, {570,27,-93}, {570,33,-93}, {570,43,-93},
+ {570,48,-93}, {570,393,-18}, {570,396,-18}, {570,404,-18},
+ {570,414,-18}, {570,419,-18}, {570,449,-18}, {570,455,-18},
+ {570,734,-80}, {570,736,-80}, {570,758,-80}, {570,775,-40},
+ {570,1030,-40}, {570,1111,-80}, {570,1173,-40}, {570,1402,-50},
+ {570,1409,-74}, {570,1630,-70}, {570,1631,-70}, {570,1645,-70},
+ {570,1655,-30}, {570,1662,-70}, {570,2126,-92}, {570,2132,-35},
+ {570,2133,-35}, {570,2794,-80}, {570,2795,-80}, {570,2809,-80},
+ {570,2819,-80}, {570,2826,-80}, {570,2899,-80}, {570,2907,-80},
+ {570,2995,-74}, {570,3148,-35}, {570,3351,-55}, {570,3816,-45},
+ {570,3817,-45}, {570,3824,-45}, {570,3831,-45}, {570,3839,-45},
+ {570,3951,-80}, {570,4031,-80}, {570,4034,-80}, {570,4050,-80},
+ {603,0,-40}, {603,5,-40}, {603,16,-40}, {603,27,-40}, {603,33,-40},
+ {603,43,-40}, {603,48,-40}, {604,0,-40}, {604,5,-40}, {604,16,-40},
+ {604,27,-40}, {604,33,-40}, {604,43,-40}, {604,48,-40},
+ {609,0,-40}, {609,5,-40}, {609,16,-40}, {609,27,-40}, {609,33,-40},
+ {609,43,-40}, {609,48,-40}, {615,0,-40}, {615,5,-40}, {615,16,-40},
+ {615,27,-40}, {615,33,-40}, {615,43,-40}, {615,48,-40},
+ {624,0,-40}, {624,5,-40}, {624,16,-40}, {624,27,-40}, {624,33,-40},
+ {624,43,-40}, {624,48,-40}, {658,0,-135}, {658,5,-135},
+ {658,16,-135}, {658,27,-135}, {658,33,-135}, {658,43,-135},
+ {658,48,-135}, {658,203,-15}, {658,393,-40}, {658,396,-40},
+ {658,404,-40}, {658,414,-40}, {658,419,-40}, {658,449,-40},
+ {658,455,-40}, {658,734,-111}, {658,736,-111}, {658,758,-71},
+ {658,775,-71}, {658,1030,-71}, {658,1111,-111}, {658,1173,-71},
+ {658,1402,-74}, {658,1409,-129}, {658,1630,-111}, {658,1631,-111},
+ {658,1645,-71}, {658,1655,-71}, {658,1662,-71}, {658,2126,-100},
+ {658,2132,-60}, {658,2133,-60}, {658,2140,-20}, {658,2196,-20},
+ {658,2207,-20}, {658,2794,-129}, {658,2795,-129}, {658,2809,-129},
+ {658,2819,-89}, {658,2826,-89}, {658,2899,-129}, {658,2907,-89},
+ {658,2995,-129}, {658,3351,-74}, {658,3816,-75}, {658,3817,-75},
+ {658,3824,-75}, {658,3831,-75}, {658,3839,-75}, {668,0,-120},
+ {668,5,-120}, {668,16,-120}, {668,27,-120}, {668,33,-120},
+ {668,43,-120}, {668,48,-120}, {668,393,-10}, {668,396,-10},
+ {668,404,-10}, {668,414,-10}, {668,419,-10}, {668,449,-10},
+ {668,455,-10}, {668,734,-80}, {668,736,-80}, {668,758,-80},
+ {668,775,-80}, {668,1030,-80}, {668,1111,-80}, {668,1173,-80},
+ {668,1402,-37}, {668,1409,-92}, {668,1630,-80}, {668,1631,-80},
+ {668,1645,-80}, {668,1655,-40}, {668,1662,-40}, {668,2126,-65},
+ {668,2132,-40}, {668,2133,-40}, {668,2794,-80}, {668,2795,-80},
+ {668,2809,-80}, {668,2819,-80}, {668,2826,-80}, {668,2899,-80},
+ {668,2907,-80}, {668,2995,-92}, {668,3351,-37}, {668,3816,-50},
+ {668,3817,-50}, {668,3824,-50}, {668,3831,-50}, {668,3839,-50},
+ {668,4031,-73}, {668,4034,-73}, {668,4050,-73}, {686,0,-120},
+ {686,5,-120}, {686,16,-120}, {686,27,-120}, {686,33,-120},
+ {686,43,-120}, {686,48,-120}, {686,393,-30}, {686,396,-30},
+ {686,404,-30}, {686,414,-30}, {686,419,-30}, {686,449,-30},
+ {686,455,-30}, {686,734,-100}, {686,736,-100}, {686,758,-100},
+ {686,775,-60}, {686,1030,-60}, {686,1111,-100}, {686,1173,-60},
+ {686,1402,-92}, {686,1409,-129}, {686,1630,-100}, {686,1631,-100},
+ {686,1645,-100}, {686,1655,-60}, {686,1662,-60}, {686,2126,-111},
+ {686,2132,-55}, {686,2133,-55}, {686,2794,-110}, {686,2795,-110},
+ {686,2809,-110}, {686,2819,-70}, {686,2826,-70}, {686,2899,-110},
+ {686,2907,-70}, {686,2995,-129}, {686,3351,-92}, {686,3816,-111},
+ {686,3817,-111}, {686,3824,-111}, {686,3831,-71}, {686,3839,-71},
+ {687,0,-120}, {687,5,-120}, {687,16,-120}, {687,27,-120},
+ {687,33,-120}, {687,43,-120}, {687,48,-120}, {687,393,-30},
+ {687,396,-30}, {687,404,-30}, {687,414,-30}, {687,419,-30},
+ {687,449,-30}, {687,455,-30}, {687,734,-100}, {687,736,-100},
+ {687,758,-100}, {687,775,-60}, {687,1030,-60}, {687,1111,-100},
+ {687,1173,-60}, {687,1402,-92}, {687,1409,-129}, {687,1630,-100},
+ {687,1631,-100}, {687,1645,-100}, {687,1655,-60}, {687,1662,-60},
+ {687,2126,-111}, {687,2132,-55}, {687,2133,-55}, {687,2794,-110},
+ {687,2795,-110}, {687,2809,-110}, {687,2819,-70}, {687,2826,-70},
+ {687,2899,-110}, {687,2907,-70}, {687,2995,-129}, {687,3351,-92},
+ {687,3816,-111}, {687,3817,-111}, {687,3824,-111}, {687,3831,-71},
+ {687,3839,-71}, {692,0,-120}, {692,5,-120}, {692,16,-120},
+ {692,27,-120}, {692,33,-120}, {692,43,-120}, {692,48,-120},
+ {692,393,-30}, {692,396,-30}, {692,404,-30}, {692,414,-30},
+ {692,419,-30}, {692,449,-30}, {692,455,-30}, {692,734,-100},
+ {692,736,-100}, {692,758,-100}, {692,775,-60}, {692,1030,-60},
+ {692,1111,-100}, {692,1173,-100}, {692,1402,-92}, {692,1409,-129},
+ {692,1630,-100}, {692,1631,-100}, {692,1645,-100}, {692,1655,-60},
+ {692,1662,-60}, {692,2126,-111}, {692,2132,-55}, {692,2133,-55},
+ {692,2794,-110}, {692,2795,-110}, {692,2809,-110}, {692,2819,-70},
+ {692,2826,-70}, {692,2899,-110}, {692,2907,-70}, {692,2995,-129},
+ {692,3351,-92}, {692,3816,-111}, {692,3817,-111}, {692,3824,-111},
+ {692,3831,-71}, {692,3839,-71}, {734,3902,-20}, {734,3951,-15},
+ {736,3902,-20}, {736,3951,-15}, {758,3902,-20}, {758,3951,-15},
+ {775,3902,-20}, {775,3951,-15}, {1030,3902,-20}, {1030,3951,-15},
+ {1111,3902,-20}, {1111,3951,-15}, {1173,3902,-20}, {1173,3951,-15},
+ {1192,2995,-40}, {1192,3816,-20}, {1192,3817,-20}, {1192,3824,-20},
+ {1192,3831,-20}, {1192,3839,-20}, {1192,3902,-15}, {1312,4031,-15},
+ {1312,4034,-15}, {1312,4050,-15}, {1332,4031,-15}, {1332,4034,-15},
+ {1332,4050,-15}, {1409,3139,-70}, {1409,3143,-70}, {1630,1886,-15},
+ {1630,3902,-25}, {1630,3951,-25}, {1630,4020,-15}, {1630,4031,-15},
+ {1630,4034,-15}, {1630,4050,-15}, {1631,1886,-15}, {1631,3902,-25},
+ {1631,3951,-25}, {1631,4020,-15}, {1631,4031,-15}, {1631,4034,-15},
+ {1631,4050,-15}, {1645,1886,-15}, {1645,3902,-25}, {1645,3951,-25},
+ {1645,4020,-15}, {1645,4031,-15}, {1645,4034,-15}, {1645,4050,-15},
+ {1655,1886,-15}, {1655,3902,-25}, {1655,3951,-25}, {1655,4020,-15},
+ {1655,4031,-15}, {1655,4034,-15}, {1655,4050,-15}, {1662,1886,-15},
+ {1662,3902,-25}, {1662,3951,-25}, {1662,4020,-15}, {1662,4031,-15},
+ {1662,4034,-15}, {1662,4050,-15}, {1787,734,-10}, {1787,736,-10},
+ {1787,758,-10}, {1787,775,-10}, {1787,1030,-10}, {1787,1111,-10},
+ {1787,1173,-10}, {1787,1608,-50}, {1787,1787,-25}, {1787,2132,-20},
+ {1787,2133,-20}, {1787,3143,55}, {1886,734,-5}, {1886,736,-5},
+ {1886,758,-5}, {1886,775,-5}, {1886,1030,-5}, {1886,1111,-5},
+ {1886,1173,-5}, {1988,4031,-5}, {1988,4034,-5}, {1988,4050,-5},
+ {2132,3902,-25}, {2133,3902,-25}, {2140,3902,-25}, {2196,3902,-25},
+ {2207,3902,-25}, {2302,1630,-10}, {2302,1631,-10}, {2302,1645,-10},
+ {2302,1655,-10}, {2302,1662,-10}, {2302,2794,-10}, {2302,2795,-10},
+ {2302,2809,-10}, {2302,2819,-10}, {2302,2826,-10}, {2302,2899,-10},
+ {2302,2907,-10}, {2302,4031,-15}, {2302,4034,-15}, {2302,4050,-15},
+ {2416,3951,-10}, {2501,3951,-10}, {2648,3902,-40}, {2648,4031,-15},
+ {2648,4034,-15}, {2648,4050,-15}, {2769,3902,-40}, {2769,4031,-15},
+ {2769,4034,-15}, {2769,4050,-15}, {2794,3902,-15}, {2794,3951,-25},
+ {2794,4031,-10}, {2794,4034,-10}, {2794,4050,-10}, {2795,3902,-15},
+ {2795,3951,-25}, {2795,4031,-10}, {2795,4034,-10}, {2795,4050,-10},
+ {2809,3902,-15}, {2809,3951,-25}, {2809,4031,-10}, {2809,4034,-10},
+ {2809,4050,-10}, {2819,3902,-15}, {2819,3951,-25}, {2819,4031,-10},
+ {2819,4034,-10}, {2819,4050,-10}, {2826,3902,-15}, {2826,3951,-25},
+ {2826,4031,-10}, {2826,4034,-10}, {2826,4050,-10}, {2899,3902,-15},
+ {2899,3951,-25}, {2899,4031,-10}, {2899,4034,-10}, {2899,4050,-10},
+ {2907,3902,-15}, {2907,3951,-25}, {2907,4031,-10}, {2907,4034,-10},
+ {2907,4050,-10}, {2921,4031,-10}, {2921,4034,-10}, {2921,4050,-10},
+ {2995,3139,-70}, {2995,3143,-70}, {3135,0,-80}, {3135,5,-80},
+ {3135,16,-80}, {3135,27,-80}, {3135,33,-80}, {3135,43,-80},
+ {3135,48,-80}, {3140,0,-80}, {3140,5,-80}, {3140,16,-80},
+ {3140,27,-80}, {3140,33,-80}, {3140,43,-80}, {3140,48,-80},
+ {3140,3140,-74}, {3143,1481,-50}, {3143,2416,-10}, {3143,2501,-10},
+ {3143,3143,-74}, {3143,3148,-50}, {3143,3279,-55}, {3143,3317,-55},
+ {3143,3498,-74}, {3143,3556,-18}, {3143,3902,-50}, {3148,1409,-40},
+ {3148,1886,-18}, {3148,2126,-20}, {3148,2995,-55}, {3498,0,-55},
+ {3498,5,-55}, {3498,16,-55}, {3498,27,-55}, {3498,33,-55},
+ {3498,43,-55}, {3498,48,-55}, {3498,570,-18}, {3498,658,-50},
+ {3498,668,-30}, {3498,686,-90}, {3498,687,-90}, {3498,692,-90},
+ {3902,734,-25}, {3902,736,-25}, {3902,758,-25}, {3902,775,-25},
+ {3902,1030,-25}, {3902,1111,-25}, {3902,1173,-25}, {3902,1409,-65},
+ {3902,1630,-15}, {3902,1631,-15}, {3902,1645,-15}, {3902,1655,-15},
+ {3902,1662,-15}, {3902,2794,-20}, {3902,2795,-20}, {3902,2809,-20},
+ {3902,2819,-20}, {3902,2826,-20}, {3902,2899,-20}, {3902,2907,-20},
+ {3902,2995,-65}, {3951,734,-10}, {3951,736,-10}, {3951,758,-10},
+ {3951,775,-10}, {3951,1030,-10}, {3951,1111,-10}, {3951,1173,-10},
+ {3951,1409,-65}, {3951,2794,-10}, {3951,2795,-10}, {3951,2809,-10},
+ {3951,2819,-10}, {3951,2826,-10}, {3951,2899,-10}, {3951,2907,-10},
+ {3951,2995,-65}, {4020,1630,-15}, {4020,1631,-15}, {4020,1645,-15},
+ {4020,1655,-15}, {4020,1662,-15}, {4031,1409,-65}, {4031,2995,-65},
+ {4034,1409,-65}, {4034,2995,-65}, {4050,1409,-65}, {4050,2995,-65},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature times_roman_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair times_italic_kerns[] = {
+ {0,64,-30}, {0,70,-30}, {0,203,-35}, {0,393,-40}, {0,396,-40},
+ {0,404,-40}, {0,414,-40}, {0,419,-40}, {0,449,-40}, {0,455,-40},
+ {0,474,-40}, {0,570,-37}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-105}, {0,668,-95}, {0,686,-55},
+ {0,687,-55}, {0,692,-55}, {0,3143,-37}, {0,3816,-20}, {0,3817,-20},
+ {0,3824,-20}, {0,3831,-20}, {0,3839,-20}, {0,3902,-55},
+ {0,3951,-55}, {0,4031,-55}, {0,4034,-55}, {0,4050,-55}, {5,64,-30},
+ {5,70,-30}, {5,203,-35}, {5,393,-40}, {5,396,-40}, {5,404,-40},
+ {5,414,-40}, {5,419,-40}, {5,449,-40}, {5,455,-40}, {5,474,-40},
+ {5,570,-37}, {5,603,-50}, {5,604,-50}, {5,609,-50}, {5,615,-50},
+ {5,624,-50}, {5,658,-105}, {5,668,-95}, {5,686,-55}, {5,687,-55},
+ {5,692,-55}, {5,3143,-37}, {5,3816,-20}, {5,3817,-20},
+ {5,3824,-20}, {5,3831,-20}, {5,3839,-20}, {5,3902,-55},
+ {5,3951,-55}, {5,4031,-55}, {5,4034,-55}, {5,4050,-55},
+ {16,64,-30}, {16,70,-30}, {16,203,-35}, {16,393,-40}, {16,396,-40},
+ {16,404,-40}, {16,414,-40}, {16,419,-40}, {16,449,-40},
+ {16,455,-40}, {16,474,-40}, {16,570,-37}, {16,603,-50},
+ {16,604,-50}, {16,609,-50}, {16,615,-50}, {16,624,-50},
+ {16,658,-105}, {16,668,-95}, {16,686,-55}, {16,687,-55},
+ {16,692,-55}, {16,3143,-37}, {16,3816,-20}, {16,3817,-20},
+ {16,3824,-20}, {16,3831,-20}, {16,3839,-20}, {16,3902,-55},
+ {16,3951,-55}, {16,4031,-55}, {16,4034,-55}, {16,4050,-55},
+ {27,64,-30}, {27,70,-30}, {27,203,-35}, {27,393,-40}, {27,396,-40},
+ {27,404,-40}, {27,414,-40}, {27,419,-40}, {27,449,-40},
+ {27,455,-40}, {27,474,-40}, {27,570,-37}, {27,603,-50},
+ {27,604,-50}, {27,609,-50}, {27,615,-50}, {27,624,-50},
+ {27,658,-105}, {27,668,-95}, {27,686,-55}, {27,687,-55},
+ {27,692,-55}, {27,3143,-37}, {27,3816,-20}, {27,3817,-20},
+ {27,3824,-20}, {27,3831,-20}, {27,3839,-20}, {27,3902,-55},
+ {27,3951,-55}, {27,4031,-55}, {27,4034,-55}, {27,4050,-55},
+ {33,64,-30}, {33,70,-30}, {33,203,-35}, {33,393,-40}, {33,396,-40},
+ {33,404,-40}, {33,414,-40}, {33,419,-40}, {33,449,-40},
+ {33,455,-40}, {33,474,-40}, {33,570,-37}, {33,603,-50},
+ {33,604,-50}, {33,609,-50}, {33,615,-50}, {33,624,-50},
+ {33,658,-105}, {33,668,-95}, {33,686,-55}, {33,687,-55},
+ {33,692,-55}, {33,3143,-37}, {33,3816,-20}, {33,3817,-20},
+ {33,3824,-20}, {33,3831,-20}, {33,3839,-20}, {33,3902,-55},
+ {33,3951,-55}, {33,4031,-55}, {33,4034,-55}, {33,4050,-55},
+ {43,64,-30}, {43,70,-30}, {43,203,-35}, {43,393,-40}, {43,396,-40},
+ {43,404,-40}, {43,414,-40}, {43,419,-40}, {43,449,-40},
+ {43,455,-40}, {43,474,-40}, {43,570,-37}, {43,603,-50},
+ {43,604,-50}, {43,609,-50}, {43,615,-50}, {43,624,-50},
+ {43,658,-105}, {43,668,-95}, {43,686,-55}, {43,687,-55},
+ {43,692,-55}, {43,3143,-37}, {43,3816,-20}, {43,3817,-20},
+ {43,3824,-20}, {43,3831,-20}, {43,3839,-20}, {43,3902,-55},
+ {43,3951,-55}, {43,4031,-55}, {43,4034,-55}, {43,4050,-55},
+ {48,64,-30}, {48,70,-30}, {48,203,-35}, {48,393,-40}, {48,396,-40},
+ {48,404,-40}, {48,414,-40}, {48,419,-40}, {48,449,-40},
+ {48,455,-40}, {48,474,-40}, {48,570,-37}, {48,603,-50},
+ {48,604,-50}, {48,609,-50}, {48,615,-50}, {48,624,-50},
+ {48,658,-105}, {48,668,-95}, {48,686,-55}, {48,687,-55},
+ {48,692,-55}, {48,3143,-37}, {48,3816,-20}, {48,3817,-20},
+ {48,3824,-20}, {48,3831,-20}, {48,3839,-20}, {48,3902,-55},
+ {48,3951,-55}, {48,4031,-55}, {48,4034,-55}, {48,4050,-55},
+ {51,0,-25}, {51,5,-25}, {51,16,-25}, {51,27,-25}, {51,33,-25},
+ {51,43,-25}, {51,48,-25}, {51,603,-10}, {51,604,-10}, {51,609,-10},
+ {51,615,-10}, {51,624,-10}, {93,0,-35}, {93,5,-35}, {93,16,-35},
+ {93,27,-35}, {93,33,-35}, {93,43,-35}, {93,48,-35}, {93,658,-40},
+ {93,668,-40}, {93,686,-40}, {93,687,-40}, {93,692,-40},
+ {192,0,-115}, {192,5,-115}, {192,16,-115}, {192,27,-115},
+ {192,33,-115}, {192,43,-115}, {192,48,-115}, {192,734,-75},
+ {192,736,-75}, {192,758,-75}, {192,775,-75}, {192,1030,-75},
+ {192,1111,-75}, {192,1173,-75}, {192,1409,-135}, {192,1630,-75},
+ {192,1631,-75}, {192,1645,-75}, {192,1655,-75}, {192,1662,-75},
+ {192,2132,-45}, {192,2133,-45}, {192,2140,-45}, {192,2196,-45},
+ {192,2207,-45}, {192,2794,-105}, {192,2795,-105}, {192,2809,-105},
+ {192,2819,-105}, {192,2826,-105}, {192,2899,-105}, {192,2907,-105},
+ {192,2995,-135}, {192,3148,-55}, {301,0,-40}, {301,5,-40},
+ {301,16,-40}, {301,27,-40}, {301,33,-40}, {301,43,-40},
+ {301,48,-40}, {301,734,-35}, {301,736,-35}, {301,758,-35},
+ {301,775,-35}, {301,1030,-35}, {301,1111,-35}, {301,1173,-35},
+ {301,1409,-25}, {301,1630,-25}, {301,1631,-25}, {301,1645,-25},
+ {301,1655,-25}, {301,1662,-25}, {301,2794,-25}, {301,2795,-25},
+ {301,2809,-25}, {301,2819,-25}, {301,2826,-25}, {301,2899,-25},
+ {301,2907,-25}, {301,2995,-25}, {301,3816,-35}, {301,3817,-35},
+ {301,3824,-35}, {301,3831,-35}, {301,3839,-35}, {309,393,-50},
+ {309,396,-50}, {309,404,-50}, {309,414,-50}, {309,419,-50},
+ {309,449,-50}, {309,455,-50}, {309,1630,-35}, {309,1631,-35},
+ {309,1645,-35}, {309,1655,-35}, {309,1662,-35}, {309,2794,-40},
+ {309,2795,-40}, {309,2809,-40}, {309,2819,-40}, {309,2826,-40},
+ {309,2899,-40}, {309,2907,-40}, {309,3816,-40}, {309,3817,-40},
+ {309,3824,-40}, {309,3831,-40}, {309,3839,-40}, {309,4031,-40},
+ {309,4034,-40}, {309,4050,-40}, {337,570,-20}, {337,658,-55},
+ {337,668,-55}, {337,686,-20}, {337,687,-20}, {337,692,-20},
+ {337,3143,-37}, {337,4031,-30}, {337,4034,-30}, {337,4050,-30},
+ {356,570,-20}, {356,658,-55}, {356,668,-55}, {356,686,-20},
+ {356,687,-20}, {356,692,-20}, {356,3143,-37}, {356,4031,-30},
+ {356,4034,-30}, {356,4050,-30}, {372,0,-27}, {372,5,-27},
+ {372,16,-27}, {372,27,-27}, {372,33,-27}, {372,43,-27},
+ {372,48,-27}, {390,0,-27}, {390,5,-27}, {390,16,-27}, {390,27,-27},
+ {390,33,-27}, {390,43,-27}, {390,48,-27}, {393,0,-55}, {393,5,-55},
+ {393,16,-55}, {393,27,-55}, {393,33,-55}, {393,43,-55},
+ {393,48,-55}, {393,570,-40}, {393,658,-50}, {393,668,-50},
+ {393,678,-40}, {393,686,-50}, {393,687,-50}, {393,692,-50},
+ {396,0,-55}, {396,5,-55}, {396,16,-55}, {396,27,-55}, {396,33,-55},
+ {396,43,-55}, {396,48,-55}, {396,570,-40}, {396,658,-50},
+ {396,668,-50}, {396,678,-40}, {396,686,-50}, {396,687,-50},
+ {396,692,-50}, {404,0,-55}, {404,5,-55}, {404,16,-55},
+ {404,27,-55}, {404,33,-55}, {404,43,-55}, {404,48,-55},
+ {404,570,-40}, {404,658,-50}, {404,668,-50}, {404,678,-40},
+ {404,686,-50}, {404,687,-50}, {404,692,-50}, {414,0,-55},
+ {414,5,-55}, {414,16,-55}, {414,27,-55}, {414,33,-55},
+ {414,43,-55}, {414,48,-55}, {414,570,-40}, {414,658,-50},
+ {414,668,-50}, {414,678,-40}, {414,686,-50}, {414,687,-50},
+ {414,692,-50}, {419,0,-55}, {419,5,-55}, {419,16,-55},
+ {419,27,-55}, {419,33,-55}, {419,43,-55}, {419,48,-55},
+ {419,570,-40}, {419,658,-50}, {419,668,-50}, {419,678,-40},
+ {419,686,-50}, {419,687,-50}, {419,692,-50}, {449,0,-55},
+ {449,5,-55}, {449,16,-55}, {449,27,-55}, {449,33,-55},
+ {449,43,-55}, {449,48,-55}, {449,570,-40}, {449,658,-50},
+ {449,668,-50}, {449,678,-40}, {449,686,-50}, {449,687,-50},
+ {449,692,-50}, {455,0,-55}, {455,5,-55}, {455,16,-55},
+ {455,27,-55}, {455,33,-55}, {455,43,-55}, {455,48,-55},
+ {455,570,-40}, {455,658,-50}, {455,668,-50}, {455,678,-40},
+ {455,686,-50}, {455,687,-50}, {455,692,-50}, {459,0,-90},
+ {459,5,-90}, {459,16,-90}, {459,27,-90}, {459,33,-90},
+ {459,43,-90}, {459,48,-90}, {459,734,-80}, {459,736,-80},
+ {459,758,-80}, {459,775,-80}, {459,1030,-80}, {459,1111,-80},
+ {459,1173,-80}, {459,1409,-135}, {459,1630,-80}, {459,1631,-80},
+ {459,1645,-80}, {459,1655,-80}, {459,1662,-80}, {459,2794,-80},
+ {459,2795,-80}, {459,2809,-80}, {459,2819,-80}, {459,2826,-80},
+ {459,2899,-80}, {459,2907,-80}, {459,2995,-135}, {474,603,-10},
+ {474,604,-10}, {474,609,-10}, {474,615,-10}, {474,624,-10},
+ {478,393,-40}, {478,396,-40}, {478,404,-40}, {478,414,-40},
+ {478,419,-40}, {478,449,-40}, {478,455,-40}, {478,603,-40},
+ {478,604,-40}, {478,609,-40}, {478,615,-40}, {478,624,-40},
+ {478,658,-18}, {478,668,-18}, {478,686,-18}, {478,687,-18},
+ {478,692,-18}, {570,0,-50}, {570,5,-50}, {570,16,-50},
+ {570,27,-50}, {570,33,-50}, {570,43,-50}, {570,48,-50},
+ {570,393,-18}, {570,396,-18}, {570,404,-18}, {570,414,-18},
+ {570,419,-18}, {570,449,-18}, {570,455,-18}, {570,734,-92},
+ {570,736,-92}, {570,758,-92}, {570,775,-92}, {570,1030,-92},
+ {570,1111,-92}, {570,1173,-92}, {570,1402,-55}, {570,1409,-74},
+ {570,1630,-92}, {570,1631,-92}, {570,1645,-52}, {570,1655,-52},
+ {570,1662,-52}, {570,2126,-74}, {570,2132,-55}, {570,2133,-55},
+ {570,2794,-92}, {570,2795,-92}, {570,2809,-92}, {570,2819,-92},
+ {570,2826,-92}, {570,2899,-92}, {570,2907,-92}, {570,2995,-74},
+ {570,3148,-55}, {570,3351,-65}, {570,3816,-55}, {570,3817,-55},
+ {570,3824,-55}, {570,3831,-55}, {570,3839,-55}, {570,3951,-74},
+ {570,4031,-74}, {570,4034,-74}, {570,4050,-34}, {603,0,-40},
+ {603,5,-40}, {603,16,-40}, {603,27,-40}, {603,33,-40},
+ {603,43,-40}, {603,48,-40}, {603,1409,-25}, {603,2995,-25},
+ {604,0,-40}, {604,5,-40}, {604,16,-40}, {604,27,-40}, {604,33,-40},
+ {604,43,-40}, {604,48,-40}, {604,1409,-25}, {604,2995,-25},
+ {609,0,-40}, {609,5,-40}, {609,16,-40}, {609,27,-40}, {609,33,-40},
+ {609,43,-40}, {609,48,-40}, {609,1409,-25}, {609,2995,-25},
+ {615,0,-40}, {615,5,-40}, {615,16,-40}, {615,27,-40}, {615,33,-40},
+ {615,43,-40}, {615,48,-40}, {615,1409,-25}, {615,2995,-25},
+ {624,0,-40}, {624,5,-40}, {624,16,-40}, {624,27,-40}, {624,33,-40},
+ {624,43,-40}, {624,48,-40}, {624,1409,-25}, {624,2995,-25},
+ {658,0,-60}, {658,5,-60}, {658,16,-60}, {658,27,-60}, {658,33,-60},
+ {658,43,-60}, {658,48,-60}, {658,393,-30}, {658,396,-30},
+ {658,404,-30}, {658,414,-30}, {658,419,-30}, {658,449,-30},
+ {658,455,-30}, {658,734,-111}, {658,736,-111}, {658,758,-111},
+ {658,775,-111}, {658,1030,-111}, {658,1111,-111}, {658,1173,-111},
+ {658,1402,-65}, {658,1409,-129}, {658,1630,-111}, {658,1631,-111},
+ {658,1645,-111}, {658,1655,-71}, {658,1662,-71}, {658,2126,-55},
+ {658,2132,-74}, {658,2133,-74}, {658,2140,-34}, {658,2196,-34},
+ {658,2207,-34}, {658,2794,-111}, {658,2795,-111}, {658,2809,-111},
+ {658,2819,-111}, {658,2826,-111}, {658,2899,-111}, {658,2907,-111},
+ {658,2995,-129}, {658,3351,-74}, {658,3816,-74}, {658,3817,-74},
+ {658,3824,-74}, {658,3831,-74}, {658,3839,-74}, {668,0,-60},
+ {668,5,-60}, {668,16,-60}, {668,27,-60}, {668,33,-60},
+ {668,43,-60}, {668,48,-60}, {668,393,-25}, {668,396,-25},
+ {668,404,-25}, {668,414,-25}, {668,419,-25}, {668,449,-25},
+ {668,455,-25}, {668,734,-92}, {668,736,-92}, {668,758,-92},
+ {668,775,-92}, {668,1030,-92}, {668,1111,-92}, {668,1173,-92},
+ {668,1402,-65}, {668,1409,-92}, {668,1630,-92}, {668,1631,-92},
+ {668,1645,-92}, {668,1655,-52}, {668,1662,-52}, {668,2126,-37},
+ {668,2132,-55}, {668,2133,-55}, {668,2794,-92}, {668,2795,-92},
+ {668,2809,-92}, {668,2819,-92}, {668,2826,-92}, {668,2899,-92},
+ {668,2907,-92}, {668,2995,-92}, {668,3351,-65}, {668,3816,-55},
+ {668,3817,-55}, {668,3824,-55}, {668,3831,-55}, {668,3839,-55},
+ {668,4031,-70}, {668,4034,-70}, {668,4050,-70}, {686,0,-50},
+ {686,5,-50}, {686,16,-50}, {686,27,-50}, {686,33,-50},
+ {686,43,-50}, {686,48,-50}, {686,393,-15}, {686,396,-15},
+ {686,404,-15}, {686,414,-15}, {686,419,-15}, {686,449,-15},
+ {686,455,-15}, {686,734,-92}, {686,736,-92}, {686,758,-92},
+ {686,775,-92}, {686,1030,-92}, {686,1111,-92}, {686,1173,-92},
+ {686,1402,-65}, {686,1409,-92}, {686,1630,-92}, {686,1631,-92},
+ {686,1645,-92}, {686,1655,-52}, {686,1662,-52}, {686,2126,-74},
+ {686,2132,-74}, {686,2133,-74}, {686,2140,-34}, {686,2196,-34},
+ {686,2207,-34}, {686,2794,-92}, {686,2795,-92}, {686,2809,-92},
+ {686,2819,-92}, {686,2826,-92}, {686,2899,-92}, {686,2907,-92},
+ {686,2995,-92}, {686,3351,-65}, {686,3816,-92}, {686,3817,-92},
+ {686,3824,-92}, {686,3831,-92}, {686,3839,-92}, {687,0,-50},
+ {687,5,-50}, {687,16,-50}, {687,27,-50}, {687,33,-50},
+ {687,43,-50}, {687,48,-50}, {687,393,-15}, {687,396,-15},
+ {687,404,-15}, {687,414,-15}, {687,419,-15}, {687,449,-15},
+ {687,455,-15}, {687,734,-92}, {687,736,-92}, {687,758,-92},
+ {687,775,-92}, {687,1030,-92}, {687,1111,-92}, {687,1173,-92},
+ {687,1402,-65}, {687,1409,-92}, {687,1630,-92}, {687,1631,-92},
+ {687,1645,-92}, {687,1655,-52}, {687,1662,-52}, {687,2126,-74},
+ {687,2132,-74}, {687,2133,-74}, {687,2140,-34}, {687,2196,-34},
+ {687,2207,-34}, {687,2794,-92}, {687,2795,-92}, {687,2809,-92},
+ {687,2819,-92}, {687,2826,-92}, {687,2899,-92}, {687,2907,-92},
+ {687,2995,-92}, {687,3351,-65}, {687,3816,-92}, {687,3817,-92},
+ {687,3824,-92}, {687,3831,-92}, {687,3839,-92}, {692,0,-50},
+ {692,5,-50}, {692,16,-50}, {692,27,-50}, {692,33,-50},
+ {692,43,-50}, {692,48,-50}, {692,393,-15}, {692,396,-15},
+ {692,404,-15}, {692,414,-15}, {692,419,-15}, {692,449,-15},
+ {692,455,-15}, {692,734,-92}, {692,736,-92}, {692,758,-92},
+ {692,775,-92}, {692,1030,-92}, {692,1111,-92}, {692,1173,-92},
+ {692,1402,-65}, {692,1409,-92}, {692,1630,-92}, {692,1631,-92},
+ {692,1645,-92}, {692,1655,-52}, {692,1662,-52}, {692,2126,-74},
+ {692,2132,-74}, {692,2133,-74}, {692,2140,-34}, {692,2196,-34},
+ {692,2207,-34}, {692,2794,-92}, {692,2795,-92}, {692,2809,-92},
+ {692,2819,-92}, {692,2826,-92}, {692,2899,-92}, {692,2907,-92},
+ {692,2995,-92}, {692,3351,-65}, {692,3816,-92}, {692,3817,-92},
+ {692,3824,-92}, {692,3831,-92}, {692,3839,-92}, {734,1886,-10},
+ {736,1886,-10}, {758,1886,-10}, {775,1886,-10}, {1030,1886,-10},
+ {1111,1886,-10}, {1173,1886,-10}, {1192,2995,-40}, {1192,3816,-20},
+ {1192,3817,-20}, {1192,3824,-20}, {1192,3831,-20}, {1192,3839,-20},
+ {1312,1988,-15}, {1312,2302,-20}, {1332,1988,-15}, {1332,2302,-20},
+ {1409,3139,-140}, {1409,3143,-140}, {1630,1409,-10},
+ {1630,1886,-40}, {1630,2995,-15}, {1630,3902,-15}, {1630,3951,-15},
+ {1630,4020,-20}, {1630,4031,-30}, {1630,4034,-30}, {1630,4050,-30},
+ {1631,1409,-10}, {1631,1886,-40}, {1631,2995,-15}, {1631,3902,-15},
+ {1631,3951,-15}, {1631,4020,-20}, {1631,4031,-30}, {1631,4034,-30},
+ {1631,4050,-30}, {1645,1409,-10}, {1645,1886,-40}, {1645,2995,-15},
+ {1645,3902,-15}, {1645,3951,-15}, {1645,4020,-20}, {1645,4031,-30},
+ {1645,4034,-30}, {1645,4050,-30}, {1655,1409,-10}, {1655,1886,-40},
+ {1655,2995,-15}, {1655,3902,-15}, {1655,3951,-15}, {1655,4020,-20},
+ {1655,4031,-30}, {1655,4034,-30}, {1655,4050,-30}, {1662,1409,-10},
+ {1662,1886,-40}, {1662,2995,-15}, {1662,3902,-15}, {1662,3951,-15},
+ {1662,4020,-20}, {1662,4031,-30}, {1662,4034,-30}, {1662,4050,-30},
+ {1787,1409,-10}, {1787,1608,-60}, {1787,1787,-18}, {1787,2132,-20},
+ {1787,2995,-15}, {1787,3143,92}, {1886,1409,-10}, {1886,1630,-10},
+ {1886,1631,-10}, {1886,1645,-10}, {1886,1655,-10}, {1886,1662,-10},
+ {1886,1886,-10}, {1886,2995,-15}, {2302,1630,-10}, {2302,1631,-10},
+ {2302,1645,-10}, {2302,1655,-10}, {2302,1662,-10}, {2302,2794,-10},
+ {2302,2795,-10}, {2302,2809,-10}, {2302,2819,-10}, {2302,2826,-10},
+ {2302,2899,-10}, {2302,2907,-10}, {2302,4031,-10}, {2302,4034,-10},
+ {2302,4050,-10}, {2648,3902,-40}, {2769,3902,-40}, {2794,1886,-10},
+ {2794,3902,-10}, {2795,1886,-10}, {2795,3902,-10}, {2809,1886,-10},
+ {2809,3902,-10}, {2819,1886,-10}, {2819,3902,-10}, {2826,1886,-10},
+ {2826,3902,-10}, {2899,1886,-10}, {2899,3902,-10}, {2907,1886,-10},
+ {2907,3902,-10}, {2995,3139,-140}, {2995,3143,-140},
+ {3140,3140,-111}, {3143,1481,-25}, {3143,3143,-111},
+ {3143,3148,-25}, {3143,3279,-40}, {3143,3317,-40},
+ {3143,3498,-111}, {3143,3556,-30}, {3143,3902,-10}, {3148,734,-15},
+ {3148,736,-15}, {3148,758,-15}, {3148,775,-15}, {3148,1030,-15},
+ {3148,1111,-15}, {3148,1173,-15}, {3148,1312,-37}, {3148,1332,-37},
+ {3148,1409,-111}, {3148,1481,-37}, {3148,1630,-37},
+ {3148,1631,-37}, {3148,1645,-37}, {3148,1655,-37}, {3148,1662,-37},
+ {3148,1886,-37}, {3148,2126,-20}, {3148,2794,-45}, {3148,2795,-45},
+ {3148,2809,-45}, {3148,2819,-45}, {3148,2826,-45}, {3148,2899,-45},
+ {3148,2907,-45}, {3148,2995,-111}, {3148,3083,-37},
+ {3148,3279,-10}, {3148,3317,-10}, {3498,0,-18}, {3498,5,-18},
+ {3498,16,-18}, {3498,27,-18}, {3498,33,-18}, {3498,43,-18},
+ {3498,48,-18}, {3498,570,-18}, {3498,658,-35}, {3498,668,-40},
+ {3498,686,-75}, {3498,687,-75}, {3498,692,-75}, {3902,1409,-74},
+ {3902,2995,-74}, {3951,1409,-74}, {3951,2995,-74}, {4031,1409,-55},
+ {4031,2995,-55}, {4034,1409,-55}, {4034,2995,-55}, {4050,1409,-55},
+ {4050,2995,-55},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature times_italic_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair times_bold_kerns[] = {
+ {0,64,-55}, {0,70,-55}, {0,203,-55}, {0,393,-45}, {0,396,-45},
+ {0,404,-45}, {0,414,-45}, {0,419,-45}, {0,449,-45}, {0,455,-45},
+ {0,474,-45}, {0,570,-95}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-145}, {0,668,-130}, {0,686,-100},
+ {0,687,-100}, {0,692,-100}, {0,2921,-25}, {0,3143,-74},
+ {0,3816,-50}, {0,3817,-50}, {0,3824,-50}, {0,3831,-50},
+ {0,3839,-50}, {0,3902,-100}, {0,3951,-90}, {0,4031,-74},
+ {0,4034,-74}, {0,4050,-74}, {5,64,-55}, {5,70,-55}, {5,203,-55},
+ {5,393,-45}, {5,396,-45}, {5,404,-45}, {5,414,-45}, {5,419,-45},
+ {5,449,-45}, {5,455,-45}, {5,474,-45}, {5,570,-95}, {5,603,-50},
+ {5,604,-50}, {5,609,-50}, {5,615,-50}, {5,624,-50}, {5,658,-145},
+ {5,668,-130}, {5,686,-100}, {5,687,-100}, {5,692,-100},
+ {5,2921,-25}, {5,3143,-74}, {5,3816,-50}, {5,3817,-50},
+ {5,3824,-50}, {5,3831,-50}, {5,3839,-50}, {5,3902,-100},
+ {5,3951,-90}, {5,4031,-74}, {5,4034,-74}, {5,4050,-74},
+ {16,64,-55}, {16,70,-55}, {16,203,-55}, {16,393,-45}, {16,396,-45},
+ {16,404,-45}, {16,414,-45}, {16,419,-45}, {16,449,-45},
+ {16,455,-45}, {16,474,-45}, {16,570,-95}, {16,603,-50},
+ {16,604,-50}, {16,609,-50}, {16,615,-50}, {16,624,-50},
+ {16,658,-145}, {16,668,-130}, {16,686,-100}, {16,687,-100},
+ {16,692,-100}, {16,2921,-25}, {16,3143,-74}, {16,3816,-50},
+ {16,3817,-50}, {16,3824,-50}, {16,3831,-50}, {16,3839,-50},
+ {16,3902,-100}, {16,3951,-90}, {16,4031,-74}, {16,4034,-74},
+ {16,4050,-74}, {27,64,-55}, {27,70,-55}, {27,203,-55},
+ {27,393,-45}, {27,396,-45}, {27,404,-45}, {27,414,-45},
+ {27,419,-45}, {27,449,-45}, {27,455,-45}, {27,474,-45},
+ {27,570,-95}, {27,603,-50}, {27,604,-50}, {27,609,-50},
+ {27,615,-50}, {27,624,-50}, {27,658,-145}, {27,668,-130},
+ {27,686,-100}, {27,687,-100}, {27,692,-100}, {27,2921,-25},
+ {27,3143,-74}, {27,3816,-50}, {27,3817,-50}, {27,3824,-50},
+ {27,3831,-50}, {27,3839,-50}, {27,3902,-100}, {27,3951,-90},
+ {27,4031,-74}, {27,4034,-74}, {27,4050,-74}, {33,64,-55},
+ {33,70,-55}, {33,203,-55}, {33,393,-45}, {33,396,-45},
+ {33,404,-45}, {33,414,-45}, {33,419,-45}, {33,449,-45},
+ {33,455,-45}, {33,474,-45}, {33,570,-95}, {33,603,-50},
+ {33,604,-50}, {33,609,-50}, {33,615,-50}, {33,624,-50},
+ {33,658,-145}, {33,668,-130}, {33,686,-100}, {33,687,-100},
+ {33,692,-100}, {33,2921,-25}, {33,3143,-74}, {33,3816,-50},
+ {33,3817,-50}, {33,3824,-50}, {33,3831,-50}, {33,3839,-50},
+ {33,3902,-100}, {33,3951,-90}, {33,4031,-74}, {33,4034,-74},
+ {33,4050,-74}, {43,64,-55}, {43,70,-55}, {43,203,-55},
+ {43,393,-45}, {43,396,-45}, {43,404,-45}, {43,414,-45},
+ {43,419,-45}, {43,449,-45}, {43,455,-45}, {43,474,-45},
+ {43,570,-95}, {43,603,-50}, {43,604,-50}, {43,609,-50},
+ {43,615,-50}, {43,624,-50}, {43,658,-145}, {43,668,-130},
+ {43,686,-100}, {43,687,-100}, {43,692,-100}, {43,2921,-25},
+ {43,3143,-74}, {43,3816,-50}, {43,3817,-50}, {43,3824,-50},
+ {43,3831,-50}, {43,3839,-50}, {43,3902,-100}, {43,3951,-90},
+ {43,4031,-74}, {43,4034,-74}, {43,4050,-74}, {48,64,-55},
+ {48,70,-55}, {48,203,-55}, {48,393,-45}, {48,396,-45},
+ {48,404,-45}, {48,414,-45}, {48,419,-45}, {48,449,-45},
+ {48,455,-45}, {48,474,-45}, {48,570,-95}, {48,603,-50},
+ {48,604,-50}, {48,609,-50}, {48,615,-50}, {48,624,-50},
+ {48,658,-145}, {48,668,-130}, {48,686,-100}, {48,687,-100},
+ {48,692,-100}, {48,2921,-25}, {48,3143,-74}, {48,3816,-50},
+ {48,3817,-50}, {48,3824,-50}, {48,3831,-50}, {48,3839,-50},
+ {48,3902,-100}, {48,3951,-90}, {48,4031,-74}, {48,4034,-74},
+ {48,4050,-74}, {51,0,-30}, {51,5,-30}, {51,16,-30}, {51,27,-30},
+ {51,33,-30}, {51,43,-30}, {51,48,-30}, {51,603,-10}, {51,604,-10},
+ {51,609,-10}, {51,615,-10}, {51,624,-10}, {93,0,-35}, {93,5,-35},
+ {93,16,-35}, {93,27,-35}, {93,33,-35}, {93,43,-35}, {93,48,-35},
+ {93,658,-40}, {93,668,-40}, {93,686,-40}, {93,687,-40},
+ {93,692,-40}, {93,2995,-20}, {192,0,-90}, {192,5,-90},
+ {192,16,-90}, {192,27,-90}, {192,33,-90}, {192,43,-90},
+ {192,48,-90}, {192,734,-25}, {192,736,-25}, {192,758,-25},
+ {192,775,-25}, {192,1030,-25}, {192,1111,-25}, {192,1173,-25},
+ {192,1409,-92}, {192,1630,-25}, {192,1631,-25}, {192,1645,-25},
+ {192,1655,-25}, {192,1662,-25}, {192,2794,-25}, {192,2795,-25},
+ {192,2809,-25}, {192,2819,-25}, {192,2826,-25}, {192,2899,-25},
+ {192,2907,-25}, {192,2995,-110}, {301,0,-30}, {301,5,-30},
+ {301,16,-30}, {301,27,-30}, {301,33,-30}, {301,43,-30},
+ {301,48,-30}, {301,734,-15}, {301,736,-15}, {301,758,-15},
+ {301,775,-15}, {301,1030,-15}, {301,1111,-15}, {301,1173,-15},
+ {301,1630,-15}, {301,1631,-15}, {301,1645,-15}, {301,1655,-15},
+ {301,1662,-15}, {301,2794,-15}, {301,2795,-15}, {301,2809,-15},
+ {301,2819,-15}, {301,2826,-15}, {301,2899,-15}, {301,2907,-15},
+ {301,2995,-20}, {301,3816,-15}, {301,3817,-15}, {301,3824,-15},
+ {301,3831,-15}, {301,3839,-15}, {309,393,-30}, {309,396,-30},
+ {309,404,-30}, {309,414,-30}, {309,419,-30}, {309,449,-30},
+ {309,455,-30}, {309,1630,-25}, {309,1631,-25}, {309,1645,-25},
+ {309,1655,-25}, {309,1662,-25}, {309,2794,-25}, {309,2795,-25},
+ {309,2809,-25}, {309,2819,-25}, {309,2826,-25}, {309,2899,-25},
+ {309,2907,-25}, {309,3816,-15}, {309,3817,-15}, {309,3824,-15},
+ {309,3831,-15}, {309,3839,-15}, {309,4031,-45}, {309,4034,-45},
+ {309,4050,-45}, {337,570,-92}, {337,658,-92}, {337,668,-92},
+ {337,686,-92}, {337,687,-92}, {337,692,-92}, {337,3139,-20},
+ {337,3143,-110}, {337,4031,-55}, {337,4034,-55}, {337,4050,-55},
+ {356,570,-92}, {356,658,-92}, {356,668,-92}, {356,686,-92},
+ {356,687,-92}, {356,692,-92}, {356,3139,-20}, {356,3143,-110},
+ {356,4031,-55}, {356,4034,-55}, {356,4050,-55}, {372,0,-20},
+ {372,5,-20}, {372,16,-20}, {372,27,-20}, {372,33,-20},
+ {372,43,-20}, {372,48,-20}, {390,0,-20}, {390,5,-20}, {390,16,-20},
+ {390,27,-20}, {390,33,-20}, {390,43,-20}, {390,48,-20},
+ {393,0,-40}, {393,5,-40}, {393,16,-40}, {393,27,-40}, {393,33,-40},
+ {393,43,-40}, {393,48,-40}, {393,570,-40}, {393,658,-50},
+ {393,668,-50}, {393,678,-40}, {393,686,-50}, {393,687,-50},
+ {393,692,-50}, {396,0,-40}, {396,5,-40}, {396,16,-40},
+ {396,27,-40}, {396,33,-40}, {396,43,-40}, {396,48,-40},
+ {396,570,-40}, {396,658,-50}, {396,668,-50}, {396,678,-40},
+ {396,686,-50}, {396,687,-50}, {396,692,-50}, {404,0,-40},
+ {404,5,-40}, {404,16,-40}, {404,27,-40}, {404,33,-40},
+ {404,43,-40}, {404,48,-40}, {404,570,-40}, {404,658,-50},
+ {404,668,-50}, {404,678,-40}, {404,686,-50}, {404,687,-50},
+ {404,692,-50}, {414,0,-40}, {414,5,-40}, {414,16,-40},
+ {414,27,-40}, {414,33,-40}, {414,43,-40}, {414,48,-40},
+ {414,570,-40}, {414,658,-50}, {414,668,-50}, {414,678,-40},
+ {414,686,-50}, {414,687,-50}, {414,692,-50}, {419,0,-40},
+ {419,5,-40}, {419,16,-40}, {419,27,-40}, {419,33,-40},
+ {419,43,-40}, {419,48,-40}, {419,570,-40}, {419,658,-50},
+ {419,668,-50}, {419,678,-40}, {419,686,-50}, {419,687,-50},
+ {419,692,-50}, {449,0,-40}, {449,5,-40}, {449,16,-40},
+ {449,27,-40}, {449,33,-40}, {449,43,-40}, {449,48,-40},
+ {449,570,-40}, {449,658,-50}, {449,668,-50}, {449,678,-40},
+ {449,686,-50}, {449,687,-50}, {449,692,-50}, {455,0,-40},
+ {455,5,-40}, {455,16,-40}, {455,27,-40}, {455,33,-40},
+ {455,43,-40}, {455,48,-40}, {455,570,-40}, {455,658,-50},
+ {455,668,-50}, {455,678,-40}, {455,686,-50}, {455,687,-50},
+ {455,692,-50}, {459,0,-74}, {459,5,-74}, {459,16,-74},
+ {459,27,-74}, {459,33,-74}, {459,43,-74}, {459,48,-74},
+ {459,734,-10}, {459,736,-10}, {459,758,-10}, {459,775,-10},
+ {459,1030,-10}, {459,1111,-10}, {459,1173,-10}, {459,1409,-92},
+ {459,1630,-20}, {459,1631,-20}, {459,1645,-20}, {459,1655,-20},
+ {459,1662,-20}, {459,2794,-20}, {459,2795,-20}, {459,2809,-20},
+ {459,2819,-20}, {459,2826,-20}, {459,2899,-20}, {459,2907,-20},
+ {459,2995,-110}, {474,603,-10}, {474,604,-10}, {474,609,-10},
+ {474,615,-10}, {474,624,-10}, {474,2995,-20}, {478,393,-30},
+ {478,396,-30}, {478,404,-30}, {478,414,-30}, {478,419,-30},
+ {478,449,-30}, {478,455,-30}, {478,570,-40}, {478,603,-30},
+ {478,604,-30}, {478,609,-30}, {478,615,-30}, {478,624,-30},
+ {478,658,-55}, {478,668,-35}, {478,686,-35}, {478,687,-35},
+ {478,692,-35}, {570,0,-90}, {570,5,-90}, {570,16,-90},
+ {570,27,-90}, {570,33,-90}, {570,43,-90}, {570,48,-90},
+ {570,393,-18}, {570,396,-18}, {570,404,-18}, {570,414,-18},
+ {570,419,-18}, {570,449,-18}, {570,455,-18}, {570,734,-92},
+ {570,736,-92}, {570,758,-52}, {570,775,-52}, {570,1030,-52},
+ {570,1111,-92}, {570,1173,-52}, {570,1402,-74}, {570,1409,-74},
+ {570,1630,-92}, {570,1631,-92}, {570,1645,-92}, {570,1655,-52},
+ {570,1662,-52}, {570,2126,-92}, {570,2132,-18}, {570,2133,-18},
+ {570,2794,-92}, {570,2795,-92}, {570,2809,-92}, {570,2819,-92},
+ {570,2826,-92}, {570,2899,-92}, {570,2907,-92}, {570,2995,-90},
+ {570,3148,-74}, {570,3351,-74}, {570,3816,-92}, {570,3817,-92},
+ {570,3824,-92}, {570,3831,-92}, {570,3839,-92}, {570,3951,-74},
+ {570,4031,-34}, {570,4034,-34}, {570,4050,-34}, {603,0,-60},
+ {603,5,-60}, {603,16,-60}, {603,27,-60}, {603,33,-60},
+ {603,43,-60}, {603,48,-60}, {603,1409,-50}, {603,2995,-50},
+ {604,0,-60}, {604,5,-60}, {604,16,-60}, {604,27,-60}, {604,33,-60},
+ {604,43,-60}, {604,48,-60}, {604,1409,-50}, {604,2995,-50},
+ {609,0,-60}, {609,5,-60}, {609,16,-60}, {609,27,-60}, {609,33,-60},
+ {609,43,-60}, {609,48,-60}, {609,1409,-50}, {609,2995,-50},
+ {615,0,-60}, {615,5,-60}, {615,16,-60}, {615,27,-60}, {615,33,-60},
+ {615,43,-60}, {615,48,-60}, {615,1409,-50}, {615,2995,-50},
+ {624,0,-60}, {624,5,-60}, {624,16,-60}, {624,27,-60}, {624,33,-60},
+ {624,43,-60}, {624,48,-60}, {624,1409,-50}, {624,2995,-50},
+ {658,0,-135}, {658,5,-135}, {658,16,-135}, {658,27,-135},
+ {658,33,-135}, {658,43,-135}, {658,48,-135}, {658,203,-30},
+ {658,393,-45}, {658,396,-45}, {658,404,-45}, {658,414,-45},
+ {658,419,-45}, {658,449,-45}, {658,455,-45}, {658,734,-92},
+ {658,736,-92}, {658,758,-92}, {658,775,-92}, {658,1030,-92},
+ {658,1111,-92}, {658,1173,-92}, {658,1402,-92}, {658,1409,-129},
+ {658,1630,-100}, {658,1631,-100}, {658,1645,-100}, {658,1655,-100},
+ {658,1662,-100}, {658,2126,-74}, {658,2132,-37}, {658,2133,-37},
+ {658,2140,-37}, {658,2196,-37}, {658,2207,-37}, {658,2794,-100},
+ {658,2795,-100}, {658,2809,-100}, {658,2819,-100}, {658,2826,-100},
+ {658,2899,-100}, {658,2907,-100}, {658,2995,-145}, {658,3351,-92},
+ {658,3816,-92}, {658,3817,-92}, {658,3824,-92}, {658,3831,-92},
+ {658,3839,-92}, {668,0,-120}, {668,5,-120}, {668,16,-120},
+ {668,27,-120}, {668,33,-120}, {668,43,-120}, {668,48,-120},
+ {668,393,-10}, {668,396,-10}, {668,404,-10}, {668,414,-10},
+ {668,419,-10}, {668,449,-10}, {668,455,-10}, {668,734,-65},
+ {668,736,-65}, {668,758,-65}, {668,775,-65}, {668,1030,-65},
+ {668,1111,-65}, {668,1173,-65}, {668,1402,-55}, {668,1409,-92},
+ {668,1630,-65}, {668,1631,-65}, {668,1645,-65}, {668,1655,-65},
+ {668,1662,-65}, {668,2126,-37}, {668,2132,-18}, {668,2133,-18},
+ {668,2794,-75}, {668,2795,-75}, {668,2809,-75}, {668,2819,-75},
+ {668,2826,-75}, {668,2899,-75}, {668,2907,-75}, {668,2995,-92},
+ {668,3351,-55}, {668,3816,-50}, {668,3817,-50}, {668,3824,-50},
+ {668,3831,-50}, {668,3839,-50}, {668,4031,-60}, {668,4034,-60},
+ {668,4050,-60}, {686,0,-110}, {686,5,-110}, {686,16,-110},
+ {686,27,-110}, {686,33,-110}, {686,43,-110}, {686,48,-110},
+ {686,393,-35}, {686,396,-35}, {686,404,-35}, {686,414,-35},
+ {686,419,-35}, {686,449,-35}, {686,455,-35}, {686,734,-85},
+ {686,736,-85}, {686,758,-85}, {686,775,-85}, {686,1030,-85},
+ {686,1111,-85}, {686,1173,-85}, {686,1402,-92}, {686,1409,-92},
+ {686,1630,-111}, {686,1631,-111}, {686,1645,-111}, {686,1655,-71},
+ {686,1662,-71}, {686,2126,-92}, {686,2132,-37}, {686,2133,-37},
+ {686,2794,-111}, {686,2795,-111}, {686,2809,-111}, {686,2819,-111},
+ {686,2826,-111}, {686,2899,-111}, {686,2907,-111}, {686,2995,-92},
+ {686,3351,-92}, {686,3816,-92}, {686,3817,-92}, {686,3824,-92},
+ {686,3831,-92}, {686,3839,-92}, {687,0,-110}, {687,5,-110},
+ {687,16,-110}, {687,27,-110}, {687,33,-110}, {687,43,-110},
+ {687,48,-110}, {687,393,-35}, {687,396,-35}, {687,404,-35},
+ {687,414,-35}, {687,419,-35}, {687,449,-35}, {687,455,-35},
+ {687,734,-85}, {687,736,-85}, {687,758,-85}, {687,775,-85},
+ {687,1030,-85}, {687,1111,-85}, {687,1173,-85}, {687,1402,-92},
+ {687,1409,-92}, {687,1630,-111}, {687,1631,-111}, {687,1645,-111},
+ {687,1655,-71}, {687,1662,-71}, {687,2126,-92}, {687,2132,-37},
+ {687,2133,-37}, {687,2794,-111}, {687,2795,-111}, {687,2809,-111},
+ {687,2819,-111}, {687,2826,-111}, {687,2899,-111}, {687,2907,-111},
+ {687,2995,-92}, {687,3351,-92}, {687,3816,-92}, {687,3817,-92},
+ {687,3824,-92}, {687,3831,-92}, {687,3839,-92}, {692,0,-110},
+ {692,5,-110}, {692,16,-110}, {692,27,-110}, {692,33,-110},
+ {692,43,-110}, {692,48,-110}, {692,393,-35}, {692,396,-35},
+ {692,404,-35}, {692,414,-35}, {692,419,-35}, {692,449,-35},
+ {692,455,-35}, {692,734,-85}, {692,736,-85}, {692,758,-85},
+ {692,775,-85}, {692,1030,-85}, {692,1111,-85}, {692,1173,-85},
+ {692,1402,-92}, {692,1409,-92}, {692,1630,-111}, {692,1631,-111},
+ {692,1645,-111}, {692,1655,-71}, {692,1662,-71}, {692,2126,-92},
+ {692,2132,-37}, {692,2133,-37}, {692,2794,-111}, {692,2795,-111},
+ {692,2809,-111}, {692,2819,-111}, {692,2826,-111}, {692,2899,-111},
+ {692,2907,-111}, {692,2995,-92}, {692,3351,-92}, {692,3816,-92},
+ {692,3817,-92}, {692,3824,-92}, {692,3831,-92}, {692,3839,-92},
+ {734,3902,-25}, {736,3902,-25}, {758,3902,-25}, {775,3902,-25},
+ {1030,3902,-25}, {1111,3902,-25}, {1173,3902,-25}, {1192,1192,-10},
+ {1192,2995,-40}, {1192,3816,-20}, {1192,3817,-20}, {1192,3824,-20},
+ {1192,3831,-20}, {1192,3839,-20}, {1192,3902,-15}, {1409,3139,-45},
+ {1409,3143,-55}, {1481,3951,-15}, {1630,3902,-15}, {1631,3902,-15},
+ {1645,3902,-15}, {1655,3902,-15}, {1662,3902,-15}, {1787,1409,-15},
+ {1787,1608,-35}, {1787,2132,-25}, {1787,2794,-25}, {1787,2795,-25},
+ {1787,2809,-25}, {1787,2819,-25}, {1787,2826,-25}, {1787,2899,-25},
+ {1787,2907,-25}, {1787,2995,-15}, {1787,3139,50}, {1787,3143,55},
+ {1886,2995,-15}, {1988,4031,-15}, {1988,4034,-15}, {1988,4050,-15},
+ {2132,3902,-10}, {2133,3902,-10}, {2140,3902,-10}, {2196,3902,-10},
+ {2207,3902,-10}, {2302,1630,-10}, {2302,1631,-10}, {2302,1645,-10},
+ {2302,1655,-10}, {2302,1662,-10}, {2302,2794,-15}, {2302,2795,-15},
+ {2302,2809,-15}, {2302,2819,-15}, {2302,2826,-15}, {2302,2899,-15},
+ {2302,2907,-15}, {2302,4031,-15}, {2302,4034,-15}, {2302,4050,-15},
+ {2648,3902,-40}, {2769,3902,-40}, {2794,3902,-10}, {2794,3951,-10},
+ {2795,3902,-10}, {2795,3951,-10}, {2809,3902,-10}, {2809,3951,-10},
+ {2819,3902,-10}, {2819,3951,-10}, {2826,3902,-10}, {2826,3951,-10},
+ {2899,3902,-10}, {2899,3951,-10}, {2907,3902,-10}, {2907,3951,-10},
+ {2995,3139,-55}, {2995,3143,-55}, {3135,0,-10}, {3135,5,-10},
+ {3135,16,-10}, {3135,27,-10}, {3135,33,-10}, {3135,43,-10},
+ {3135,48,-10}, {3140,0,-10}, {3140,5,-10}, {3140,16,-10},
+ {3140,27,-10}, {3140,33,-10}, {3140,43,-10}, {3140,48,-10},
+ {3140,3140,-63}, {3143,1481,-20}, {3143,3143,-63}, {3143,3148,-20},
+ {3143,3279,-37}, {3143,3317,-37}, {3143,3498,-74}, {3143,3902,-20},
+ {3148,1312,-18}, {3148,1332,-18}, {3148,1409,-92}, {3148,1630,-18},
+ {3148,1631,-18}, {3148,1645,-18}, {3148,1655,-18}, {3148,1662,-18},
+ {3148,1886,-10}, {3148,2126,-37}, {3148,2648,-15}, {3148,2769,-15},
+ {3148,2794,-18}, {3148,2795,-18}, {3148,2809,-18}, {3148,2819,-18},
+ {3148,2826,-18}, {3148,2899,-18}, {3148,2907,-18}, {3148,2921,-10},
+ {3148,2995,-100}, {3148,3083,-18}, {3148,3902,-10}, {3498,0,-55},
+ {3498,5,-55}, {3498,16,-55}, {3498,27,-55}, {3498,33,-55},
+ {3498,43,-55}, {3498,48,-55}, {3498,570,-30}, {3498,658,-45},
+ {3498,668,-30}, {3498,686,-55}, {3498,687,-55}, {3498,692,-55},
+ {3902,734,-10}, {3902,736,-10}, {3902,758,-10}, {3902,775,-10},
+ {3902,1030,-10}, {3902,1111,-10}, {3902,1173,-10}, {3902,1409,-55},
+ {3902,1630,-10}, {3902,1631,-10}, {3902,1645,-10}, {3902,1655,-10},
+ {3902,1662,-10}, {3902,2794,-10}, {3902,2795,-10}, {3902,2809,-10},
+ {3902,2819,-10}, {3902,2826,-10}, {3902,2899,-10}, {3902,2907,-10},
+ {3902,2995,-70}, {3951,1409,-55}, {3951,2794,-10}, {3951,2795,-10},
+ {3951,2809,-10}, {3951,2819,-10}, {3951,2826,-10}, {3951,2899,-10},
+ {3951,2907,-10}, {3951,2995,-70}, {4031,1409,-55}, {4031,1630,-10},
+ {4031,1631,-10}, {4031,1645,-10}, {4031,1655,-10}, {4031,1662,-10},
+ {4031,2794,-25}, {4031,2795,-25}, {4031,2809,-25}, {4031,2819,-25},
+ {4031,2826,-25}, {4031,2899,-25}, {4031,2907,-25}, {4031,2995,-70},
+ {4034,1409,-55}, {4034,1630,-10}, {4034,1631,-10}, {4034,1645,-10},
+ {4034,1655,-10}, {4034,1662,-10}, {4034,2794,-25}, {4034,2795,-25},
+ {4034,2809,-25}, {4034,2819,-25}, {4034,2826,-25}, {4034,2899,-25},
+ {4034,2907,-25}, {4034,2995,-70}, {4050,1409,-55}, {4050,1630,-10},
+ {4050,1631,-10}, {4050,1645,-10}, {4050,1655,-10}, {4050,1662,-10},
+ {4050,2794,-25}, {4050,2795,-25}, {4050,2809,-25}, {4050,2819,-25},
+ {4050,2826,-25}, {4050,2899,-25}, {4050,2907,-25}, {4050,2995,-70},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature times_bold_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair times_bolditalic_kerns[] = {
+ {0,64,-65}, {0,70,-65}, {0,203,-60}, {0,393,-50}, {0,396,-50},
+ {0,404,-50}, {0,414,-50}, {0,419,-50}, {0,449,-50}, {0,455,-50},
+ {0,474,-55}, {0,570,-55}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-95}, {0,668,-100}, {0,686,-70},
+ {0,687,-70}, {0,692,-70}, {0,3143,-74}, {0,3816,-30}, {0,3817,-30},
+ {0,3824,-30}, {0,3831,-30}, {0,3839,-30}, {0,3902,-74},
+ {0,3951,-74}, {0,4031,-74}, {0,4034,-74}, {0,4050,-74}, {5,64,-65},
+ {5,70,-65}, {5,203,-60}, {5,393,-50}, {5,396,-50}, {5,404,-50},
+ {5,414,-50}, {5,419,-50}, {5,449,-50}, {5,455,-50}, {5,474,-55},
+ {5,570,-55}, {5,603,-50}, {5,604,-50}, {5,609,-50}, {5,615,-50},
+ {5,624,-50}, {5,658,-95}, {5,668,-100}, {5,686,-70}, {5,687,-70},
+ {5,692,-70}, {5,3143,-74}, {5,3816,-30}, {5,3817,-30},
+ {5,3824,-30}, {5,3831,-30}, {5,3839,-30}, {5,3902,-74},
+ {5,3951,-74}, {5,4031,-74}, {5,4034,-74}, {5,4050,-74},
+ {16,64,-65}, {16,70,-65}, {16,203,-60}, {16,393,-50}, {16,396,-50},
+ {16,404,-50}, {16,414,-50}, {16,419,-50}, {16,449,-50},
+ {16,455,-50}, {16,474,-55}, {16,570,-55}, {16,603,-50},
+ {16,604,-50}, {16,609,-50}, {16,615,-50}, {16,624,-50},
+ {16,658,-95}, {16,668,-100}, {16,686,-70}, {16,687,-70},
+ {16,692,-70}, {16,3143,-74}, {16,3816,-30}, {16,3817,-30},
+ {16,3824,-30}, {16,3831,-30}, {16,3839,-30}, {16,3902,-74},
+ {16,3951,-74}, {16,4031,-74}, {16,4034,-74}, {16,4050,-74},
+ {27,64,-65}, {27,70,-65}, {27,203,-60}, {27,393,-50}, {27,396,-50},
+ {27,404,-50}, {27,414,-50}, {27,419,-50}, {27,449,-50},
+ {27,455,-50}, {27,474,-55}, {27,570,-55}, {27,603,-50},
+ {27,604,-50}, {27,609,-50}, {27,615,-50}, {27,624,-50},
+ {27,658,-95}, {27,668,-100}, {27,686,-70}, {27,687,-70},
+ {27,692,-70}, {27,3143,-74}, {27,3816,-30}, {27,3817,-30},
+ {27,3824,-30}, {27,3831,-30}, {27,3839,-30}, {27,3902,-74},
+ {27,3951,-74}, {27,4031,-74}, {27,4034,-74}, {27,4050,-74},
+ {33,64,-65}, {33,70,-65}, {33,203,-60}, {33,393,-50}, {33,396,-50},
+ {33,404,-50}, {33,414,-50}, {33,419,-50}, {33,449,-50},
+ {33,455,-50}, {33,474,-55}, {33,570,-55}, {33,603,-50},
+ {33,604,-50}, {33,609,-50}, {33,615,-50}, {33,624,-50},
+ {33,658,-95}, {33,668,-100}, {33,686,-70}, {33,687,-70},
+ {33,692,-70}, {33,3143,-74}, {33,3816,-30}, {33,3817,-30},
+ {33,3824,-30}, {33,3831,-30}, {33,3839,-30}, {33,3902,-74},
+ {33,3951,-74}, {33,4031,-74}, {33,4034,-74}, {33,4050,-74},
+ {43,64,-65}, {43,70,-65}, {43,203,-60}, {43,393,-50}, {43,396,-50},
+ {43,404,-50}, {43,414,-50}, {43,419,-50}, {43,449,-50},
+ {43,455,-50}, {43,474,-55}, {43,570,-55}, {43,603,-50},
+ {43,604,-50}, {43,609,-50}, {43,615,-50}, {43,624,-50},
+ {43,658,-95}, {43,668,-100}, {43,686,-70}, {43,687,-70},
+ {43,692,-70}, {43,3143,-74}, {43,3816,-30}, {43,3817,-30},
+ {43,3824,-30}, {43,3831,-30}, {43,3839,-30}, {43,3902,-74},
+ {43,3951,-74}, {43,4031,-74}, {43,4034,-74}, {43,4050,-74},
+ {48,64,-65}, {48,70,-65}, {48,203,-60}, {48,393,-50}, {48,396,-50},
+ {48,404,-50}, {48,414,-50}, {48,419,-50}, {48,449,-50},
+ {48,455,-50}, {48,474,-55}, {48,570,-55}, {48,603,-50},
+ {48,604,-50}, {48,609,-50}, {48,615,-50}, {48,624,-50},
+ {48,658,-95}, {48,668,-100}, {48,686,-70}, {48,687,-70},
+ {48,692,-70}, {48,3143,-74}, {48,3816,-30}, {48,3817,-30},
+ {48,3824,-30}, {48,3831,-30}, {48,3839,-30}, {48,3902,-74},
+ {48,3951,-74}, {48,4031,-74}, {48,4034,-74}, {48,4050,-74},
+ {51,0,-25}, {51,5,-25}, {51,16,-25}, {51,27,-25}, {51,33,-25},
+ {51,43,-25}, {51,48,-25}, {51,603,-10}, {51,604,-10}, {51,609,-10},
+ {51,615,-10}, {51,624,-10}, {93,0,-25}, {93,5,-25}, {93,16,-25},
+ {93,27,-25}, {93,33,-25}, {93,43,-25}, {93,48,-25}, {93,658,-50},
+ {93,668,-40}, {93,686,-50}, {93,687,-50}, {93,692,-50},
+ {192,0,-100}, {192,5,-100}, {192,16,-100}, {192,27,-100},
+ {192,33,-100}, {192,43,-100}, {192,48,-100}, {192,734,-95},
+ {192,736,-95}, {192,758,-95}, {192,775,-95}, {192,1030,-95},
+ {192,1111,-95}, {192,1173,-95}, {192,1409,-129}, {192,1630,-100},
+ {192,1631,-100}, {192,1645,-100}, {192,1655,-100}, {192,1662,-100},
+ {192,2132,-40}, {192,2133,-40}, {192,2140,-40}, {192,2196,-40},
+ {192,2207,-40}, {192,2794,-70}, {192,2795,-70}, {192,2809,-70},
+ {192,2819,-70}, {192,2826,-70}, {192,2899,-70}, {192,2907,-70},
+ {192,2995,-129}, {192,3148,-50}, {301,0,-25}, {301,5,-25},
+ {301,16,-25}, {301,27,-25}, {301,33,-25}, {301,43,-25},
+ {301,48,-25}, {301,734,-40}, {301,736,-40}, {301,758,-40},
+ {301,775,-40}, {301,1030,-40}, {301,1111,-40}, {301,1173,-40},
+ {301,1409,-10}, {301,1630,-40}, {301,1631,-40}, {301,1645,-40},
+ {301,1655,-40}, {301,1662,-40}, {301,2794,-40}, {301,2795,-40},
+ {301,2809,-40}, {301,2819,-40}, {301,2826,-40}, {301,2899,-40},
+ {301,2907,-40}, {301,2995,-10}, {301,3816,-40}, {301,3817,-40},
+ {301,3824,-40}, {301,3831,-40}, {301,3839,-40}, {309,393,-30},
+ {309,396,-30}, {309,404,-30}, {309,414,-30}, {309,419,-30},
+ {309,449,-30}, {309,455,-30}, {309,1630,-25}, {309,1631,-25},
+ {309,1645,-25}, {309,1655,-25}, {309,1662,-25}, {309,2794,-25},
+ {309,2795,-25}, {309,2809,-25}, {309,2819,-25}, {309,2826,-25},
+ {309,2899,-25}, {309,2907,-25}, {309,3816,-20}, {309,3817,-20},
+ {309,3824,-20}, {309,3831,-20}, {309,3839,-20}, {309,4031,-20},
+ {309,4034,-20}, {309,4050,-20}, {337,570,-18}, {337,658,-37},
+ {337,668,-37}, {337,686,-37}, {337,687,-37}, {337,692,-37},
+ {337,3143,-55}, {337,4031,-37}, {337,4034,-37}, {337,4050,-37},
+ {356,570,-18}, {356,658,-37}, {356,668,-37}, {356,686,-37},
+ {356,687,-37}, {356,692,-37}, {356,3143,-55}, {356,4031,-37},
+ {356,4034,-37}, {356,4050,-37}, {372,0,-30}, {372,5,-30},
+ {372,16,-30}, {372,27,-30}, {372,33,-30}, {372,43,-30},
+ {372,48,-30}, {390,0,-30}, {390,5,-30}, {390,16,-30}, {390,27,-30},
+ {390,33,-30}, {390,43,-30}, {390,48,-30}, {393,0,-40}, {393,5,-40},
+ {393,16,-40}, {393,27,-40}, {393,33,-40}, {393,43,-40},
+ {393,48,-40}, {393,570,-40}, {393,658,-50}, {393,668,-50},
+ {393,678,-40}, {393,686,-50}, {393,687,-50}, {393,692,-50},
+ {396,0,-40}, {396,5,-40}, {396,16,-40}, {396,27,-40}, {396,33,-40},
+ {396,43,-40}, {396,48,-40}, {396,570,-40}, {396,658,-50},
+ {396,668,-50}, {396,678,-40}, {396,686,-50}, {396,687,-50},
+ {396,692,-50}, {404,0,-40}, {404,5,-40}, {404,16,-40},
+ {404,27,-40}, {404,33,-40}, {404,43,-40}, {404,48,-40},
+ {404,570,-40}, {404,658,-50}, {404,668,-50}, {404,678,-40},
+ {404,686,-50}, {404,687,-50}, {404,692,-50}, {414,0,-40},
+ {414,5,-40}, {414,16,-40}, {414,27,-40}, {414,33,-40},
+ {414,43,-40}, {414,48,-40}, {414,570,-40}, {414,658,-50},
+ {414,668,-50}, {414,678,-40}, {414,686,-50}, {414,687,-50},
+ {414,692,-50}, {419,0,-40}, {419,5,-40}, {419,16,-40},
+ {419,27,-40}, {419,33,-40}, {419,43,-40}, {419,48,-40},
+ {419,570,-40}, {419,658,-50}, {419,668,-50}, {419,678,-40},
+ {419,686,-50}, {419,687,-50}, {419,692,-50}, {449,0,-40},
+ {449,5,-40}, {449,16,-40}, {449,27,-40}, {449,33,-40},
+ {449,43,-40}, {449,48,-40}, {449,570,-40}, {449,658,-50},
+ {449,668,-50}, {449,678,-40}, {449,686,-50}, {449,687,-50},
+ {449,692,-50}, {455,0,-40}, {455,5,-40}, {455,16,-40},
+ {455,27,-40}, {455,33,-40}, {455,43,-40}, {455,48,-40},
+ {455,570,-40}, {455,658,-50}, {455,668,-50}, {455,678,-40},
+ {455,686,-50}, {455,687,-50}, {455,692,-50}, {459,0,-85},
+ {459,5,-85}, {459,16,-85}, {459,27,-85}, {459,33,-85},
+ {459,43,-85}, {459,48,-85}, {459,734,-40}, {459,736,-40},
+ {459,758,-40}, {459,775,-40}, {459,1030,-40}, {459,1111,-40},
+ {459,1173,-40}, {459,1409,-129}, {459,1630,-50}, {459,1631,-50},
+ {459,1645,-50}, {459,1655,-50}, {459,1662,-50}, {459,2794,-55},
+ {459,2795,-55}, {459,2809,-55}, {459,2819,-55}, {459,2826,-55},
+ {459,2899,-55}, {459,2907,-55}, {459,2995,-129}, {474,603,-10},
+ {474,604,-10}, {474,609,-10}, {474,615,-10}, {474,624,-10},
+ {478,393,-40}, {478,396,-40}, {478,404,-40}, {478,414,-40},
+ {478,419,-40}, {478,449,-40}, {478,455,-40}, {478,570,-30},
+ {478,603,-40}, {478,604,-40}, {478,609,-40}, {478,615,-40},
+ {478,624,-40}, {478,658,-18}, {478,668,-18}, {478,686,-18},
+ {478,687,-18}, {478,692,-18}, {570,0,-55}, {570,5,-55},
+ {570,16,-55}, {570,27,-55}, {570,33,-55}, {570,43,-55},
+ {570,48,-55}, {570,393,-18}, {570,396,-18}, {570,404,-18},
+ {570,414,-18}, {570,419,-18}, {570,449,-18}, {570,455,-18},
+ {570,734,-92}, {570,736,-92}, {570,758,-92}, {570,775,-92},
+ {570,1030,-92}, {570,1111,-92}, {570,1173,-92}, {570,1402,-74},
+ {570,1409,-92}, {570,1630,-92}, {570,1631,-92}, {570,1645,-92},
+ {570,1655,-52}, {570,1662,-52}, {570,2126,-92}, {570,2132,-37},
+ {570,2133,-37}, {570,2794,-95}, {570,2795,-95}, {570,2809,-95},
+ {570,2819,-95}, {570,2826,-95}, {570,2899,-95}, {570,2907,-95},
+ {570,2995,-92}, {570,3148,-37}, {570,3351,-74}, {570,3816,-37},
+ {570,3817,-37}, {570,3824,-37}, {570,3831,-37}, {570,3839,-37},
+ {570,3951,-37}, {570,4031,-37}, {570,4034,-37}, {570,4050,-37},
+ {603,0,-45}, {603,5,-45}, {603,16,-45}, {603,27,-45}, {603,33,-45},
+ {603,43,-45}, {603,48,-45}, {604,0,-45}, {604,5,-45}, {604,16,-45},
+ {604,27,-45}, {604,33,-45}, {604,43,-45}, {604,48,-45},
+ {609,0,-45}, {609,5,-45}, {609,16,-45}, {609,27,-45}, {609,33,-45},
+ {609,43,-45}, {609,48,-45}, {615,0,-45}, {615,5,-45}, {615,16,-45},
+ {615,27,-45}, {615,33,-45}, {615,43,-45}, {615,48,-45},
+ {624,0,-45}, {624,5,-45}, {624,16,-45}, {624,27,-45}, {624,33,-45},
+ {624,43,-45}, {624,48,-45}, {658,0,-85}, {658,5,-85}, {658,16,-85},
+ {658,27,-85}, {658,33,-85}, {658,43,-85}, {658,48,-85},
+ {658,203,-10}, {658,393,-30}, {658,396,-30}, {658,404,-30},
+ {658,414,-30}, {658,419,-30}, {658,449,-30}, {658,455,-30},
+ {658,734,-111}, {658,736,-111}, {658,758,-111}, {658,775,-111},
+ {658,1030,-111}, {658,1111,-111}, {658,1173,-111}, {658,1402,-74},
+ {658,1409,-129}, {658,1630,-111}, {658,1631,-111}, {658,1645,-111},
+ {658,1655,-71}, {658,1662,-71}, {658,2126,-70}, {658,2132,-55},
+ {658,2133,-55}, {658,2794,-111}, {658,2795,-111}, {658,2809,-111},
+ {658,2819,-111}, {658,2826,-111}, {658,2899,-111}, {658,2907,-111},
+ {658,2995,-129}, {658,3351,-74}, {658,3816,-55}, {658,3817,-55},
+ {658,3824,-55}, {658,3831,-55}, {658,3839,-55}, {668,0,-74},
+ {668,5,-74}, {668,16,-74}, {668,27,-74}, {668,33,-74},
+ {668,43,-74}, {668,48,-74}, {668,393,-15}, {668,396,-15},
+ {668,404,-15}, {668,414,-15}, {668,419,-15}, {668,449,-15},
+ {668,455,-15}, {668,734,-85}, {668,736,-85}, {668,758,-85},
+ {668,775,-85}, {668,1030,-85}, {668,1111,-85}, {668,1173,-85},
+ {668,1402,-55}, {668,1409,-74}, {668,1630,-90}, {668,1631,-90},
+ {668,1645,-90}, {668,1655,-50}, {668,1662,-50}, {668,2126,-50},
+ {668,2132,-37}, {668,2133,-37}, {668,2794,-80}, {668,2795,-80},
+ {668,2809,-80}, {668,2819,-80}, {668,2826,-80}, {668,2899,-80},
+ {668,2907,-80}, {668,2995,-74}, {668,3351,-55}, {668,3816,-55},
+ {668,3817,-55}, {668,3824,-55}, {668,3831,-55}, {668,3839,-55},
+ {668,4031,-55}, {668,4034,-55}, {668,4050,-55}, {686,0,-74},
+ {686,5,-74}, {686,16,-74}, {686,27,-74}, {686,33,-74},
+ {686,43,-74}, {686,48,-74}, {686,393,-25}, {686,396,-25},
+ {686,404,-25}, {686,414,-25}, {686,419,-25}, {686,449,-25},
+ {686,455,-25}, {686,734,-92}, {686,736,-92}, {686,758,-92},
+ {686,775,-92}, {686,1030,-92}, {686,1111,-92}, {686,1173,-92},
+ {686,1402,-92}, {686,1409,-92}, {686,1630,-111}, {686,1631,-111},
+ {686,1645,-71}, {686,1655,-71}, {686,1662,-71}, {686,2126,-92},
+ {686,2132,-55}, {686,2133,-55}, {686,2794,-111}, {686,2795,-111},
+ {686,2809,-111}, {686,2819,-111}, {686,2826,-111}, {686,2899,-111},
+ {686,2907,-111}, {686,2995,-74}, {686,3351,-92}, {686,3816,-92},
+ {686,3817,-92}, {686,3824,-92}, {686,3831,-92}, {686,3839,-92},
+ {687,0,-74}, {687,5,-74}, {687,16,-74}, {687,27,-74}, {687,33,-74},
+ {687,43,-74}, {687,48,-74}, {687,393,-25}, {687,396,-25},
+ {687,404,-25}, {687,414,-25}, {687,419,-25}, {687,449,-25},
+ {687,455,-25}, {687,734,-92}, {687,736,-92}, {687,758,-92},
+ {687,775,-92}, {687,1030,-92}, {687,1111,-92}, {687,1173,-92},
+ {687,1402,-92}, {687,1409,-92}, {687,1630,-111}, {687,1631,-111},
+ {687,1645,-71}, {687,1655,-71}, {687,1662,-71}, {687,2126,-92},
+ {687,2132,-55}, {687,2133,-55}, {687,2794,-111}, {687,2795,-111},
+ {687,2809,-111}, {687,2819,-111}, {687,2826,-111}, {687,2899,-111},
+ {687,2907,-111}, {687,2995,-74}, {687,3351,-92}, {687,3816,-92},
+ {687,3817,-92}, {687,3824,-92}, {687,3831,-92}, {687,3839,-92},
+ {692,0,-74}, {692,5,-74}, {692,16,-74}, {692,27,-74}, {692,33,-74},
+ {692,43,-74}, {692,48,-74}, {692,393,-25}, {692,396,-25},
+ {692,404,-25}, {692,414,-25}, {692,419,-25}, {692,449,-25},
+ {692,455,-25}, {692,734,-92}, {692,736,-92}, {692,758,-92},
+ {692,775,-92}, {692,1030,-92}, {692,1111,-92}, {692,1173,-92},
+ {692,1402,-92}, {692,1409,-92}, {692,1630,-111}, {692,1631,-111},
+ {692,1645,-71}, {692,1655,-71}, {692,1662,-71}, {692,2126,-92},
+ {692,2132,-55}, {692,2133,-55}, {692,2794,-111}, {692,2795,-111},
+ {692,2809,-111}, {692,2819,-111}, {692,2826,-111}, {692,2899,-111},
+ {692,2907,-111}, {692,2995,-74}, {692,3351,-92}, {692,3816,-92},
+ {692,3817,-92}, {692,3824,-92}, {692,3831,-92}, {692,3839,-92},
+ {1192,1192,-10}, {1192,2995,-40}, {1192,3816,-20}, {1192,3817,-20},
+ {1192,3824,-20}, {1192,3831,-20}, {1192,3839,-20}, {1312,1988,-10},
+ {1312,2302,-10}, {1332,1988,-10}, {1332,2302,-10}, {1409,3139,-95},
+ {1409,3143,-95}, {1630,1192,-10}, {1631,1192,-10}, {1645,1192,-10},
+ {1655,1192,-10}, {1662,1192,-10}, {1787,1409,-10}, {1787,1608,-30},
+ {1787,1630,-10}, {1787,1631,-10}, {1787,1787,-18}, {1787,2794,-10},
+ {1787,2795,-10}, {1787,2809,-10}, {1787,2826,-10}, {1787,2899,-10},
+ {1787,2907,-10}, {1787,2995,-10}, {1787,3143,55}, {2302,1630,-30},
+ {2302,1631,-30}, {2302,1645,-30}, {2302,1655,-30}, {2302,1662,-30},
+ {2302,2794,-10}, {2302,2795,-10}, {2302,2809,-10}, {2302,2819,-10},
+ {2302,2826,-10}, {2302,2899,-10}, {2302,2907,-10}, {2648,3902,-40},
+ {2769,3902,-40}, {2794,3902,-15}, {2794,3951,-25}, {2794,4020,-10},
+ {2794,4031,-10}, {2794,4034,-10}, {2794,4050,-10}, {2795,3902,-15},
+ {2795,3951,-25}, {2795,4020,-10}, {2795,4031,-10}, {2795,4034,-10},
+ {2795,4050,-10}, {2809,3902,-15}, {2809,3951,-25}, {2809,4020,-10},
+ {2809,4031,-10}, {2809,4034,-10}, {2809,4050,-10}, {2819,3902,-15},
+ {2819,3951,-25}, {2819,4020,-10}, {2819,4031,-10}, {2819,4034,-10},
+ {2819,4050,-10}, {2826,3902,-15}, {2826,3951,-25}, {2826,4020,-10},
+ {2826,4031,-10}, {2826,4034,-10}, {2826,4050,-10}, {2899,3902,-15},
+ {2899,3951,-25}, {2899,4020,-10}, {2899,4031,-10}, {2899,4034,-10},
+ {2899,4050,-10}, {2907,3902,-15}, {2907,3951,-25}, {2907,4020,-10},
+ {2907,4031,-10}, {2907,4034,-10}, {2907,4050,-10}, {2995,3139,-95},
+ {2995,3143,-95}, {3140,3140,-74}, {3143,1481,-15}, {3143,3143,-74},
+ {3143,3148,-15}, {3143,3279,-74}, {3143,3317,-74}, {3143,3498,-74},
+ {3143,3556,-37}, {3143,3902,-15}, {3148,1409,-65}, {3148,2995,-65},
+ {3498,0,-37}, {3498,5,-37}, {3498,16,-37}, {3498,27,-37},
+ {3498,33,-37}, {3498,43,-37}, {3498,48,-37}, {3498,658,-70},
+ {3498,668,-70}, {3498,686,-70}, {3498,687,-70}, {3498,692,-70},
+ {3902,1409,-37}, {3902,1630,-15}, {3902,1631,-15}, {3902,1645,-15},
+ {3902,1655,-15}, {3902,1662,-15}, {3902,2794,-15}, {3902,2795,-15},
+ {3902,2809,-15}, {3902,2819,-15}, {3902,2826,-15}, {3902,2899,-15},
+ {3902,2907,-15}, {3902,2995,-37}, {3951,734,-10}, {3951,736,-10},
+ {3951,758,-10}, {3951,775,-10}, {3951,1030,-10}, {3951,1111,-10},
+ {3951,1173,-10}, {3951,1409,-37}, {3951,1630,-10}, {3951,1631,-10},
+ {3951,1645,-10}, {3951,1655,-10}, {3951,1662,-10}, {3951,2794,-15},
+ {3951,2795,-15}, {3951,2809,-15}, {3951,2819,-15}, {3951,2826,-15},
+ {3951,2899,-15}, {3951,2907,-15}, {3951,2995,-37}, {4020,1630,-10},
+ {4020,1631,-10}, {4020,1645,-10}, {4020,1655,-10}, {4020,1662,-10},
+ {4031,1409,-37}, {4031,2995,-37}, {4034,1409,-37}, {4034,2995,-37},
+ {4050,1409,-37}, {4050,2995,-37},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature times_bolditalic_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair helvetica_kerns[] = {
+ {0,64,-30}, {0,70,-30}, {0,203,-30}, {0,393,-30}, {0,396,-30},
+ {0,404,-30}, {0,414,-30}, {0,419,-30}, {0,449,-30}, {0,455,-30},
+ {0,474,-30}, {0,570,-120}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-70}, {0,668,-50}, {0,686,-100},
+ {0,687,-100}, {0,692,-100}, {0,3816,-30}, {0,3817,-30},
+ {0,3824,-30}, {0,3831,-30}, {0,3839,-30}, {0,3902,-40},
+ {0,3951,-40}, {0,4031,-40}, {0,4034,-40}, {0,4050,-40}, {5,64,-30},
+ {5,70,-30}, {5,203,-30}, {5,393,-30}, {5,396,-30}, {5,404,-30},
+ {5,414,-30}, {5,419,-30}, {5,449,-30}, {5,455,-30}, {5,474,-30},
+ {5,570,-120}, {5,603,-50}, {5,604,-50}, {5,609,-50}, {5,615,-50},
+ {5,624,-50}, {5,658,-70}, {5,668,-50}, {5,686,-100}, {5,687,-100},
+ {5,692,-100}, {5,3816,-30}, {5,3817,-30}, {5,3824,-30},
+ {5,3831,-30}, {5,3839,-30}, {5,3902,-40}, {5,3951,-40},
+ {5,4031,-40}, {5,4034,-40}, {5,4050,-40}, {16,64,-30}, {16,70,-30},
+ {16,203,-30}, {16,393,-30}, {16,396,-30}, {16,404,-30},
+ {16,414,-30}, {16,419,-30}, {16,449,-30}, {16,455,-30},
+ {16,474,-30}, {16,570,-120}, {16,603,-50}, {16,604,-50},
+ {16,609,-50}, {16,615,-50}, {16,624,-50}, {16,658,-70},
+ {16,668,-50}, {16,686,-100}, {16,687,-100}, {16,692,-100},
+ {16,3816,-30}, {16,3817,-30}, {16,3824,-30}, {16,3831,-30},
+ {16,3839,-30}, {16,3902,-40}, {16,3951,-40}, {16,4031,-40},
+ {16,4034,-40}, {16,4050,-40}, {27,64,-30}, {27,70,-30},
+ {27,203,-30}, {27,393,-30}, {27,396,-30}, {27,404,-30},
+ {27,414,-30}, {27,419,-30}, {27,449,-30}, {27,455,-30},
+ {27,474,-30}, {27,570,-120}, {27,603,-50}, {27,604,-50},
+ {27,609,-50}, {27,615,-50}, {27,624,-50}, {27,658,-70},
+ {27,668,-50}, {27,686,-100}, {27,687,-100}, {27,692,-100},
+ {27,3816,-30}, {27,3817,-30}, {27,3824,-30}, {27,3831,-30},
+ {27,3839,-30}, {27,3902,-40}, {27,3951,-40}, {27,4031,-40},
+ {27,4034,-40}, {27,4050,-40}, {33,64,-30}, {33,70,-30},
+ {33,203,-30}, {33,393,-30}, {33,396,-30}, {33,404,-30},
+ {33,414,-30}, {33,419,-30}, {33,449,-30}, {33,455,-30},
+ {33,474,-30}, {33,570,-120}, {33,603,-50}, {33,604,-50},
+ {33,609,-50}, {33,615,-50}, {33,624,-50}, {33,658,-70},
+ {33,668,-50}, {33,686,-100}, {33,687,-100}, {33,692,-100},
+ {33,3816,-30}, {33,3817,-30}, {33,3824,-30}, {33,3831,-30},
+ {33,3839,-30}, {33,3902,-40}, {33,3951,-40}, {33,4031,-40},
+ {33,4034,-40}, {33,4050,-40}, {43,64,-30}, {43,70,-30},
+ {43,203,-30}, {43,393,-30}, {43,396,-30}, {43,404,-30},
+ {43,414,-30}, {43,419,-30}, {43,449,-30}, {43,455,-30},
+ {43,474,-30}, {43,570,-120}, {43,603,-50}, {43,604,-50},
+ {43,609,-50}, {43,615,-50}, {43,624,-50}, {43,658,-70},
+ {43,668,-50}, {43,686,-100}, {43,687,-100}, {43,692,-100},
+ {43,3816,-30}, {43,3817,-30}, {43,3824,-30}, {43,3831,-30},
+ {43,3839,-30}, {43,3902,-40}, {43,3951,-40}, {43,4031,-40},
+ {43,4034,-40}, {43,4050,-40}, {48,64,-30}, {48,70,-30},
+ {48,203,-30}, {48,393,-30}, {48,396,-30}, {48,404,-30},
+ {48,414,-30}, {48,419,-30}, {48,449,-30}, {48,455,-30},
+ {48,474,-30}, {48,570,-120}, {48,603,-50}, {48,604,-50},
+ {48,609,-50}, {48,615,-50}, {48,624,-50}, {48,658,-70},
+ {48,668,-50}, {48,686,-100}, {48,687,-100}, {48,692,-100},
+ {48,3816,-30}, {48,3817,-30}, {48,3824,-30}, {48,3831,-30},
+ {48,3839,-30}, {48,3902,-40}, {48,3951,-40}, {48,4031,-40},
+ {48,4034,-40}, {48,4050,-40}, {51,603,-10}, {51,604,-10},
+ {51,609,-10}, {51,615,-10}, {51,624,-10}, {51,1409,-20},
+ {51,2995,-20}, {64,1409,-30}, {64,2995,-30}, {70,1409,-30},
+ {70,2995,-30}, {93,0,-40}, {93,5,-40}, {93,16,-40}, {93,27,-40},
+ {93,33,-40}, {93,43,-40}, {93,48,-40}, {93,658,-70}, {93,668,-40},
+ {93,686,-90}, {93,687,-90}, {93,692,-90}, {93,1409,-70},
+ {93,2995,-70}, {192,0,-80}, {192,5,-80}, {192,16,-80},
+ {192,27,-80}, {192,33,-80}, {192,43,-80}, {192,48,-80},
+ {192,734,-50}, {192,736,-50}, {192,758,-50}, {192,775,-50},
+ {192,1030,-50}, {192,1111,-50}, {192,1173,-50}, {192,1409,-150},
+ {192,1630,-30}, {192,1631,-30}, {192,1645,-30}, {192,1655,-30},
+ {192,1662,-30}, {192,2794,-30}, {192,2795,-30}, {192,2809,-30},
+ {192,2819,-30}, {192,2826,-30}, {192,2899,-30}, {192,2907,-30},
+ {192,2995,-150}, {192,3148,-45}, {301,0,-20}, {301,5,-20},
+ {301,16,-20}, {301,27,-20}, {301,33,-20}, {301,43,-20},
+ {301,48,-20}, {301,734,-20}, {301,736,-20}, {301,758,-20},
+ {301,775,-20}, {301,1030,-20}, {301,1111,-20}, {301,1173,-20},
+ {301,1409,-30}, {301,2995,-30}, {301,3816,-20}, {301,3817,-20},
+ {301,3824,-20}, {301,3831,-20}, {301,3839,-20}, {309,393,-50},
+ {309,396,-50}, {309,404,-50}, {309,414,-50}, {309,419,-50},
+ {309,449,-50}, {309,455,-50}, {309,1630,-40}, {309,1631,-40},
+ {309,1645,-40}, {309,1655,-40}, {309,1662,-40}, {309,2794,-40},
+ {309,2795,-40}, {309,2809,-40}, {309,2819,-40}, {309,2826,-40},
+ {309,2899,-40}, {309,2907,-40}, {309,3816,-30}, {309,3817,-30},
+ {309,3824,-30}, {309,3831,-30}, {309,3839,-30}, {309,4031,-50},
+ {309,4034,-50}, {309,4050,-50}, {337,570,-110}, {337,658,-110},
+ {337,668,-70}, {337,686,-140}, {337,687,-140}, {337,692,-140},
+ {337,3139,-140}, {337,3143,-160}, {337,4031,-30}, {337,4034,-30},
+ {337,4050,-30}, {356,570,-110}, {356,658,-110}, {356,668,-70},
+ {356,686,-140}, {356,687,-140}, {356,692,-140}, {356,3139,-140},
+ {356,3143,-160}, {356,4031,-30}, {356,4034,-30}, {356,4050,-30},
+ {393,0,-20}, {393,5,-20}, {393,16,-20}, {393,27,-20}, {393,33,-20},
+ {393,43,-20}, {393,48,-20}, {393,570,-40}, {393,658,-50},
+ {393,668,-30}, {393,678,-60}, {393,686,-70}, {393,687,-70},
+ {393,692,-70}, {393,1409,-40}, {393,2995,-40}, {396,0,-20},
+ {396,5,-20}, {396,16,-20}, {396,27,-20}, {396,33,-20},
+ {396,43,-20}, {396,48,-20}, {396,570,-40}, {396,658,-50},
+ {396,668,-30}, {396,678,-60}, {396,686,-70}, {396,687,-70},
+ {396,692,-70}, {396,1409,-40}, {396,2995,-40}, {404,0,-20},
+ {404,5,-20}, {404,16,-20}, {404,27,-20}, {404,33,-20},
+ {404,43,-20}, {404,48,-20}, {404,570,-40}, {404,658,-50},
+ {404,668,-30}, {404,678,-60}, {404,686,-70}, {404,687,-70},
+ {404,692,-70}, {404,1409,-40}, {404,2995,-40}, {414,0,-20},
+ {414,5,-20}, {414,16,-20}, {414,27,-20}, {414,33,-20},
+ {414,43,-20}, {414,48,-20}, {414,570,-40}, {414,658,-50},
+ {414,668,-30}, {414,678,-60}, {414,686,-70}, {414,687,-70},
+ {414,692,-70}, {414,1409,-40}, {414,2995,-40}, {419,0,-20},
+ {419,5,-20}, {419,16,-20}, {419,27,-20}, {419,33,-20},
+ {419,43,-20}, {419,48,-20}, {419,570,-40}, {419,658,-50},
+ {419,668,-30}, {419,678,-60}, {419,686,-70}, {419,687,-70},
+ {419,692,-70}, {419,1409,-40}, {419,2995,-40}, {449,0,-20},
+ {449,5,-20}, {449,16,-20}, {449,27,-20}, {449,33,-20},
+ {449,43,-20}, {449,48,-20}, {449,570,-40}, {449,658,-50},
+ {449,668,-30}, {449,678,-60}, {449,686,-70}, {449,687,-70},
+ {449,692,-70}, {449,1409,-40}, {449,2995,-40}, {455,0,-20},
+ {455,5,-20}, {455,16,-20}, {455,27,-20}, {455,33,-20},
+ {455,43,-20}, {455,48,-20}, {455,570,-40}, {455,658,-50},
+ {455,668,-30}, {455,678,-60}, {455,686,-70}, {455,687,-70},
+ {455,692,-70}, {455,1409,-40}, {455,2995,-40}, {459,0,-120},
+ {459,5,-120}, {459,16,-120}, {459,27,-120}, {459,33,-120},
+ {459,43,-120}, {459,48,-120}, {459,734,-40}, {459,736,-40},
+ {459,758,-40}, {459,775,-40}, {459,1030,-40}, {459,1111,-40},
+ {459,1173,-40}, {459,1409,-180}, {459,1630,-50}, {459,1631,-50},
+ {459,1645,-50}, {459,1655,-50}, {459,1662,-50}, {459,2794,-50},
+ {459,2795,-50}, {459,2809,-50}, {459,2819,-50}, {459,2826,-50},
+ {459,2899,-50}, {459,2907,-50}, {459,2995,-180}, {474,603,-10},
+ {474,604,-10}, {474,609,-10}, {474,615,-10}, {474,624,-10},
+ {478,393,-20}, {478,396,-20}, {478,404,-20}, {478,414,-20},
+ {478,419,-20}, {478,449,-20}, {478,455,-20}, {478,570,-30},
+ {478,603,-40}, {478,604,-40}, {478,609,-40}, {478,615,-40},
+ {478,624,-40}, {478,658,-50}, {478,668,-30}, {478,686,-50},
+ {478,687,-50}, {478,692,-50}, {499,1409,-20}, {499,2995,-20},
+ {543,1409,-20}, {543,2995,-20}, {570,0,-120}, {570,5,-120},
+ {570,16,-120}, {570,27,-120}, {570,33,-120}, {570,43,-120},
+ {570,48,-120}, {570,393,-40}, {570,396,-40}, {570,404,-40},
+ {570,414,-40}, {570,419,-40}, {570,449,-40}, {570,455,-40},
+ {570,734,-120}, {570,736,-120}, {570,758,-120}, {570,775,-120},
+ {570,1030,-120}, {570,1111,-120}, {570,1173,-60}, {570,1402,-20},
+ {570,1409,-120}, {570,1630,-120}, {570,1631,-120}, {570,1645,-120},
+ {570,1655,-120}, {570,1662,-60}, {570,2126,-140}, {570,2794,-120},
+ {570,2795,-120}, {570,2809,-120}, {570,2819,-120}, {570,2826,-120},
+ {570,2899,-120}, {570,2907,-60}, {570,2995,-120}, {570,3148,-120},
+ {570,3351,-20}, {570,3816,-120}, {570,3817,-120}, {570,3824,-120},
+ {570,3831,-120}, {570,3839,-120}, {570,3951,-120}, {570,4031,-120},
+ {570,4034,-120}, {570,4050,-60}, {603,0,-40}, {603,5,-40},
+ {603,16,-40}, {603,27,-40}, {603,33,-40}, {603,43,-40},
+ {603,48,-40}, {603,1409,-40}, {603,2995,-40}, {604,0,-40},
+ {604,5,-40}, {604,16,-40}, {604,27,-40}, {604,33,-40},
+ {604,43,-40}, {604,48,-40}, {604,1409,-40}, {604,2995,-40},
+ {609,0,-40}, {609,5,-40}, {609,16,-40}, {609,27,-40}, {609,33,-40},
+ {609,43,-40}, {609,48,-40}, {609,1409,-40}, {609,2995,-40},
+ {615,0,-40}, {615,5,-40}, {615,16,-40}, {615,27,-40}, {615,33,-40},
+ {615,43,-40}, {615,48,-40}, {615,1409,-40}, {615,2995,-40},
+ {624,0,-40}, {624,5,-40}, {624,16,-40}, {624,27,-40}, {624,33,-40},
+ {624,43,-40}, {624,48,-40}, {624,1409,-40}, {624,2995,-40},
+ {658,0,-80}, {658,5,-80}, {658,16,-80}, {658,27,-80}, {658,33,-80},
+ {658,43,-80}, {658,48,-80}, {658,203,-40}, {658,393,-40},
+ {658,396,-40}, {658,404,-40}, {658,414,-40}, {658,419,-40},
+ {658,449,-40}, {658,455,-40}, {658,734,-70}, {658,736,-70},
+ {658,758,-70}, {658,775,-70}, {658,1030,-70}, {658,1111,-70},
+ {658,1173,-70}, {658,1402,-40}, {658,1409,-125}, {658,1630,-80},
+ {658,1631,-80}, {658,1645,-80}, {658,1655,-80}, {658,1662,-80},
+ {658,2126,-80}, {658,2794,-80}, {658,2795,-80}, {658,2809,-80},
+ {658,2819,-80}, {658,2826,-80}, {658,2899,-80}, {658,2907,-80},
+ {658,2995,-125}, {658,3351,-40}, {658,3816,-70}, {658,3817,-70},
+ {658,3824,-70}, {658,3831,-70}, {658,3839,-70}, {668,0,-50},
+ {668,5,-50}, {668,16,-50}, {668,27,-50}, {668,33,-50},
+ {668,43,-50}, {668,48,-50}, {668,393,-20}, {668,396,-20},
+ {668,404,-20}, {668,414,-20}, {668,419,-20}, {668,449,-20},
+ {668,455,-20}, {668,734,-40}, {668,736,-40}, {668,758,-40},
+ {668,775,-40}, {668,1030,-40}, {668,1111,-40}, {668,1173,-40},
+ {668,1409,-80}, {668,1630,-30}, {668,1631,-30}, {668,1645,-30},
+ {668,1655,-30}, {668,1662,-30}, {668,2126,-40}, {668,2794,-30},
+ {668,2795,-30}, {668,2809,-30}, {668,2819,-30}, {668,2826,-30},
+ {668,2899,-30}, {668,2907,-30}, {668,2995,-80}, {668,3816,-30},
+ {668,3817,-30}, {668,3824,-30}, {668,3831,-30}, {668,3839,-30},
+ {668,4031,-20}, {668,4034,-20}, {668,4050,-20}, {686,0,-110},
+ {686,5,-110}, {686,16,-110}, {686,27,-110}, {686,33,-110},
+ {686,43,-110}, {686,48,-110}, {686,393,-85}, {686,396,-85},
+ {686,404,-85}, {686,414,-85}, {686,419,-85}, {686,449,-85},
+ {686,455,-85}, {686,734,-140}, {686,736,-140}, {686,758,-140},
+ {686,775,-140}, {686,1030,-140}, {686,1111,-140}, {686,1173,-140},
+ {686,1402,-60}, {686,1409,-140}, {686,1630,-140}, {686,1631,-140},
+ {686,1645,-140}, {686,1655,-140}, {686,1662,-140}, {686,2126,-140},
+ {686,2132,-20}, {686,2133,-20}, {686,2794,-140}, {686,2795,-140},
+ {686,2809,-140}, {686,2819,-140}, {686,2826,-140}, {686,2899,-140},
+ {686,2907,-140}, {686,2995,-140}, {686,3351,-60}, {686,3816,-110},
+ {686,3817,-110}, {686,3824,-110}, {686,3831,-110}, {686,3839,-110},
+ {687,0,-110}, {687,5,-110}, {687,16,-110}, {687,27,-110},
+ {687,33,-110}, {687,43,-110}, {687,48,-110}, {687,393,-85},
+ {687,396,-85}, {687,404,-85}, {687,414,-85}, {687,419,-85},
+ {687,449,-85}, {687,455,-85}, {687,734,-140}, {687,736,-140},
+ {687,758,-140}, {687,775,-140}, {687,1030,-140}, {687,1111,-140},
+ {687,1173,-70}, {687,1402,-60}, {687,1409,-140}, {687,1630,-140},
+ {687,1631,-140}, {687,1645,-140}, {687,1655,-140}, {687,1662,-140},
+ {687,2126,-140}, {687,2132,-20}, {687,2133,-20}, {687,2794,-140},
+ {687,2795,-140}, {687,2809,-140}, {687,2819,-140}, {687,2826,-140},
+ {687,2899,-140}, {687,2907,-140}, {687,2995,-140}, {687,3351,-60},
+ {687,3816,-110}, {687,3817,-110}, {687,3824,-110}, {687,3831,-110},
+ {687,3839,-110}, {692,0,-110}, {692,5,-110}, {692,16,-110},
+ {692,27,-110}, {692,33,-110}, {692,43,-110}, {692,48,-110},
+ {692,393,-85}, {692,396,-85}, {692,404,-85}, {692,414,-85},
+ {692,419,-85}, {692,449,-85}, {692,455,-85}, {692,734,-140},
+ {692,736,-140}, {692,758,-140}, {692,775,-140}, {692,1030,-140},
+ {692,1111,-140}, {692,1173,-70}, {692,1402,-60}, {692,1409,-140},
+ {692,1630,-140}, {692,1631,-140}, {692,1645,-140}, {692,1655,-140},
+ {692,1662,-140}, {692,2126,-140}, {692,2132,-20}, {692,2133,-20},
+ {692,2794,-140}, {692,2795,-140}, {692,2809,-140}, {692,2819,-140},
+ {692,2826,-140}, {692,2899,-140}, {692,2907,-140}, {692,2995,-140},
+ {692,3351,-60}, {692,3816,-110}, {692,3817,-110}, {692,3824,-110},
+ {692,3831,-110}, {692,3839,-110}, {734,3902,-20}, {734,3951,-20},
+ {734,4031,-30}, {734,4034,-30}, {734,4050,-30}, {736,3902,-20},
+ {736,3951,-20}, {736,4031,-30}, {736,4034,-30}, {736,4050,-30},
+ {758,3902,-20}, {758,3951,-20}, {758,4031,-30}, {758,4034,-30},
+ {758,4050,-30}, {775,3902,-20}, {775,3951,-20}, {775,4031,-30},
+ {775,4034,-30}, {775,4050,-30}, {1030,3902,-20}, {1030,3951,-20},
+ {1030,4031,-30}, {1030,4034,-30}, {1030,4050,-30}, {1111,3902,-20},
+ {1111,3951,-20}, {1111,4031,-30}, {1111,4034,-30}, {1111,4050,-30},
+ {1173,3902,-20}, {1173,3951,-20}, {1173,4031,-30}, {1173,4034,-30},
+ {1173,4050,-30}, {1192,1192,-10}, {1192,1409,-40}, {1192,2416,-20},
+ {1192,2501,-20}, {1192,2995,-40}, {1192,3816,-20}, {1192,3817,-20},
+ {1192,3824,-20}, {1192,3831,-20}, {1192,3839,-20}, {1192,3902,-20},
+ {1192,4031,-20}, {1192,4034,-20}, {1192,4050,-20}, {1312,1409,-15},
+ {1312,2302,-20}, {1332,1409,-15}, {1332,2302,-20}, {1402,3498,-50},
+ {1409,3139,-100}, {1409,3143,-100}, {1630,1409,-15},
+ {1630,2995,-15}, {1630,3902,-30}, {1630,3951,-20}, {1630,4020,-30},
+ {1630,4031,-20}, {1630,4034,-20}, {1630,4050,-20}, {1631,1409,-15},
+ {1631,2995,-15}, {1631,3902,-30}, {1631,3951,-20}, {1631,4020,-30},
+ {1631,4031,-20}, {1631,4034,-20}, {1631,4050,-20}, {1645,1409,-15},
+ {1645,2995,-15}, {1645,3902,-30}, {1645,3951,-20}, {1645,4020,-30},
+ {1645,4031,-20}, {1645,4034,-20}, {1645,4050,-20}, {1655,1409,-15},
+ {1655,2995,-15}, {1655,3902,-30}, {1655,3951,-20}, {1655,4020,-30},
+ {1655,4031,-20}, {1655,4034,-20}, {1655,4050,-20}, {1662,1409,-15},
+ {1662,2995,-15}, {1662,3902,-30}, {1662,3951,-20}, {1662,4020,-30},
+ {1662,4031,-20}, {1662,4034,-20}, {1662,4050,-20}, {1787,734,-30},
+ {1787,736,-30}, {1787,758,-30}, {1787,775,-30}, {1787,1030,-30},
+ {1787,1111,-30}, {1787,1173,-30}, {1787,1409,-30}, {1787,1608,-28},
+ {1787,1630,-30}, {1787,1631,-30}, {1787,1645,-30}, {1787,1655,-30},
+ {1787,1662,-30}, {1787,2794,-30}, {1787,2795,-30}, {1787,2809,-30},
+ {1787,2819,-30}, {1787,2826,-30}, {1787,2899,-30}, {1787,2907,-30},
+ {1787,2995,-30}, {1787,3139,60}, {1787,3143,50}, {1886,3148,-10},
+ {1988,4031,-30}, {1988,4034,-30}, {1988,4050,-30}, {2302,1630,-20},
+ {2302,1631,-20}, {2302,1645,-20}, {2302,1655,-20}, {2302,1662,-20},
+ {2302,2794,-20}, {2302,2795,-20}, {2302,2809,-20}, {2302,2819,-20},
+ {2302,2826,-20}, {2302,2899,-20}, {2302,2907,-20}, {2511,3816,-10},
+ {2511,3817,-10}, {2511,3824,-10}, {2511,3831,-10}, {2511,3839,-10},
+ {2511,4031,-15}, {2511,4034,-15}, {2511,4050,-15}, {2648,3816,-10},
+ {2648,3817,-10}, {2648,3824,-10}, {2648,3831,-10}, {2648,3839,-10},
+ {2648,3902,-20}, {2648,4031,-15}, {2648,4034,-15}, {2648,4050,-15},
+ {2769,3816,-10}, {2769,3817,-10}, {2769,3824,-10}, {2769,3831,-10},
+ {2769,3839,-10}, {2769,3902,-20}, {2769,4031,-15}, {2769,4034,-15},
+ {2769,4050,-15}, {2794,1409,-40}, {2794,2995,-40}, {2794,3902,-15},
+ {2794,3951,-15}, {2794,4020,-30}, {2794,4031,-30}, {2794,4034,-30},
+ {2794,4050,-30}, {2795,1409,-40}, {2795,2995,-40}, {2795,3902,-15},
+ {2795,3951,-15}, {2795,4020,-30}, {2795,4031,-30}, {2795,4034,-30},
+ {2795,4050,-30}, {2809,1409,-40}, {2809,2995,-40}, {2809,3902,-15},
+ {2809,3951,-15}, {2809,4020,-30}, {2809,4031,-30}, {2809,4034,-30},
+ {2809,4050,-30}, {2819,1409,-40}, {2819,2995,-40}, {2819,3902,-15},
+ {2819,3951,-15}, {2819,4020,-30}, {2819,4031,-30}, {2819,4034,-30},
+ {2819,4050,-30}, {2826,1409,-40}, {2826,2995,-40}, {2826,3902,-15},
+ {2826,3951,-15}, {2826,4020,-30}, {2826,4031,-30}, {2826,4034,-30},
+ {2826,4050,-30}, {2899,734,-55}, {2899,736,-55}, {2899,758,-55},
+ {2899,775,-55}, {2899,1030,-55}, {2899,1111,-55}, {2899,1173,-55},
+ {2899,1192,-55}, {2899,1312,-55}, {2899,1332,-55}, {2899,1409,-95},
+ {2899,1481,-55}, {2899,1630,-55}, {2899,1631,-55}, {2899,1645,-55},
+ {2899,1655,-55}, {2899,1662,-55}, {2899,1787,-55}, {2899,1886,-55},
+ {2899,1988,-55}, {2899,2132,-55}, {2899,2133,-55}, {2899,2140,-55},
+ {2899,2196,-55}, {2899,2207,-55}, {2899,2274,-55}, {2899,2302,-55},
+ {2899,2416,-55}, {2899,2501,-55}, {2899,2511,-55}, {2899,2648,-55},
+ {2899,2769,-55}, {2899,2794,-55}, {2899,2795,-55}, {2899,2809,-55},
+ {2899,2819,-55}, {2899,2826,-55}, {2899,2899,-55}, {2899,2907,-55},
+ {2899,2921,-55}, {2899,2995,-95}, {2899,3083,-55}, {2899,3148,-55},
+ {2899,3279,-55}, {2899,3317,-55}, {2899,3556,-55}, {2899,3816,-55},
+ {2899,3817,-55}, {2899,3824,-55}, {2899,3831,-55}, {2899,3839,-55},
+ {2899,3902,-70}, {2899,3951,-70}, {2899,4020,-85}, {2899,4031,-70},
+ {2899,4034,-70}, {2899,4050,-70}, {2899,4132,-55}, {2899,4153,-55},
+ {2907,1409,-40}, {2907,2995,-40}, {2907,3902,-15}, {2907,3951,-15},
+ {2907,4020,-30}, {2907,4031,-30}, {2907,4034,-30}, {2907,4050,-30},
+ {2921,1409,-35}, {2921,2995,-35}, {2921,4031,-30}, {2921,4034,-30},
+ {2921,4050,-30}, {2995,3139,-100}, {2995,3143,-100},
+ {2995,3498,-60}, {3139,3498,-40}, {3140,3140,-57}, {3143,1481,-50},
+ {3143,3143,-57}, {3143,3148,-50}, {3143,3279,-50}, {3143,3317,-50},
+ {3143,3498,-70}, {3148,734,-10}, {3148,736,-10}, {3148,758,-10},
+ {3148,775,-10}, {3148,1030,-10}, {3148,1111,-10}, {3148,1173,-10},
+ {3148,1402,30}, {3148,1409,-50}, {3148,2132,15}, {3148,2133,15},
+ {3148,2140,15}, {3148,2196,15}, {3148,2207,15}, {3148,2302,15},
+ {3148,2416,15}, {3148,2501,15}, {3148,2511,25}, {3148,2648,25},
+ {3148,2769,25}, {3148,2921,30}, {3148,2995,-50}, {3148,3351,30},
+ {3148,3556,40}, {3148,3816,15}, {3148,3817,15}, {3148,3824,15},
+ {3148,3831,15}, {3148,3839,15}, {3148,3902,30}, {3148,4031,30},
+ {3148,4034,30}, {3148,4050,30}, {3279,1409,-15}, {3279,2995,-15},
+ {3279,3951,-30}, {3317,1409,-15}, {3317,2995,-15}, {3317,3951,-30},
+ {3351,3498,-50}, {3498,570,-50}, {3498,658,-50}, {3498,668,-40},
+ {3498,686,-90}, {3498,687,-90}, {3498,692,-90}, {3498,3135,-30},
+ {3498,3140,-60}, {3902,734,-25}, {3902,736,-25}, {3902,758,-25},
+ {3902,775,-25}, {3902,1030,-25}, {3902,1111,-25}, {3902,1173,-25},
+ {3902,1409,-80}, {3902,1630,-25}, {3902,1631,-25}, {3902,1645,-25},
+ {3902,1655,-25}, {3902,1662,-25}, {3902,2794,-25}, {3902,2795,-25},
+ {3902,2809,-25}, {3902,2819,-25}, {3902,2826,-25}, {3902,2899,-25},
+ {3902,2907,-25}, {3902,2995,-80}, {3951,734,-15}, {3951,736,-15},
+ {3951,758,-15}, {3951,775,-15}, {3951,1030,-15}, {3951,1111,-15},
+ {3951,1173,-15}, {3951,1409,-60}, {3951,1630,-10}, {3951,1631,-10},
+ {3951,1645,-10}, {3951,1655,-10}, {3951,1662,-10}, {3951,2794,-10},
+ {3951,2795,-10}, {3951,2809,-10}, {3951,2819,-10}, {3951,2826,-10},
+ {3951,2899,-10}, {3951,2907,-10}, {3951,2995,-60}, {4020,1630,-30},
+ {4020,1631,-30}, {4020,1645,-30}, {4020,1655,-30}, {4020,1662,-30},
+ {4031,734,-20}, {4031,736,-20}, {4031,758,-20}, {4031,775,-20},
+ {4031,1030,-20}, {4031,1111,-20}, {4031,1173,-20},
+ {4031,1409,-100}, {4031,1630,-20}, {4031,1631,-20},
+ {4031,1645,-20}, {4031,1655,-20}, {4031,1662,-20}, {4031,2794,-20},
+ {4031,2795,-20}, {4031,2809,-20}, {4031,2819,-20}, {4031,2826,-20},
+ {4031,2899,-20}, {4031,2907,-20}, {4031,2995,-100}, {4034,734,-20},
+ {4034,736,-20}, {4034,758,-20}, {4034,775,-20}, {4034,1030,-20},
+ {4034,1111,-20}, {4034,1173,-20}, {4034,1409,-100},
+ {4034,1630,-20}, {4034,1631,-20}, {4034,1645,-20}, {4034,1655,-20},
+ {4034,1662,-20}, {4034,2794,-20}, {4034,2795,-20}, {4034,2809,-20},
+ {4034,2819,-20}, {4034,2826,-20}, {4034,2899,-20}, {4034,2907,-20},
+ {4034,2995,-100}, {4050,734,-20}, {4050,736,-20}, {4050,758,-20},
+ {4050,775,-20}, {4050,1030,-20}, {4050,1111,-20}, {4050,1173,-20},
+ {4050,1409,-100}, {4050,1630,-20}, {4050,1631,-20},
+ {4050,1645,-20}, {4050,1655,-20}, {4050,1662,-20}, {4050,2794,-20},
+ {4050,2795,-20}, {4050,2809,-20}, {4050,2819,-20}, {4050,2826,-20},
+ {4050,2899,-20}, {4050,2907,-20}, {4050,2995,-100},
+ {4132,1630,-15}, {4132,1631,-15}, {4132,1645,-15}, {4132,1655,-15},
+ {4132,1662,-15}, {4132,2794,-15}, {4132,2795,-15}, {4132,2809,-15},
+ {4132,2819,-15}, {4132,2826,-15}, {4132,2899,-15}, {4132,2907,-15},
+ {4153,1630,-15}, {4153,1631,-15}, {4153,1645,-15}, {4153,1655,-15},
+ {4153,1662,-15}, {4153,2794,-15}, {4153,2795,-15}, {4153,2809,-15},
+ {4153,2819,-15}, {4153,2826,-15}, {4153,2899,-15}, {4153,2907,-15},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature helvetica_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair helvetica_oblique_kerns[] = {
+ {0,64,-30}, {0,70,-30}, {0,203,-30}, {0,393,-30}, {0,396,-30},
+ {0,404,-30}, {0,414,-30}, {0,419,-30}, {0,449,-30}, {0,455,-30},
+ {0,474,-30}, {0,570,-120}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-70}, {0,668,-50}, {0,686,-100},
+ {0,687,-100}, {0,692,-100}, {0,3816,-30}, {0,3817,-30},
+ {0,3824,-30}, {0,3831,-30}, {0,3839,-30}, {0,3902,-40},
+ {0,3951,-40}, {0,4031,-40}, {0,4034,-40}, {0,4050,-40}, {5,64,-30},
+ {5,70,-30}, {5,203,-30}, {5,393,-30}, {5,396,-30}, {5,404,-30},
+ {5,414,-30}, {5,419,-30}, {5,449,-30}, {5,455,-30}, {5,474,-30},
+ {5,570,-120}, {5,603,-50}, {5,604,-50}, {5,609,-50}, {5,615,-50},
+ {5,624,-50}, {5,658,-70}, {5,668,-50}, {5,686,-100}, {5,687,-100},
+ {5,692,-100}, {5,3816,-30}, {5,3817,-30}, {5,3824,-30},
+ {5,3831,-30}, {5,3839,-30}, {5,3902,-40}, {5,3951,-40},
+ {5,4031,-40}, {5,4034,-40}, {5,4050,-40}, {16,64,-30}, {16,70,-30},
+ {16,203,-30}, {16,393,-30}, {16,396,-30}, {16,404,-30},
+ {16,414,-30}, {16,419,-30}, {16,449,-30}, {16,455,-30},
+ {16,474,-30}, {16,570,-120}, {16,603,-50}, {16,604,-50},
+ {16,609,-50}, {16,615,-50}, {16,624,-50}, {16,658,-70},
+ {16,668,-50}, {16,686,-100}, {16,687,-100}, {16,692,-100},
+ {16,3816,-30}, {16,3817,-30}, {16,3824,-30}, {16,3831,-30},
+ {16,3839,-30}, {16,3902,-40}, {16,3951,-40}, {16,4031,-40},
+ {16,4034,-40}, {16,4050,-40}, {27,64,-30}, {27,70,-30},
+ {27,203,-30}, {27,393,-30}, {27,396,-30}, {27,404,-30},
+ {27,414,-30}, {27,419,-30}, {27,449,-30}, {27,455,-30},
+ {27,474,-30}, {27,570,-120}, {27,603,-50}, {27,604,-50},
+ {27,609,-50}, {27,615,-50}, {27,624,-50}, {27,658,-70},
+ {27,668,-50}, {27,686,-100}, {27,687,-100}, {27,692,-100},
+ {27,3816,-30}, {27,3817,-30}, {27,3824,-30}, {27,3831,-30},
+ {27,3839,-30}, {27,3902,-40}, {27,3951,-40}, {27,4031,-40},
+ {27,4034,-40}, {27,4050,-40}, {33,64,-30}, {33,70,-30},
+ {33,203,-30}, {33,393,-30}, {33,396,-30}, {33,404,-30},
+ {33,414,-30}, {33,419,-30}, {33,449,-30}, {33,455,-30},
+ {33,474,-30}, {33,570,-120}, {33,603,-50}, {33,604,-50},
+ {33,609,-50}, {33,615,-50}, {33,624,-50}, {33,658,-70},
+ {33,668,-50}, {33,686,-100}, {33,687,-100}, {33,692,-100},
+ {33,3816,-30}, {33,3817,-30}, {33,3824,-30}, {33,3831,-30},
+ {33,3839,-30}, {33,3902,-40}, {33,3951,-40}, {33,4031,-40},
+ {33,4034,-40}, {33,4050,-40}, {43,64,-30}, {43,70,-30},
+ {43,203,-30}, {43,393,-30}, {43,396,-30}, {43,404,-30},
+ {43,414,-30}, {43,419,-30}, {43,449,-30}, {43,455,-30},
+ {43,474,-30}, {43,570,-120}, {43,603,-50}, {43,604,-50},
+ {43,609,-50}, {43,615,-50}, {43,624,-50}, {43,658,-70},
+ {43,668,-50}, {43,686,-100}, {43,687,-100}, {43,692,-100},
+ {43,3816,-30}, {43,3817,-30}, {43,3824,-30}, {43,3831,-30},
+ {43,3839,-30}, {43,3902,-40}, {43,3951,-40}, {43,4031,-40},
+ {43,4034,-40}, {43,4050,-40}, {48,64,-30}, {48,70,-30},
+ {48,203,-30}, {48,393,-30}, {48,396,-30}, {48,404,-30},
+ {48,414,-30}, {48,419,-30}, {48,449,-30}, {48,455,-30},
+ {48,474,-30}, {48,570,-120}, {48,603,-50}, {48,604,-50},
+ {48,609,-50}, {48,615,-50}, {48,624,-50}, {48,658,-70},
+ {48,668,-50}, {48,686,-100}, {48,687,-100}, {48,692,-100},
+ {48,3816,-30}, {48,3817,-30}, {48,3824,-30}, {48,3831,-30},
+ {48,3839,-30}, {48,3902,-40}, {48,3951,-40}, {48,4031,-40},
+ {48,4034,-40}, {48,4050,-40}, {51,603,-10}, {51,604,-10},
+ {51,609,-10}, {51,615,-10}, {51,624,-10}, {51,1409,-20},
+ {51,2995,-20}, {64,1409,-30}, {64,2995,-30}, {70,1409,-30},
+ {70,2995,-30}, {93,0,-40}, {93,5,-40}, {93,16,-40}, {93,27,-40},
+ {93,33,-40}, {93,43,-40}, {93,48,-40}, {93,658,-70}, {93,668,-40},
+ {93,686,-90}, {93,687,-90}, {93,692,-90}, {93,1409,-70},
+ {93,2995,-70}, {192,0,-80}, {192,5,-80}, {192,16,-80},
+ {192,27,-80}, {192,33,-80}, {192,43,-80}, {192,48,-80},
+ {192,734,-50}, {192,736,-50}, {192,758,-50}, {192,775,-50},
+ {192,1030,-50}, {192,1111,-50}, {192,1173,-50}, {192,1409,-150},
+ {192,1630,-30}, {192,1631,-30}, {192,1645,-30}, {192,1655,-30},
+ {192,1662,-30}, {192,2794,-30}, {192,2795,-30}, {192,2809,-30},
+ {192,2819,-30}, {192,2826,-30}, {192,2899,-30}, {192,2907,-30},
+ {192,2995,-150}, {192,3148,-45}, {301,0,-20}, {301,5,-20},
+ {301,16,-20}, {301,27,-20}, {301,33,-20}, {301,43,-20},
+ {301,48,-20}, {301,734,-20}, {301,736,-20}, {301,758,-20},
+ {301,775,-20}, {301,1030,-20}, {301,1111,-20}, {301,1173,-20},
+ {301,1409,-30}, {301,2995,-30}, {301,3816,-20}, {301,3817,-20},
+ {301,3824,-20}, {301,3831,-20}, {301,3839,-20}, {309,393,-50},
+ {309,396,-50}, {309,404,-50}, {309,414,-50}, {309,419,-50},
+ {309,449,-50}, {309,455,-50}, {309,1630,-40}, {309,1631,-40},
+ {309,1645,-40}, {309,1655,-40}, {309,1662,-40}, {309,2794,-40},
+ {309,2795,-40}, {309,2809,-40}, {309,2819,-40}, {309,2826,-40},
+ {309,2899,-40}, {309,2907,-40}, {309,3816,-30}, {309,3817,-30},
+ {309,3824,-30}, {309,3831,-30}, {309,3839,-30}, {309,4031,-50},
+ {309,4034,-50}, {309,4050,-50}, {337,570,-110}, {337,658,-110},
+ {337,668,-70}, {337,686,-140}, {337,687,-140}, {337,692,-140},
+ {337,3139,-140}, {337,3143,-160}, {337,4031,-30}, {337,4034,-30},
+ {337,4050,-30}, {356,570,-110}, {356,658,-110}, {356,668,-70},
+ {356,686,-140}, {356,687,-140}, {356,692,-140}, {356,3139,-140},
+ {356,3143,-160}, {356,4031,-30}, {356,4034,-30}, {356,4050,-30},
+ {393,0,-20}, {393,5,-20}, {393,16,-20}, {393,27,-20}, {393,33,-20},
+ {393,43,-20}, {393,48,-20}, {393,570,-40}, {393,658,-50},
+ {393,668,-30}, {393,678,-60}, {393,686,-70}, {393,687,-70},
+ {393,692,-70}, {393,1409,-40}, {393,2995,-40}, {396,0,-20},
+ {396,5,-20}, {396,16,-20}, {396,27,-20}, {396,33,-20},
+ {396,43,-20}, {396,48,-20}, {396,570,-40}, {396,658,-50},
+ {396,668,-30}, {396,678,-60}, {396,686,-70}, {396,687,-70},
+ {396,692,-70}, {396,1409,-40}, {396,2995,-40}, {404,0,-20},
+ {404,5,-20}, {404,16,-20}, {404,27,-20}, {404,33,-20},
+ {404,43,-20}, {404,48,-20}, {404,570,-40}, {404,658,-50},
+ {404,668,-30}, {404,678,-60}, {404,686,-70}, {404,687,-70},
+ {404,692,-70}, {404,1409,-40}, {404,2995,-40}, {414,0,-20},
+ {414,5,-20}, {414,16,-20}, {414,27,-20}, {414,33,-20},
+ {414,43,-20}, {414,48,-20}, {414,570,-40}, {414,658,-50},
+ {414,668,-30}, {414,678,-60}, {414,686,-70}, {414,687,-70},
+ {414,692,-70}, {414,1409,-40}, {414,2995,-40}, {419,0,-20},
+ {419,5,-20}, {419,16,-20}, {419,27,-20}, {419,33,-20},
+ {419,43,-20}, {419,48,-20}, {419,570,-40}, {419,658,-50},
+ {419,668,-30}, {419,678,-60}, {419,686,-70}, {419,687,-70},
+ {419,692,-70}, {419,1409,-40}, {419,2995,-40}, {449,0,-20},
+ {449,5,-20}, {449,16,-20}, {449,27,-20}, {449,33,-20},
+ {449,43,-20}, {449,48,-20}, {449,570,-40}, {449,658,-50},
+ {449,668,-30}, {449,678,-60}, {449,686,-70}, {449,687,-70},
+ {449,692,-70}, {449,1409,-40}, {449,2995,-40}, {455,0,-20},
+ {455,5,-20}, {455,16,-20}, {455,27,-20}, {455,33,-20},
+ {455,43,-20}, {455,48,-20}, {455,570,-40}, {455,658,-50},
+ {455,668,-30}, {455,678,-60}, {455,686,-70}, {455,687,-70},
+ {455,692,-70}, {455,1409,-40}, {455,2995,-40}, {459,0,-120},
+ {459,5,-120}, {459,16,-120}, {459,27,-120}, {459,33,-120},
+ {459,43,-120}, {459,48,-120}, {459,734,-40}, {459,736,-40},
+ {459,758,-40}, {459,775,-40}, {459,1030,-40}, {459,1111,-40},
+ {459,1173,-40}, {459,1409,-180}, {459,1630,-50}, {459,1631,-50},
+ {459,1645,-50}, {459,1655,-50}, {459,1662,-50}, {459,2794,-50},
+ {459,2795,-50}, {459,2809,-50}, {459,2819,-50}, {459,2826,-50},
+ {459,2899,-50}, {459,2907,-50}, {459,2995,-180}, {474,603,-10},
+ {474,604,-10}, {474,609,-10}, {474,615,-10}, {474,624,-10},
+ {478,393,-20}, {478,396,-20}, {478,404,-20}, {478,414,-20},
+ {478,419,-20}, {478,449,-20}, {478,455,-20}, {478,570,-30},
+ {478,603,-40}, {478,604,-40}, {478,609,-40}, {478,615,-40},
+ {478,624,-40}, {478,658,-50}, {478,668,-30}, {478,686,-50},
+ {478,687,-50}, {478,692,-50}, {499,1409,-20}, {499,2995,-20},
+ {543,1409,-20}, {543,2995,-20}, {570,0,-120}, {570,5,-120},
+ {570,16,-120}, {570,27,-120}, {570,33,-120}, {570,43,-120},
+ {570,48,-120}, {570,393,-40}, {570,396,-40}, {570,404,-40},
+ {570,414,-40}, {570,419,-40}, {570,449,-40}, {570,455,-40},
+ {570,734,-120}, {570,736,-120}, {570,758,-120}, {570,775,-120},
+ {570,1030,-120}, {570,1111,-120}, {570,1173,-60}, {570,1402,-20},
+ {570,1409,-120}, {570,1630,-120}, {570,1631,-120}, {570,1645,-120},
+ {570,1655,-120}, {570,1662,-60}, {570,2126,-140}, {570,2794,-120},
+ {570,2795,-120}, {570,2809,-120}, {570,2819,-120}, {570,2826,-120},
+ {570,2899,-120}, {570,2907,-60}, {570,2995,-120}, {570,3148,-120},
+ {570,3351,-20}, {570,3816,-120}, {570,3817,-120}, {570,3824,-120},
+ {570,3831,-120}, {570,3839,-120}, {570,3951,-120}, {570,4031,-120},
+ {570,4034,-120}, {570,4050,-60}, {603,0,-40}, {603,5,-40},
+ {603,16,-40}, {603,27,-40}, {603,33,-40}, {603,43,-40},
+ {603,48,-40}, {603,1409,-40}, {603,2995,-40}, {604,0,-40},
+ {604,5,-40}, {604,16,-40}, {604,27,-40}, {604,33,-40},
+ {604,43,-40}, {604,48,-40}, {604,1409,-40}, {604,2995,-40},
+ {609,0,-40}, {609,5,-40}, {609,16,-40}, {609,27,-40}, {609,33,-40},
+ {609,43,-40}, {609,48,-40}, {609,1409,-40}, {609,2995,-40},
+ {615,0,-40}, {615,5,-40}, {615,16,-40}, {615,27,-40}, {615,33,-40},
+ {615,43,-40}, {615,48,-40}, {615,1409,-40}, {615,2995,-40},
+ {624,0,-40}, {624,5,-40}, {624,16,-40}, {624,27,-40}, {624,33,-40},
+ {624,43,-40}, {624,48,-40}, {624,1409,-40}, {624,2995,-40},
+ {658,0,-80}, {658,5,-80}, {658,16,-80}, {658,27,-80}, {658,33,-80},
+ {658,43,-80}, {658,48,-80}, {658,203,-40}, {658,393,-40},
+ {658,396,-40}, {658,404,-40}, {658,414,-40}, {658,419,-40},
+ {658,449,-40}, {658,455,-40}, {658,734,-70}, {658,736,-70},
+ {658,758,-70}, {658,775,-70}, {658,1030,-70}, {658,1111,-70},
+ {658,1173,-70}, {658,1402,-40}, {658,1409,-125}, {658,1630,-80},
+ {658,1631,-80}, {658,1645,-80}, {658,1655,-80}, {658,1662,-80},
+ {658,2126,-80}, {658,2794,-80}, {658,2795,-80}, {658,2809,-80},
+ {658,2819,-80}, {658,2826,-80}, {658,2899,-80}, {658,2907,-80},
+ {658,2995,-125}, {658,3351,-40}, {658,3816,-70}, {658,3817,-70},
+ {658,3824,-70}, {658,3831,-70}, {658,3839,-70}, {668,0,-50},
+ {668,5,-50}, {668,16,-50}, {668,27,-50}, {668,33,-50},
+ {668,43,-50}, {668,48,-50}, {668,393,-20}, {668,396,-20},
+ {668,404,-20}, {668,414,-20}, {668,419,-20}, {668,449,-20},
+ {668,455,-20}, {668,734,-40}, {668,736,-40}, {668,758,-40},
+ {668,775,-40}, {668,1030,-40}, {668,1111,-40}, {668,1173,-40},
+ {668,1409,-80}, {668,1630,-30}, {668,1631,-30}, {668,1645,-30},
+ {668,1655,-30}, {668,1662,-30}, {668,2126,-40}, {668,2794,-30},
+ {668,2795,-30}, {668,2809,-30}, {668,2819,-30}, {668,2826,-30},
+ {668,2899,-30}, {668,2907,-30}, {668,2995,-80}, {668,3816,-30},
+ {668,3817,-30}, {668,3824,-30}, {668,3831,-30}, {668,3839,-30},
+ {668,4031,-20}, {668,4034,-20}, {668,4050,-20}, {686,0,-110},
+ {686,5,-110}, {686,16,-110}, {686,27,-110}, {686,33,-110},
+ {686,43,-110}, {686,48,-110}, {686,393,-85}, {686,396,-85},
+ {686,404,-85}, {686,414,-85}, {686,419,-85}, {686,449,-85},
+ {686,455,-85}, {686,734,-140}, {686,736,-140}, {686,758,-140},
+ {686,775,-140}, {686,1030,-140}, {686,1111,-140}, {686,1173,-140},
+ {686,1402,-60}, {686,1409,-140}, {686,1630,-140}, {686,1631,-140},
+ {686,1645,-140}, {686,1655,-140}, {686,1662,-140}, {686,2126,-140},
+ {686,2132,-20}, {686,2133,-20}, {686,2794,-140}, {686,2795,-140},
+ {686,2809,-140}, {686,2819,-140}, {686,2826,-140}, {686,2899,-140},
+ {686,2907,-140}, {686,2995,-140}, {686,3351,-60}, {686,3816,-110},
+ {686,3817,-110}, {686,3824,-110}, {686,3831,-110}, {686,3839,-110},
+ {687,0,-110}, {687,5,-110}, {687,16,-110}, {687,27,-110},
+ {687,33,-110}, {687,43,-110}, {687,48,-110}, {687,393,-85},
+ {687,396,-85}, {687,404,-85}, {687,414,-85}, {687,419,-85},
+ {687,449,-85}, {687,455,-85}, {687,734,-140}, {687,736,-140},
+ {687,758,-140}, {687,775,-140}, {687,1030,-140}, {687,1111,-140},
+ {687,1173,-70}, {687,1402,-60}, {687,1409,-140}, {687,1630,-140},
+ {687,1631,-140}, {687,1645,-140}, {687,1655,-140}, {687,1662,-140},
+ {687,2126,-140}, {687,2132,-20}, {687,2133,-20}, {687,2794,-140},
+ {687,2795,-140}, {687,2809,-140}, {687,2819,-140}, {687,2826,-140},
+ {687,2899,-140}, {687,2907,-140}, {687,2995,-140}, {687,3351,-60},
+ {687,3816,-110}, {687,3817,-110}, {687,3824,-110}, {687,3831,-110},
+ {687,3839,-110}, {692,0,-110}, {692,5,-110}, {692,16,-110},
+ {692,27,-110}, {692,33,-110}, {692,43,-110}, {692,48,-110},
+ {692,393,-85}, {692,396,-85}, {692,404,-85}, {692,414,-85},
+ {692,419,-85}, {692,449,-85}, {692,455,-85}, {692,734,-140},
+ {692,736,-140}, {692,758,-140}, {692,775,-140}, {692,1030,-140},
+ {692,1111,-140}, {692,1173,-70}, {692,1402,-60}, {692,1409,-140},
+ {692,1630,-140}, {692,1631,-140}, {692,1645,-140}, {692,1655,-140},
+ {692,1662,-140}, {692,2126,-140}, {692,2132,-20}, {692,2133,-20},
+ {692,2794,-140}, {692,2795,-140}, {692,2809,-140}, {692,2819,-140},
+ {692,2826,-140}, {692,2899,-140}, {692,2907,-140}, {692,2995,-140},
+ {692,3351,-60}, {692,3816,-110}, {692,3817,-110}, {692,3824,-110},
+ {692,3831,-110}, {692,3839,-110}, {734,3902,-20}, {734,3951,-20},
+ {734,4031,-30}, {734,4034,-30}, {734,4050,-30}, {736,3902,-20},
+ {736,3951,-20}, {736,4031,-30}, {736,4034,-30}, {736,4050,-30},
+ {758,3902,-20}, {758,3951,-20}, {758,4031,-30}, {758,4034,-30},
+ {758,4050,-30}, {775,3902,-20}, {775,3951,-20}, {775,4031,-30},
+ {775,4034,-30}, {775,4050,-30}, {1030,3902,-20}, {1030,3951,-20},
+ {1030,4031,-30}, {1030,4034,-30}, {1030,4050,-30}, {1111,3902,-20},
+ {1111,3951,-20}, {1111,4031,-30}, {1111,4034,-30}, {1111,4050,-30},
+ {1173,3902,-20}, {1173,3951,-20}, {1173,4031,-30}, {1173,4034,-30},
+ {1173,4050,-30}, {1192,1192,-10}, {1192,1409,-40}, {1192,2416,-20},
+ {1192,2501,-20}, {1192,2995,-40}, {1192,3816,-20}, {1192,3817,-20},
+ {1192,3824,-20}, {1192,3831,-20}, {1192,3839,-20}, {1192,3902,-20},
+ {1192,4031,-20}, {1192,4034,-20}, {1192,4050,-20}, {1312,1409,-15},
+ {1312,2302,-20}, {1332,1409,-15}, {1332,2302,-20}, {1402,3498,-50},
+ {1409,3139,-100}, {1409,3143,-100}, {1630,1409,-15},
+ {1630,2995,-15}, {1630,3902,-30}, {1630,3951,-20}, {1630,4020,-30},
+ {1630,4031,-20}, {1630,4034,-20}, {1630,4050,-20}, {1631,1409,-15},
+ {1631,2995,-15}, {1631,3902,-30}, {1631,3951,-20}, {1631,4020,-30},
+ {1631,4031,-20}, {1631,4034,-20}, {1631,4050,-20}, {1645,1409,-15},
+ {1645,2995,-15}, {1645,3902,-30}, {1645,3951,-20}, {1645,4020,-30},
+ {1645,4031,-20}, {1645,4034,-20}, {1645,4050,-20}, {1655,1409,-15},
+ {1655,2995,-15}, {1655,3902,-30}, {1655,3951,-20}, {1655,4020,-30},
+ {1655,4031,-20}, {1655,4034,-20}, {1655,4050,-20}, {1662,1409,-15},
+ {1662,2995,-15}, {1662,3902,-30}, {1662,3951,-20}, {1662,4020,-30},
+ {1662,4031,-20}, {1662,4034,-20}, {1662,4050,-20}, {1787,734,-30},
+ {1787,736,-30}, {1787,758,-30}, {1787,775,-30}, {1787,1030,-30},
+ {1787,1111,-30}, {1787,1173,-30}, {1787,1409,-30}, {1787,1608,-28},
+ {1787,1630,-30}, {1787,1631,-30}, {1787,1645,-30}, {1787,1655,-30},
+ {1787,1662,-30}, {1787,2794,-30}, {1787,2795,-30}, {1787,2809,-30},
+ {1787,2819,-30}, {1787,2826,-30}, {1787,2899,-30}, {1787,2907,-30},
+ {1787,2995,-30}, {1787,3139,60}, {1787,3143,50}, {1886,3148,-10},
+ {1988,4031,-30}, {1988,4034,-30}, {1988,4050,-30}, {2302,1630,-20},
+ {2302,1631,-20}, {2302,1645,-20}, {2302,1655,-20}, {2302,1662,-20},
+ {2302,2794,-20}, {2302,2795,-20}, {2302,2809,-20}, {2302,2819,-20},
+ {2302,2826,-20}, {2302,2899,-20}, {2302,2907,-20}, {2511,3816,-10},
+ {2511,3817,-10}, {2511,3824,-10}, {2511,3831,-10}, {2511,3839,-10},
+ {2511,4031,-15}, {2511,4034,-15}, {2511,4050,-15}, {2648,3816,-10},
+ {2648,3817,-10}, {2648,3824,-10}, {2648,3831,-10}, {2648,3839,-10},
+ {2648,3902,-20}, {2648,4031,-15}, {2648,4034,-15}, {2648,4050,-15},
+ {2769,3816,-10}, {2769,3817,-10}, {2769,3824,-10}, {2769,3831,-10},
+ {2769,3839,-10}, {2769,3902,-20}, {2769,4031,-15}, {2769,4034,-15},
+ {2769,4050,-15}, {2794,1409,-40}, {2794,2995,-40}, {2794,3902,-15},
+ {2794,3951,-15}, {2794,4020,-30}, {2794,4031,-30}, {2794,4034,-30},
+ {2794,4050,-30}, {2795,1409,-40}, {2795,2995,-40}, {2795,3902,-15},
+ {2795,3951,-15}, {2795,4020,-30}, {2795,4031,-30}, {2795,4034,-30},
+ {2795,4050,-30}, {2809,1409,-40}, {2809,2995,-40}, {2809,3902,-15},
+ {2809,3951,-15}, {2809,4020,-30}, {2809,4031,-30}, {2809,4034,-30},
+ {2809,4050,-30}, {2819,1409,-40}, {2819,2995,-40}, {2819,3902,-15},
+ {2819,3951,-15}, {2819,4020,-30}, {2819,4031,-30}, {2819,4034,-30},
+ {2819,4050,-30}, {2826,1409,-40}, {2826,2995,-40}, {2826,3902,-15},
+ {2826,3951,-15}, {2826,4020,-30}, {2826,4031,-30}, {2826,4034,-30},
+ {2826,4050,-30}, {2899,734,-55}, {2899,736,-55}, {2899,758,-55},
+ {2899,775,-55}, {2899,1030,-55}, {2899,1111,-55}, {2899,1173,-55},
+ {2899,1192,-55}, {2899,1312,-55}, {2899,1332,-55}, {2899,1409,-95},
+ {2899,1481,-55}, {2899,1630,-55}, {2899,1631,-55}, {2899,1645,-55},
+ {2899,1655,-55}, {2899,1662,-55}, {2899,1787,-55}, {2899,1886,-55},
+ {2899,1988,-55}, {2899,2132,-55}, {2899,2133,-55}, {2899,2140,-55},
+ {2899,2196,-55}, {2899,2207,-55}, {2899,2274,-55}, {2899,2302,-55},
+ {2899,2416,-55}, {2899,2501,-55}, {2899,2511,-55}, {2899,2648,-55},
+ {2899,2769,-55}, {2899,2794,-55}, {2899,2795,-55}, {2899,2809,-55},
+ {2899,2819,-55}, {2899,2826,-55}, {2899,2899,-55}, {2899,2907,-55},
+ {2899,2921,-55}, {2899,2995,-95}, {2899,3083,-55}, {2899,3148,-55},
+ {2899,3279,-55}, {2899,3317,-55}, {2899,3556,-55}, {2899,3816,-55},
+ {2899,3817,-55}, {2899,3824,-55}, {2899,3831,-55}, {2899,3839,-55},
+ {2899,3902,-70}, {2899,3951,-70}, {2899,4020,-85}, {2899,4031,-70},
+ {2899,4034,-70}, {2899,4050,-70}, {2899,4132,-55}, {2899,4153,-55},
+ {2907,1409,-40}, {2907,2995,-40}, {2907,3902,-15}, {2907,3951,-15},
+ {2907,4020,-30}, {2907,4031,-30}, {2907,4034,-30}, {2907,4050,-30},
+ {2921,1409,-35}, {2921,2995,-35}, {2921,4031,-30}, {2921,4034,-30},
+ {2921,4050,-30}, {2995,3139,-100}, {2995,3143,-100},
+ {2995,3498,-60}, {3139,3498,-40}, {3140,3140,-57}, {3143,1481,-50},
+ {3143,3143,-57}, {3143,3148,-50}, {3143,3279,-50}, {3143,3317,-50},
+ {3143,3498,-70}, {3148,734,-10}, {3148,736,-10}, {3148,758,-10},
+ {3148,775,-10}, {3148,1030,-10}, {3148,1111,-10}, {3148,1173,-10},
+ {3148,1402,30}, {3148,1409,-50}, {3148,2132,15}, {3148,2133,15},
+ {3148,2140,15}, {3148,2196,15}, {3148,2207,15}, {3148,2302,15},
+ {3148,2416,15}, {3148,2501,15}, {3148,2511,25}, {3148,2648,25},
+ {3148,2769,25}, {3148,2921,30}, {3148,2995,-50}, {3148,3351,30},
+ {3148,3556,40}, {3148,3816,15}, {3148,3817,15}, {3148,3824,15},
+ {3148,3831,15}, {3148,3839,15}, {3148,3902,30}, {3148,4031,30},
+ {3148,4034,30}, {3148,4050,30}, {3279,1409,-15}, {3279,2995,-15},
+ {3279,3951,-30}, {3317,1409,-15}, {3317,2995,-15}, {3317,3951,-30},
+ {3351,3498,-50}, {3498,570,-50}, {3498,658,-50}, {3498,668,-40},
+ {3498,686,-90}, {3498,687,-90}, {3498,692,-90}, {3498,3135,-30},
+ {3498,3140,-60}, {3902,734,-25}, {3902,736,-25}, {3902,758,-25},
+ {3902,775,-25}, {3902,1030,-25}, {3902,1111,-25}, {3902,1173,-25},
+ {3902,1409,-80}, {3902,1630,-25}, {3902,1631,-25}, {3902,1645,-25},
+ {3902,1655,-25}, {3902,1662,-25}, {3902,2794,-25}, {3902,2795,-25},
+ {3902,2809,-25}, {3902,2819,-25}, {3902,2826,-25}, {3902,2899,-25},
+ {3902,2907,-25}, {3902,2995,-80}, {3951,734,-15}, {3951,736,-15},
+ {3951,758,-15}, {3951,775,-15}, {3951,1030,-15}, {3951,1111,-15},
+ {3951,1173,-15}, {3951,1409,-60}, {3951,1630,-10}, {3951,1631,-10},
+ {3951,1645,-10}, {3951,1655,-10}, {3951,1662,-10}, {3951,2794,-10},
+ {3951,2795,-10}, {3951,2809,-10}, {3951,2819,-10}, {3951,2826,-10},
+ {3951,2899,-10}, {3951,2907,-10}, {3951,2995,-60}, {4020,1630,-30},
+ {4020,1631,-30}, {4020,1645,-30}, {4020,1655,-30}, {4020,1662,-30},
+ {4031,734,-20}, {4031,736,-20}, {4031,758,-20}, {4031,775,-20},
+ {4031,1030,-20}, {4031,1111,-20}, {4031,1173,-20},
+ {4031,1409,-100}, {4031,1630,-20}, {4031,1631,-20},
+ {4031,1645,-20}, {4031,1655,-20}, {4031,1662,-20}, {4031,2794,-20},
+ {4031,2795,-20}, {4031,2809,-20}, {4031,2819,-20}, {4031,2826,-20},
+ {4031,2899,-20}, {4031,2907,-20}, {4031,2995,-100}, {4034,734,-20},
+ {4034,736,-20}, {4034,758,-20}, {4034,775,-20}, {4034,1030,-20},
+ {4034,1111,-20}, {4034,1173,-20}, {4034,1409,-100},
+ {4034,1630,-20}, {4034,1631,-20}, {4034,1645,-20}, {4034,1655,-20},
+ {4034,1662,-20}, {4034,2794,-20}, {4034,2795,-20}, {4034,2809,-20},
+ {4034,2819,-20}, {4034,2826,-20}, {4034,2899,-20}, {4034,2907,-20},
+ {4034,2995,-100}, {4050,734,-20}, {4050,736,-20}, {4050,758,-20},
+ {4050,775,-20}, {4050,1030,-20}, {4050,1111,-20}, {4050,1173,-20},
+ {4050,1409,-100}, {4050,1630,-20}, {4050,1631,-20},
+ {4050,1645,-20}, {4050,1655,-20}, {4050,1662,-20}, {4050,2794,-20},
+ {4050,2795,-20}, {4050,2809,-20}, {4050,2819,-20}, {4050,2826,-20},
+ {4050,2899,-20}, {4050,2907,-20}, {4050,2995,-100},
+ {4132,1630,-15}, {4132,1631,-15}, {4132,1645,-15}, {4132,1655,-15},
+ {4132,1662,-15}, {4132,2794,-15}, {4132,2795,-15}, {4132,2809,-15},
+ {4132,2819,-15}, {4132,2826,-15}, {4132,2899,-15}, {4132,2907,-15},
+ {4153,1630,-15}, {4153,1631,-15}, {4153,1645,-15}, {4153,1655,-15},
+ {4153,1662,-15}, {4153,2794,-15}, {4153,2795,-15}, {4153,2809,-15},
+ {4153,2819,-15}, {4153,2826,-15}, {4153,2899,-15}, {4153,2907,-15},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature helvetica_oblique_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair helvetica_bold_kerns[] = {
+ {0,64,-40}, {0,70,-40}, {0,203,-50}, {0,393,-40}, {0,396,-40},
+ {0,404,-40}, {0,414,-40}, {0,419,-40}, {0,449,-40}, {0,455,-40},
+ {0,474,-40}, {0,570,-90}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-80}, {0,668,-60}, {0,686,-110},
+ {0,687,-110}, {0,692,-110}, {0,3816,-30}, {0,3817,-30},
+ {0,3824,-30}, {0,3831,-30}, {0,3839,-30}, {0,3902,-40},
+ {0,3951,-30}, {0,4031,-30}, {0,4034,-30}, {0,4050,-30}, {5,64,-40},
+ {5,70,-40}, {5,203,-50}, {5,393,-40}, {5,396,-40}, {5,404,-40},
+ {5,414,-40}, {5,419,-40}, {5,449,-40}, {5,455,-40}, {5,474,-40},
+ {5,570,-90}, {5,603,-50}, {5,604,-50}, {5,609,-50}, {5,615,-50},
+ {5,624,-50}, {5,658,-80}, {5,668,-60}, {5,686,-110}, {5,687,-110},
+ {5,692,-110}, {5,3816,-30}, {5,3817,-30}, {5,3824,-30},
+ {5,3831,-30}, {5,3839,-30}, {5,3902,-40}, {5,3951,-30},
+ {5,4031,-30}, {5,4034,-30}, {5,4050,-30}, {16,64,-40}, {16,70,-40},
+ {16,203,-50}, {16,393,-40}, {16,396,-40}, {16,404,-40},
+ {16,414,-40}, {16,419,-40}, {16,449,-40}, {16,455,-40},
+ {16,474,-40}, {16,570,-90}, {16,603,-50}, {16,604,-50},
+ {16,609,-50}, {16,615,-50}, {16,624,-50}, {16,658,-80},
+ {16,668,-60}, {16,686,-110}, {16,687,-110}, {16,692,-110},
+ {16,3816,-30}, {16,3817,-30}, {16,3824,-30}, {16,3831,-30},
+ {16,3839,-30}, {16,3902,-40}, {16,3951,-30}, {16,4031,-30},
+ {16,4034,-30}, {16,4050,-30}, {27,64,-40}, {27,70,-40},
+ {27,203,-50}, {27,393,-40}, {27,396,-40}, {27,404,-40},
+ {27,414,-40}, {27,419,-40}, {27,449,-40}, {27,455,-40},
+ {27,474,-40}, {27,570,-90}, {27,603,-50}, {27,604,-50},
+ {27,609,-50}, {27,615,-50}, {27,624,-50}, {27,658,-80},
+ {27,668,-60}, {27,686,-110}, {27,687,-110}, {27,692,-110},
+ {27,3816,-30}, {27,3817,-30}, {27,3824,-30}, {27,3831,-30},
+ {27,3839,-30}, {27,3902,-40}, {27,3951,-30}, {27,4031,-30},
+ {27,4034,-30}, {27,4050,-30}, {33,64,-40}, {33,70,-40},
+ {33,203,-50}, {33,393,-40}, {33,396,-40}, {33,404,-40},
+ {33,414,-40}, {33,419,-40}, {33,449,-40}, {33,455,-40},
+ {33,474,-40}, {33,570,-90}, {33,603,-50}, {33,604,-50},
+ {33,609,-50}, {33,615,-50}, {33,624,-50}, {33,658,-80},
+ {33,668,-60}, {33,686,-110}, {33,687,-110}, {33,692,-110},
+ {33,3816,-30}, {33,3817,-30}, {33,3824,-30}, {33,3831,-30},
+ {33,3839,-30}, {33,3902,-40}, {33,3951,-30}, {33,4031,-30},
+ {33,4034,-30}, {33,4050,-30}, {43,64,-40}, {43,70,-40},
+ {43,203,-50}, {43,393,-40}, {43,396,-40}, {43,404,-40},
+ {43,414,-40}, {43,419,-40}, {43,449,-40}, {43,455,-40},
+ {43,474,-40}, {43,570,-90}, {43,603,-50}, {43,604,-50},
+ {43,609,-50}, {43,615,-50}, {43,624,-50}, {43,658,-80},
+ {43,668,-60}, {43,686,-110}, {43,687,-110}, {43,692,-110},
+ {43,3816,-30}, {43,3817,-30}, {43,3824,-30}, {43,3831,-30},
+ {43,3839,-30}, {43,3902,-40}, {43,3951,-30}, {43,4031,-30},
+ {43,4034,-30}, {43,4050,-30}, {48,64,-40}, {48,70,-40},
+ {48,203,-50}, {48,393,-40}, {48,396,-40}, {48,404,-40},
+ {48,414,-40}, {48,419,-40}, {48,449,-40}, {48,455,-40},
+ {48,474,-40}, {48,570,-90}, {48,603,-50}, {48,604,-50},
+ {48,609,-50}, {48,615,-50}, {48,624,-50}, {48,658,-80},
+ {48,668,-60}, {48,686,-110}, {48,687,-110}, {48,692,-110},
+ {48,3816,-30}, {48,3817,-30}, {48,3824,-30}, {48,3831,-30},
+ {48,3839,-30}, {48,3902,-40}, {48,3951,-30}, {48,4031,-30},
+ {48,4034,-30}, {48,4050,-30}, {51,0,-30}, {51,5,-30}, {51,16,-30},
+ {51,27,-30}, {51,33,-30}, {51,43,-30}, {51,48,-30}, {51,603,-10},
+ {51,604,-10}, {51,609,-10}, {51,615,-10}, {51,624,-10}, {93,0,-40},
+ {93,5,-40}, {93,16,-40}, {93,27,-40}, {93,33,-40}, {93,43,-40},
+ {93,48,-40}, {93,658,-40}, {93,668,-40}, {93,686,-70},
+ {93,687,-70}, {93,692,-70}, {93,1409,-30}, {93,2995,-30},
+ {192,0,-80}, {192,5,-80}, {192,16,-80}, {192,27,-80}, {192,33,-80},
+ {192,43,-80}, {192,48,-80}, {192,734,-20}, {192,736,-20},
+ {192,758,-20}, {192,775,-20}, {192,1030,-20}, {192,1111,-20},
+ {192,1173,-20}, {192,1409,-100}, {192,2995,-100}, {301,0,-20},
+ {301,5,-20}, {301,16,-20}, {301,27,-20}, {301,33,-20},
+ {301,43,-20}, {301,48,-20}, {301,1409,-20}, {301,2995,-20},
+ {301,3816,-20}, {301,3817,-20}, {301,3824,-20}, {301,3831,-20},
+ {301,3839,-20}, {309,393,-30}, {309,396,-30}, {309,404,-30},
+ {309,414,-30}, {309,419,-30}, {309,449,-30}, {309,455,-30},
+ {309,1630,-15}, {309,1631,-15}, {309,1645,-15}, {309,1655,-15},
+ {309,1662,-15}, {309,2794,-35}, {309,2795,-35}, {309,2809,-35},
+ {309,2819,-35}, {309,2826,-35}, {309,2899,-35}, {309,2907,-35},
+ {309,3816,-30}, {309,3817,-30}, {309,3824,-30}, {309,3831,-30},
+ {309,3839,-30}, {309,4031,-40}, {309,4034,-40}, {309,4050,-40},
+ {337,570,-90}, {337,658,-110}, {337,668,-80}, {337,686,-120},
+ {337,687,-120}, {337,692,-120}, {337,3139,-140}, {337,3143,-140},
+ {337,4031,-30}, {337,4034,-30}, {337,4050,-30}, {356,570,-90},
+ {356,658,-110}, {356,668,-80}, {356,686,-120}, {356,687,-120},
+ {356,692,-120}, {356,3139,-140}, {356,3143,-140}, {356,4031,-30},
+ {356,4034,-30}, {356,4050,-30}, {393,0,-50}, {393,5,-50},
+ {393,16,-50}, {393,27,-50}, {393,33,-50}, {393,43,-50},
+ {393,48,-50}, {393,570,-40}, {393,658,-50}, {393,668,-50},
+ {393,678,-50}, {393,686,-70}, {393,687,-70}, {393,692,-70},
+ {393,1409,-40}, {393,2995,-40}, {396,0,-50}, {396,5,-50},
+ {396,16,-50}, {396,27,-50}, {396,33,-50}, {396,43,-50},
+ {396,48,-50}, {396,570,-40}, {396,658,-50}, {396,668,-50},
+ {396,678,-50}, {396,686,-70}, {396,687,-70}, {396,692,-70},
+ {396,1409,-40}, {396,2995,-40}, {404,0,-50}, {404,5,-50},
+ {404,16,-50}, {404,27,-50}, {404,33,-50}, {404,43,-50},
+ {404,48,-50}, {404,570,-40}, {404,658,-50}, {404,668,-50},
+ {404,678,-50}, {404,686,-70}, {404,687,-70}, {404,692,-70},
+ {404,1409,-40}, {404,2995,-40}, {414,0,-50}, {414,5,-50},
+ {414,16,-50}, {414,27,-50}, {414,33,-50}, {414,43,-50},
+ {414,48,-50}, {414,570,-40}, {414,658,-50}, {414,668,-50},
+ {414,678,-50}, {414,686,-70}, {414,687,-70}, {414,692,-70},
+ {414,1409,-40}, {414,2995,-40}, {419,0,-50}, {419,5,-50},
+ {419,16,-50}, {419,27,-50}, {419,33,-50}, {419,43,-50},
+ {419,48,-50}, {419,570,-40}, {419,658,-50}, {419,668,-50},
+ {419,678,-50}, {419,686,-70}, {419,687,-70}, {419,692,-70},
+ {419,1409,-40}, {419,2995,-40}, {449,0,-50}, {449,5,-50},
+ {449,16,-50}, {449,27,-50}, {449,33,-50}, {449,43,-50},
+ {449,48,-50}, {449,570,-40}, {449,658,-50}, {449,668,-50},
+ {449,678,-50}, {449,686,-70}, {449,687,-70}, {449,692,-70},
+ {449,1409,-40}, {449,2995,-40}, {455,0,-50}, {455,5,-50},
+ {455,16,-50}, {455,27,-50}, {455,33,-50}, {455,43,-50},
+ {455,48,-50}, {455,570,-40}, {455,658,-50}, {455,668,-50},
+ {455,678,-50}, {455,686,-70}, {455,687,-70}, {455,692,-70},
+ {455,1409,-40}, {455,2995,-40}, {459,0,-100}, {459,5,-100},
+ {459,16,-100}, {459,27,-100}, {459,33,-100}, {459,43,-100},
+ {459,48,-100}, {459,734,-30}, {459,736,-30}, {459,758,-30},
+ {459,775,-30}, {459,1030,-30}, {459,1111,-30}, {459,1173,-30},
+ {459,1409,-120}, {459,1630,-30}, {459,1631,-30}, {459,1645,-30},
+ {459,1655,-30}, {459,1662,-30}, {459,2794,-40}, {459,2795,-40},
+ {459,2809,-40}, {459,2819,-40}, {459,2826,-40}, {459,2899,-40},
+ {459,2907,-40}, {459,2995,-120}, {474,603,-10}, {474,604,-10},
+ {474,609,-10}, {474,615,-10}, {474,624,-10}, {474,1409,20},
+ {474,2995,20}, {478,393,-20}, {478,396,-20}, {478,404,-20},
+ {478,414,-20}, {478,419,-20}, {478,449,-20}, {478,455,-20},
+ {478,570,-20}, {478,603,-20}, {478,604,-20}, {478,609,-20},
+ {478,615,-20}, {478,624,-20}, {478,658,-50}, {478,668,-40},
+ {478,686,-50}, {478,687,-50}, {478,692,-50}, {570,0,-90},
+ {570,5,-90}, {570,16,-90}, {570,27,-90}, {570,33,-90},
+ {570,43,-90}, {570,48,-90}, {570,393,-40}, {570,396,-40},
+ {570,404,-40}, {570,414,-40}, {570,419,-40}, {570,449,-40},
+ {570,455,-40}, {570,734,-80}, {570,736,-80}, {570,758,-80},
+ {570,775,-80}, {570,1030,-80}, {570,1111,-80}, {570,1173,-80},
+ {570,1402,-40}, {570,1409,-80}, {570,1630,-60}, {570,1631,-60},
+ {570,1645,-60}, {570,1655,-60}, {570,1662,-60}, {570,2126,-120},
+ {570,2794,-80}, {570,2795,-80}, {570,2809,-80}, {570,2819,-80},
+ {570,2826,-80}, {570,2899,-80}, {570,2907,-80}, {570,2995,-80},
+ {570,3148,-80}, {570,3351,-40}, {570,3816,-90}, {570,3817,-90},
+ {570,3824,-90}, {570,3831,-90}, {570,3839,-90}, {570,3951,-60},
+ {570,4031,-60}, {570,4034,-60}, {570,4050,-60}, {603,0,-50},
+ {603,5,-50}, {603,16,-50}, {603,27,-50}, {603,33,-50},
+ {603,43,-50}, {603,48,-50}, {603,1409,-30}, {603,2995,-30},
+ {604,0,-50}, {604,5,-50}, {604,16,-50}, {604,27,-50}, {604,33,-50},
+ {604,43,-50}, {604,48,-50}, {604,1409,-30}, {604,2995,-30},
+ {609,0,-50}, {609,5,-50}, {609,16,-50}, {609,27,-50}, {609,33,-50},
+ {609,43,-50}, {609,48,-50}, {609,1409,-30}, {609,2995,-30},
+ {615,0,-50}, {615,5,-50}, {615,16,-50}, {615,27,-50}, {615,33,-50},
+ {615,43,-50}, {615,48,-50}, {615,1409,-30}, {615,2995,-30},
+ {624,0,-50}, {624,5,-50}, {624,16,-50}, {624,27,-50}, {624,33,-50},
+ {624,43,-50}, {624,48,-50}, {624,1409,-30}, {624,2995,-30},
+ {658,0,-80}, {658,5,-80}, {658,16,-80}, {658,27,-80}, {658,33,-80},
+ {658,43,-80}, {658,48,-80}, {658,203,-50}, {658,393,-50},
+ {658,396,-50}, {658,404,-50}, {658,414,-50}, {658,419,-50},
+ {658,449,-50}, {658,455,-50}, {658,734,-60}, {658,736,-60},
+ {658,758,-60}, {658,775,-60}, {658,1030,-60}, {658,1111,-60},
+ {658,1173,-60}, {658,1402,-40}, {658,1409,-120}, {658,1630,-50},
+ {658,1631,-50}, {658,1645,-50}, {658,1655,-50}, {658,1662,-50},
+ {658,2126,-80}, {658,2794,-90}, {658,2795,-90}, {658,2809,-90},
+ {658,2819,-90}, {658,2826,-90}, {658,2899,-90}, {658,2907,-90},
+ {658,2995,-120}, {658,3351,-40}, {658,3816,-60}, {658,3817,-60},
+ {658,3824,-60}, {658,3831,-60}, {658,3839,-60}, {668,0,-60},
+ {668,5,-60}, {668,16,-60}, {668,27,-60}, {668,33,-60},
+ {668,43,-60}, {668,48,-60}, {668,393,-20}, {668,396,-20},
+ {668,404,-20}, {668,414,-20}, {668,419,-20}, {668,449,-20},
+ {668,455,-20}, {668,734,-40}, {668,736,-40}, {668,758,-40},
+ {668,775,-40}, {668,1030,-40}, {668,1111,-40}, {668,1173,-40},
+ {668,1402,-10}, {668,1409,-80}, {668,1630,-35}, {668,1631,-35},
+ {668,1645,-35}, {668,1655,-35}, {668,1662,-35}, {668,2126,-40},
+ {668,2794,-60}, {668,2795,-60}, {668,2809,-60}, {668,2819,-60},
+ {668,2826,-60}, {668,2899,-60}, {668,2907,-60}, {668,2995,-80},
+ {668,3351,-10}, {668,3816,-45}, {668,3817,-45}, {668,3824,-45},
+ {668,3831,-45}, {668,3839,-45}, {668,4031,-20}, {668,4034,-20},
+ {668,4050,-20}, {686,0,-110}, {686,5,-110}, {686,16,-110},
+ {686,27,-110}, {686,33,-110}, {686,43,-110}, {686,48,-110},
+ {686,393,-70}, {686,396,-70}, {686,404,-70}, {686,414,-70},
+ {686,419,-70}, {686,449,-70}, {686,455,-70}, {686,734,-90},
+ {686,736,-90}, {686,758,-90}, {686,775,-90}, {686,1030,-90},
+ {686,1111,-90}, {686,1173,-90}, {686,1402,-50}, {686,1409,-100},
+ {686,1630,-80}, {686,1631,-80}, {686,1645,-80}, {686,1655,-80},
+ {686,1662,-80}, {686,2794,-100}, {686,2795,-100}, {686,2809,-100},
+ {686,2819,-100}, {686,2826,-100}, {686,2899,-100}, {686,2907,-100},
+ {686,2995,-100}, {686,3351,-50}, {686,3816,-100}, {686,3817,-100},
+ {686,3824,-100}, {686,3831,-100}, {686,3839,-100}, {687,0,-110},
+ {687,5,-110}, {687,16,-110}, {687,27,-110}, {687,33,-110},
+ {687,43,-110}, {687,48,-110}, {687,393,-70}, {687,396,-70},
+ {687,404,-70}, {687,414,-70}, {687,419,-70}, {687,449,-70},
+ {687,455,-70}, {687,734,-90}, {687,736,-90}, {687,758,-90},
+ {687,775,-90}, {687,1030,-90}, {687,1111,-90}, {687,1173,-90},
+ {687,1402,-50}, {687,1409,-100}, {687,1630,-80}, {687,1631,-80},
+ {687,1645,-80}, {687,1655,-80}, {687,1662,-80}, {687,2794,-100},
+ {687,2795,-100}, {687,2809,-100}, {687,2819,-100}, {687,2826,-100},
+ {687,2899,-100}, {687,2907,-100}, {687,2995,-100}, {687,3351,-50},
+ {687,3816,-100}, {687,3817,-100}, {687,3824,-100}, {687,3831,-100},
+ {687,3839,-100}, {692,0,-110}, {692,5,-110}, {692,16,-110},
+ {692,27,-110}, {692,33,-110}, {692,43,-110}, {692,48,-110},
+ {692,393,-70}, {692,396,-70}, {692,404,-70}, {692,414,-70},
+ {692,419,-70}, {692,449,-70}, {692,455,-70}, {692,734,-90},
+ {692,736,-90}, {692,758,-90}, {692,775,-90}, {692,1030,-90},
+ {692,1111,-90}, {692,1173,-90}, {692,1402,-50}, {692,1409,-100},
+ {692,1630,-80}, {692,1631,-80}, {692,1645,-80}, {692,1655,-80},
+ {692,1662,-80}, {692,2794,-100}, {692,2795,-100}, {692,2809,-100},
+ {692,2819,-100}, {692,2826,-100}, {692,2899,-100}, {692,2907,-100},
+ {692,2995,-100}, {692,3351,-50}, {692,3816,-100}, {692,3817,-100},
+ {692,3824,-100}, {692,3831,-100}, {692,3839,-100}, {734,1886,-10},
+ {734,3902,-15}, {734,3951,-15}, {734,4031,-20}, {734,4034,-20},
+ {734,4050,-20}, {736,1886,-10}, {736,3902,-15}, {736,3951,-15},
+ {736,4031,-20}, {736,4034,-20}, {736,4050,-20}, {758,1886,-10},
+ {758,3902,-15}, {758,3951,-15}, {758,4031,-20}, {758,4034,-20},
+ {758,4050,-20}, {775,1886,-10}, {775,3902,-15}, {775,3951,-15},
+ {775,4031,-20}, {775,4034,-20}, {775,4050,-20}, {1030,1886,-10},
+ {1030,3902,-15}, {1030,3951,-15}, {1030,4031,-20}, {1030,4034,-20},
+ {1030,4050,-20}, {1111,1886,-10}, {1111,3902,-15}, {1111,3951,-15},
+ {1111,4031,-20}, {1111,4034,-20}, {1111,4050,-20}, {1173,1886,-10},
+ {1173,3902,-15}, {1173,3951,-15}, {1173,4031,-20}, {1173,4034,-20},
+ {1173,4050,-20}, {1192,2416,-10}, {1192,2501,-10}, {1192,3816,-20},
+ {1192,3817,-20}, {1192,3824,-20}, {1192,3831,-20}, {1192,3839,-20},
+ {1192,3902,-20}, {1192,4031,-20}, {1192,4034,-20}, {1192,4050,-20},
+ {1312,1988,-10}, {1312,2302,-20}, {1312,2416,-20}, {1312,2501,-20},
+ {1312,4031,-10}, {1312,4034,-10}, {1312,4050,-10}, {1332,1988,-10},
+ {1332,2302,-20}, {1332,2416,-20}, {1332,2501,-20}, {1332,4031,-10},
+ {1332,4034,-10}, {1332,4050,-10}, {1402,3498,-40},
+ {1409,3139,-120}, {1409,3143,-120}, {1409,3498,-40},
+ {1481,1481,-10}, {1481,3902,-15}, {1481,3951,-15}, {1481,4031,-15},
+ {1481,4034,-15}, {1481,4050,-15}, {1630,1409,10}, {1630,2995,20},
+ {1630,3902,-15}, {1630,3951,-15}, {1630,4020,-15}, {1630,4031,-15},
+ {1630,4034,-15}, {1630,4050,-15}, {1631,1409,10}, {1631,2995,20},
+ {1631,3902,-15}, {1631,3951,-15}, {1631,4020,-15}, {1631,4031,-15},
+ {1631,4034,-15}, {1631,4050,-15}, {1645,1409,10}, {1645,2995,20},
+ {1645,3902,-15}, {1645,3951,-15}, {1645,4020,-15}, {1645,4031,-15},
+ {1645,4034,-15}, {1645,4050,-15}, {1655,1409,10}, {1655,2995,20},
+ {1655,3902,-15}, {1655,3951,-15}, {1655,4020,-15}, {1655,4031,-15},
+ {1655,4034,-15}, {1655,4050,-15}, {1662,1409,10}, {1662,2995,20},
+ {1662,3902,-15}, {1662,3951,-15}, {1662,4020,-15}, {1662,4031,-15},
+ {1662,4034,-15}, {1662,4050,-15}, {1787,1409,-10}, {1787,1630,-10},
+ {1787,1631,-10}, {1787,1645,-10}, {1787,1655,-10}, {1787,1662,-10},
+ {1787,2794,-20}, {1787,2795,-20}, {1787,2809,-20}, {1787,2819,-20},
+ {1787,2826,-20}, {1787,2899,-20}, {1787,2907,-20}, {1787,2995,-10},
+ {1787,3139,30}, {1787,3143,30}, {1886,1630,10}, {1886,1631,10},
+ {1886,1645,10}, {1886,1655,10}, {1886,1662,10}, {1886,1886,-10},
+ {1988,4031,-20}, {1988,4034,-20}, {1988,4050,-20}, {2302,2794,-15},
+ {2302,2795,-15}, {2302,2809,-15}, {2302,2819,-15}, {2302,2826,-15},
+ {2302,2899,-15}, {2302,2907,-15}, {2416,3951,-15}, {2416,4031,-15},
+ {2416,4034,-15}, {2416,4050,-15}, {2501,3951,-15}, {2501,4031,-15},
+ {2501,4034,-15}, {2501,4050,-15}, {2511,3816,-20}, {2511,3817,-20},
+ {2511,3824,-20}, {2511,3831,-20}, {2511,3839,-20}, {2511,4031,-30},
+ {2511,4034,-30}, {2511,4050,-30}, {2648,3816,-10}, {2648,3817,-10},
+ {2648,3824,-10}, {2648,3831,-10}, {2648,3839,-10}, {2648,3902,-40},
+ {2648,4031,-20}, {2648,4034,-20}, {2648,4050,-20}, {2769,3816,-10},
+ {2769,3817,-10}, {2769,3824,-10}, {2769,3831,-10}, {2769,3839,-10},
+ {2769,3902,-40}, {2769,4031,-20}, {2769,4034,-20}, {2769,4050,-20},
+ {2794,3902,-20}, {2794,3951,-15}, {2794,4020,-30}, {2794,4031,-20},
+ {2794,4034,-20}, {2794,4050,-20}, {2795,3902,-20}, {2795,3951,-15},
+ {2795,4020,-30}, {2795,4031,-20}, {2795,4034,-20}, {2795,4050,-20},
+ {2809,3902,-20}, {2809,3951,-15}, {2809,4020,-30}, {2809,4031,-20},
+ {2809,4034,-20}, {2809,4050,-20}, {2819,3902,-20}, {2819,3951,-15},
+ {2819,4020,-30}, {2819,4031,-20}, {2819,4034,-20}, {2819,4050,-20},
+ {2826,3902,-20}, {2826,3951,-15}, {2826,4020,-30}, {2826,4031,-20},
+ {2826,4034,-20}, {2826,4050,-20}, {2899,3902,-20}, {2899,3951,-15},
+ {2899,4020,-30}, {2899,4031,-20}, {2899,4034,-20}, {2899,4050,-20},
+ {2907,3902,-20}, {2907,3951,-15}, {2907,4020,-30}, {2907,4031,-20},
+ {2907,4034,-20}, {2907,4050,-20}, {2921,4031,-15}, {2921,4034,-15},
+ {2921,4050,-15}, {2995,3139,-120}, {2995,3143,-120},
+ {2995,3498,-40}, {3139,3498,-80}, {3140,3140,-46}, {3143,1481,-80},
+ {3143,2416,-20}, {3143,2501,-20}, {3143,3143,-46}, {3143,3148,-40},
+ {3143,3279,-60}, {3143,3317,-60}, {3143,3498,-80}, {3143,3902,-20},
+ {3148,1312,-20}, {3148,1332,-20}, {3148,1409,-60}, {3148,1481,-20},
+ {3148,1886,-15}, {3148,2126,-20}, {3148,2794,-20}, {3148,2795,-20},
+ {3148,2809,-20}, {3148,2819,-20}, {3148,2826,-20}, {3148,2899,-20},
+ {3148,2907,-20}, {3148,2995,-60}, {3148,3083,-20}, {3148,3279,-15},
+ {3148,3317,-15}, {3148,3556,20}, {3148,3902,10}, {3148,4031,10},
+ {3148,4034,10}, {3148,4050,10}, {3279,3951,-15}, {3317,3951,-15},
+ {3351,3498,-40}, {3498,570,-100}, {3498,658,-80}, {3498,668,-80},
+ {3498,686,-120}, {3498,687,-120}, {3498,692,-120}, {3498,3135,-80},
+ {3498,3140,-60}, {3902,734,-20}, {3902,736,-20}, {3902,758,-20},
+ {3902,775,-20}, {3902,1030,-20}, {3902,1111,-20}, {3902,1173,-20},
+ {3902,1409,-80}, {3902,2794,-30}, {3902,2795,-30}, {3902,2809,-30},
+ {3902,2819,-30}, {3902,2826,-30}, {3902,2899,-30}, {3902,2907,-30},
+ {3902,2995,-80}, {3951,1409,-40}, {3951,2794,-20}, {3951,2795,-20},
+ {3951,2809,-20}, {3951,2819,-20}, {3951,2826,-20}, {3951,2899,-20},
+ {3951,2907,-20}, {3951,2995,-40}, {4020,1630,-10}, {4020,1631,-10},
+ {4020,1645,-10}, {4020,1655,-10}, {4020,1662,-10}, {4031,734,-30},
+ {4031,736,-30}, {4031,758,-30}, {4031,775,-30}, {4031,1030,-30},
+ {4031,1111,-30}, {4031,1173,-30}, {4031,1409,-80}, {4031,1630,-10},
+ {4031,1631,-10}, {4031,1645,-10}, {4031,1655,-10}, {4031,1662,-10},
+ {4031,2794,-25}, {4031,2795,-25}, {4031,2809,-25}, {4031,2819,-25},
+ {4031,2826,-25}, {4031,2899,-25}, {4031,2907,-25}, {4031,2995,-80},
+ {4034,734,-30}, {4034,736,-30}, {4034,758,-30}, {4034,775,-30},
+ {4034,1030,-30}, {4034,1111,-30}, {4034,1173,-30}, {4034,1409,-80},
+ {4034,1630,-10}, {4034,1631,-10}, {4034,1645,-10}, {4034,1655,-10},
+ {4034,1662,-10}, {4034,2794,-25}, {4034,2795,-25}, {4034,2809,-25},
+ {4034,2819,-25}, {4034,2826,-25}, {4034,2899,-25}, {4034,2907,-25},
+ {4034,2995,-80}, {4050,734,-30}, {4050,736,-30}, {4050,758,-30},
+ {4050,775,-30}, {4050,1030,-30}, {4050,1111,-30}, {4050,1173,-30},
+ {4050,1409,-80}, {4050,1630,-10}, {4050,1631,-10}, {4050,1645,-10},
+ {4050,1655,-10}, {4050,1662,-10}, {4050,2794,-25}, {4050,2795,-25},
+ {4050,2809,-25}, {4050,2819,-25}, {4050,2826,-25}, {4050,2899,-25},
+ {4050,2907,-25}, {4050,2995,-80}, {4132,1630,10}, {4132,1631,10},
+ {4132,1645,10}, {4132,1655,10}, {4132,1662,10}, {4153,1630,10},
+ {4153,1631,10}, {4153,1645,10}, {4153,1655,10}, {4153,1662,10},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature helvetica_bold_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair helvetica_boldoblique_kerns[] = {
+ {0,64,-40}, {0,70,-40}, {0,203,-50}, {0,393,-40}, {0,396,-40},
+ {0,404,-40}, {0,414,-40}, {0,419,-40}, {0,449,-40}, {0,455,-40},
+ {0,474,-40}, {0,570,-90}, {0,603,-50}, {0,604,-50}, {0,609,-50},
+ {0,615,-50}, {0,624,-50}, {0,658,-80}, {0,668,-60}, {0,686,-110},
+ {0,687,-110}, {0,692,-110}, {0,3816,-30}, {0,3817,-30},
+ {0,3824,-30}, {0,3831,-30}, {0,3839,-30}, {0,3902,-40},
+ {0,3951,-30}, {0,4031,-30}, {0,4034,-30}, {0,4050,-30}, {5,64,-40},
+ {5,70,-40}, {5,203,-50}, {5,393,-40}, {5,396,-40}, {5,404,-40},
+ {5,414,-40}, {5,419,-40}, {5,449,-40}, {5,455,-40}, {5,474,-40},
+ {5,570,-90}, {5,603,-50}, {5,604,-50}, {5,609,-50}, {5,615,-50},
+ {5,624,-50}, {5,658,-80}, {5,668,-60}, {5,686,-110}, {5,687,-110},
+ {5,692,-110}, {5,3816,-30}, {5,3817,-30}, {5,3824,-30},
+ {5,3831,-30}, {5,3839,-30}, {5,3902,-40}, {5,3951,-30},
+ {5,4031,-30}, {5,4034,-30}, {5,4050,-30}, {16,64,-40}, {16,70,-40},
+ {16,203,-50}, {16,393,-40}, {16,396,-40}, {16,404,-40},
+ {16,414,-40}, {16,419,-40}, {16,449,-40}, {16,455,-40},
+ {16,474,-40}, {16,570,-90}, {16,603,-50}, {16,604,-50},
+ {16,609,-50}, {16,615,-50}, {16,624,-50}, {16,658,-80},
+ {16,668,-60}, {16,686,-110}, {16,687,-110}, {16,692,-110},
+ {16,3816,-30}, {16,3817,-30}, {16,3824,-30}, {16,3831,-30},
+ {16,3839,-30}, {16,3902,-40}, {16,3951,-30}, {16,4031,-30},
+ {16,4034,-30}, {16,4050,-30}, {27,64,-40}, {27,70,-40},
+ {27,203,-50}, {27,393,-40}, {27,396,-40}, {27,404,-40},
+ {27,414,-40}, {27,419,-40}, {27,449,-40}, {27,455,-40},
+ {27,474,-40}, {27,570,-90}, {27,603,-50}, {27,604,-50},
+ {27,609,-50}, {27,615,-50}, {27,624,-50}, {27,658,-80},
+ {27,668,-60}, {27,686,-110}, {27,687,-110}, {27,692,-110},
+ {27,3816,-30}, {27,3817,-30}, {27,3824,-30}, {27,3831,-30},
+ {27,3839,-30}, {27,3902,-40}, {27,3951,-30}, {27,4031,-30},
+ {27,4034,-30}, {27,4050,-30}, {33,64,-40}, {33,70,-40},
+ {33,203,-50}, {33,393,-40}, {33,396,-40}, {33,404,-40},
+ {33,414,-40}, {33,419,-40}, {33,449,-40}, {33,455,-40},
+ {33,474,-40}, {33,570,-90}, {33,603,-50}, {33,604,-50},
+ {33,609,-50}, {33,615,-50}, {33,624,-50}, {33,658,-80},
+ {33,668,-60}, {33,686,-110}, {33,687,-110}, {33,692,-110},
+ {33,3816,-30}, {33,3817,-30}, {33,3824,-30}, {33,3831,-30},
+ {33,3839,-30}, {33,3902,-40}, {33,3951,-30}, {33,4031,-30},
+ {33,4034,-30}, {33,4050,-30}, {43,64,-40}, {43,70,-40},
+ {43,203,-50}, {43,393,-40}, {43,396,-40}, {43,404,-40},
+ {43,414,-40}, {43,419,-40}, {43,449,-40}, {43,455,-40},
+ {43,474,-40}, {43,570,-90}, {43,603,-50}, {43,604,-50},
+ {43,609,-50}, {43,615,-50}, {43,624,-50}, {43,658,-80},
+ {43,668,-60}, {43,686,-110}, {43,687,-110}, {43,692,-110},
+ {43,3816,-30}, {43,3817,-30}, {43,3824,-30}, {43,3831,-30},
+ {43,3839,-30}, {43,3902,-40}, {43,3951,-30}, {43,4031,-30},
+ {43,4034,-30}, {43,4050,-30}, {48,64,-40}, {48,70,-40},
+ {48,203,-50}, {48,393,-40}, {48,396,-40}, {48,404,-40},
+ {48,414,-40}, {48,419,-40}, {48,449,-40}, {48,455,-40},
+ {48,474,-40}, {48,570,-90}, {48,603,-50}, {48,604,-50},
+ {48,609,-50}, {48,615,-50}, {48,624,-50}, {48,658,-80},
+ {48,668,-60}, {48,686,-110}, {48,687,-110}, {48,692,-110},
+ {48,3816,-30}, {48,3817,-30}, {48,3824,-30}, {48,3831,-30},
+ {48,3839,-30}, {48,3902,-40}, {48,3951,-30}, {48,4031,-30},
+ {48,4034,-30}, {48,4050,-30}, {51,0,-30}, {51,5,-30}, {51,16,-30},
+ {51,27,-30}, {51,33,-30}, {51,43,-30}, {51,48,-30}, {51,603,-10},
+ {51,604,-10}, {51,609,-10}, {51,615,-10}, {51,624,-10}, {93,0,-40},
+ {93,5,-40}, {93,16,-40}, {93,27,-40}, {93,33,-40}, {93,43,-40},
+ {93,48,-40}, {93,658,-40}, {93,668,-40}, {93,686,-70},
+ {93,687,-70}, {93,692,-70}, {93,1409,-30}, {93,2995,-30},
+ {192,0,-80}, {192,5,-80}, {192,16,-80}, {192,27,-80}, {192,33,-80},
+ {192,43,-80}, {192,48,-80}, {192,734,-20}, {192,736,-20},
+ {192,758,-20}, {192,775,-20}, {192,1030,-20}, {192,1111,-20},
+ {192,1173,-20}, {192,1409,-100}, {192,2995,-100}, {301,0,-20},
+ {301,5,-20}, {301,16,-20}, {301,27,-20}, {301,33,-20},
+ {301,43,-20}, {301,48,-20}, {301,1409,-20}, {301,2995,-20},
+ {301,3816,-20}, {301,3817,-20}, {301,3824,-20}, {301,3831,-20},
+ {301,3839,-20}, {309,393,-30}, {309,396,-30}, {309,404,-30},
+ {309,414,-30}, {309,419,-30}, {309,449,-30}, {309,455,-30},
+ {309,1630,-15}, {309,1631,-15}, {309,1645,-15}, {309,1655,-15},
+ {309,1662,-15}, {309,2794,-35}, {309,2795,-35}, {309,2809,-35},
+ {309,2819,-35}, {309,2826,-35}, {309,2899,-35}, {309,2907,-35},
+ {309,3816,-30}, {309,3817,-30}, {309,3824,-30}, {309,3831,-30},
+ {309,3839,-30}, {309,4031,-40}, {309,4034,-40}, {309,4050,-40},
+ {337,570,-90}, {337,658,-110}, {337,668,-80}, {337,686,-120},
+ {337,687,-120}, {337,692,-120}, {337,3139,-140}, {337,3143,-140},
+ {337,4031,-30}, {337,4034,-30}, {337,4050,-30}, {356,570,-90},
+ {356,658,-110}, {356,668,-80}, {356,686,-120}, {356,687,-120},
+ {356,692,-120}, {356,3139,-140}, {356,3143,-140}, {356,4031,-30},
+ {356,4034,-30}, {356,4050,-30}, {393,0,-50}, {393,5,-50},
+ {393,16,-50}, {393,27,-50}, {393,33,-50}, {393,43,-50},
+ {393,48,-50}, {393,570,-40}, {393,658,-50}, {393,668,-50},
+ {393,678,-50}, {393,686,-70}, {393,687,-70}, {393,692,-70},
+ {393,1409,-40}, {393,2995,-40}, {396,0,-50}, {396,5,-50},
+ {396,16,-50}, {396,27,-50}, {396,33,-50}, {396,43,-50},
+ {396,48,-50}, {396,570,-40}, {396,658,-50}, {396,668,-50},
+ {396,678,-50}, {396,686,-70}, {396,687,-70}, {396,692,-70},
+ {396,1409,-40}, {396,2995,-40}, {404,0,-50}, {404,5,-50},
+ {404,16,-50}, {404,27,-50}, {404,33,-50}, {404,43,-50},
+ {404,48,-50}, {404,570,-40}, {404,658,-50}, {404,668,-50},
+ {404,678,-50}, {404,686,-70}, {404,687,-70}, {404,692,-70},
+ {404,1409,-40}, {404,2995,-40}, {414,0,-50}, {414,5,-50},
+ {414,16,-50}, {414,27,-50}, {414,33,-50}, {414,43,-50},
+ {414,48,-50}, {414,570,-40}, {414,658,-50}, {414,668,-50},
+ {414,678,-50}, {414,686,-70}, {414,687,-70}, {414,692,-70},
+ {414,1409,-40}, {414,2995,-40}, {419,0,-50}, {419,5,-50},
+ {419,16,-50}, {419,27,-50}, {419,33,-50}, {419,43,-50},
+ {419,48,-50}, {419,570,-40}, {419,658,-50}, {419,668,-50},
+ {419,678,-50}, {419,686,-70}, {419,687,-70}, {419,692,-70},
+ {419,1409,-40}, {419,2995,-40}, {449,0,-50}, {449,5,-50},
+ {449,16,-50}, {449,27,-50}, {449,33,-50}, {449,43,-50},
+ {449,48,-50}, {449,570,-40}, {449,658,-50}, {449,668,-50},
+ {449,678,-50}, {449,686,-70}, {449,687,-70}, {449,692,-70},
+ {449,1409,-40}, {449,2995,-40}, {455,0,-50}, {455,5,-50},
+ {455,16,-50}, {455,27,-50}, {455,33,-50}, {455,43,-50},
+ {455,48,-50}, {455,570,-40}, {455,658,-50}, {455,668,-50},
+ {455,678,-50}, {455,686,-70}, {455,687,-70}, {455,692,-70},
+ {455,1409,-40}, {455,2995,-40}, {459,0,-100}, {459,5,-100},
+ {459,16,-100}, {459,27,-100}, {459,33,-100}, {459,43,-100},
+ {459,48,-100}, {459,734,-30}, {459,736,-30}, {459,758,-30},
+ {459,775,-30}, {459,1030,-30}, {459,1111,-30}, {459,1173,-30},
+ {459,1409,-120}, {459,1630,-30}, {459,1631,-30}, {459,1645,-30},
+ {459,1655,-30}, {459,1662,-30}, {459,2794,-40}, {459,2795,-40},
+ {459,2809,-40}, {459,2819,-40}, {459,2826,-40}, {459,2899,-40},
+ {459,2907,-40}, {459,2995,-120}, {474,603,-10}, {474,604,-10},
+ {474,609,-10}, {474,615,-10}, {474,624,-10}, {474,1409,20},
+ {474,2995,20}, {478,393,-20}, {478,396,-20}, {478,404,-20},
+ {478,414,-20}, {478,419,-20}, {478,449,-20}, {478,455,-20},
+ {478,570,-20}, {478,603,-20}, {478,604,-20}, {478,609,-20},
+ {478,615,-20}, {478,624,-20}, {478,658,-50}, {478,668,-40},
+ {478,686,-50}, {478,687,-50}, {478,692,-50}, {570,0,-90},
+ {570,5,-90}, {570,16,-90}, {570,27,-90}, {570,33,-90},
+ {570,43,-90}, {570,48,-90}, {570,393,-40}, {570,396,-40},
+ {570,404,-40}, {570,414,-40}, {570,419,-40}, {570,449,-40},
+ {570,455,-40}, {570,734,-80}, {570,736,-80}, {570,758,-80},
+ {570,775,-80}, {570,1030,-80}, {570,1111,-80}, {570,1173,-80},
+ {570,1402,-40}, {570,1409,-80}, {570,1630,-60}, {570,1631,-60},
+ {570,1645,-60}, {570,1655,-60}, {570,1662,-60}, {570,2126,-120},
+ {570,2794,-80}, {570,2795,-80}, {570,2809,-80}, {570,2819,-80},
+ {570,2826,-80}, {570,2899,-80}, {570,2907,-80}, {570,2995,-80},
+ {570,3148,-80}, {570,3351,-40}, {570,3816,-90}, {570,3817,-90},
+ {570,3824,-90}, {570,3831,-90}, {570,3839,-90}, {570,3951,-60},
+ {570,4031,-60}, {570,4034,-60}, {570,4050,-60}, {603,0,-50},
+ {603,5,-50}, {603,16,-50}, {603,27,-50}, {603,33,-50},
+ {603,43,-50}, {603,48,-50}, {603,1409,-30}, {603,2995,-30},
+ {604,0,-50}, {604,5,-50}, {604,16,-50}, {604,27,-50}, {604,33,-50},
+ {604,43,-50}, {604,48,-50}, {604,1409,-30}, {604,2995,-30},
+ {609,0,-50}, {609,5,-50}, {609,16,-50}, {609,27,-50}, {609,33,-50},
+ {609,43,-50}, {609,48,-50}, {609,1409,-30}, {609,2995,-30},
+ {615,0,-50}, {615,5,-50}, {615,16,-50}, {615,27,-50}, {615,33,-50},
+ {615,43,-50}, {615,48,-50}, {615,1409,-30}, {615,2995,-30},
+ {624,0,-50}, {624,5,-50}, {624,16,-50}, {624,27,-50}, {624,33,-50},
+ {624,43,-50}, {624,48,-50}, {624,1409,-30}, {624,2995,-30},
+ {658,0,-80}, {658,5,-80}, {658,16,-80}, {658,27,-80}, {658,33,-80},
+ {658,43,-80}, {658,48,-80}, {658,203,-50}, {658,393,-50},
+ {658,396,-50}, {658,404,-50}, {658,414,-50}, {658,419,-50},
+ {658,449,-50}, {658,455,-50}, {658,734,-60}, {658,736,-60},
+ {658,758,-60}, {658,775,-60}, {658,1030,-60}, {658,1111,-60},
+ {658,1173,-60}, {658,1402,-40}, {658,1409,-120}, {658,1630,-50},
+ {658,1631,-50}, {658,1645,-50}, {658,1655,-50}, {658,1662,-50},
+ {658,2126,-80}, {658,2794,-90}, {658,2795,-90}, {658,2809,-90},
+ {658,2819,-90}, {658,2826,-90}, {658,2899,-90}, {658,2907,-90},
+ {658,2995,-120}, {658,3351,-40}, {658,3816,-60}, {658,3817,-60},
+ {658,3824,-60}, {658,3831,-60}, {658,3839,-60}, {668,0,-60},
+ {668,5,-60}, {668,16,-60}, {668,27,-60}, {668,33,-60},
+ {668,43,-60}, {668,48,-60}, {668,393,-20}, {668,396,-20},
+ {668,404,-20}, {668,414,-20}, {668,419,-20}, {668,449,-20},
+ {668,455,-20}, {668,734,-40}, {668,736,-40}, {668,758,-40},
+ {668,775,-40}, {668,1030,-40}, {668,1111,-40}, {668,1173,-40},
+ {668,1402,-10}, {668,1409,-80}, {668,1630,-35}, {668,1631,-35},
+ {668,1645,-35}, {668,1655,-35}, {668,1662,-35}, {668,2126,-40},
+ {668,2794,-60}, {668,2795,-60}, {668,2809,-60}, {668,2819,-60},
+ {668,2826,-60}, {668,2899,-60}, {668,2907,-60}, {668,2995,-80},
+ {668,3351,-10}, {668,3816,-45}, {668,3817,-45}, {668,3824,-45},
+ {668,3831,-45}, {668,3839,-45}, {668,4031,-20}, {668,4034,-20},
+ {668,4050,-20}, {686,0,-110}, {686,5,-110}, {686,16,-110},
+ {686,27,-110}, {686,33,-110}, {686,43,-110}, {686,48,-110},
+ {686,393,-70}, {686,396,-70}, {686,404,-70}, {686,414,-70},
+ {686,419,-70}, {686,449,-70}, {686,455,-70}, {686,734,-90},
+ {686,736,-90}, {686,758,-90}, {686,775,-90}, {686,1030,-90},
+ {686,1111,-90}, {686,1173,-90}, {686,1402,-50}, {686,1409,-100},
+ {686,1630,-80}, {686,1631,-80}, {686,1645,-80}, {686,1655,-80},
+ {686,1662,-80}, {686,2794,-100}, {686,2795,-100}, {686,2809,-100},
+ {686,2819,-100}, {686,2826,-100}, {686,2899,-100}, {686,2907,-100},
+ {686,2995,-100}, {686,3351,-50}, {686,3816,-100}, {686,3817,-100},
+ {686,3824,-100}, {686,3831,-100}, {686,3839,-100}, {687,0,-110},
+ {687,5,-110}, {687,16,-110}, {687,27,-110}, {687,33,-110},
+ {687,43,-110}, {687,48,-110}, {687,393,-70}, {687,396,-70},
+ {687,404,-70}, {687,414,-70}, {687,419,-70}, {687,449,-70},
+ {687,455,-70}, {687,734,-90}, {687,736,-90}, {687,758,-90},
+ {687,775,-90}, {687,1030,-90}, {687,1111,-90}, {687,1173,-90},
+ {687,1402,-50}, {687,1409,-100}, {687,1630,-80}, {687,1631,-80},
+ {687,1645,-80}, {687,1655,-80}, {687,1662,-80}, {687,2794,-100},
+ {687,2795,-100}, {687,2809,-100}, {687,2819,-100}, {687,2826,-100},
+ {687,2899,-100}, {687,2907,-100}, {687,2995,-100}, {687,3351,-50},
+ {687,3816,-100}, {687,3817,-100}, {687,3824,-100}, {687,3831,-100},
+ {687,3839,-100}, {692,0,-110}, {692,5,-110}, {692,16,-110},
+ {692,27,-110}, {692,33,-110}, {692,43,-110}, {692,48,-110},
+ {692,393,-70}, {692,396,-70}, {692,404,-70}, {692,414,-70},
+ {692,419,-70}, {692,449,-70}, {692,455,-70}, {692,734,-90},
+ {692,736,-90}, {692,758,-90}, {692,775,-90}, {692,1030,-90},
+ {692,1111,-90}, {692,1173,-90}, {692,1402,-50}, {692,1409,-100},
+ {692,1630,-80}, {692,1631,-80}, {692,1645,-80}, {692,1655,-80},
+ {692,1662,-80}, {692,2794,-100}, {692,2795,-100}, {692,2809,-100},
+ {692,2819,-100}, {692,2826,-100}, {692,2899,-100}, {692,2907,-100},
+ {692,2995,-100}, {692,3351,-50}, {692,3816,-100}, {692,3817,-100},
+ {692,3824,-100}, {692,3831,-100}, {692,3839,-100}, {734,1886,-10},
+ {734,3902,-15}, {734,3951,-15}, {734,4031,-20}, {734,4034,-20},
+ {734,4050,-20}, {736,1886,-10}, {736,3902,-15}, {736,3951,-15},
+ {736,4031,-20}, {736,4034,-20}, {736,4050,-20}, {758,1886,-10},
+ {758,3902,-15}, {758,3951,-15}, {758,4031,-20}, {758,4034,-20},
+ {758,4050,-20}, {775,1886,-10}, {775,3902,-15}, {775,3951,-15},
+ {775,4031,-20}, {775,4034,-20}, {775,4050,-20}, {1030,1886,-10},
+ {1030,3902,-15}, {1030,3951,-15}, {1030,4031,-20}, {1030,4034,-20},
+ {1030,4050,-20}, {1111,1886,-10}, {1111,3902,-15}, {1111,3951,-15},
+ {1111,4031,-20}, {1111,4034,-20}, {1111,4050,-20}, {1173,1886,-10},
+ {1173,3902,-15}, {1173,3951,-15}, {1173,4031,-20}, {1173,4034,-20},
+ {1173,4050,-20}, {1192,2416,-10}, {1192,2501,-10}, {1192,3816,-20},
+ {1192,3817,-20}, {1192,3824,-20}, {1192,3831,-20}, {1192,3839,-20},
+ {1192,3902,-20}, {1192,4031,-20}, {1192,4034,-20}, {1192,4050,-20},
+ {1312,1988,-10}, {1312,2302,-20}, {1312,2416,-20}, {1312,2501,-20},
+ {1312,4031,-10}, {1312,4034,-10}, {1312,4050,-10}, {1332,1988,-10},
+ {1332,2302,-20}, {1332,2416,-20}, {1332,2501,-20}, {1332,4031,-10},
+ {1332,4034,-10}, {1332,4050,-10}, {1402,3498,-40},
+ {1409,3139,-120}, {1409,3143,-120}, {1409,3498,-40},
+ {1481,1481,-10}, {1481,3902,-15}, {1481,3951,-15}, {1481,4031,-15},
+ {1481,4034,-15}, {1481,4050,-15}, {1630,1409,10}, {1630,2995,20},
+ {1630,3902,-15}, {1630,3951,-15}, {1630,4020,-15}, {1630,4031,-15},
+ {1630,4034,-15}, {1630,4050,-15}, {1631,1409,10}, {1631,2995,20},
+ {1631,3902,-15}, {1631,3951,-15}, {1631,4020,-15}, {1631,4031,-15},
+ {1631,4034,-15}, {1631,4050,-15}, {1645,1409,10}, {1645,2995,20},
+ {1645,3902,-15}, {1645,3951,-15}, {1645,4020,-15}, {1645,4031,-15},
+ {1645,4034,-15}, {1645,4050,-15}, {1655,1409,10}, {1655,2995,20},
+ {1655,3902,-15}, {1655,3951,-15}, {1655,4020,-15}, {1655,4031,-15},
+ {1655,4034,-15}, {1655,4050,-15}, {1662,1409,10}, {1662,2995,20},
+ {1662,3902,-15}, {1662,3951,-15}, {1662,4020,-15}, {1662,4031,-15},
+ {1662,4034,-15}, {1662,4050,-15}, {1787,1409,-10}, {1787,1630,-10},
+ {1787,1631,-10}, {1787,1645,-10}, {1787,1655,-10}, {1787,1662,-10},
+ {1787,2794,-20}, {1787,2795,-20}, {1787,2809,-20}, {1787,2819,-20},
+ {1787,2826,-20}, {1787,2899,-20}, {1787,2907,-20}, {1787,2995,-10},
+ {1787,3139,30}, {1787,3143,30}, {1886,1630,10}, {1886,1631,10},
+ {1886,1645,10}, {1886,1655,10}, {1886,1662,10}, {1886,1886,-10},
+ {1988,4031,-20}, {1988,4034,-20}, {1988,4050,-20}, {2302,2794,-15},
+ {2302,2795,-15}, {2302,2809,-15}, {2302,2819,-15}, {2302,2826,-15},
+ {2302,2899,-15}, {2302,2907,-15}, {2416,3951,-15}, {2416,4031,-15},
+ {2416,4034,-15}, {2416,4050,-15}, {2501,3951,-15}, {2501,4031,-15},
+ {2501,4034,-15}, {2501,4050,-15}, {2511,3816,-20}, {2511,3817,-20},
+ {2511,3824,-20}, {2511,3831,-20}, {2511,3839,-20}, {2511,4031,-30},
+ {2511,4034,-30}, {2511,4050,-30}, {2648,3816,-10}, {2648,3817,-10},
+ {2648,3824,-10}, {2648,3831,-10}, {2648,3839,-10}, {2648,3902,-40},
+ {2648,4031,-20}, {2648,4034,-20}, {2648,4050,-20}, {2769,3816,-10},
+ {2769,3817,-10}, {2769,3824,-10}, {2769,3831,-10}, {2769,3839,-10},
+ {2769,3902,-40}, {2769,4031,-20}, {2769,4034,-20}, {2769,4050,-20},
+ {2794,3902,-20}, {2794,3951,-15}, {2794,4020,-30}, {2794,4031,-20},
+ {2794,4034,-20}, {2794,4050,-20}, {2795,3902,-20}, {2795,3951,-15},
+ {2795,4020,-30}, {2795,4031,-20}, {2795,4034,-20}, {2795,4050,-20},
+ {2809,3902,-20}, {2809,3951,-15}, {2809,4020,-30}, {2809,4031,-20},
+ {2809,4034,-20}, {2809,4050,-20}, {2819,3902,-20}, {2819,3951,-15},
+ {2819,4020,-30}, {2819,4031,-20}, {2819,4034,-20}, {2819,4050,-20},
+ {2826,3902,-20}, {2826,3951,-15}, {2826,4020,-30}, {2826,4031,-20},
+ {2826,4034,-20}, {2826,4050,-20}, {2899,3902,-20}, {2899,3951,-15},
+ {2899,4020,-30}, {2899,4031,-20}, {2899,4034,-20}, {2899,4050,-20},
+ {2907,3902,-20}, {2907,3951,-15}, {2907,4020,-30}, {2907,4031,-20},
+ {2907,4034,-20}, {2907,4050,-20}, {2921,4031,-15}, {2921,4034,-15},
+ {2921,4050,-15}, {2995,3139,-120}, {2995,3143,-120},
+ {2995,3498,-40}, {3139,3498,-80}, {3140,3140,-46}, {3143,1481,-80},
+ {3143,2416,-20}, {3143,2501,-20}, {3143,3143,-46}, {3143,3148,-40},
+ {3143,3279,-60}, {3143,3317,-60}, {3143,3498,-80}, {3143,3902,-20},
+ {3148,1312,-20}, {3148,1332,-20}, {3148,1409,-60}, {3148,1481,-20},
+ {3148,1886,-15}, {3148,2126,-20}, {3148,2794,-20}, {3148,2795,-20},
+ {3148,2809,-20}, {3148,2819,-20}, {3148,2826,-20}, {3148,2899,-20},
+ {3148,2907,-20}, {3148,2995,-60}, {3148,3083,-20}, {3148,3279,-15},
+ {3148,3317,-15}, {3148,3556,20}, {3148,3902,10}, {3148,4031,10},
+ {3148,4034,10}, {3148,4050,10}, {3279,3951,-15}, {3317,3951,-15},
+ {3351,3498,-40}, {3498,570,-100}, {3498,658,-80}, {3498,668,-80},
+ {3498,686,-120}, {3498,687,-120}, {3498,692,-120}, {3498,3135,-80},
+ {3498,3140,-60}, {3902,734,-20}, {3902,736,-20}, {3902,758,-20},
+ {3902,775,-20}, {3902,1030,-20}, {3902,1111,-20}, {3902,1173,-20},
+ {3902,1409,-80}, {3902,2794,-30}, {3902,2795,-30}, {3902,2809,-30},
+ {3902,2819,-30}, {3902,2826,-30}, {3902,2899,-30}, {3902,2907,-30},
+ {3902,2995,-80}, {3951,1409,-40}, {3951,2794,-20}, {3951,2795,-20},
+ {3951,2809,-20}, {3951,2819,-20}, {3951,2826,-20}, {3951,2899,-20},
+ {3951,2907,-20}, {3951,2995,-40}, {4020,1630,-10}, {4020,1631,-10},
+ {4020,1645,-10}, {4020,1655,-10}, {4020,1662,-10}, {4031,734,-30},
+ {4031,736,-30}, {4031,758,-30}, {4031,775,-30}, {4031,1030,-30},
+ {4031,1111,-30}, {4031,1173,-30}, {4031,1409,-80}, {4031,1630,-10},
+ {4031,1631,-10}, {4031,1645,-10}, {4031,1655,-10}, {4031,1662,-10},
+ {4031,2794,-25}, {4031,2795,-25}, {4031,2809,-25}, {4031,2819,-25},
+ {4031,2826,-25}, {4031,2899,-25}, {4031,2907,-25}, {4031,2995,-80},
+ {4034,734,-30}, {4034,736,-30}, {4034,758,-30}, {4034,775,-30},
+ {4034,1030,-30}, {4034,1111,-30}, {4034,1173,-30}, {4034,1409,-80},
+ {4034,1630,-10}, {4034,1631,-10}, {4034,1645,-10}, {4034,1655,-10},
+ {4034,1662,-10}, {4034,2794,-25}, {4034,2795,-25}, {4034,2809,-25},
+ {4034,2819,-25}, {4034,2826,-25}, {4034,2899,-25}, {4034,2907,-25},
+ {4034,2995,-80}, {4050,734,-30}, {4050,736,-30}, {4050,758,-30},
+ {4050,775,-30}, {4050,1030,-30}, {4050,1111,-30}, {4050,1173,-30},
+ {4050,1409,-80}, {4050,1630,-10}, {4050,1631,-10}, {4050,1645,-10},
+ {4050,1655,-10}, {4050,1662,-10}, {4050,2794,-25}, {4050,2795,-25},
+ {4050,2809,-25}, {4050,2819,-25}, {4050,2826,-25}, {4050,2899,-25},
+ {4050,2907,-25}, {4050,2995,-80}, {4132,1630,10}, {4132,1631,10},
+ {4132,1645,10}, {4132,1655,10}, {4132,1662,10}, {4153,1630,10},
+ {4153,1631,10}, {4153,1645,10}, {4153,1655,10}, {4153,1662,10},
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature helvetica_boldoblique_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair courier_kerns[] = {
+
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature courier_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair courier_oblique_kerns[] = {
+
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature courier_oblique_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair courier_bold_kerns[] = {
+
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature courier_bold_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+static const kern_pair courier_boldoblique_kerns[] = {
+
+ {NOGLYPH,NOGLYPH,0}
+};
+static const ligature courier_boldoblique_ligs[] = {
+ {1787,2132,1807}, {1787,2416,1850},
+ {NOGLYPH,NOGLYPH,NOGLYPH}
+};
+
+static const struct ps_std_font_data {
+ char const *name;
+ kern_pair const *kerns;
+ ligature const *ligs;
+ int widths[lenof(ps_std_glyphs)-1];
+} ps_std_fonts[] = {
+ { "Times-Roman",
+ times_roman_kerns, times_roman_ligs, {
+ 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,
+ 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611,
+ 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,
+ 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444,
+ 889, 722, 722, 722, 722, 722, 722, 667, 611, 611, 611, 611, 722,
+ 333, 333, 333, 333, 611, 722, 889, 722, 722, 722, 722, 722, 722,
+ 556, 556, 722, 722, 722, 722, 722, 722, 611, 667, 444, 444, 444,
+ 444, 444, 444, 444, 444, 444, 444, 444, 500, 278, 278, 278, 278,
+ 278, 500, 722, 500, 500, 500, 500, 500, 500, 389, 500, 500, 500,
+ 500, 500, 500, 500, 444, 333, 778, 469, 541, 500, 921, 278, 200,
+ 480, 480, 333, 333, 333, 200, 350, 333, 333, 500, 333, 278, 250,
+ 760, 500, 500, 500, 400, 333, 564, 500, 333, 278, 500, 1000, 1000,
+ 500, 564, 333, 333, 556, 500, 556, 500, 500, 167, 500, 333, 564,
+ 500, 500, 333, 333, 333, 333, 564, 564, 333, 564, 500, 564, 500,
+ 500, 333, 500, 750, 750, 300, 276, 310, 453, 333, 333, 833, 250,
+ 250, 1000, 564, 564, 444, 444, 408, 444, 444, 444, 333, 333, 333,
+ 180, 760, 333, 500, 278, 500, 500, 278, 250, 500, 500, 750, 300,
+ 333, 980, 500, 300, 500, 500, 500,
+ }},
+ { "Times-Italic",
+ times_italic_kerns, times_italic_ligs, {
+ 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,
+ 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556,
+ 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,
+ 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389,
+ 889, 611, 611, 611, 611, 611, 611, 667, 611, 611, 611, 611, 722,
+ 333, 333, 333, 333, 556, 667, 944, 722, 722, 722, 722, 722, 722,
+ 500, 611, 722, 722, 722, 722, 556, 556, 556, 667, 500, 500, 500,
+ 500, 500, 500, 444, 444, 444, 444, 444, 500, 278, 278, 278, 278,
+ 278, 500, 667, 500, 500, 500, 500, 500, 500, 389, 500, 500, 500,
+ 500, 500, 444, 444, 389, 333, 778, 422, 541, 500, 920, 278, 275,
+ 400, 400, 389, 389, 333, 275, 350, 333, 333, 500, 333, 333, 250,
+ 760, 500, 500, 500, 400, 333, 675, 500, 333, 278, 500, 889, 889,
+ 500, 675, 333, 389, 500, 500, 500, 500, 500, 167, 500, 333, 675,
+ 500, 500, 333, 333, 333, 333, 675, 675, 333, 675, 500, 675, 500,
+ 500, 333, 500, 750, 750, 300, 276, 310, 523, 333, 333, 833, 250,
+ 250, 1000, 675, 675, 500, 500, 420, 556, 556, 556, 333, 333, 333,
+ 214, 760, 333, 500, 333, 500, 500, 278, 250, 500, 500, 750, 300,
+ 333, 980, 500, 300, 500, 500, 500,
+ }},
+ { "Times-Bold",
+ times_bold_kerns, times_bold_ligs, {
+ 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,
+ 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667,
+ 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,
+ 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444,
+ 1000, 722, 722, 722, 722, 722, 722, 722, 667, 667, 667, 667, 722,
+ 389, 389, 389, 389, 667, 722, 1000, 778, 778, 778, 778, 778, 778,
+ 556, 611, 722, 722, 722, 722, 722, 722, 667, 722, 500, 500, 500,
+ 500, 500, 500, 444, 444, 444, 444, 444, 500, 278, 278, 278, 278,
+ 278, 556, 722, 500, 500, 500, 500, 500, 500, 389, 556, 556, 556,
+ 556, 556, 500, 500, 444, 333, 833, 581, 520, 500, 930, 278, 220,
+ 394, 394, 333, 333, 333, 220, 350, 333, 333, 500, 333, 333, 250,
+ 747, 500, 500, 500, 400, 333, 570, 500, 333, 278, 500, 1000, 1000,
+ 500, 570, 333, 333, 556, 500, 556, 500, 500, 167, 556, 333, 570,
+ 500, 500, 333, 333, 333, 333, 570, 570, 333, 570, 556, 570, 500,
+ 500, 333, 500, 750, 750, 300, 300, 330, 540, 333, 333, 1000, 250,
+ 250, 1000, 570, 570, 500, 500, 555, 500, 500, 500, 333, 333, 333,
+ 278, 747, 333, 500, 333, 500, 500, 278, 250, 500, 500, 750, 300,
+ 333, 1000, 500, 300, 500, 500, 500,
+ }},
+ { "Times-BoldItalic",
+ times_bolditalic_kerns, times_bolditalic_ligs, {
+ 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,
+ 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611,
+ 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,
+ 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389,
+ 944, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 722,
+ 389, 389, 389, 389, 611, 722, 944, 722, 722, 722, 722, 722, 722,
+ 556, 611, 722, 722, 722, 722, 611, 611, 611, 722, 500, 500, 500,
+ 500, 500, 500, 444, 444, 444, 444, 444, 500, 278, 278, 278, 278,
+ 278, 556, 722, 500, 500, 500, 500, 500, 500, 389, 500, 556, 556,
+ 556, 556, 444, 444, 389, 333, 778, 570, 570, 500, 832, 278, 220,
+ 348, 348, 333, 333, 333, 220, 350, 333, 333, 500, 333, 333, 250,
+ 747, 500, 500, 500, 400, 333, 570, 500, 333, 278, 500, 1000, 1000,
+ 500, 570, 389, 389, 556, 500, 556, 500, 500, 167, 500, 333, 570,
+ 500, 500, 333, 333, 333, 333, 570, 606, 333, 606, 576, 570, 500,
+ 500, 333, 500, 750, 750, 300, 266, 300, 500, 333, 333, 833, 250,
+ 250, 1000, 570, 570, 500, 500, 555, 500, 500, 500, 333, 333, 333,
+ 278, 747, 333, 500, 333, 500, 500, 278, 250, 500, 500, 750, 300,
+ 333, 1000, 500, 300, 500, 500, 500,
+ }},
+ { "Helvetica",
+ helvetica_kerns, helvetica_ligs, {
+ 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,
+ 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611,
+ 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,
+ 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500,
+ 1000, 667, 667, 667, 667, 667, 667, 722, 667, 667, 667, 667, 722,
+ 278, 278, 278, 278, 556, 722, 1000, 778, 778, 778, 778, 778, 778,
+ 667, 667, 722, 722, 722, 722, 667, 667, 611, 889, 556, 556, 556,
+ 556, 556, 556, 500, 556, 556, 556, 556, 556, 278, 278, 278, 278,
+ 222, 556, 944, 556, 556, 556, 556, 611, 556, 500, 556, 556, 556,
+ 556, 556, 500, 500, 500, 333, 667, 469, 584, 389, 1015, 278, 260,
+ 334, 334, 278, 278, 333, 260, 350, 333, 333, 556, 333, 278, 278,
+ 737, 556, 556, 556, 400, 333, 584, 556, 333, 278, 556, 1000, 1000,
+ 556, 584, 278, 333, 500, 556, 500, 556, 556, 167, 611, 333, 584,
+ 556, 556, 333, 333, 333, 333, 584, 584, 333, 584, 556, 584, 556,
+ 556, 333, 556, 834, 834, 333, 370, 365, 537, 333, 333, 889, 278,
+ 278, 1000, 584, 584, 556, 611, 355, 333, 333, 333, 222, 222, 222,
+ 191, 737, 333, 556, 278, 556, 556, 278, 278, 556, 556, 834, 333,
+ 333, 1000, 556, 333, 556, 556, 556,
+ }},
+ { "Helvetica-Oblique",
+ helvetica_oblique_kerns, helvetica_oblique_ligs, {
+ 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,
+ 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611,
+ 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,
+ 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500,
+ 1000, 667, 667, 667, 667, 667, 667, 722, 667, 667, 667, 667, 722,
+ 278, 278, 278, 278, 556, 722, 1000, 778, 778, 778, 778, 778, 778,
+ 667, 667, 722, 722, 722, 722, 667, 667, 611, 889, 556, 556, 556,
+ 556, 556, 556, 500, 556, 556, 556, 556, 556, 278, 278, 278, 278,
+ 222, 556, 944, 556, 556, 556, 556, 611, 556, 500, 556, 556, 556,
+ 556, 556, 500, 500, 500, 333, 667, 469, 584, 389, 1015, 278, 260,
+ 334, 334, 278, 278, 333, 260, 350, 333, 333, 556, 333, 278, 278,
+ 737, 556, 556, 556, 400, 333, 584, 556, 333, 278, 556, 1000, 1000,
+ 556, 584, 278, 333, 500, 556, 500, 556, 556, 167, 611, 333, 584,
+ 556, 556, 333, 333, 333, 333, 584, 584, 333, 584, 556, 584, 556,
+ 556, 333, 556, 834, 834, 333, 370, 365, 537, 333, 333, 889, 278,
+ 278, 1000, 584, 584, 556, 611, 355, 333, 333, 333, 222, 222, 222,
+ 191, 737, 333, 556, 278, 556, 556, 278, 278, 556, 556, 834, 333,
+ 333, 1000, 556, 333, 556, 556, 556,
+ }},
+ { "Helvetica-Bold",
+ helvetica_bold_kerns, helvetica_bold_ligs, {
+ 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,
+ 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611,
+ 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,
+ 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500,
+ 1000, 722, 722, 722, 722, 722, 722, 722, 667, 667, 667, 667, 722,
+ 278, 278, 278, 278, 611, 722, 1000, 778, 778, 778, 778, 778, 778,
+ 667, 667, 722, 722, 722, 722, 667, 667, 611, 889, 556, 556, 556,
+ 556, 556, 556, 556, 556, 556, 556, 556, 611, 278, 278, 278, 278,
+ 278, 611, 944, 611, 611, 611, 611, 611, 611, 556, 611, 611, 611,
+ 611, 611, 556, 556, 500, 333, 722, 584, 584, 389, 975, 278, 280,
+ 389, 389, 333, 333, 333, 280, 350, 333, 333, 556, 333, 333, 278,
+ 737, 556, 556, 556, 400, 333, 584, 556, 333, 278, 556, 1000, 1000,
+ 556, 584, 333, 333, 611, 556, 611, 556, 556, 167, 611, 333, 584,
+ 556, 556, 333, 333, 333, 333, 584, 584, 333, 584, 611, 584, 556,
+ 556, 333, 556, 834, 834, 333, 370, 365, 556, 333, 333, 889, 278,
+ 278, 1000, 584, 584, 611, 611, 474, 500, 500, 500, 278, 278, 278,
+ 238, 737, 333, 556, 333, 556, 556, 278, 278, 556, 556, 834, 333,
+ 333, 1000, 556, 333, 556, 556, 556,
+ }},
+ { "Helvetica-BoldOblique",
+ helvetica_boldoblique_kerns, helvetica_boldoblique_ligs, {
+ 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,
+ 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611,
+ 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,
+ 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500,
+ 1000, 722, 722, 722, 722, 722, 722, 722, 667, 667, 667, 667, 722,
+ 278, 278, 278, 278, 611, 722, 1000, 778, 778, 778, 778, 778, 778,
+ 667, 667, 722, 722, 722, 722, 667, 667, 611, 889, 556, 556, 556,
+ 556, 556, 556, 556, 556, 556, 556, 556, 611, 278, 278, 278, 278,
+ 278, 611, 944, 611, 611, 611, 611, 611, 611, 556, 611, 611, 611,
+ 611, 611, 556, 556, 500, 333, 722, 584, 584, 389, 975, 278, 280,
+ 389, 389, 333, 333, 333, 280, 350, 333, 333, 556, 333, 333, 278,
+ 737, 556, 556, 556, 400, 333, 584, 556, 333, 278, 556, 1000, 1000,
+ 556, 584, 333, 333, 611, 556, 611, 556, 556, 167, 611, 333, 584,
+ 556, 556, 333, 333, 333, 333, 584, 584, 333, 584, 611, 584, 556,
+ 556, 333, 556, 834, 834, 333, 370, 365, 556, 333, 333, 889, 278,
+ 278, 1000, 584, 584, 611, 611, 474, 500, 500, 500, 278, 278, 278,
+ 238, 737, 333, 556, 333, 556, 556, 278, 278, 556, 556, 834, 333,
+ 333, 1000, 556, 333, 556, 556, 556,
+ }},
+ { "Courier",
+ courier_kerns, courier_ligs, {
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600,
+ }},
+ { "Courier-Oblique",
+ courier_oblique_kerns, courier_oblique_ligs, {
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600,
+ }},
+ { "Courier-Bold",
+ courier_bold_kerns, courier_bold_ligs, {
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600,
+ }},
+ { "Courier-BoldOblique",
+ courier_boldoblique_kerns, courier_boldoblique_ligs, {
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600, 600, 600, 600,
+ }},
+};
+
+void init_std_fonts(void) {
+ int i, j;
+ ligature const *lig;
+ kern_pair const *kern;
+ static int done = FALSE;
+
+ if (done) return;
+ for (i = 0; i < (int)lenof(ps_std_fonts); i++) {
+ font_info *fi = snew(font_info);
+ fi->fontfile = NULL;
+ fi->name = ps_std_fonts[i].name;
+ fi->widths = newtree234(width_cmp);
+ for (j = 0; j < (int)lenof(fi->bmp); j++)
+ fi->bmp[j] = NOGLYPH;
+ for (j = 0; j < (int)lenof(ps_std_glyphs) - 1; j++) {
+ glyph_width *w = snew(glyph_width);
+ wchar_t ucs;
+ w->glyph = glyph_intern(ps_std_glyphs[j]);
+ w->width = ps_std_fonts[i].widths[j];
+ add234(fi->widths, w);
+ ucs = ps_glyph_to_unicode(w->glyph);
+ assert(ucs != 0xFFFF);
+ fi->bmp[ucs] = w->glyph;
+ }
+ fi->kerns = newtree234(kern_cmp);
+ for (kern = ps_std_fonts[i].kerns; kern->left != NOGLYPH; kern++)
+ add234(fi->kerns, (void *)kern);
+ fi->ligs = newtree234(lig_cmp);
+ for (lig = ps_std_fonts[i].ligs; lig->left != NOGLYPH; lig++)
+ add234(fi->ligs, (void *)lig);
+ fi->next = all_fonts;
+ all_fonts = fi;
+ }
+ done = TRUE;
+}
+
+const int *ps_std_font_widths(char const *fontname)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(ps_std_fonts); i++)
+ if (!strcmp(ps_std_fonts[i].name, fontname))
+ return ps_std_fonts[i].widths;
+
+ return NULL;
+}
+
+const kern_pair *ps_std_font_kerns(char const *fontname)
+{
+ int i;
+
+ for (i = 0; i < (int)lenof(ps_std_fonts); i++)
+ if (!strcmp(ps_std_fonts[i].name, fontname))
+ return ps_std_fonts[i].kerns;
+
+ return NULL;
+}
diff --git a/app/tools/halibut/tree234.c b/app/tools/halibut/tree234.c
new file mode 100644
index 0000000..26d188e
--- /dev/null
+++ b/app/tools/halibut/tree234.c
@@ -0,0 +1,2197 @@
+/*
+ * tree234.c: reasonably generic counted 2-3-4 tree routines.
+ *
+ * This file is copyright 1999-2001 Simon Tatham.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL SIMON TATHAM BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree234.h"
+
+#define smalloc malloc
+#define sfree free
+
+#define snew(typ) ( (typ *) smalloc (sizeof (typ)) )
+
+#ifdef TEST
+#define LOG(x) (printf x)
+#else
+#define LOG(x)
+#endif
+
+typedef struct node234_Tag node234;
+
+struct tree234_Tag {
+ node234 *root;
+ cmpfn234 cmp;
+};
+
+struct node234_Tag {
+ node234 *parent;
+ node234 *kids[4];
+ int counts[4];
+ void *elems[3];
+};
+
+/*
+ * Create a 2-3-4 tree.
+ */
+tree234 *newtree234(cmpfn234 cmp) {
+ tree234 *ret = snew(tree234);
+ LOG(("created tree %p\n", ret));
+ ret->root = NULL;
+ ret->cmp = cmp;
+ return ret;
+}
+
+/*
+ * Free a 2-3-4 tree (not including freeing the elements).
+ */
+static void freenode234(node234 *n) {
+ if (!n)
+ return;
+ freenode234(n->kids[0]);
+ freenode234(n->kids[1]);
+ freenode234(n->kids[2]);
+ freenode234(n->kids[3]);
+ sfree(n);
+}
+void freetree234(tree234 *t) {
+ freenode234(t->root);
+ sfree(t);
+}
+
+/*
+ * Internal function to count a node.
+ */
+static int countnode234(node234 *n) {
+ int count = 0;
+ int i;
+ if (!n)
+ return 0;
+ for (i = 0; i < 4; i++)
+ count += n->counts[i];
+ for (i = 0; i < 3; i++)
+ if (n->elems[i])
+ count++;
+ return count;
+}
+
+/*
+ * Count the elements in a tree.
+ */
+int count234(tree234 *t) {
+ if (t->root)
+ return countnode234(t->root);
+ else
+ return 0;
+}
+
+/*
+ * Propagate a node overflow up a tree until it stops. Returns 0 or
+ * 1, depending on whether the root had to be split or not.
+ */
+static int add234_insert(node234 *left, void *e, node234 *right,
+ node234 **root, node234 *n, int ki) {
+ int lcount, rcount;
+ /*
+ * We need to insert the new left/element/right set in n at
+ * child position ki.
+ */
+ lcount = countnode234(left);
+ rcount = countnode234(right);
+ while (n) {
+ LOG((" at %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" need to insert %p/%d \"%s\" %p/%d at position %d\n",
+ left, lcount, e, right, rcount, ki));
+ if (n->elems[1] == NULL) {
+ /*
+ * Insert in a 2-node; simple.
+ */
+ if (ki == 0) {
+ LOG((" inserting on left of 2-node\n"));
+ n->kids[2] = n->kids[1]; n->counts[2] = n->counts[1];
+ n->elems[1] = n->elems[0];
+ n->kids[1] = right; n->counts[1] = rcount;
+ n->elems[0] = e;
+ n->kids[0] = left; n->counts[0] = lcount;
+ } else { /* ki == 1 */
+ LOG((" inserting on right of 2-node\n"));
+ n->kids[2] = right; n->counts[2] = rcount;
+ n->elems[1] = e;
+ n->kids[1] = left; n->counts[1] = lcount;
+ }
+ if (n->kids[0]) n->kids[0]->parent = n;
+ if (n->kids[1]) n->kids[1]->parent = n;
+ if (n->kids[2]) n->kids[2]->parent = n;
+ LOG((" done\n"));
+ break;
+ } else if (n->elems[2] == NULL) {
+ /*
+ * Insert in a 3-node; simple.
+ */
+ if (ki == 0) {
+ LOG((" inserting on left of 3-node\n"));
+ n->kids[3] = n->kids[2]; n->counts[3] = n->counts[2];
+ n->elems[2] = n->elems[1];
+ n->kids[2] = n->kids[1]; n->counts[2] = n->counts[1];
+ n->elems[1] = n->elems[0];
+ n->kids[1] = right; n->counts[1] = rcount;
+ n->elems[0] = e;
+ n->kids[0] = left; n->counts[0] = lcount;
+ } else if (ki == 1) {
+ LOG((" inserting in middle of 3-node\n"));
+ n->kids[3] = n->kids[2]; n->counts[3] = n->counts[2];
+ n->elems[2] = n->elems[1];
+ n->kids[2] = right; n->counts[2] = rcount;
+ n->elems[1] = e;
+ n->kids[1] = left; n->counts[1] = lcount;
+ } else { /* ki == 2 */
+ LOG((" inserting on right of 3-node\n"));
+ n->kids[3] = right; n->counts[3] = rcount;
+ n->elems[2] = e;
+ n->kids[2] = left; n->counts[2] = lcount;
+ }
+ if (n->kids[0]) n->kids[0]->parent = n;
+ if (n->kids[1]) n->kids[1]->parent = n;
+ if (n->kids[2]) n->kids[2]->parent = n;
+ if (n->kids[3]) n->kids[3]->parent = n;
+ LOG((" done\n"));
+ break;
+ } else {
+ node234 *m = snew(node234);
+ m->parent = n->parent;
+ LOG((" splitting a 4-node; created new node %p\n", m));
+ /*
+ * Insert in a 4-node; split into a 2-node and a
+ * 3-node, and move focus up a level.
+ *
+ * I don't think it matters which way round we put the
+ * 2 and the 3. For simplicity, we'll put the 3 first
+ * always.
+ */
+ if (ki == 0) {
+ m->kids[0] = left; m->counts[0] = lcount;
+ m->elems[0] = e;
+ m->kids[1] = right; m->counts[1] = rcount;
+ m->elems[1] = n->elems[0];
+ m->kids[2] = n->kids[1]; m->counts[2] = n->counts[1];
+ e = n->elems[1];
+ n->kids[0] = n->kids[2]; n->counts[0] = n->counts[2];
+ n->elems[0] = n->elems[2];
+ n->kids[1] = n->kids[3]; n->counts[1] = n->counts[3];
+ } else if (ki == 1) {
+ m->kids[0] = n->kids[0]; m->counts[0] = n->counts[0];
+ m->elems[0] = n->elems[0];
+ m->kids[1] = left; m->counts[1] = lcount;
+ m->elems[1] = e;
+ m->kids[2] = right; m->counts[2] = rcount;
+ e = n->elems[1];
+ n->kids[0] = n->kids[2]; n->counts[0] = n->counts[2];
+ n->elems[0] = n->elems[2];
+ n->kids[1] = n->kids[3]; n->counts[1] = n->counts[3];
+ } else if (ki == 2) {
+ m->kids[0] = n->kids[0]; m->counts[0] = n->counts[0];
+ m->elems[0] = n->elems[0];
+ m->kids[1] = n->kids[1]; m->counts[1] = n->counts[1];
+ m->elems[1] = n->elems[1];
+ m->kids[2] = left; m->counts[2] = lcount;
+ /* e = e; */
+ n->kids[0] = right; n->counts[0] = rcount;
+ n->elems[0] = n->elems[2];
+ n->kids[1] = n->kids[3]; n->counts[1] = n->counts[3];
+ } else { /* ki == 3 */
+ m->kids[0] = n->kids[0]; m->counts[0] = n->counts[0];
+ m->elems[0] = n->elems[0];
+ m->kids[1] = n->kids[1]; m->counts[1] = n->counts[1];
+ m->elems[1] = n->elems[1];
+ m->kids[2] = n->kids[2]; m->counts[2] = n->counts[2];
+ n->kids[0] = left; n->counts[0] = lcount;
+ n->elems[0] = e;
+ n->kids[1] = right; n->counts[1] = rcount;
+ e = n->elems[2];
+ }
+ m->kids[3] = n->kids[3] = n->kids[2] = NULL;
+ m->counts[3] = n->counts[3] = n->counts[2] = 0;
+ m->elems[2] = n->elems[2] = n->elems[1] = NULL;
+ if (m->kids[0]) m->kids[0]->parent = m;
+ if (m->kids[1]) m->kids[1]->parent = m;
+ if (m->kids[2]) m->kids[2]->parent = m;
+ if (n->kids[0]) n->kids[0]->parent = n;
+ if (n->kids[1]) n->kids[1]->parent = n;
+ LOG((" left (%p): %p/%d \"%s\" %p/%d \"%s\" %p/%d\n", m,
+ m->kids[0], m->counts[0], m->elems[0],
+ m->kids[1], m->counts[1], m->elems[1],
+ m->kids[2], m->counts[2]));
+ LOG((" right (%p): %p/%d \"%s\" %p/%d\n", n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1]));
+ left = m; lcount = countnode234(left);
+ right = n; rcount = countnode234(right);
+ }
+ if (n->parent)
+ ki = (n->parent->kids[0] == n ? 0 :
+ n->parent->kids[1] == n ? 1 :
+ n->parent->kids[2] == n ? 2 : 3);
+ n = n->parent;
+ }
+
+ /*
+ * If we've come out of here by `break', n will still be
+ * non-NULL and all we need to do is go back up the tree
+ * updating counts. If we've come here because n is NULL, we
+ * need to create a new root for the tree because the old one
+ * has just split into two. */
+ if (n) {
+ while (n->parent) {
+ int count = countnode234(n);
+ int childnum;
+ childnum = (n->parent->kids[0] == n ? 0 :
+ n->parent->kids[1] == n ? 1 :
+ n->parent->kids[2] == n ? 2 : 3);
+ n->parent->counts[childnum] = count;
+ n = n->parent;
+ }
+ return 0; /* root unchanged */
+ } else {
+ LOG((" root is overloaded, split into two\n"));
+ (*root) = snew(node234);
+ (*root)->kids[0] = left; (*root)->counts[0] = lcount;
+ (*root)->elems[0] = e;
+ (*root)->kids[1] = right; (*root)->counts[1] = rcount;
+ (*root)->elems[1] = NULL;
+ (*root)->kids[2] = NULL; (*root)->counts[2] = 0;
+ (*root)->elems[2] = NULL;
+ (*root)->kids[3] = NULL; (*root)->counts[3] = 0;
+ (*root)->parent = NULL;
+ if ((*root)->kids[0]) (*root)->kids[0]->parent = (*root);
+ if ((*root)->kids[1]) (*root)->kids[1]->parent = (*root);
+ LOG((" new root is %p/%d \"%s\" %p/%d\n",
+ (*root)->kids[0], (*root)->counts[0],
+ (*root)->elems[0],
+ (*root)->kids[1], (*root)->counts[1]));
+ return 1; /* root moved */
+ }
+}
+
+/*
+ * Add an element e to a 2-3-4 tree t. Returns e on success, or if
+ * an existing element compares equal, returns that.
+ */
+static void *add234_internal(tree234 *t, void *e, int index) {
+ node234 *n;
+ int ki;
+ void *orig_e = e;
+ int c;
+
+ LOG(("adding element \"%s\" to tree %p\n", e, t));
+ if (t->root == NULL) {
+ t->root = snew(node234);
+ t->root->elems[1] = t->root->elems[2] = NULL;
+ t->root->kids[0] = t->root->kids[1] = NULL;
+ t->root->kids[2] = t->root->kids[3] = NULL;
+ t->root->counts[0] = t->root->counts[1] = 0;
+ t->root->counts[2] = t->root->counts[3] = 0;
+ t->root->parent = NULL;
+ t->root->elems[0] = e;
+ LOG((" created root %p\n", t->root));
+ return orig_e;
+ }
+
+ n = t->root;
+ while (n) {
+ LOG((" node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ if (index >= 0) {
+ if (!n->kids[0]) {
+ /*
+ * Leaf node. We want to insert at kid position
+ * equal to the index:
+ *
+ * 0 A 1 B 2 C 3
+ */
+ ki = index;
+ } else {
+ /*
+ * Internal node. We always descend through it (add
+ * always starts at the bottom, never in the
+ * middle).
+ */
+ if (index <= n->counts[0]) {
+ ki = 0;
+ } else if (index -= n->counts[0] + 1, index <= n->counts[1]) {
+ ki = 1;
+ } else if (index -= n->counts[1] + 1, index <= n->counts[2]) {
+ ki = 2;
+ } else if (index -= n->counts[2] + 1, index <= n->counts[3]) {
+ ki = 3;
+ } else
+ return NULL; /* error: index out of range */
+ }
+ } else {
+ if ((c = t->cmp(e, n->elems[0])) < 0)
+ ki = 0;
+ else if (c == 0)
+ return n->elems[0]; /* already exists */
+ else if (n->elems[1] == NULL || (c = t->cmp(e, n->elems[1])) < 0)
+ ki = 1;
+ else if (c == 0)
+ return n->elems[1]; /* already exists */
+ else if (n->elems[2] == NULL || (c = t->cmp(e, n->elems[2])) < 0)
+ ki = 2;
+ else if (c == 0)
+ return n->elems[2]; /* already exists */
+ else
+ ki = 3;
+ }
+ LOG((" moving to child %d (%p)\n", ki, n->kids[ki]));
+ if (!n->kids[ki])
+ break;
+ n = n->kids[ki];
+ }
+
+ add234_insert(NULL, e, NULL, &t->root, n, ki);
+
+ return orig_e;
+}
+
+void *add234(tree234 *t, void *e) {
+ if (!t->cmp) /* tree is unsorted */
+ return NULL;
+
+ return add234_internal(t, e, -1);
+}
+void *addpos234(tree234 *t, void *e, int index) {
+ if (index < 0 || /* index out of range */
+ t->cmp) /* tree is sorted */
+ return NULL; /* return failure */
+
+ return add234_internal(t, e, index); /* this checks the upper bound */
+}
+
+/*
+ * Look up the element at a given numeric index in a 2-3-4 tree.
+ * Returns NULL if the index is out of range.
+ */
+void *index234(tree234 *t, int index) {
+ node234 *n;
+
+ if (!t->root)
+ return NULL; /* tree is empty */
+
+ if (index < 0 || index >= countnode234(t->root))
+ return NULL; /* out of range */
+
+ n = t->root;
+
+ while (n) {
+ if (index < n->counts[0])
+ n = n->kids[0];
+ else if (index -= n->counts[0] + 1, index < 0)
+ return n->elems[0];
+ else if (index < n->counts[1])
+ n = n->kids[1];
+ else if (index -= n->counts[1] + 1, index < 0)
+ return n->elems[1];
+ else if (index < n->counts[2])
+ n = n->kids[2];
+ else if (index -= n->counts[2] + 1, index < 0)
+ return n->elems[2];
+ else
+ n = n->kids[3];
+ }
+
+ /* We shouldn't ever get here. I wonder how we did. */
+ return NULL;
+}
+
+/*
+ * Find an element e in a sorted 2-3-4 tree t. Returns NULL if not
+ * found. e is always passed as the first argument to cmp, so cmp
+ * can be an asymmetric function if desired. cmp can also be passed
+ * as NULL, in which case the compare function from the tree proper
+ * will be used.
+ */
+void *findrelpos234(tree234 *t, void *e, cmpfn234 cmp,
+ int relation, int *index) {
+ node234 *n;
+ void *ret;
+ int c;
+ int idx, ecount, kcount, cmpret;
+
+ if (t->root == NULL)
+ return NULL;
+
+ if (cmp == NULL)
+ cmp = t->cmp;
+
+ n = t->root;
+ /*
+ * Attempt to find the element itself.
+ */
+ idx = 0;
+ ecount = -1;
+ /*
+ * Prepare a fake `cmp' result if e is NULL.
+ */
+ cmpret = 0;
+ if (e == NULL) {
+ assert(relation == REL234_LT || relation == REL234_GT);
+ if (relation == REL234_LT)
+ cmpret = +1; /* e is a max: always greater */
+ else if (relation == REL234_GT)
+ cmpret = -1; /* e is a min: always smaller */
+ }
+ while (1) {
+ for (kcount = 0; kcount < 4; kcount++) {
+ if (kcount >= 3 || n->elems[kcount] == NULL ||
+ (c = cmpret ? cmpret : cmp(e, n->elems[kcount])) < 0) {
+ break;
+ }
+ if (n->kids[kcount]) idx += n->counts[kcount];
+ if (c == 0) {
+ ecount = kcount;
+ break;
+ }
+ idx++;
+ }
+ if (ecount >= 0)
+ break;
+ if (n->kids[kcount])
+ n = n->kids[kcount];
+ else
+ break;
+ }
+
+ if (ecount >= 0) {
+ /*
+ * We have found the element we're looking for. It's
+ * n->elems[ecount], at tree index idx. If our search
+ * relation is EQ, LE or GE we can now go home.
+ */
+ if (relation != REL234_LT && relation != REL234_GT) {
+ if (index) *index = idx;
+ return n->elems[ecount];
+ }
+
+ /*
+ * Otherwise, we'll do an indexed lookup for the previous
+ * or next element. (It would be perfectly possible to
+ * implement these search types in a non-counted tree by
+ * going back up from where we are, but far more fiddly.)
+ */
+ if (relation == REL234_LT)
+ idx--;
+ else
+ idx++;
+ } else {
+ /*
+ * We've found our way to the bottom of the tree and we
+ * know where we would insert this node if we wanted to:
+ * we'd put it in in place of the (empty) subtree
+ * n->kids[kcount], and it would have index idx
+ *
+ * But the actual element isn't there. So if our search
+ * relation is EQ, we're doomed.
+ */
+ if (relation == REL234_EQ)
+ return NULL;
+
+ /*
+ * Otherwise, we must do an index lookup for index idx-1
+ * (if we're going left - LE or LT) or index idx (if we're
+ * going right - GE or GT).
+ */
+ if (relation == REL234_LT || relation == REL234_LE) {
+ idx--;
+ }
+ }
+
+ /*
+ * We know the index of the element we want; just call index234
+ * to do the rest. This will return NULL if the index is out of
+ * bounds, which is exactly what we want.
+ */
+ ret = index234(t, idx);
+ if (ret && index) *index = idx;
+ return ret;
+}
+void *find234(tree234 *t, void *e, cmpfn234 cmp) {
+ return findrelpos234(t, e, cmp, REL234_EQ, NULL);
+}
+void *findrel234(tree234 *t, void *e, cmpfn234 cmp, int relation) {
+ return findrelpos234(t, e, cmp, relation, NULL);
+}
+void *findpos234(tree234 *t, void *e, cmpfn234 cmp, int *index) {
+ return findrelpos234(t, e, cmp, REL234_EQ, index);
+}
+
+/*
+ * Tree transformation used in delete and split: move a subtree
+ * right, from child ki of a node to the next child. Update k and
+ * index so that they still point to the same place in the
+ * transformed tree. Assumes the destination child is not full, and
+ * that the source child does have a subtree to spare. Can cope if
+ * the destination child is undersized.
+ *
+ * . C . . B .
+ * / \ -> / \
+ * [more] a A b B c d D e [more] a A b c C d D e
+ *
+ * . C . . B .
+ * / \ -> / \
+ * [more] a A b B c d [more] a A b c C d
+ */
+static void trans234_subtree_right(node234 *n, int ki, int *k, int *index) {
+ node234 *src, *dest;
+ int i, srclen, adjust;
+
+ src = n->kids[ki];
+ dest = n->kids[ki+1];
+
+ LOG((" trans234_subtree_right(%p, %d):\n", n, ki));
+ LOG((" parent %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" src %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ src,
+ src->kids[0], src->counts[0], src->elems[0],
+ src->kids[1], src->counts[1], src->elems[1],
+ src->kids[2], src->counts[2], src->elems[2],
+ src->kids[3], src->counts[3]));
+ LOG((" dest %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ dest,
+ dest->kids[0], dest->counts[0], dest->elems[0],
+ dest->kids[1], dest->counts[1], dest->elems[1],
+ dest->kids[2], dest->counts[2], dest->elems[2],
+ dest->kids[3], dest->counts[3]));
+ /*
+ * Move over the rest of the destination node to make space.
+ */
+ dest->kids[3] = dest->kids[2]; dest->counts[3] = dest->counts[2];
+ dest->elems[2] = dest->elems[1];
+ dest->kids[2] = dest->kids[1]; dest->counts[2] = dest->counts[1];
+ dest->elems[1] = dest->elems[0];
+ dest->kids[1] = dest->kids[0]; dest->counts[1] = dest->counts[0];
+
+ /* which element to move over */
+ i = (src->elems[2] ? 2 : src->elems[1] ? 1 : 0);
+
+ dest->elems[0] = n->elems[ki];
+ n->elems[ki] = src->elems[i];
+ src->elems[i] = NULL;
+
+ dest->kids[0] = src->kids[i+1]; dest->counts[0] = src->counts[i+1];
+ src->kids[i+1] = NULL; src->counts[i+1] = 0;
+
+ if (dest->kids[0]) dest->kids[0]->parent = dest;
+
+ adjust = dest->counts[0] + 1;
+
+ n->counts[ki] -= adjust;
+ n->counts[ki+1] += adjust;
+
+ srclen = n->counts[ki];
+
+ if (k) {
+ LOG((" before: k,index = %d,%d\n", (*k), (*index)));
+ if ((*k) == ki && (*index) > srclen) {
+ (*index) -= srclen + 1;
+ (*k)++;
+ } else if ((*k) == ki+1) {
+ (*index) += adjust;
+ }
+ LOG((" after: k,index = %d,%d\n", (*k), (*index)));
+ }
+
+ LOG((" parent %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" src %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ src,
+ src->kids[0], src->counts[0], src->elems[0],
+ src->kids[1], src->counts[1], src->elems[1],
+ src->kids[2], src->counts[2], src->elems[2],
+ src->kids[3], src->counts[3]));
+ LOG((" dest %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ dest,
+ dest->kids[0], dest->counts[0], dest->elems[0],
+ dest->kids[1], dest->counts[1], dest->elems[1],
+ dest->kids[2], dest->counts[2], dest->elems[2],
+ dest->kids[3], dest->counts[3]));
+}
+
+/*
+ * Tree transformation used in delete and split: move a subtree
+ * left, from child ki of a node to the previous child. Update k
+ * and index so that they still point to the same place in the
+ * transformed tree. Assumes the destination child is not full, and
+ * that the source child does have a subtree to spare. Can cope if
+ * the destination child is undersized.
+ *
+ * . B . . C .
+ * / \ -> / \
+ * a A b c C d D e [more] a A b B c d D e [more]
+ *
+ * . A . . B .
+ * / \ -> / \
+ * a b B c C d [more] a A b c C d [more]
+ */
+static void trans234_subtree_left(node234 *n, int ki, int *k, int *index) {
+ node234 *src, *dest;
+ int i, adjust;
+
+ src = n->kids[ki];
+ dest = n->kids[ki-1];
+
+ LOG((" trans234_subtree_left(%p, %d):\n", n, ki));
+ LOG((" parent %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" dest %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ dest,
+ dest->kids[0], dest->counts[0], dest->elems[0],
+ dest->kids[1], dest->counts[1], dest->elems[1],
+ dest->kids[2], dest->counts[2], dest->elems[2],
+ dest->kids[3], dest->counts[3]));
+ LOG((" src %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ src,
+ src->kids[0], src->counts[0], src->elems[0],
+ src->kids[1], src->counts[1], src->elems[1],
+ src->kids[2], src->counts[2], src->elems[2],
+ src->kids[3], src->counts[3]));
+
+ /* where in dest to put it */
+ i = (dest->elems[1] ? 2 : dest->elems[0] ? 1 : 0);
+ dest->elems[i] = n->elems[ki-1];
+ n->elems[ki-1] = src->elems[0];
+
+ dest->kids[i+1] = src->kids[0]; dest->counts[i+1] = src->counts[0];
+
+ if (dest->kids[i+1]) dest->kids[i+1]->parent = dest;
+
+ /*
+ * Move over the rest of the source node.
+ */
+ src->kids[0] = src->kids[1]; src->counts[0] = src->counts[1];
+ src->elems[0] = src->elems[1];
+ src->kids[1] = src->kids[2]; src->counts[1] = src->counts[2];
+ src->elems[1] = src->elems[2];
+ src->kids[2] = src->kids[3]; src->counts[2] = src->counts[3];
+ src->elems[2] = NULL;
+ src->kids[3] = NULL; src->counts[3] = 0;
+
+ adjust = dest->counts[i+1] + 1;
+
+ n->counts[ki] -= adjust;
+ n->counts[ki-1] += adjust;
+
+ if (k) {
+ LOG((" before: k,index = %d,%d\n", (*k), (*index)));
+ if ((*k) == ki) {
+ (*index) -= adjust;
+ if ((*index) < 0) {
+ (*index) += n->counts[ki-1] + 1;
+ (*k)--;
+ }
+ }
+ LOG((" after: k,index = %d,%d\n", (*k), (*index)));
+ }
+
+ LOG((" parent %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" dest %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ dest,
+ dest->kids[0], dest->counts[0], dest->elems[0],
+ dest->kids[1], dest->counts[1], dest->elems[1],
+ dest->kids[2], dest->counts[2], dest->elems[2],
+ dest->kids[3], dest->counts[3]));
+ LOG((" src %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ src,
+ src->kids[0], src->counts[0], src->elems[0],
+ src->kids[1], src->counts[1], src->elems[1],
+ src->kids[2], src->counts[2], src->elems[2],
+ src->kids[3], src->counts[3]));
+}
+
+/*
+ * Tree transformation used in delete and split: merge child nodes
+ * ki and ki+1 of a node. Update k and index so that they still
+ * point to the same place in the transformed tree. Assumes both
+ * children _are_ sufficiently small.
+ *
+ * . B . .
+ * / \ -> |
+ * a A b c C d a A b B c C d
+ *
+ * This routine can also cope with either child being undersized:
+ *
+ * . A . .
+ * / \ -> |
+ * a b B c a A b B c
+ *
+ * . A . .
+ * / \ -> |
+ * a b B c C d a A b B c C d
+ */
+static void trans234_subtree_merge(node234 *n, int ki, int *k, int *index) {
+ node234 *left, *right;
+ int i, leftlen, rightlen, lsize, rsize;
+
+ left = n->kids[ki]; leftlen = n->counts[ki];
+ right = n->kids[ki+1]; rightlen = n->counts[ki+1];
+
+ LOG((" trans234_subtree_merge(%p, %d):\n", n, ki));
+ LOG((" parent %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" left %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ left,
+ left->kids[0], left->counts[0], left->elems[0],
+ left->kids[1], left->counts[1], left->elems[1],
+ left->kids[2], left->counts[2], left->elems[2],
+ left->kids[3], left->counts[3]));
+ LOG((" right %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ right,
+ right->kids[0], right->counts[0], right->elems[0],
+ right->kids[1], right->counts[1], right->elems[1],
+ right->kids[2], right->counts[2], right->elems[2],
+ right->kids[3], right->counts[3]));
+
+ assert(!left->elems[2] && !right->elems[2]); /* neither is large! */
+ lsize = (left->elems[1] ? 2 : left->elems[0] ? 1 : 0);
+ rsize = (right->elems[1] ? 2 : right->elems[0] ? 1 : 0);
+
+ left->elems[lsize] = n->elems[ki];
+
+ for (i = 0; i < rsize+1; i++) {
+ left->kids[lsize+1+i] = right->kids[i];
+ left->counts[lsize+1+i] = right->counts[i];
+ if (left->kids[lsize+1+i])
+ left->kids[lsize+1+i]->parent = left;
+ if (i < rsize)
+ left->elems[lsize+1+i] = right->elems[i];
+ }
+
+ n->counts[ki] += rightlen + 1;
+
+ sfree(right);
+
+ /*
+ * Move the rest of n up by one.
+ */
+ for (i = ki+1; i < 3; i++) {
+ n->kids[i] = n->kids[i+1];
+ n->counts[i] = n->counts[i+1];
+ }
+ for (i = ki; i < 2; i++) {
+ n->elems[i] = n->elems[i+1];
+ }
+ n->kids[3] = NULL;
+ n->counts[3] = 0;
+ n->elems[2] = NULL;
+
+ if (k) {
+ LOG((" before: k,index = %d,%d\n", (*k), (*index)));
+ if ((*k) == ki+1) {
+ (*k)--;
+ (*index) += leftlen + 1;
+ } else if ((*k) > ki+1) {
+ (*k)--;
+ }
+ LOG((" after: k,index = %d,%d\n", (*k), (*index)));
+ }
+
+ LOG((" parent %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" merged %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ left,
+ left->kids[0], left->counts[0], left->elems[0],
+ left->kids[1], left->counts[1], left->elems[1],
+ left->kids[2], left->counts[2], left->elems[2],
+ left->kids[3], left->counts[3]));
+
+}
+
+/*
+ * Delete an element e in a 2-3-4 tree. Does not free the element,
+ * merely removes all links to it from the tree nodes.
+ */
+static void *delpos234_internal(tree234 *t, int index) {
+ node234 *n;
+ void *retval;
+ int ki, i;
+
+ retval = NULL;
+
+ n = t->root; /* by assumption this is non-NULL */
+ LOG(("deleting item %d from tree %p\n", index, t));
+ while (1) {
+ node234 *sub;
+
+ LOG((" node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d index=%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3],
+ index));
+ if (index <= n->counts[0]) {
+ ki = 0;
+ } else if (index -= n->counts[0]+1, index <= n->counts[1]) {
+ ki = 1;
+ } else if (index -= n->counts[1]+1, index <= n->counts[2]) {
+ ki = 2;
+ } else if (index -= n->counts[2]+1, index <= n->counts[3]) {
+ ki = 3;
+ } else {
+ assert(0); /* can't happen */
+ }
+
+ if (!n->kids[0])
+ break; /* n is a leaf node; we're here! */
+
+ /*
+ * Check to see if we've found our target element. If so,
+ * we must choose a new target (we'll use the old target's
+ * successor, which will be in a leaf), move it into the
+ * place of the old one, continue down to the leaf and
+ * delete the old copy of the new target.
+ */
+ if (index == n->counts[ki]) {
+ node234 *m;
+ LOG((" found element in internal node, index %d\n", ki));
+ assert(n->elems[ki]); /* must be a kid _before_ an element */
+ ki++; index = 0;
+ for (m = n->kids[ki]; m->kids[0]; m = m->kids[0])
+ continue;
+ LOG((" replacing with element \"%s\" from leaf node %p\n",
+ m->elems[0], m));
+ retval = n->elems[ki-1];
+ n->elems[ki-1] = m->elems[0];
+ }
+
+ /*
+ * Recurse down to subtree ki. If it has only one element,
+ * we have to do some transformation to start with.
+ */
+ LOG((" moving to subtree %d\n", ki));
+ sub = n->kids[ki];
+ if (!sub->elems[1]) {
+ LOG((" subtree has only one element!\n"));
+ if (ki > 0 && n->kids[ki-1]->elems[1]) {
+ /*
+ * Child ki has only one element, but child
+ * ki-1 has two or more. So we need to move a
+ * subtree from ki-1 to ki.
+ */
+ trans234_subtree_right(n, ki-1, &ki, &index);
+ } else if (ki < 3 && n->kids[ki+1] &&
+ n->kids[ki+1]->elems[1]) {
+ /*
+ * Child ki has only one element, but ki+1 has
+ * two or more. Move a subtree from ki+1 to ki.
+ */
+ trans234_subtree_left(n, ki+1, &ki, &index);
+ } else {
+ /*
+ * ki is small with only small neighbours. Pick a
+ * neighbour and merge with it.
+ */
+ trans234_subtree_merge(n, ki>0 ? ki-1 : ki, &ki, &index);
+ sub = n->kids[ki];
+
+ if (!n->elems[0]) {
+ /*
+ * The root is empty and needs to be
+ * removed.
+ */
+ LOG((" shifting root!\n"));
+ t->root = sub;
+ sub->parent = NULL;
+ sfree(n);
+ n = NULL;
+ }
+ }
+ }
+
+ if (n)
+ n->counts[ki]--;
+ n = sub;
+ }
+
+ /*
+ * Now n is a leaf node, and ki marks the element number we
+ * want to delete. We've already arranged for the leaf to be
+ * bigger than minimum size, so let's just go to it.
+ */
+ assert(!n->kids[0]);
+ if (!retval)
+ retval = n->elems[ki];
+
+ for (i = ki; i < 2 && n->elems[i+1]; i++)
+ n->elems[i] = n->elems[i+1];
+ n->elems[i] = NULL;
+
+ /*
+ * It's just possible that we have reduced the leaf to zero
+ * size. This can only happen if it was the root - so destroy
+ * it and make the tree empty.
+ */
+ if (!n->elems[0]) {
+ LOG((" removed last element in tree, destroying empty root\n"));
+ assert(n == t->root);
+ sfree(n);
+ t->root = NULL;
+ }
+
+ return retval; /* finished! */
+}
+void *delpos234(tree234 *t, int index) {
+ if (index < 0 || index >= countnode234(t->root))
+ return NULL;
+ return delpos234_internal(t, index);
+}
+void *del234(tree234 *t, void *e) {
+ int index;
+ if (!findrelpos234(t, e, NULL, REL234_EQ, &index))
+ return NULL; /* it wasn't in there anyway */
+ return delpos234_internal(t, index); /* it's there; delete it. */
+}
+
+/*
+ * Join two subtrees together with a separator element between
+ * them, given their relative height.
+ *
+ * (Height<0 means the left tree is shorter, >0 means the right
+ * tree is shorter, =0 means (duh) they're equal.)
+ *
+ * It is assumed that any checks needed on the ordering criterion
+ * have _already_ been done.
+ *
+ * The value returned in `height' is 0 or 1 depending on whether the
+ * resulting tree is the same height as the original larger one, or
+ * one higher.
+ */
+static node234 *join234_internal(node234 *left, void *sep,
+ node234 *right, int *height) {
+ node234 *root, *node;
+ int relht = *height;
+ int ki;
+
+ LOG((" join: joining %p \"%s\" %p, relative height is %d\n",
+ left, sep, right, relht));
+ if (relht == 0) {
+ /*
+ * The trees are the same height. Create a new one-element
+ * root containing the separator and pointers to the two
+ * nodes.
+ */
+ node234 *newroot;
+ newroot = snew(node234);
+ newroot->kids[0] = left; newroot->counts[0] = countnode234(left);
+ newroot->elems[0] = sep;
+ newroot->kids[1] = right; newroot->counts[1] = countnode234(right);
+ newroot->elems[1] = NULL;
+ newroot->kids[2] = NULL; newroot->counts[2] = 0;
+ newroot->elems[2] = NULL;
+ newroot->kids[3] = NULL; newroot->counts[3] = 0;
+ newroot->parent = NULL;
+ if (left) left->parent = newroot;
+ if (right) right->parent = newroot;
+ *height = 1;
+ LOG((" join: same height, brand new root\n"));
+ return newroot;
+ }
+
+ /*
+ * This now works like the addition algorithm on the larger
+ * tree. We're replacing a single kid pointer with two kid
+ * pointers separated by an element; if that causes the node to
+ * overload, we split it in two, move a separator element up to
+ * the next node, and repeat.
+ */
+ if (relht < 0) {
+ /*
+ * Left tree is shorter. Search down the right tree to find
+ * the pointer we're inserting at.
+ */
+ node = root = right;
+ while (++relht < 0) {
+ node = node->kids[0];
+ }
+ ki = 0;
+ right = node->kids[ki];
+ } else {
+ /*
+ * Right tree is shorter; search down the left to find the
+ * pointer we're inserting at.
+ */
+ node = root = left;
+ while (--relht > 0) {
+ if (node->elems[2])
+ node = node->kids[3];
+ else if (node->elems[1])
+ node = node->kids[2];
+ else
+ node = node->kids[1];
+ }
+ if (node->elems[2])
+ ki = 3;
+ else if (node->elems[1])
+ ki = 2;
+ else
+ ki = 1;
+ left = node->kids[ki];
+ }
+
+ /*
+ * Now proceed as for addition.
+ */
+ *height = add234_insert(left, sep, right, &root, node, ki);
+
+ return root;
+}
+static int height234(tree234 *t) {
+ int level = 0;
+ node234 *n = t->root;
+ while (n) {
+ level++;
+ n = n->kids[0];
+ }
+ return level;
+}
+tree234 *join234(tree234 *t1, tree234 *t2) {
+ int size2 = countnode234(t2->root);
+ if (size2 > 0) {
+ void *element;
+ int relht;
+
+ if (t1->cmp) {
+ element = index234(t2, 0);
+ element = findrelpos234(t1, element, NULL, REL234_GE, NULL);
+ if (element)
+ return NULL;
+ }
+
+ element = delpos234(t2, 0);
+ relht = height234(t1) - height234(t2);
+ t1->root = join234_internal(t1->root, element, t2->root, &relht);
+ t2->root = NULL;
+ }
+ return t1;
+}
+tree234 *join234r(tree234 *t1, tree234 *t2) {
+ int size1 = countnode234(t1->root);
+ if (size1 > 0) {
+ void *element;
+ int relht;
+
+ if (t2->cmp) {
+ element = index234(t1, size1-1);
+ element = findrelpos234(t2, element, NULL, REL234_LE, NULL);
+ if (element)
+ return NULL;
+ }
+
+ element = delpos234(t1, size1-1);
+ relht = height234(t1) - height234(t2);
+ t2->root = join234_internal(t1->root, element, t2->root, &relht);
+ t1->root = NULL;
+ }
+ return t2;
+}
+
+/*
+ * Split out the first <index> elements in a tree and return a
+ * pointer to the root node. Leave the root node of the remainder
+ * in t.
+ */
+static node234 *split234_internal(tree234 *t, int index) {
+ node234 *halves[2], *n, *sib, *sub;
+ node234 *lparent, *rparent;
+ int ki, pki, i, half, lcount, rcount;
+
+ n = t->root;
+ LOG(("splitting tree %p at point %d\n", t, index));
+
+ /*
+ * Easy special cases. After this we have also dealt completely
+ * with the empty-tree case and we can assume the root exists.
+ */
+ if (index == 0) /* return nothing */
+ return NULL;
+ if (index == countnode234(t->root)) { /* return the whole tree */
+ node234 *ret = t->root;
+ t->root = NULL;
+ return ret;
+ }
+
+ /*
+ * Search down the tree to find the split point.
+ */
+ lparent = rparent = NULL;
+ while (n) {
+ LOG((" node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d index=%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3],
+ index));
+ lcount = index;
+ rcount = countnode234(n) - lcount;
+ if (index <= n->counts[0]) {
+ ki = 0;
+ } else if (index -= n->counts[0]+1, index <= n->counts[1]) {
+ ki = 1;
+ } else if (index -= n->counts[1]+1, index <= n->counts[2]) {
+ ki = 2;
+ } else {
+ index -= n->counts[2]+1;
+ ki = 3;
+ }
+
+ LOG((" splitting at subtree %d\n", ki));
+ sub = n->kids[ki];
+
+ LOG((" splitting at child index %d\n", ki));
+
+ /*
+ * Split the node, put halves[0] on the right of the left
+ * one and halves[1] on the left of the right one, put the
+ * new node pointers in halves[0] and halves[1], and go up
+ * a level.
+ */
+ sib = snew(node234);
+ for (i = 0; i < 3; i++) {
+ if (i+ki < 3 && n->elems[i+ki]) {
+ sib->elems[i] = n->elems[i+ki];
+ sib->kids[i+1] = n->kids[i+ki+1];
+ if (sib->kids[i+1]) sib->kids[i+1]->parent = sib;
+ sib->counts[i+1] = n->counts[i+ki+1];
+ n->elems[i+ki] = NULL;
+ n->kids[i+ki+1] = NULL;
+ n->counts[i+ki+1] = 0;
+ } else {
+ sib->elems[i] = NULL;
+ sib->kids[i+1] = NULL;
+ sib->counts[i+1] = 0;
+ }
+ }
+ if (lparent) {
+ lparent->kids[pki] = n;
+ lparent->counts[pki] = lcount;
+ n->parent = lparent;
+ rparent->kids[0] = sib;
+ rparent->counts[0] = rcount;
+ sib->parent = rparent;
+ } else {
+ halves[0] = n;
+ n->parent = NULL;
+ halves[1] = sib;
+ sib->parent = NULL;
+ }
+ lparent = n;
+ rparent = sib;
+ pki = ki;
+ LOG((" left node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ LOG((" right node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ sib,
+ sib->kids[0], sib->counts[0], sib->elems[0],
+ sib->kids[1], sib->counts[1], sib->elems[1],
+ sib->kids[2], sib->counts[2], sib->elems[2],
+ sib->kids[3], sib->counts[3]));
+
+ n = sub;
+ }
+
+ /*
+ * We've come off the bottom here, so we've successfully split
+ * the tree into two equally high subtrees. The only problem is
+ * that some of the nodes down the fault line will be smaller
+ * than the minimum permitted size. (Since this is a 2-3-4
+ * tree, that means they'll be zero-element one-child nodes.)
+ */
+ LOG((" fell off bottom, lroot is %p, rroot is %p\n",
+ halves[0], halves[1]));
+ lparent->counts[pki] = rparent->counts[0] = 0;
+ lparent->kids[pki] = rparent->kids[0] = NULL;
+
+ /*
+ * So now we go back down the tree from each of the two roots,
+ * fixing up undersize nodes.
+ */
+ for (half = 0; half < 2; half++) {
+ /*
+ * Remove the root if it's undersize (it will contain only
+ * one child pointer, so just throw it away and replace it
+ * with its child). This might happen several times.
+ */
+ while (halves[half] && !halves[half]->elems[0]) {
+ LOG((" root %p is undersize, throwing away\n", halves[half]));
+ halves[half] = halves[half]->kids[0];
+ sfree(halves[half]->parent);
+ halves[half]->parent = NULL;
+ LOG((" new root is %p\n", halves[half]));
+ }
+
+ n = halves[half];
+ while (n) {
+ void (*toward)(node234 *n, int ki, int *k, int *index);
+ int ni, merge;
+
+ /*
+ * Now we have a potentially undersize node on the
+ * right (if half==0) or left (if half==1). Sort it
+ * out, by merging with a neighbour or by transferring
+ * subtrees over. At this time we must also ensure that
+ * nodes are bigger than minimum, in case we need an
+ * element to merge two nodes below.
+ */
+ LOG((" node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
+ n,
+ n->kids[0], n->counts[0], n->elems[0],
+ n->kids[1], n->counts[1], n->elems[1],
+ n->kids[2], n->counts[2], n->elems[2],
+ n->kids[3], n->counts[3]));
+ if (half == 1) {
+ ki = 0; /* the kid we're interested in */
+ ni = 1; /* the neighbour */
+ merge = 0; /* for merge: leftmost of the two */
+ toward = trans234_subtree_left;
+ } else {
+ ki = (n->kids[3] ? 3 : n->kids[2] ? 2 : 1);
+ ni = ki-1;
+ merge = ni;
+ toward = trans234_subtree_right;
+ }
+
+ sub = n->kids[ki];
+ if (sub && !sub->elems[1]) {
+ /*
+ * This node is undersized or minimum-size. If we
+ * can merge it with its neighbour, we do so;
+ * otherwise we must be able to transfer subtrees
+ * over to it until it is greater than minimum
+ * size.
+ */
+ int undersized = (!sub->elems[0]);
+ LOG((" child %d is %ssize\n", ki,
+ undersized ? "under" : "minimum-"));
+ LOG((" neighbour is %s\n",
+ n->kids[ni]->elems[2] ? "large" :
+ n->kids[ni]->elems[1] ? "medium" : "small"));
+ if (!n->kids[ni]->elems[1] ||
+ (undersized && !n->kids[ni]->elems[2])) {
+ /*
+ * Neighbour is small, or possibly neighbour is
+ * medium and we are undersize.
+ */
+ trans234_subtree_merge(n, merge, NULL, NULL);
+ sub = n->kids[merge];
+ if (!n->elems[0]) {
+ /*
+ * n is empty, and hence must have been the
+ * root and needs to be removed.
+ */
+ assert(!n->parent);
+ LOG((" shifting root!\n"));
+ halves[half] = sub;
+ halves[half]->parent = NULL;
+ sfree(n);
+ }
+ } else {
+ /* Neighbour is big enough to move trees over. */
+ toward(n, ni, NULL, NULL);
+ if (undersized)
+ toward(n, ni, NULL, NULL);
+ }
+ }
+ n = sub;
+ }
+ }
+
+ t->root = halves[1];
+ return halves[0];
+}
+tree234 *splitpos234(tree234 *t, int index, int before) {
+ tree234 *ret;
+ node234 *n;
+ int count;
+
+ count = countnode234(t->root);
+ if (index < 0 || index > count)
+ return NULL; /* error */
+ ret = newtree234(t->cmp);
+ n = split234_internal(t, index);
+ if (before) {
+ /* We want to return the ones before the index. */
+ ret->root = n;
+ } else {
+ /*
+ * We want to keep the ones before the index and return the
+ * ones after.
+ */
+ ret->root = t->root;
+ t->root = n;
+ }
+ return ret;
+}
+tree234 *split234(tree234 *t, void *e, cmpfn234 cmp, int rel) {
+ int before;
+ int index;
+
+ assert(rel != REL234_EQ);
+
+ if (rel == REL234_GT || rel == REL234_GE) {
+ before = 1;
+ rel = (rel == REL234_GT ? REL234_LE : REL234_LT);
+ } else {
+ before = 0;
+ }
+ if (!findrelpos234(t, e, cmp, rel, &index))
+ index = 0;
+
+ return splitpos234(t, index+1, before);
+}
+
+static node234 *copynode234(node234 *n, copyfn234 copyfn, void *copyfnstate) {
+ int i;
+ node234 *n2 = snew(node234);
+
+ for (i = 0; i < 3; i++) {
+ if (n->elems[i] && copyfn)
+ n2->elems[i] = copyfn(copyfnstate, n->elems[i]);
+ else
+ n2->elems[i] = n->elems[i];
+ }
+
+ for (i = 0; i < 4; i++) {
+ if (n->kids[i]) {
+ n2->kids[i] = copynode234(n->kids[i], copyfn, copyfnstate);
+ n2->kids[i]->parent = n2;
+ } else {
+ n2->kids[i] = NULL;
+ }
+ n2->counts[i] = n->counts[i];
+ }
+
+ return n2;
+}
+tree234 *copytree234(tree234 *t, copyfn234 copyfn, void *copyfnstate) {
+ tree234 *t2;
+
+ t2 = newtree234(t->cmp);
+ if (t->root) {
+ t2->root = copynode234(t->root, copyfn, copyfnstate);
+ t2->root->parent = NULL;
+ } else
+ t2->root = NULL;
+
+ return t2;
+}
+
+#ifdef TEST
+
+/*
+ * Test code for the 2-3-4 tree. This code maintains an alternative
+ * representation of the data in the tree, in an array (using the
+ * obvious and slow insert and delete functions). After each tree
+ * operation, the verify() function is called, which ensures all
+ * the tree properties are preserved:
+ * - node->child->parent always equals node
+ * - tree->root->parent always equals NULL
+ * - number of kids == 0 or number of elements + 1;
+ * - tree has the same depth everywhere
+ * - every node has at least one element
+ * - subtree element counts are accurate
+ * - any NULL kid pointer is accompanied by a zero count
+ * - in a sorted tree: ordering property between elements of a
+ * node and elements of its children is preserved
+ * and also ensures the list represented by the tree is the same
+ * list it should be. (This last check also doubly verifies the
+ * ordering properties, because the `same list it should be' is by
+ * definition correctly ordered. It also ensures all nodes are
+ * distinct, because the enum functions would get caught in a loop
+ * if not.)
+ */
+
+#include <stdarg.h>
+
+#define srealloc realloc
+
+/*
+ * Error reporting function.
+ */
+void error(char *fmt, ...) {
+ va_list ap;
+ printf("ERROR: ");
+ va_start(ap, fmt);
+ vfprintf(stdout, fmt, ap);
+ va_end(ap);
+ printf("\n");
+}
+
+/* The array representation of the data. */
+void **array;
+int arraylen, arraysize;
+cmpfn234 cmp;
+
+/* The tree representation of the same data. */
+tree234 *tree;
+
+/*
+ * Routines to provide a diagnostic printout of a tree. Currently
+ * relies on every element in the tree being a one-character string
+ * :-)
+ */
+typedef struct {
+ char **levels;
+} dispctx;
+
+int dispnode(node234 *n, int level, dispctx *ctx) {
+ if (level == 0) {
+ int xpos = strlen(ctx->levels[0]);
+ int len;
+
+ if (n->elems[2])
+ len = sprintf(ctx->levels[0]+xpos, " %s%s%s",
+ n->elems[0], n->elems[1], n->elems[2]);
+ else if (n->elems[1])
+ len = sprintf(ctx->levels[0]+xpos, " %s%s",
+ n->elems[0], n->elems[1]);
+ else
+ len = sprintf(ctx->levels[0]+xpos, " %s",
+ n->elems[0]);
+ return xpos + 1 + (len-1) / 2;
+ } else {
+ int xpos[4], nkids;
+ int nodelen, mypos, myleft, x, i;
+
+ xpos[0] = dispnode(n->kids[0], level-3, ctx);
+ xpos[1] = dispnode(n->kids[1], level-3, ctx);
+ nkids = 2;
+ if (n->kids[2]) {
+ xpos[2] = dispnode(n->kids[2], level-3, ctx);
+ nkids = 3;
+ }
+ if (n->kids[3]) {
+ xpos[3] = dispnode(n->kids[3], level-3, ctx);
+ nkids = 4;
+ }
+
+ if (nkids == 4)
+ mypos = (xpos[1] + xpos[2]) / 2;
+ else if (nkids == 3)
+ mypos = xpos[1];
+ else
+ mypos = (xpos[0] + xpos[1]) / 2;
+ nodelen = nkids * 2 - 1;
+ myleft = mypos - ((nodelen-1)/2);
+ assert(myleft >= xpos[0]);
+ assert(myleft + nodelen-1 <= xpos[nkids-1]);
+
+ x = strlen(ctx->levels[level]);
+ while (x <= xpos[0] && x < myleft)
+ ctx->levels[level][x++] = ' ';
+ while (x < myleft)
+ ctx->levels[level][x++] = '_';
+ if (nkids==4)
+ x += sprintf(ctx->levels[level]+x, ".%s.%s.%s.",
+ n->elems[0], n->elems[1], n->elems[2]);
+ else if (nkids==3)
+ x += sprintf(ctx->levels[level]+x, ".%s.%s.",
+ n->elems[0], n->elems[1]);
+ else
+ x += sprintf(ctx->levels[level]+x, ".%s.",
+ n->elems[0]);
+ while (x < xpos[nkids-1])
+ ctx->levels[level][x++] = '_';
+ ctx->levels[level][x] = '\0';
+
+ x = strlen(ctx->levels[level-1]);
+ for (i = 0; i < nkids; i++) {
+ int rpos, pos;
+ rpos = xpos[i];
+ if (i > 0 && i < nkids-1)
+ pos = myleft + 2*i;
+ else
+ pos = rpos;
+ if (rpos < pos)
+ rpos++;
+ while (x < pos && x < rpos)
+ ctx->levels[level-1][x++] = ' ';
+ if (x == pos)
+ ctx->levels[level-1][x++] = '|';
+ while (x < pos || x < rpos)
+ ctx->levels[level-1][x++] = '_';
+ if (x == pos)
+ ctx->levels[level-1][x++] = '|';
+ }
+ ctx->levels[level-1][x] = '\0';
+
+ x = strlen(ctx->levels[level-2]);
+ for (i = 0; i < nkids; i++) {
+ int rpos = xpos[i];
+
+ while (x < rpos)
+ ctx->levels[level-2][x++] = ' ';
+ ctx->levels[level-2][x++] = '|';
+ }
+ ctx->levels[level-2][x] = '\0';
+
+ return mypos;
+ }
+}
+
+void disptree(tree234 *t) {
+ dispctx ctx;
+ char *leveldata;
+ int width = count234(t);
+ int ht = height234(t) * 3 - 2;
+ int i;
+
+ if (!t->root) {
+ printf("[empty tree]\n");
+ }
+
+ leveldata = smalloc(ht * (width+2));
+ ctx.levels = smalloc(ht * sizeof(char *));
+ for (i = 0; i < ht; i++) {
+ ctx.levels[i] = leveldata + i * (width+2);
+ ctx.levels[i][0] = '\0';
+ }
+
+ (void) dispnode(t->root, ht-1, &ctx);
+
+ for (i = ht; i-- ;)
+ printf("%s\n", ctx.levels[i]);
+
+ sfree(ctx.levels);
+ sfree(leveldata);
+}
+
+typedef struct {
+ int treedepth;
+ int elemcount;
+} chkctx;
+
+int chknode(chkctx *ctx, int level, node234 *node,
+ void *lowbound, void *highbound) {
+ int nkids, nelems;
+ int i;
+ int count;
+
+ /* Count the non-NULL kids. */
+ for (nkids = 0; nkids < 4 && node->kids[nkids]; nkids++);
+ /* Ensure no kids beyond the first NULL are non-NULL. */
+ for (i = nkids; i < 4; i++)
+ if (node->kids[i]) {
+ error("node %p: nkids=%d but kids[%d] non-NULL",
+ node, nkids, i);
+ } else if (node->counts[i]) {
+ error("node %p: kids[%d] NULL but count[%d]=%d nonzero",
+ node, i, i, node->counts[i]);
+ }
+
+ /* Count the non-NULL elements. */
+ for (nelems = 0; nelems < 3 && node->elems[nelems]; nelems++);
+ /* Ensure no elements beyond the first NULL are non-NULL. */
+ for (i = nelems; i < 3; i++)
+ if (node->elems[i]) {
+ error("node %p: nelems=%d but elems[%d] non-NULL",
+ node, nelems, i);
+ }
+
+ if (nkids == 0) {
+ /*
+ * If nkids==0, this is a leaf node; verify that the tree
+ * depth is the same everywhere.
+ */
+ if (ctx->treedepth < 0)
+ ctx->treedepth = level; /* we didn't know the depth yet */
+ else if (ctx->treedepth != level)
+ error("node %p: leaf at depth %d, previously seen depth %d",
+ node, level, ctx->treedepth);
+ } else {
+ /*
+ * If nkids != 0, then it should be nelems+1, unless nelems
+ * is 0 in which case nkids should also be 0 (and so we
+ * shouldn't be in this condition at all).
+ */
+ int shouldkids = (nelems ? nelems+1 : 0);
+ if (nkids != shouldkids) {
+ error("node %p: %d elems should mean %d kids but has %d",
+ node, nelems, shouldkids, nkids);
+ }
+ }
+
+ /*
+ * nelems should be at least 1.
+ */
+ if (nelems == 0) {
+ error("node %p: no elems", node, nkids);
+ }
+
+ /*
+ * Add nelems to the running element count of the whole tree.
+ */
+ ctx->elemcount += nelems;
+
+ /*
+ * Check ordering property: all elements should be strictly >
+ * lowbound, strictly < highbound, and strictly < each other in
+ * sequence. (lowbound and highbound are NULL at edges of tree
+ * - both NULL at root node - and NULL is considered to be <
+ * everything and > everything. IYSWIM.)
+ */
+ if (cmp) {
+ for (i = -1; i < nelems; i++) {
+ void *lower = (i == -1 ? lowbound : node->elems[i]);
+ void *higher = (i+1 == nelems ? highbound : node->elems[i+1]);
+ if (lower && higher && cmp(lower, higher) >= 0) {
+ error("node %p: kid comparison [%d=%s,%d=%s] failed",
+ node, i, lower, i+1, higher);
+ }
+ }
+ }
+
+ /*
+ * Check parent pointers: all non-NULL kids should have a
+ * parent pointer coming back to this node.
+ */
+ for (i = 0; i < nkids; i++)
+ if (node->kids[i]->parent != node) {
+ error("node %p kid %d: parent ptr is %p not %p",
+ node, i, node->kids[i]->parent, node);
+ }
+
+
+ /*
+ * Now (finally!) recurse into subtrees.
+ */
+ count = nelems;
+
+ for (i = 0; i < nkids; i++) {
+ void *lower = (i == 0 ? lowbound : node->elems[i-1]);
+ void *higher = (i >= nelems ? highbound : node->elems[i]);
+ int subcount = chknode(ctx, level+1, node->kids[i], lower, higher);
+ if (node->counts[i] != subcount) {
+ error("node %p kid %d: count says %d, subtree really has %d",
+ node, i, node->counts[i], subcount);
+ }
+ count += subcount;
+ }
+
+ return count;
+}
+
+void verifytree(tree234 *tree, void **array, int arraylen) {
+ chkctx ctx;
+ int i;
+ void *p;
+
+ ctx.treedepth = -1; /* depth unknown yet */
+ ctx.elemcount = 0; /* no elements seen yet */
+ /*
+ * Verify validity of tree properties.
+ */
+ if (tree->root) {
+ if (tree->root->parent != NULL)
+ error("root->parent is %p should be null", tree->root->parent);
+ chknode(&ctx, 0, tree->root, NULL, NULL);
+ }
+ printf("tree depth: %d\n", ctx.treedepth);
+ /*
+ * Enumerate the tree and ensure it matches up to the array.
+ */
+ for (i = 0; NULL != (p = index234(tree, i)); i++) {
+ if (i >= arraylen)
+ error("tree contains more than %d elements", arraylen);
+ if (array[i] != p)
+ error("enum at position %d: array says %s, tree says %s",
+ i, array[i], p);
+ }
+ if (ctx.elemcount != i) {
+ error("tree really contains %d elements, enum gave %d",
+ ctx.elemcount, i);
+ }
+ if (i < arraylen) {
+ error("enum gave only %d elements, array has %d", i, arraylen);
+ }
+ i = count234(tree);
+ if (ctx.elemcount != i) {
+ error("tree really contains %d elements, count234 gave %d",
+ ctx.elemcount, i);
+ }
+}
+void verify(void) { verifytree(tree, array, arraylen); }
+
+void internal_addtest(void *elem, int index, void *realret) {
+ int i, j;
+ void *retval;
+
+ if (arraysize < arraylen+1) {
+ arraysize = arraylen+1+256;
+ array = (array == NULL ? smalloc(arraysize*sizeof(*array)) :
+ srealloc(array, arraysize*sizeof(*array)));
+ }
+
+ i = index;
+ /* now i points to the first element >= elem */
+ retval = elem; /* expect elem returned (success) */
+ for (j = arraylen; j > i; j--)
+ array[j] = array[j-1];
+ array[i] = elem; /* add elem to array */
+ arraylen++;
+
+ if (realret != retval) {
+ error("add: retval was %p expected %p", realret, retval);
+ }
+
+ verify();
+}
+
+void addtest(void *elem) {
+ int i;
+ void *realret;
+
+ realret = add234(tree, elem);
+
+ i = 0;
+ while (i < arraylen && cmp(elem, array[i]) > 0)
+ i++;
+ if (i < arraylen && !cmp(elem, array[i])) {
+ void *retval = array[i]; /* expect that returned not elem */
+ if (realret != retval) {
+ error("add: retval was %p expected %p", realret, retval);
+ }
+ } else
+ internal_addtest(elem, i, realret);
+}
+
+void addpostest(void *elem, int i) {
+ void *realret;
+
+ realret = addpos234(tree, elem, i);
+
+ internal_addtest(elem, i, realret);
+}
+
+void delpostest(int i) {
+ int index = i;
+ void *elem = array[i], *ret;
+
+ /* i points to the right element */
+ while (i < arraylen-1) {
+ array[i] = array[i+1];
+ i++;
+ }
+ arraylen--; /* delete elem from array */
+
+ if (tree->cmp)
+ ret = del234(tree, elem);
+ else
+ ret = delpos234(tree, index);
+
+ if (ret != elem) {
+ error("del returned %p, expected %p", ret, elem);
+ }
+
+ verify();
+}
+
+void deltest(void *elem) {
+ int i;
+
+ i = 0;
+ while (i < arraylen && cmp(elem, array[i]) > 0)
+ i++;
+ if (i >= arraylen || cmp(elem, array[i]) != 0)
+ return; /* don't do it! */
+ delpostest(i);
+}
+
+/* A sample data set and test utility. Designed for pseudo-randomness,
+ * and yet repeatability. */
+
+/*
+ * This random number generator uses the `portable implementation'
+ * given in ANSI C99 draft N869. It assumes `unsigned' is 32 bits;
+ * change it if not.
+ */
+int randomnumber(unsigned *seed) {
+ *seed *= 1103515245;
+ *seed += 12345;
+ return ((*seed) / 65536) % 32768;
+}
+
+int mycmp(void *av, void *bv) {
+ char const *a = (char const *)av;
+ char const *b = (char const *)bv;
+ return strcmp(a, b);
+}
+
+#define lenof(x) ( sizeof((x)) / sizeof(*(x)) )
+
+char *strings[] = {
+ "0", "2", "3", "I", "K", "d", "H", "J", "Q", "N", "n", "q", "j", "i",
+ "7", "G", "F", "D", "b", "x", "g", "B", "e", "v", "V", "T", "f", "E",
+ "S", "8", "A", "k", "X", "p", "C", "R", "a", "o", "r", "O", "Z", "u",
+ "6", "1", "w", "L", "P", "M", "c", "U", "h", "9", "t", "5", "W", "Y",
+ "m", "s", "l", "4",
+#if 0
+ "a", "ab", "absque", "coram", "de",
+ "palam", "clam", "cum", "ex", "e",
+ "sine", "tenus", "pro", "prae",
+ "banana", "carrot", "cabbage", "broccoli", "onion", "zebra",
+ "penguin", "blancmange", "pangolin", "whale", "hedgehog",
+ "giraffe", "peanut", "bungee", "foo", "bar", "baz", "quux",
+ "murfl", "spoo", "breen", "flarn", "octothorpe",
+ "snail", "tiger", "elephant", "octopus", "warthog", "armadillo",
+ "aardvark", "wyvern", "dragon", "elf", "dwarf", "orc", "goblin",
+ "pixie", "basilisk", "warg", "ape", "lizard", "newt", "shopkeeper",
+ "wand", "ring", "amulet"
+#endif
+};
+
+#define NSTR lenof(strings)
+
+void findtest(void) {
+ static const int rels[] = {
+ REL234_EQ, REL234_GE, REL234_LE, REL234_LT, REL234_GT
+ };
+ static const char *const relnames[] = {
+ "EQ", "GE", "LE", "LT", "GT"
+ };
+ int i, j, rel, index;
+ char *p, *ret, *realret, *realret2;
+ int lo, hi, mid, c;
+
+ for (i = 0; i < (int)NSTR; i++) {
+ p = strings[i];
+ for (j = 0; j < (int)(sizeof(rels)/sizeof(*rels)); j++) {
+ rel = rels[j];
+
+ lo = 0; hi = arraylen-1;
+ while (lo <= hi) {
+ mid = (lo + hi) / 2;
+ c = strcmp(p, array[mid]);
+ if (c < 0)
+ hi = mid-1;
+ else if (c > 0)
+ lo = mid+1;
+ else
+ break;
+ }
+
+ if (c == 0) {
+ if (rel == REL234_LT)
+ ret = (mid > 0 ? array[--mid] : NULL);
+ else if (rel == REL234_GT)
+ ret = (mid < arraylen-1 ? array[++mid] : NULL);
+ else
+ ret = array[mid];
+ } else {
+ assert(lo == hi+1);
+ if (rel == REL234_LT || rel == REL234_LE) {
+ mid = hi;
+ ret = (hi >= 0 ? array[hi] : NULL);
+ } else if (rel == REL234_GT || rel == REL234_GE) {
+ mid = lo;
+ ret = (lo < arraylen ? array[lo] : NULL);
+ } else
+ ret = NULL;
+ }
+
+ realret = findrelpos234(tree, p, NULL, rel, &index);
+ if (realret != ret) {
+ error("find(\"%s\",%s) gave %s should be %s",
+ p, relnames[j], realret, ret);
+ }
+ if (realret && index != mid) {
+ error("find(\"%s\",%s) gave %d should be %d",
+ p, relnames[j], index, mid);
+ }
+ if (realret && rel == REL234_EQ) {
+ realret2 = index234(tree, index);
+ if (realret2 != realret) {
+ error("find(\"%s\",%s) gave %s(%d) but %d -> %s",
+ p, relnames[j], realret, index, index, realret2);
+ }
+ }
+#if 0
+ printf("find(\"%s\",%s) gave %s(%d)\n", p, relnames[j],
+ realret, index);
+#endif
+ }
+ }
+
+ realret = findrelpos234(tree, NULL, NULL, REL234_GT, &index);
+ if (arraylen && (realret != array[0] || index != 0)) {
+ error("find(NULL,GT) gave %s(%d) should be %s(0)",
+ realret, index, array[0]);
+ } else if (!arraylen && (realret != NULL)) {
+ error("find(NULL,GT) gave %s(%d) should be NULL",
+ realret, index);
+ }
+
+ realret = findrelpos234(tree, NULL, NULL, REL234_LT, &index);
+ if (arraylen && (realret != array[arraylen-1] || index != arraylen-1)) {
+ error("find(NULL,LT) gave %s(%d) should be %s(0)",
+ realret, index, array[arraylen-1]);
+ } else if (!arraylen && (realret != NULL)) {
+ error("find(NULL,LT) gave %s(%d) should be NULL",
+ realret, index);
+ }
+}
+
+void splittest(tree234 *tree, void **array, int arraylen) {
+ int i;
+ tree234 *tree3, *tree4;
+ for (i = 0; i <= arraylen; i++) {
+ tree3 = copytree234(tree, NULL, NULL);
+ tree4 = splitpos234(tree3, i, 0);
+ verifytree(tree3, array, i);
+ verifytree(tree4, array+i, arraylen-i);
+ join234(tree3, tree4);
+ freetree234(tree4); /* left empty by join */
+ verifytree(tree3, array, arraylen);
+ freetree234(tree3);
+ }
+}
+
+int main(void) {
+ int in[NSTR];
+ int i, j, k;
+ int tworoot, tmplen;
+ unsigned seed = 0;
+ tree234 *tree2, *tree3, *tree4;
+ int c;
+
+ setvbuf(stdout, NULL, _IOLBF, 0);
+
+ for (i = 0; i < (int)NSTR; i++) in[i] = 0;
+ array = NULL;
+ arraylen = arraysize = 0;
+ tree = newtree234(mycmp);
+ cmp = mycmp;
+
+ verify();
+ for (i = 0; i < 10000; i++) {
+ j = randomnumber(&seed);
+ j %= NSTR;
+ printf("trial: %d\n", i);
+ if (in[j]) {
+ printf("deleting %s (%d)\n", strings[j], j);
+ deltest(strings[j]);
+ in[j] = 0;
+ } else {
+ printf("adding %s (%d)\n", strings[j], j);
+ addtest(strings[j]);
+ in[j] = 1;
+ }
+ disptree(tree);
+ findtest();
+ }
+
+ while (arraylen > 0) {
+ j = randomnumber(&seed);
+ j %= arraylen;
+ deltest(array[j]);
+ }
+
+ freetree234(tree);
+
+ /*
+ * Now try an unsorted tree. We don't really need to test
+ * delpos234 because we know del234 is based on it, so it's
+ * already been tested in the above sorted-tree code; but for
+ * completeness we'll use it to tear down our unsorted tree
+ * once we've built it.
+ */
+ tree = newtree234(NULL);
+ cmp = NULL;
+ verify();
+ for (i = 0; i < 1000; i++) {
+ printf("trial: %d\n", i);
+ j = randomnumber(&seed);
+ j %= NSTR;
+ k = randomnumber(&seed);
+ k %= count234(tree)+1;
+ printf("adding string %s at index %d\n", strings[j], k);
+ addpostest(strings[j], k);
+ }
+
+ /*
+ * While we have this tree in its full form, we'll take a copy
+ * of it to use in split and join testing.
+ */
+ tree2 = copytree234(tree, NULL, NULL);
+ verifytree(tree2, array, arraylen);/* check the copy is accurate */
+ /*
+ * Split tests. Split the tree at every possible point and
+ * check the resulting subtrees.
+ */
+ tworoot = (!tree2->root->elems[1]);/* see if it has a 2-root */
+ splittest(tree2, array, arraylen);
+ /*
+ * Now do the split test again, but on a tree that has a 2-root
+ * (if the previous one didn't) or doesn't (if the previous one
+ * did).
+ */
+ tmplen = arraylen;
+ while ((!tree2->root->elems[1]) == tworoot) {
+ delpos234(tree2, --tmplen);
+ }
+ printf("now trying splits on second tree\n");
+ splittest(tree2, array, tmplen);
+ freetree234(tree2);
+
+ /*
+ * Back to the main testing of uncounted trees.
+ */
+ while (count234(tree) > 0) {
+ printf("cleanup: tree size %d\n", count234(tree));
+ j = randomnumber(&seed);
+ j %= count234(tree);
+ printf("deleting string %s from index %d\n", (char *)array[j], j);
+ delpostest(j);
+ }
+ freetree234(tree);
+
+ /*
+ * Finally, do some testing on split/join on _sorted_ trees. At
+ * the same time, we'll be testing split on very small trees.
+ */
+ tree = newtree234(mycmp);
+ cmp = mycmp;
+ arraylen = 0;
+ for (i = 0; i < 17; i++) {
+ tree2 = copytree234(tree, NULL, NULL);
+ splittest(tree2, array, arraylen);
+ freetree234(tree2);
+ if (i < 16)
+ addtest(strings[i]);
+ }
+ freetree234(tree);
+
+ /*
+ * Test silly cases of join: join(emptytree, emptytree), and
+ * also ensure join correctly spots when sorted trees fail the
+ * ordering constraint.
+ */
+ tree = newtree234(mycmp);
+ tree2 = newtree234(mycmp);
+ tree3 = newtree234(mycmp);
+ tree4 = newtree234(mycmp);
+ assert(mycmp(strings[0], strings[1]) < 0); /* just in case :-) */
+ add234(tree2, strings[1]);
+ add234(tree4, strings[0]);
+ array[0] = strings[0];
+ array[1] = strings[1];
+ verifytree(tree, array, 0);
+ verifytree(tree2, array+1, 1);
+ verifytree(tree3, array, 0);
+ verifytree(tree4, array, 1);
+
+ /*
+ * So:
+ * - join(tree,tree3) should leave both tree and tree3 unchanged.
+ * - joinr(tree,tree2) should leave both tree and tree2 unchanged.
+ * - join(tree4,tree3) should leave both tree3 and tree4 unchanged.
+ * - join(tree, tree2) should move the element from tree2 to tree.
+ * - joinr(tree4, tree3) should move the element from tree4 to tree3.
+ * - join(tree,tree3) should return NULL and leave both unchanged.
+ * - join(tree3,tree) should work and create a bigger tree in tree3.
+ */
+ assert(tree == join234(tree, tree3));
+ verifytree(tree, array, 0);
+ verifytree(tree3, array, 0);
+ assert(tree2 == join234r(tree, tree2));
+ verifytree(tree, array, 0);
+ verifytree(tree2, array+1, 1);
+ assert(tree4 == join234(tree4, tree3));
+ verifytree(tree3, array, 0);
+ verifytree(tree4, array, 1);
+ assert(tree == join234(tree, tree2));
+ verifytree(tree, array+1, 1);
+ verifytree(tree2, array, 0);
+ assert(tree3 == join234r(tree4, tree3));
+ verifytree(tree3, array, 1);
+ verifytree(tree4, array, 0);
+ assert(NULL == join234(tree, tree3));
+ verifytree(tree, array+1, 1);
+ verifytree(tree3, array, 1);
+ assert(tree3 == join234(tree3, tree));
+ verifytree(tree3, array, 2);
+ verifytree(tree, array, 0);
+
+ return 0;
+}
+
+#endif
+
+#if 0 /* sorted list of strings might be useful */
+{
+ "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",
+}
+#endif
diff --git a/app/tools/halibut/tree234.h b/app/tools/halibut/tree234.h
new file mode 100644
index 0000000..f75c8f7
--- /dev/null
+++ b/app/tools/halibut/tree234.h
@@ -0,0 +1,202 @@
+/*
+ * tree234.h: header defining functions in tree234.c.
+ *
+ * This file is copyright 1999-2001 Simon Tatham.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL SIMON TATHAM BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef TREE234_H
+#define TREE234_H
+
+/*
+ * This typedef is opaque outside tree234.c itself.
+ */
+typedef struct tree234_Tag tree234;
+
+typedef int (*cmpfn234)(void *, void *);
+
+typedef void *(*copyfn234)(void *state, void *element);
+
+/*
+ * Create a 2-3-4 tree. If `cmp' is NULL, the tree is unsorted, and
+ * lookups by key will fail: you can only look things up by numeric
+ * index, and you have to use addpos234() and delpos234().
+ */
+tree234 *newtree234(cmpfn234 cmp);
+
+/*
+ * Free a 2-3-4 tree (not including freeing the elements).
+ */
+void freetree234(tree234 *t);
+
+/*
+ * Add an element e to a sorted 2-3-4 tree t. Returns e on success,
+ * or if an existing element compares equal, returns that.
+ */
+void *add234(tree234 *t, void *e);
+
+/*
+ * Add an element e to an unsorted 2-3-4 tree t. Returns e on
+ * success, NULL on failure. (Failure should only occur if the
+ * index is out of range or the tree is sorted.)
+ *
+ * Index range can be from 0 to the tree's current element count,
+ * inclusive.
+ */
+void *addpos234(tree234 *t, void *e, int index);
+
+/*
+ * Look up the element at a given numeric index in a 2-3-4 tree.
+ * Returns NULL if the index is out of range.
+ *
+ * One obvious use for this function is in iterating over the whole
+ * of a tree (sorted or unsorted):
+ *
+ * for (i = 0; (p = index234(tree, i)) != NULL; i++) consume(p);
+ *
+ * or
+ *
+ * int maxcount = count234(tree);
+ * for (i = 0; i < maxcount; i++) {
+ * p = index234(tree, i);
+ * assert(p != NULL);
+ * consume(p);
+ * }
+ */
+void *index234(tree234 *t, int index);
+
+/*
+ * Find an element e in a sorted 2-3-4 tree t. Returns NULL if not
+ * found. e is always passed as the first argument to cmp, so cmp
+ * can be an asymmetric function if desired. cmp can also be passed
+ * as NULL, in which case the compare function from the tree proper
+ * will be used.
+ *
+ * Three of these functions are special cases of findrelpos234. The
+ * non-`pos' variants lack the `index' parameter: if the parameter
+ * is present and non-NULL, it must point to an integer variable
+ * which will be filled with the numeric index of the returned
+ * element.
+ *
+ * The non-`rel' variants lack the `relation' parameter. This
+ * parameter allows you to specify what relation the element you
+ * provide has to the element you're looking for. This parameter
+ * can be:
+ *
+ * REL234_EQ - find only an element that compares equal to e
+ * REL234_LT - find the greatest element that compares < e
+ * REL234_LE - find the greatest element that compares <= e
+ * REL234_GT - find the smallest element that compares > e
+ * REL234_GE - find the smallest element that compares >= e
+ *
+ * Non-`rel' variants assume REL234_EQ.
+ *
+ * If `rel' is REL234_GT or REL234_LT, the `e' parameter may be
+ * NULL. In this case, REL234_GT will return the smallest element
+ * in the tree, and REL234_LT will return the greatest. This gives
+ * an alternative means of iterating over a sorted tree, instead of
+ * using index234:
+ *
+ * // to loop forwards
+ * for (p = NULL; (p = findrel234(tree, p, NULL, REL234_GT)) != NULL ;)
+ * consume(p);
+ *
+ * // to loop backwards
+ * for (p = NULL; (p = findrel234(tree, p, NULL, REL234_LT)) != NULL ;)
+ * consume(p);
+ */
+enum {
+ REL234_EQ, REL234_LT, REL234_LE, REL234_GT, REL234_GE
+};
+void *find234(tree234 *t, void *e, cmpfn234 cmp);
+void *findrel234(tree234 *t, void *e, cmpfn234 cmp, int relation);
+void *findpos234(tree234 *t, void *e, cmpfn234 cmp, int *index);
+void *findrelpos234(tree234 *t, void *e, cmpfn234 cmp, int relation,
+ int *index);
+
+/*
+ * Delete an element e in a 2-3-4 tree. Does not free the element,
+ * merely removes all links to it from the tree nodes.
+ *
+ * delpos234 deletes the element at a particular tree index: it
+ * works on both sorted and unsorted trees.
+ *
+ * del234 deletes the element passed to it, so it only works on
+ * sorted trees. (It's equivalent to using findpos234 to determine
+ * the index of an element, and then passing that index to
+ * delpos234.)
+ *
+ * Both functions return a pointer to the element they delete, for
+ * the user to free or pass on elsewhere or whatever. If the index
+ * is out of range (delpos234) or the element is already not in the
+ * tree (del234) then they return NULL.
+ */
+void *del234(tree234 *t, void *e);
+void *delpos234(tree234 *t, int index);
+
+/*
+ * Return the total element count of a tree234.
+ */
+int count234(tree234 *t);
+
+/*
+ * Split a tree234 into two valid tree234s.
+ *
+ * splitpos234 splits at a given index. If `before' is TRUE, the
+ * items at and after that index are left in t and the ones before
+ * are returned; if `before' is FALSE, the items before that index
+ * are left in t and the rest are returned.
+ *
+ * split234 splits at a given key. You can pass any of the
+ * relations used with findrel234, except for REL234_EQ. The items
+ * in the tree that satisfy the relation are returned; the
+ * remainder are left.
+ */
+tree234 *splitpos234(tree234 *t, int index, int before);
+tree234 *split234(tree234 *t, void *e, cmpfn234 cmp, int rel);
+
+/*
+ * Join two tree234s together into a single one.
+ *
+ * All the elements in t1 are placed to the left of all the
+ * elements in t2. If the trees are sorted, there will be a test to
+ * ensure that this satisfies the ordering criterion, and NULL will
+ * be returned otherwise. If the trees are unsorted, there is no
+ * restriction on the use of join234.
+ *
+ * The tree returned is t1 (join234) or t2 (join234r), if the
+ * operation is successful.
+ */
+tree234 *join234(tree234 *t1, tree234 *t2);
+tree234 *join234r(tree234 *t1, tree234 *t2);
+
+/*
+ * Make a complete copy of a tree234. Element pointers will be
+ * reused unless copyfn is non-NULL, in which case it will be used
+ * to copy each element. (copyfn takes two `void *' parameters; the
+ * first is private state and the second is the element. A simple
+ * copy routine probably won't need private state.)
+ */
+tree234 *copytree234(tree234 *t, copyfn234 copyfn, void *copyfnstate);
+
+#endif /* TREE234_H */
diff --git a/app/tools/halibut/ustring.c b/app/tools/halibut/ustring.c
new file mode 100644
index 0000000..95477a5
--- /dev/null
+++ b/app/tools/halibut/ustring.c
@@ -0,0 +1,486 @@
+/*
+ * ustring.c: Unicode string routines
+ */
+
+#include <wchar.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <time.h>
+#include "halibut.h"
+
+wchar_t *ustrdup(wchar_t const *s) {
+ wchar_t *r;
+ if (s) {
+ r = snewn(1+ustrlen(s), wchar_t);
+ ustrcpy(r, s);
+ } else {
+ r = snew(wchar_t);
+ *r = 0;
+ }
+ return r;
+}
+
+static char *ustrtoa_internal(wchar_t const *s, char *outbuf, int size,
+ int charset, int careful) {
+ int len, ret, err;
+ charset_state state = CHARSET_INIT_STATE;
+
+ if (!s) {
+ *outbuf = '\0';
+ return outbuf;
+ }
+
+ len = ustrlen(s);
+ size--; /* leave room for terminating NUL */
+ *outbuf = '\0';
+ while (len > 0) {
+ err = 0;
+ ret = charset_from_unicode(&s, &len, outbuf, size, charset, &state,
+ (careful ? &err : NULL));
+ if (err)
+ return NULL;
+ if (!ret)
+ return outbuf;
+ size -= ret;
+ outbuf += ret;
+ *outbuf = '\0';
+ }
+ /*
+ * Clean up
+ */
+ ret = charset_from_unicode(NULL, 0, outbuf, size, charset, &state, NULL);
+ size -= ret;
+ outbuf += ret;
+ *outbuf = '\0';
+ return outbuf;
+}
+
+char *ustrtoa(wchar_t const *s, char *outbuf, int size, int charset) {
+ return ustrtoa_internal(s, outbuf, size, charset, FALSE);
+}
+
+char *ustrtoa_careful(wchar_t const *s, char *outbuf, int size, int charset) {
+ return ustrtoa_internal(s, outbuf, size, charset, TRUE);
+}
+
+wchar_t *ustrfroma(char const *s, wchar_t *outbuf, int size, int charset) {
+ int len, ret;
+ charset_state state = CHARSET_INIT_STATE;
+
+ if (!s) {
+ *outbuf = L'\0';
+ return outbuf;
+ }
+
+ len = strlen(s);
+ size--; /* allow for terminating NUL */
+ *outbuf = L'\0';
+ while (len > 0) {
+ ret = charset_to_unicode(&s, &len, outbuf, size,
+ charset, &state, NULL, 0);
+ if (!ret)
+ return outbuf;
+ outbuf += ret;
+ size -= ret;
+ *outbuf = L'\0';
+ }
+ return outbuf;
+}
+
+char *utoa_internal_dup(wchar_t const *s, int charset, int *lenp, int careful)
+{
+ char *outbuf;
+ int outpos, outlen, len, ret, err;
+ charset_state state = CHARSET_INIT_STATE;
+
+ if (!s) {
+ return dupstr("");
+ }
+
+ len = ustrlen(s);
+
+ outlen = len + 10;
+ outbuf = snewn(outlen, char);
+
+ outpos = 0;
+ outbuf[outpos] = '\0';
+
+ while (len > 0) {
+ err = 0;
+ ret = charset_from_unicode(&s, &len,
+ outbuf + outpos, outlen - outpos - 1,
+ charset, &state, (careful ? &err : NULL));
+ if (err) {
+ sfree(outbuf);
+ return NULL;
+ }
+ if (!ret) {
+ outlen = outlen * 3 / 2;
+ outbuf = sresize(outbuf, outlen, char);
+ }
+ outpos += ret;
+ outbuf[outpos] = '\0';
+ }
+ /*
+ * Clean up
+ */
+ outlen = outpos + 32;
+ outbuf = sresize(outbuf, outlen, char);
+ ret = charset_from_unicode(NULL, 0,
+ outbuf + outpos, outlen - outpos + 1,
+ charset, &state, NULL);
+ outpos += ret;
+ outbuf[outpos] = '\0';
+ if (lenp)
+ *lenp = outpos;
+ return outbuf;
+}
+
+char *utoa_dup(wchar_t const *s, int charset)
+{
+ return utoa_internal_dup(s, charset, NULL, FALSE);
+}
+
+char *utoa_dup_len(wchar_t const *s, int charset, int *len)
+{
+ return utoa_internal_dup(s, charset, len, FALSE);
+}
+
+char *utoa_careful_dup(wchar_t const *s, int charset)
+{
+ return utoa_internal_dup(s, charset, NULL, TRUE);
+}
+
+wchar_t *ufroma_dup(char const *s, int charset) {
+ int len;
+ wchar_t *buf = NULL;
+
+ len = strlen(s) + 1;
+ do {
+ buf = sresize(buf, len, wchar_t);
+ ustrfroma(s, buf, len, charset);
+ len = (3 * len) / 2 + 1; /* this guarantees a strict increase */
+ } while (ustrlen(buf) >= len-1);
+
+ buf = sresize(buf, ustrlen(buf)+1, wchar_t);
+ return buf;
+}
+
+char *utoa_locale_dup(wchar_t const *s)
+{
+ /*
+ * This variant uses the C library locale.
+ */
+ char *ret;
+ int len;
+ size_t siz;
+
+ len = ustrlen(s);
+
+ ret = snewn(1 + MB_CUR_MAX * len, char);
+
+ siz = wcstombs(ret, s, len);
+
+ if (siz) {
+ assert(siz <= (size_t)(MB_CUR_MAX * len));
+ ret[siz] = '\0';
+ ret = sresize(ret, siz+1, char);
+ return ret;
+ }
+
+ /*
+ * If that failed, try a different strategy (which we will also
+ * attempt in the total absence of wcstombs). Retrieve the
+ * locale's charset from nl_langinfo or equivalent, and use
+ * normal utoa_dup.
+ */
+ return utoa_dup(s, charset_from_locale());
+}
+
+wchar_t *ufroma_locale_dup(char const *s)
+{
+ /*
+ * This variant uses the C library locale.
+ */
+ wchar_t *ret;
+ int len;
+ size_t siz;
+
+ len = strlen(s);
+
+ ret = snewn(1 + 2*len, wchar_t); /* be conservative */
+
+ siz = mbstowcs(ret, s, len);
+
+ if (siz) {
+ assert(siz <= (size_t)(2 * len));
+ ret[siz] = L'\0';
+ ret = sresize(ret, siz+1, wchar_t);
+ return ret;
+ }
+
+ /*
+ * If that failed, try a different strategy (which we will also
+ * attempt in the total absence of wcstombs). Retrieve the
+ * locale's charset from nl_langinfo or equivalent, and use
+ * normal ufroma_dup.
+ */
+ return ufroma_dup(s, charset_from_locale());
+}
+
+int ustrlen(wchar_t const *s) {
+ int len = 0;
+ while (*s++) len++;
+ return len;
+}
+
+wchar_t *uadv(wchar_t *s) {
+ return s + 1 + ustrlen(s);
+}
+
+wchar_t *ustrcpy(wchar_t *dest, wchar_t const *source) {
+ wchar_t *ret = dest;
+ do {
+ *dest++ = *source;
+ } while (*source++);
+ return ret;
+}
+
+wchar_t *ustrncpy(wchar_t *dest, wchar_t const *source, int n) {
+ wchar_t *ret = dest;
+ do {
+ *dest++ = *source;
+ if (*source) source++;
+ } while (n-- > 0);
+ return ret;
+}
+
+int ustrcmp(wchar_t *lhs, wchar_t *rhs) {
+ if (!lhs && !rhs) return 0;
+ if (!lhs) return -1;
+ if (!rhs) return +1;
+ while (*lhs && *rhs && *lhs==*rhs)
+ lhs++, rhs++;
+ if (*lhs < *rhs)
+ return -1;
+ else if (*lhs > *rhs)
+ return 1;
+ return 0;
+}
+
+wchar_t utolower(wchar_t c) {
+ if (c == L'\0')
+ return c; /* this property needed by ustricmp */
+#ifdef HAS_TOWLOWER
+ return towlower(c);
+#else
+ if (c >= 'A' && c <= 'Z')
+ c += 'a'-'A';
+ return c;
+#endif
+}
+
+int uisalpha(wchar_t c) {
+#ifdef HAS_ISWALPHA
+ return iswalpha(c);
+#else
+ return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
+#endif
+}
+
+int ustricmp(wchar_t const *lhs, wchar_t const *rhs) {
+ wchar_t lc, rc;
+ while ((lc = utolower(*lhs)) == (rc = utolower(*rhs)) && lc && rc)
+ lhs++, rhs++;
+ if (!lc && !rc)
+ return 0;
+ if (lc < rc)
+ return -1;
+ else
+ return 1;
+}
+
+int ustrnicmp(wchar_t const *lhs, wchar_t const *rhs, int maxlen) {
+ wchar_t lc = 0, rc = 0;
+ while (maxlen-- > 0 &&
+ (lc = utolower(*lhs)) == (rc = utolower(*rhs)) && lc && rc)
+ lhs++, rhs++;
+ if (lc < rc)
+ return -1;
+ else if (lc > rc)
+ return 1;
+ else
+ return 0;
+}
+
+wchar_t *ustrlow(wchar_t *s) {
+ wchar_t *p = s;
+ while (*p) {
+ *p = utolower(*p);
+ p++;
+ }
+ return s;
+}
+
+int utoi(wchar_t const *s) {
+ int sign = +1;
+ int n;
+
+ if (*s == L'-') {
+ s++;
+ sign = -1;
+ }
+
+ n = 0;
+ while (*s && *s >= L'0' && *s <= L'9') {
+ n *= 10;
+ n += (*s - '0');
+ s++;
+ }
+
+ return n;
+}
+
+double utof(wchar_t const *s)
+{
+ char *cs = utoa_dup(s, CS_ASCII);
+ double ret = atof(cs);
+ sfree(cs);
+ return ret;
+}
+
+int utob(wchar_t const *s) {
+ if (!ustricmp(s, L"yes") || !ustricmp(s, L"y") ||
+ !ustricmp(s, L"true") || !ustricmp(s, L"t"))
+ return TRUE;
+ return FALSE;
+}
+
+int uisdigit(wchar_t c) {
+ return c >= L'0' && c <= L'9';
+}
+
+#define USTRFTIME_DELTA 128
+static void ustrftime_internal(rdstring *rs, char formatchr,
+ const struct tm *timespec)
+{
+ /*
+ * strftime has the entertaining property that it returns 0
+ * _either_ on out-of-space _or_ on successful generation of
+ * the empty string. Hence we must ensure our format can never
+ * generate the empty string. Somebody throw a custard pie at
+ * whoever was responsible for that. Please?
+ */
+
+#ifdef HAS_WCSFTIME
+ wchar_t *buf = NULL;
+ wchar_t fmt[4];
+ int size, ret;
+
+ fmt[0] = L' ';
+ fmt[1] = L'%';
+ /* Format chars are all ASCII, so conversion to Unicode is no problem */
+ fmt[2] = formatchr;
+ fmt[3] = L'\0';
+
+ size = 0;
+ do {
+ size += USTRFTIME_DELTA;
+ buf = sresize(buf, size, wchar_t);
+ ret = (int) wcsftime(buf, size, fmt, timespec);
+ } while (ret == 0);
+
+ rdadds(rs, buf+1);
+ sfree(buf);
+#else
+ char *buf = NULL;
+ wchar_t *cvtbuf;
+ char fmt[4];
+ int size, ret;
+
+ fmt[0] = ' ';
+ fmt[1] = '%';
+ fmt[2] = formatchr;
+ fmt[3] = '\0';
+
+ size = 0;
+ do {
+ size += USTRFTIME_DELTA;
+ buf = sresize(buf, size, char);
+ ret = (int) strftime(buf, size, fmt, timespec);
+ } while (ret == 0);
+
+ cvtbuf = ufroma_locale_dup(buf+1);
+ rdadds(rs, cvtbuf);
+ sfree(cvtbuf);
+ sfree(buf);
+#endif
+}
+
+wchar_t *ustrftime(const wchar_t *wfmt, const struct tm *timespec)
+{
+ rdstring rs = { 0, 0, NULL };
+
+ if (!wfmt)
+ wfmt = L"%c";
+
+ while (*wfmt) {
+ if (wfmt[0] == L'%' && wfmt[1] == L'%') {
+ rdadd(&rs, L'%');
+ wfmt += 2;
+ } else if (wfmt[0] == L'%' && wfmt[1]) {
+ ustrftime_internal(&rs, wfmt[1], timespec);
+ wfmt += 2;
+ } else {
+ rdadd(&rs, wfmt[0]);
+ wfmt++;
+ }
+ }
+
+ return rdtrim(&rs);
+}
+
+/*
+ * Determine whether a Unicode string can be translated into a
+ * given charset without any missing characters.
+ */
+int cvt_ok(int charset, const wchar_t *s)
+{
+ char buf[256];
+ charset_state state = CHARSET_INIT_STATE;
+ int err, len = ustrlen(s);
+
+ err = 0;
+ while (len > 0) {
+ (void)charset_from_unicode(&s, &len, buf, lenof(buf),
+ charset, &state, &err);
+ if (err)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*
+ * Wrapper around charset_from_localenc which accepts the charset
+ * name as a wide string (since that happens to be more useful).
+ * Also throws a Halibut error and falls back to CS_ASCII if the
+ * charset is unrecognised, meaning the rest of the program can
+ * rely on always getting a valid charset id back from this
+ * function.
+ */
+int charset_from_ustr(filepos *fpos, const wchar_t *name)
+{
+ char *csname;
+ int charset;
+
+ csname = utoa_dup(name, CS_ASCII);
+ charset = charset_from_localenc(csname);
+
+ if (charset == CS_NONE) {
+ charset = CS_ASCII;
+ error(err_charset, fpos, name);
+ }
+
+ sfree(csname);
+ return charset;
+}
diff --git a/app/tools/halibut/version b/app/tools/halibut/version
new file mode 100644
index 0000000..fc8b185
--- /dev/null
+++ b/app/tools/halibut/version
@@ -0,0 +1 @@
+-DVERSION="1.0"
diff --git a/app/tools/halibut/version.c b/app/tools/halibut/version.c
new file mode 100644
index 0000000..38fbca1
--- /dev/null
+++ b/app/tools/halibut/version.c
@@ -0,0 +1,13 @@
+/*
+ * version.c: version string
+ */
+
+#include <stdio.h>
+
+#ifndef VERSION
+#define VER "anonymous build (" __DATE__ " " __TIME__ ")"
+#else
+#define VER "version " VERSION
+#endif
+
+const char *const version = VER;
diff --git a/app/tools/halibut/wcwidth.c b/app/tools/halibut/wcwidth.c
new file mode 100644
index 0000000..269359f
--- /dev/null
+++ b/app/tools/halibut/wcwidth.c
@@ -0,0 +1,184 @@
+/*
+ * A wrapper around wcswidth() to have it ignore characters which
+ * are not represented in a particular output charset.
+ */
+
+#include <assert.h>
+#include <stdlib.h>
+#include "halibut.h"
+
+#ifndef HAS_WCSWIDTH
+
+/*
+ * Markus Kuhn's public domain wcwidth() implementation, cribbed
+ * from
+ *
+ * http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
+ */
+
+#define wcswidth mk_wcswidth
+
+struct interval {
+ int first;
+ int last;
+};
+
+/* auxiliary function for binary search in interval table */
+static int bisearch(wchar_t ucs, const struct interval *table, int max) {
+ int min = 0;
+ int mid;
+
+ if (ucs < table[0].first || ucs > table[max].last)
+ return 0;
+ while (max >= min) {
+ mid = (min + max) / 2;
+ if (ucs > table[mid].last)
+ min = mid + 1;
+ else if (ucs < table[mid].first)
+ max = mid - 1;
+ else
+ return 1;
+ }
+
+ return 0;
+}
+
+int mk_wcwidth(wchar_t ucs)
+{
+ /* sorted list of non-overlapping intervals of non-spacing characters */
+ /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
+ static const struct interval combining[] = {
+ { 0x0300, 0x0357 }, { 0x035D, 0x036F }, { 0x0483, 0x0486 },
+ { 0x0488, 0x0489 }, { 0x0591, 0x05A1 }, { 0x05A3, 0x05B9 },
+ { 0x05BB, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
+ { 0x05C4, 0x05C4 }, { 0x0600, 0x0603 }, { 0x0610, 0x0615 },
+ { 0x064B, 0x0658 }, { 0x0670, 0x0670 }, { 0x06D6, 0x06E4 },
+ { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED }, { 0x070F, 0x070F },
+ { 0x0711, 0x0711 }, { 0x0730, 0x074A }, { 0x07A6, 0x07B0 },
+ { 0x0901, 0x0902 }, { 0x093C, 0x093C }, { 0x0941, 0x0948 },
+ { 0x094D, 0x094D }, { 0x0951, 0x0954 }, { 0x0962, 0x0963 },
+ { 0x0981, 0x0981 }, { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 },
+ { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 },
+ { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 },
+ { 0x0A4B, 0x0A4D }, { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 },
+ { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 },
+ { 0x0ACD, 0x0ACD }, { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 },
+ { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 },
+ { 0x0B4D, 0x0B4D }, { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 },
+ { 0x0BC0, 0x0BC0 }, { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 },
+ { 0x0C46, 0x0C48 }, { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 },
+ { 0x0CBC, 0x0CBC }, { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 },
+ { 0x0CCC, 0x0CCD }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D },
+ { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
+ { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
+ { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC },
+ { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 },
+ { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E },
+ { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 },
+ { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 },
+ { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },
+ { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x1712, 0x1714 },
+ { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, { 0x1772, 0x1773 },
+ { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 },
+ { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180D },
+ { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, { 0x1927, 0x1928 },
+ { 0x1932, 0x1932 }, { 0x1939, 0x193B }, { 0x200B, 0x200F },
+ { 0x202A, 0x202E }, { 0x2060, 0x2063 }, { 0x206A, 0x206F },
+ { 0x20D0, 0x20EA }, { 0x302A, 0x302F }, { 0x3099, 0x309A },
+ { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE23 },
+ { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB }, { 0x1D167, 0x1D169 },
+ { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
+ { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F }, { 0xE0100, 0xE01EF }
+ };
+
+ /* test for 8-bit control characters */
+ if (ucs == 0)
+ return 0;
+ if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
+ return -1;
+
+ /* binary search in table of non-spacing characters */
+ if (bisearch(ucs, combining,
+ sizeof(combining) / sizeof(struct interval) - 1))
+ return 0;
+
+ /* if we arrive here, ucs is not a combining or C0/C1 control character */
+
+ return 1 +
+ (ucs >= 0x1100 &&
+ (ucs <= 0x115f || /* Hangul Jamo init. consonants */
+ ucs == 0x2329 || ucs == 0x232a ||
+ (ucs >= 0x2e80 && ucs <= 0xa4cf &&
+ ucs != 0x303f) || /* CJK ... Yi */
+ (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
+ (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
+ (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
+ (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
+ (ucs >= 0xffe0 && ucs <= 0xffe6) ||
+ (ucs >= 0x20000 && ucs <= 0x2fffd) ||
+ (ucs >= 0x30000 && ucs <= 0x3fffd)));
+}
+
+
+int mk_wcswidth(const wchar_t *pwcs, size_t n)
+{
+ int w, width = 0;
+
+ for (;*pwcs && n-- > 0; pwcs++)
+ if ((w = mk_wcwidth(*pwcs)) < 0)
+ return -1;
+ else
+ width += w;
+
+ return width;
+}
+
+#endif
+
+int ustrwid(wchar_t const *s, int charset)
+{
+ char buf[256];
+ int wid, len = ustrlen(s);
+ charset_state state = CHARSET_INIT_STATE;
+
+ wid = 0;
+
+ while (len > 0) {
+ int err, ret;
+ wchar_t const *s_orig;
+
+ err = 0;
+ s_orig = s;
+ ret = charset_from_unicode(&s, &len, buf, lenof(buf),
+ charset, &state, &err);
+ wid += wcswidth(s_orig, s - s_orig);
+ if (err) {
+ assert(len > 0 && *s);
+ s++;
+ len--;
+ }
+ }
+
+ return wid;
+}
+
+int strwid(char const *s, int charset)
+{
+ wchar_t buf[256];
+ int wid, len = strlen(s);
+ charset_state state = CHARSET_INIT_STATE;
+
+ wid = 0;
+
+ while (len > 0) {
+ int ret;
+
+ ret = charset_to_unicode(&s, &len, buf, lenof(buf),
+ charset, &state, NULL, 0);
+
+ if (ret > 0)
+ wid += wcswidth(buf, ret);
+ }
+
+ return wid;
+}
diff --git a/app/tools/listxtp.c b/app/tools/listxtp.c
new file mode 100644
index 0000000..384c0d5
--- /dev/null
+++ b/app/tools/listxtp.c
@@ -0,0 +1,191 @@
+/** \file listxtp.c
+ * Create a contents list of all parameter files
+ *
+ * $Header: /home/dmarkle/xtrkcad-fork-cvs/xtrkcad/app/tools/listxtp.c,v 1.2 2009-05-31 21:55:37 tshead Exp $
+ */
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2009 Martin Fischer
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+#include "dirent.h"
+
+#define TRUE 1
+#define FALSE 0
+#ifdef _WIN32
+ #define WIKIFORMATOPTION "/w"
+ #pragma warning( disable : 4996 )
+#else
+ #define WIKIFORMATOPTION "-w"
+#endif
+
+#define CONTENTSCOMMAND "CONTENTS"
+
+#ifndef WIN32
+ #define stricmp strcasecmp
+ #define strnicmp strncasecmp
+#endif // !WIN32
+
+/*
+ * needed for qsort
+ */
+
+int
+Compare( const void *s1, const void * s2 )
+{
+ char *str1 = *(char **)s1;
+ char *str2 = *(char **)s2;
+
+ return( strcmp( str1, str2 ));
+}
+
+
+int
+main( int argc, char **argv )
+{
+ char buffer[ 512 ];
+ int found;
+ DIR *d;
+ struct dirent *ent;
+ FILE *fh;
+ struct stat buf;
+ char filename[ 256 ];
+ char path[ 256 ];
+ char *results[100];
+ int cnt = 0;
+ int i;
+ int bWiki = FALSE;
+
+ /*
+ this is a fast hack: there is one optional argument
+ if this was found, set the flag and remove it from the array.
+ As there is a maximum of one more argument, one simple assignment should be enough.
+ */
+
+ if( argc >= 2 && !strcmp(argv[ 1 ], WIKIFORMATOPTION )) {
+ bWiki = TRUE;
+ if( argc > 2 ) {
+ argv[ 1 ] = argv[ 2 ];
+ argv[ 2 ] = NULL;
+ }
+ argc--;
+ }
+
+ /*
+ * only other argument is the name of the directory to search through
+ */
+ if( argc == 2 ) {
+ strcpy( path, argv[ 1 ] );
+ } else {
+ if( argc == 1 ) {
+ strcpy( path, "." );
+ } else {
+ printf( "Invalid nummer of arguments. Execute with: listxtp "WIKIFORMATOPTION" [dir]\n" );
+ }
+ }
+
+ /*
+ * open the directory
+ */
+ d = opendir( path );
+ if( !d ) {
+ printf( "Directory %s not found!\n", path);
+ exit( 1 );
+ }
+
+ /*
+ * get all files from the directory
+ */
+ while( ent = readdir( d ))
+ {
+ /*
+ * create full file name and get the state for that file
+ */
+
+ strcpy( filename, path );
+ strcat( filename, "\\" );
+ strcat( filename, ent->d_name );
+
+ if( stat( filename, &buf ) == -1 ) {
+ fprintf( stderr, "Error getting file state for %s\n", filename );
+ exit( 1 );
+ }
+ /*
+ * ignore any directories
+ */
+ if( buf.st_mode & S_IFDIR )
+ continue;
+
+ /*
+ * open the file and search for a line beginning with CONTENTS
+ */
+ found = FALSE;
+ fh = fopen( filename, "rt" );
+ if( fh ) {
+ while( !found ) {
+ if( fgets( buffer, sizeof( buffer ), fh )) {
+ if( !strnicmp( buffer, CONTENTSCOMMAND, strlen( CONTENTSCOMMAND ))) {
+ /*
+ * if found, store the restof the line and the filename
+ */
+ buffer[ strlen( buffer ) - 1 ] = '\0';
+ sprintf( buffer, "%s (%s)", buffer + strlen( CONTENTSCOMMAND ) + 1, ent->d_name );
+ results[ cnt ] = malloc( strlen( buffer ) + 1 );
+ strcpy( results[ cnt ], buffer );
+ cnt++;
+ if( cnt == 100 ) {
+ fprintf( stderr, "Error: too many files\n" );
+ exit( 1 );
+ }
+ found = TRUE;
+ }
+ } else {
+ fprintf( stderr, "Nothing found in %s\n", filename );
+ found = TRUE;
+ }
+ }
+ fclose( fh );
+ } else {
+ fprintf( stderr, "Error opening %s\n", filename );
+ }
+ }
+
+ /*
+ * sort the list that was created
+ */
+ qsort( (void *)results, (size_t )cnt, sizeof( char *), Compare );
+
+ /*
+ * print the results. If Wiki option was set, format the line for usage
+ * in the Wiki
+ */
+ for( i = 0; i < cnt; i++) {
+ if( bWiki ) {
+ printf("~-\"\"%s\"\"\n", results[ i ] );
+ if( (i < cnt - 1) && *results[ i ] != *results[ i + 1 ] )
+ printf( "\n" );
+ } else {
+ printf( "%s\n", results[ i ]);
+ }
+ }
+ return( 0 );
+}
diff --git a/app/tools/oldscripts/README b/app/tools/oldscripts/README
new file mode 100644
index 0000000..a9ee346
--- /dev/null
+++ b/app/tools/oldscripts/README
@@ -0,0 +1,4 @@
+Not all of these scripts are fully tested. Use at your own risk.
+
+
+JBB
diff --git a/app/tools/oldscripts/checkall b/app/tools/oldscripts/checkall
new file mode 100644
index 0000000..51e6861
--- /dev/null
+++ b/app/tools/oldscripts/checkall
@@ -0,0 +1,10 @@
+#!/bin/sh
+cd ~/xtrkcad/src
+for d in bin help lib lib/params lib/demos lib/examples tools ; do
+ rlog -R -L $d/RCS/*,v
+done
+cd ~/wlib/src
+for d in include mswlib test gtklib ; do
+ rlog -R -L $d/RCS/*,v
+done
+
diff --git a/app/tools/oldscripts/diffall b/app/tools/oldscripts/diffall
new file mode 100644
index 0000000..0dd6695
--- /dev/null
+++ b/app/tools/oldscripts/diffall
@@ -0,0 +1,37 @@
+#!/bin/sh
+if [ $# -lt 1 ] ; then
+ echo "Usage: checkall <RLSE> [<home>]"
+ exit 1
+fi
+RLSE=$1
+HOMEDIR=$HOME
+if [ $# -eq 2 ] ; then
+ HOMEDIR=$2
+fi
+cd ${HOMEDIR}/xtrkcad/$RLSE
+for d in bin help lib lib/params lib/demos lib/examples tools ; do
+ echo === $d
+ ( cd $d
+ for f in `make rcssrc` ; do
+ if rcsdiff -q -r$RLSE -r1. $f > /dev/null ; then
+ true
+ else
+ echo $d/$f diffs
+ fi
+ done
+ )
+done
+cd ${HOMEDIR}/wlib/$RLSE
+for d in include mswlib test gtklib ; do
+ echo === $d
+ ( cd $d
+ for f in `make rcssrc` ; do
+ if rcsdiff -q -r$RLSE -r1. $f > /dev/null ; then
+ true
+ else
+ echo $d/$f diffs
+ fi
+ done
+ )
+done
+
diff --git a/app/tools/oldscripts/fetchall b/app/tools/oldscripts/fetchall
new file mode 100644
index 0000000..5a88f73
--- /dev/null
+++ b/app/tools/oldscripts/fetchall
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+fetchdir() {
+ echo fetching $1
+ mkdir $1
+ ( cd $1; ln -s ../$2/src/$1/RCS . ; co -r$RLSE Makefile ; co -r$RLSE `make rcssrc` )
+}
+
+if [ $# -lt 1 ] ; then
+ echo fetchall RLSE
+ exit 1
+fi
+RLSE=$1
+if [ -d ~/xtrkcad/$RLSE ] ; then
+ echo ~/xtrkcad/$RLSE exists
+ exit 1
+fi
+if [ -d ~/wlib/$RLSE ] ; then
+ echo ~/wlib/$RLSE exists
+ exit 1
+fi
+
+mkdir ~/xtrkcad/$RLSE
+cd ~/xtrkcad/$RLSE
+fetchdir bin ..
+fetchdir help ..
+fetchdir lib ..
+fetchdir lib/demos ../..
+fetchdir lib/examples ../..
+fetchdir lib/params ../..
+fetchdir tools ..
+mkdir ~/wlib/$RLSE
+cd ~/wlib/$RLSE
+fetchdir include ..
+fetchdir mswlib ..
+fetchdir test ..
+fetchdir gtklib ..
+
+mkdir ~/xtrkcad/$RLSE/help/images.orig
+cp ~/xtrkcad/dev/help/images.orig/*.png ~/xtrkcad/$RLSE/help/images.orig
+cp ~/xtrkcad/dev/bin/xtrkcad.ico ~/xtrkcad/$RLSE/bin/
+cp ~/xtrkcad/dev/lib/register.* ~/xtrkcad/$RLSE/lib/
+chmod 444 ~/xtrkcad/$RLSE/lib/register.*
+cp ~/wlib/dev/test/wtest.ico ~/wlib/$RLSE/test/
+ln -s ~/wlib/$RLSE ~/xtrkcad/$RLSE/bin/wlib
+
diff --git a/app/tools/oldscripts/makeall b/app/tools/oldscripts/makeall
new file mode 100644
index 0000000..896cb41
--- /dev/null
+++ b/app/tools/oldscripts/makeall
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+if [ $# -lt 1 ] ; then
+ echo mkrlse RLSE
+ exit 1
+fi
+RLSE=$1
+if [ \! -d ~/xtrkcad/$RLSE ] ; then
+ echo ~/xtrkcad/$RLSE does not exist
+ exit 1
+fi
+
+ cd ~/wlib/$RLSE/gtklib && \
+ make update && \
+ cd ~/xtrkcad/$RLSE/help && \
+ make pngs && \
+ make && \
+ cd ../lib/params && \
+ make && \
+ cd .. && \
+ make && \
+ cd ../bin && \
+ make update
diff --git a/app/tools/oldscripts/markall b/app/tools/oldscripts/markall
new file mode 100644
index 0000000..ae41d71
--- /dev/null
+++ b/app/tools/oldscripts/markall
@@ -0,0 +1,17 @@
+#!/bin/sh
+if [ $# -lt 1 ] ; then
+ echo "markall TAG"
+ exit 1
+fi
+TAG=$1
+cd ~/xtrkcad/src
+for d in bin help lib lib/params lib/demos lib/examples tools ; do
+ echo xtrkcad/src/$d:
+ (cd $d ; co Makefile ; rcs -N$TAG:1. `make rcssrc`)
+done
+cd ~/wlib/src
+for d in include mswlib test gtklib ; do
+ echo wlib/src/$d
+ (cd $d ; co Makefile ; rcs -N$TAG:1. `make rcssrc`)
+done
+
diff --git a/app/tools/oldscripts/mkwinrlse b/app/tools/oldscripts/mkwinrlse
new file mode 100644
index 0000000..15358f5
--- /dev/null
+++ b/app/tools/oldscripts/mkwinrlse
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+rm -fr mswrel
+if [ -d mswrel ] ; then
+ echo ./mswrel already exists
+ exit 1
+fi
+
+mkdir mswrel
+mkdir mswrel/demos
+mkdir mswrel/examples
+mkdir mswrel/params
+echo lib/demos
+(cd lib/demos; for f in *.xtr ; do addcr < $f > ../../mswrel/demos/$f ; done )
+echo lib/examples
+(cd lib/examples; for f in *.xtc ; do addcr < "$f" > ../../mswrel/examples/"$f" ; done )
+echo lib/params
+(cd lib/params; for f in *.xtp ; do addcr < $f > ../../mswrel/params/$f ; done )
+echo lib
+cp bin/Release/xtrkcad.exe mswrel
+echo release
+cp bin/Debug/xtrkcad.exe mswrel/xtrkcadd.exe
+echo debug
+addcr < COPYING > mswrel/license.txt
+echo license
+addcr < lib/aareadme.txt > mswrel/aareadme.txt
+addcr < lib/xtrkcad.bug > mswrel/xtrkcad.bug
+addcr < lib/xtrkcad.enh > mswrel/xtrkcad.enh
+addcr < lib/xtrkcad.fix > mswrel/xtrkcad.fix
+addcr < lib/xtrkcad.upd > mswrel/xtrkcad.upd
+addcr < help/xtrkcad.tip > mswrel/xtrkcad.tip
+addcr < lib/xtrkcad.xtq > mswrel/xtrkcad.xtq
+chmod -w -R mswrel
+chmod +w mswrel mswrel/demos mswrel/examples mswrel/params
diff --git a/app/tools/oldscripts/roall b/app/tools/oldscripts/roall
new file mode 100644
index 0000000..28f156b
--- /dev/null
+++ b/app/tools/oldscripts/roall
@@ -0,0 +1,22 @@
+#!/bin/sh
+if [ $# != 1 ] ; then
+ echo "Usage: roall <RLSE>"
+ exit 1
+fi
+cd ~/xtrkcad/$1
+for d in bin help lib lib/params lib/demos lib/examples tools ; do
+ (cd $d; for f in `make rcssrc` ; do
+ if [ -w $f ] ; then
+ echo $d/$f is writable
+ fi
+ done)
+done
+cd ~/wlib/$1
+for d in include mswlib test gtklib ; do
+ (cd $d;for f in `make rcssrc` ; do
+ if [ -w $f ] ; then
+ echo $d/$f is writable
+ fi
+ done)
+done
+